From 58d5e819ae08afb06dea91de016471fca65ae78f Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Fri, 25 Dec 2020 13:59:35 -0800 Subject: fix bug with new debugger/ route path matching --- extension/background.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'extension') diff --git a/extension/background.js b/extension/background.js index d863858..4f470f3 100644 --- a/extension/background.js +++ b/extension/background.js @@ -179,7 +179,6 @@ router["/tabs/by-id"] = { // text.txt // TODO: document.html -// TODO: console // TODO: mem (?) // TODO: cpu (?) @@ -190,8 +189,9 @@ router["/tabs/by-id"] = { // TODO: archive.mhtml ? // TODO: printed.pdf // control -// resources/ -// TODO: scripts/ TODO: allow creation, eval immediately + +// there's a question about whether to do stuff through injected +// JavaScript or through the devtools API. (function() { const withTab = (readHandler, writeHandler) => defineFile(async path => { @@ -233,7 +233,7 @@ router["/tabs/by-id/*/screenshot.png"] = defineFile(async path => { return Uint8Array.from(atob(data), c => c.charCodeAt(0)); }); router["/tabs/by-id/*/control"] = { - // echo remove >> mnt/tabs/by-id/1644/control + // echo remove > mnt/tabs/by-id/1644/control async write({path, buf}) { const tabId = parseInt(pathComponent(path, -2)); const command = buf.trim(); @@ -245,18 +245,22 @@ router["/tabs/by-id/*/control"] = { async truncate({path, size}) { return {}; } }; -// debugger-API-dependent (Chrome-only) +// debugger/ : debugger-API-dependent (Chrome-only) (function() { + // console + // resources/ + // TODO: scripts/ TODO: allow creation, eval immediately + router["/tabs/by-id/*/debugger/resources"] = { async readdir({path}) { - const tabId = parseInt(pathComponent(path, -2)); + const tabId = parseInt(pathComponent(path, -3)); await TabManager.debugTab(tabId); await TabManager.enableDomainForTab(tabId, "Page"); const {frameTree} = await sendDebuggerCommand(tabId, "Page.getResourceTree", {}); return { entries: [".", "..", ...frameTree.resources.map(r => sanitize(String(r.url).slice(0, 200)))] }; } }; router["/tabs/by-id/*/debugger/resources/*"] = defineFile(async path => { - const [tabId, suffix] = [parseInt(pathComponent(path, -3)), pathComponent(path, -1)]; + const [tabId, suffix] = [parseInt(pathComponent(path, -4)), pathComponent(path, -1)]; await TabManager.debugTab(tabId); await TabManager.enableDomainForTab(tabId, "Page"); const {frameTree} = await sendDebuggerCommand(tabId, "Page.getResourceTree", {}); @@ -275,17 +279,17 @@ router["/tabs/by-id/*/control"] = { }); router["/tabs/by-id/*/debugger/scripts"] = { async opendir({path}) { - const tabId = parseInt(pathComponent(path, -2)); + const tabId = parseInt(pathComponent(path, -3)); await TabManager.debugTab(tabId); await TabManager.enableDomainForTab(tabId, "Debugger"); return { fh: 0 }; }, async readdir({path}) { - const tabId = parseInt(pathComponent(path, -2)); + const tabId = parseInt(pathComponent(path, -3)); return { entries: [".", "..", ...BrowserState.scriptsForTab[tabId].map(params => sanitize(params.url).slice(0, 200) + "_" + params.scriptId)] }; } }; router["/tabs/by-id/*/debugger/scripts/*"] = defineFile(async path => { - const [tabId, suffix] = [parseInt(pathComponent(path, -3)), pathComponent(path, -1)]; + const [tabId, suffix] = [parseInt(pathComponent(path, -4)), pathComponent(path, -1)]; await TabManager.debugTab(tabId); await TabManager.enableDomainForTab(tabId, "Page"); await TabManager.enableDomainForTab(tabId, "Debugger"); @@ -295,7 +299,7 @@ router["/tabs/by-id/*/control"] = { return scriptSource; }, async (path, buf) => { - const [tabId, suffix] = [parseInt(pathComponent(path, -3)), pathComponent(path, -1)]; + const [tabId, suffix] = [parseInt(pathComponent(path, -4)), pathComponent(path, -1)]; await TabManager.debugTab(tabId); await TabManager.enableDomainForTab(tabId, "Debugger"); const parts = path.split("_"); const scriptId = parts[parts.length - 1]; -- cgit v1.2.3