diff options
author | Omar Rizwan <omar@omar.website> | 2020-12-29 14:16:25 -0800 |
---|---|---|
committer | Omar Rizwan <omar@omar.website> | 2020-12-29 14:16:25 -0800 |
commit | 1185e6885c1dc935592ad14cb0955a9d57dc20e7 (patch) | |
tree | bdc1be74c35c0a16d7aac8ca3e733d8f4527c1a4 /extension | |
parent | 6c56c525f22ae97977c466c25e3726a23fa04887 (diff) |
ability to read scripts/file with path filtering
Diffstat (limited to 'extension')
-rw-r--r-- | extension/background.js | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/extension/background.js b/extension/background.js index 5cb3a8c..51a2bbd 100644 --- a/extension/background.js +++ b/extension/background.js @@ -296,16 +296,21 @@ router["/tabs/by-id/*/control"] = { return { entries: [".", "..", ...scriptFileNames] }; } }; + function pathScriptInfo(tabId, path) { + const [scriptId, ...rest] = pathComponent(path, -1).split("_"); + const scriptInfo = TabManager.scriptsForTab[tabId][scriptId]; + if (!scriptInfo || sanitize(scriptInfo.url).slice(0, 200) !== rest.join("_")) { + throw new UnixError(unix.ENOENT); + } + return scriptInfo; + } router["/tabs/by-id/*/debugger/scripts/*"] = defineFile(async path => { const [tabId, suffix] = [parseInt(pathComponent(path, -4)), pathComponent(path, -1)]; await TabManager.debugTab(tabId); await TabManager.enableDomainForTab(tabId, "Page"); await TabManager.enableDomainForTab(tabId, "Debugger"); - const parts = pathComponent(path, -1).split("_"); const scriptId = parts[0]; - // TODO: check the script title in path vs the actual script title - if (!TabManager.scriptsForTab[tabId][scriptId]) { throw new UnixError(unix.ENOENT); } - + const {scriptId} = pathScriptInfo(tabId, path); const {scriptSource} = await sendDebuggerCommand(tabId, "Debugger.getScriptSource", {scriptId}); return scriptSource; @@ -313,10 +318,7 @@ router["/tabs/by-id/*/control"] = { 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[0]; - // TODO: check the script title in path vs the actual script title - if (!TabManager.scriptsForTab[tabId][scriptId]) { throw new UnixError(unix.ENOENT); } - + const {scriptId} = pathScriptInfo(tabId, path); await sendDebuggerCommand(tabId, "Debugger.setScriptSource", {scriptId, scriptSource: buf}); }); })(); |