From f574ba936cbe11031f2b58b15cab87721a01ced5 Mon Sep 17 00:00:00 2001 From: Paulo Porto Date: Thu, 7 May 2026 02:14:06 -0300 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=A3o=20na=20chamada=20das=20APIs?= =?UTF-8?q?=20via=20iframe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- background.js | 31 ++++++++++++++++++++++++++++--- manifest.json | 3 ++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/background.js b/background.js index d54f415..c46212d 100644 --- a/background.js +++ b/background.js @@ -181,7 +181,7 @@ async function executeSpaFrameFetch({ senderTabId, url, options = {} }) { return executeSpaFrameScriptFetch(senderTabId, url, options); } -async function ensureSpaFrameElementInTab(tabId) { +async function ensureSpaFrameElementInTab(tabId, options = {}) { await chrome.scripting.executeScript({ target: { tabId, frameIds: [0] }, world: "MAIN", @@ -189,8 +189,9 @@ async function ensureSpaFrameElementInTab(tabId) { SPA_WORKBENCH_FRAME_HOST_ID, SPA_WORKBENCH_FRAME_ID, SPA_WORKBENCH_FRAME_URL, + Boolean(options.forceReload), ], - func: (hostId, frameId, frameUrl) => { + func: (hostId, frameId, frameUrl, forceReload) => { const desiredParent = document.body || document.documentElement; if (!desiredParent) { @@ -250,7 +251,16 @@ async function ensureSpaFrameElementInTab(tabId) { host.appendChild(frame); } - if (!frame.src || frame.src === "about:blank" || frame.src !== frameUrl) { + if ( + forceReload || + !frame.src || + frame.src === "about:blank" || + frame.src !== frameUrl + ) { + if (forceReload) { + frame.src = "about:blank"; + } + frame.src = frameUrl; } @@ -262,8 +272,23 @@ async function ensureSpaFrameElementInTab(tabId) { async function waitForSpaFramePresent(tabId) { const startedAt = Date.now(); let lastFrames = ""; + let lastEnsureAt = 0; + let forceReloaded = false; while (Date.now() - startedAt < 45000) { + const elapsed = Date.now() - startedAt; + + if (Date.now() - lastEnsureAt > 2500) { + await ensureSpaFrameElementInTab(tabId, { + forceReload: elapsed > 7000 && !forceReloaded, + }); + lastEnsureAt = Date.now(); + + if (elapsed > 7000) { + forceReloaded = true; + } + } + const frames = await getFrameHints(tabId).catch(() => []); const spaFrame = frames.find((frame) => isSpaFrameHint(frame)); diff --git a/manifest.json b/manifest.json index 3be7de0..152edf5 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Arch Panel Injector", - "version": "1.0.2", + "version": "1.0.3", "description": "Insere o botao Arch panel no header do Oracle Workload Workbench.", "permissions": [ "cookies", @@ -174,5 +174,6 @@ +