Correção na abertura dos workload workbench quando não estiver disponível
This commit is contained in:
@@ -14,6 +14,10 @@ const COMCIP_TAB_URL_PATTERN =
|
|||||||
`${COMCIP_ORIGIN}/ic/builder/rt/oalset_semc/live*`;
|
`${COMCIP_ORIGIN}/ic/builder/rt/oalset_semc/live*`;
|
||||||
const COMCIP_TIME_ENTRY_TAB_URL_PATTERN =
|
const COMCIP_TIME_ENTRY_TAB_URL_PATTERN =
|
||||||
`${COMCIP_ORIGIN}/ic/builder/rt/oalset_timeentrymobile/live*`;
|
`${COMCIP_ORIGIN}/ic/builder/rt/oalset_timeentrymobile/live*`;
|
||||||
|
const SPA_WORKBENCH_FRAME_URL =
|
||||||
|
"https://spa.oracle.com/oalcrm/web/api/g2m-consumer-application/ui/index.html?ojr=workload_workbench";
|
||||||
|
const SPA_WORKBENCH_FRAME_ID = "arch-panel-extension-spa-frame";
|
||||||
|
const SPA_WORKBENCH_FRAME_HOST_ID = "arch-panel-extension-spa-frame-host";
|
||||||
const SPA_FRAME_DNR_RULE_ID = 92001;
|
const SPA_FRAME_DNR_RULE_ID = 92001;
|
||||||
|
|
||||||
void installSpaFrameHeaderRules();
|
void installSpaFrameHeaderRules();
|
||||||
@@ -169,6 +173,7 @@ async function executeSpaFrameFetch({ senderTabId, url, options = {} }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
await installSpaFrameHeaderRules();
|
await installSpaFrameHeaderRules();
|
||||||
|
await ensureSpaFrameElementInTab(senderTabId);
|
||||||
await waitForSpaFramePresent(senderTabId);
|
await waitForSpaFramePresent(senderTabId);
|
||||||
await ensureSpaBridgeInFrames(senderTabId);
|
await ensureSpaBridgeInFrames(senderTabId);
|
||||||
await waitForSpaFrameCapturedAuth(senderTabId, url);
|
await waitForSpaFrameCapturedAuth(senderTabId, url);
|
||||||
@@ -176,6 +181,84 @@ async function executeSpaFrameFetch({ senderTabId, url, options = {} }) {
|
|||||||
return executeSpaFrameScriptFetch(senderTabId, url, options);
|
return executeSpaFrameScriptFetch(senderTabId, url, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function ensureSpaFrameElementInTab(tabId) {
|
||||||
|
await chrome.scripting.executeScript({
|
||||||
|
target: { tabId, frameIds: [0] },
|
||||||
|
world: "MAIN",
|
||||||
|
args: [
|
||||||
|
SPA_WORKBENCH_FRAME_HOST_ID,
|
||||||
|
SPA_WORKBENCH_FRAME_ID,
|
||||||
|
SPA_WORKBENCH_FRAME_URL,
|
||||||
|
],
|
||||||
|
func: (hostId, frameId, frameUrl) => {
|
||||||
|
const desiredParent = document.body || document.documentElement;
|
||||||
|
|
||||||
|
if (!desiredParent) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let host = document.getElementById(hostId);
|
||||||
|
|
||||||
|
if (!host) {
|
||||||
|
host = document.createElement("div");
|
||||||
|
host.id = hostId;
|
||||||
|
host.setAttribute("aria-hidden", "true");
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.assign(host.style, {
|
||||||
|
position: "fixed",
|
||||||
|
width: "1440px",
|
||||||
|
height: "1000px",
|
||||||
|
overflow: "hidden",
|
||||||
|
opacity: "0",
|
||||||
|
pointerEvents: "none",
|
||||||
|
border: "0",
|
||||||
|
left: "-20000px",
|
||||||
|
top: "0",
|
||||||
|
zIndex: "0",
|
||||||
|
});
|
||||||
|
|
||||||
|
if (host.parentElement !== desiredParent) {
|
||||||
|
desiredParent.appendChild(host);
|
||||||
|
}
|
||||||
|
|
||||||
|
let frame = document.getElementById(frameId);
|
||||||
|
|
||||||
|
if (!(frame instanceof HTMLIFrameElement)) {
|
||||||
|
frame = document.createElement("iframe");
|
||||||
|
frame.id = frameId;
|
||||||
|
frame.name = frameId;
|
||||||
|
frame.setAttribute("aria-hidden", "true");
|
||||||
|
frame.setAttribute("referrerpolicy", "no-referrer-when-downgrade");
|
||||||
|
frame.tabIndex = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
frame.name = frameId;
|
||||||
|
frame.dataset.archPanelFrame = "spa-workbench";
|
||||||
|
Object.assign(frame.style, {
|
||||||
|
position: "absolute",
|
||||||
|
width: "1440px",
|
||||||
|
height: "1000px",
|
||||||
|
opacity: "0",
|
||||||
|
pointerEvents: "none",
|
||||||
|
border: "0",
|
||||||
|
left: "0",
|
||||||
|
top: "0",
|
||||||
|
});
|
||||||
|
|
||||||
|
if (frame.parentElement !== host) {
|
||||||
|
host.appendChild(frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!frame.src || frame.src === "about:blank" || frame.src !== frameUrl) {
|
||||||
|
frame.src = frameUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
}).catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
async function waitForSpaFramePresent(tabId) {
|
async function waitForSpaFramePresent(tabId) {
|
||||||
const startedAt = Date.now();
|
const startedAt = Date.now();
|
||||||
let lastFrames = "";
|
let lastFrames = "";
|
||||||
|
|||||||
@@ -4590,7 +4590,7 @@
|
|||||||
frameHost.appendChild(existingFrame);
|
frameHost.appendChild(existingFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (existingFrame.src !== frameUrl) {
|
if (shouldNavigateSpaFrame(existingFrame, frameUrl)) {
|
||||||
navigateSpaFrame(existingFrame, frameUrl);
|
navigateSpaFrame(existingFrame, frameUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4600,6 +4600,7 @@
|
|||||||
const frame = document.createElement("iframe");
|
const frame = document.createElement("iframe");
|
||||||
frame.id = IDS.spaFrame;
|
frame.id = IDS.spaFrame;
|
||||||
frame.name = IDS.spaFrame;
|
frame.name = IDS.spaFrame;
|
||||||
|
frame.dataset.archPanelFrame = "spa-workbench";
|
||||||
frame.setAttribute("aria-hidden", "true");
|
frame.setAttribute("aria-hidden", "true");
|
||||||
frame.setAttribute("referrerpolicy", "no-referrer-when-downgrade");
|
frame.setAttribute("referrerpolicy", "no-referrer-when-downgrade");
|
||||||
frame.tabIndex = -1;
|
frame.tabIndex = -1;
|
||||||
@@ -4624,6 +4625,25 @@
|
|||||||
const existingHost = document.getElementById(IDS.spaFrameHost);
|
const existingHost = document.getElementById(IDS.spaFrameHost);
|
||||||
|
|
||||||
if (existingHost) {
|
if (existingHost) {
|
||||||
|
const desiredParent = document.body || document.documentElement;
|
||||||
|
|
||||||
|
if (desiredParent && existingHost.parentElement !== desiredParent) {
|
||||||
|
desiredParent.appendChild(existingHost);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.assign(existingHost.style, {
|
||||||
|
position: "fixed",
|
||||||
|
width: "1440px",
|
||||||
|
height: "1000px",
|
||||||
|
overflow: "hidden",
|
||||||
|
opacity: "0",
|
||||||
|
pointerEvents: "none",
|
||||||
|
border: "0",
|
||||||
|
left: "-20000px",
|
||||||
|
top: "0",
|
||||||
|
zIndex: "0",
|
||||||
|
});
|
||||||
|
|
||||||
return existingHost;
|
return existingHost;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4640,20 +4660,31 @@
|
|||||||
border: "0",
|
border: "0",
|
||||||
left: "-20000px",
|
left: "-20000px",
|
||||||
top: "0",
|
top: "0",
|
||||||
zIndex: "-1",
|
zIndex: "0",
|
||||||
});
|
});
|
||||||
|
|
||||||
document.documentElement.appendChild(host);
|
(document.body || document.documentElement).appendChild(host);
|
||||||
|
|
||||||
return host;
|
return host;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function shouldNavigateSpaFrame(frame, frameUrl) {
|
||||||
|
const currentSrc = cleanString(frame.getAttribute("src") || frame.src);
|
||||||
|
|
||||||
|
if (!currentSrc || currentSrc === "about:blank") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return new URL(currentSrc, window.location.href).toString() !== frameUrl;
|
||||||
|
} catch {
|
||||||
|
return currentSrc !== frameUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function navigateSpaFrame(frame, frameUrl) {
|
function navigateSpaFrame(frame, frameUrl) {
|
||||||
frame.dataset.archPanelLoaded = "false";
|
frame.dataset.archPanelLoaded = "false";
|
||||||
frame.removeAttribute("src");
|
frame.src = frameUrl;
|
||||||
window.setTimeout(() => {
|
|
||||||
frame.src = frameUrl;
|
|
||||||
}, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function waitForFrameLoad(frame) {
|
function waitForFrameLoad(frame) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"name": "Arch Panel Injector",
|
"name": "Arch Panel Injector",
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"description": "Insere o botao Arch panel no header do Oracle Workload Workbench.",
|
"description": "Insere o botao Arch panel no header do Oracle Workload Workbench.",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"cookies",
|
"cookies",
|
||||||
@@ -173,5 +173,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user