From 7356cd8afd0ee48a0a8395a7b8b2862949924afe Mon Sep 17 00:00:00 2001 From: lolcat Date: Sun, 26 Jul 2026 15:12:47 -0400 Subject: [PATCH] fix navigation errors being misreported lol professional grade software --- README.md | 2 +- ext/bg.js | 46 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 09bc078..af48247 100644 --- a/README.md +++ b/README.md @@ -296,7 +296,7 @@ An `EventEmitter` instance that emits the following events: | `browser_connect` | `ws` | Browser connected | | `browser_disconnect` | `{}` | Browser disconnected | | `dom_ready` | `{ id, index, status, active, title, url, container }` | A tab finished loading | -| `dom_load_fail` | `{ id }` | A tab failed to load | +| `dom_load_fail` | `{ id, url, error }` | A tab failed to load (Network error, `<=400` code) | | `web_request` | `{ id, url, status, origin, type, method, container, headers }` | A request was sent | | `web_response` | `{ id, url, status, origin, type, method, container, body }` | A response was received | diff --git a/ext/bg.js b/ext/bg.js index dccd608..e6fb26c 100644 --- a/ext/bg.js +++ b/ext/bg.js @@ -15,7 +15,7 @@ var proxy_map = {}; var web_response_whitelist = ["main_frame", "xmlhttprequest"]; -const log_debug = true; +const log_debug = false; browser.browserAction.setBadgeBackgroundColor({ color: [0, 0, 0, 0] @@ -638,16 +638,56 @@ browser.tabs.onUpdated.addListener(function(tabid, event, tab){ } }); +browser.webRequest.onHeadersReceived.addListener(function(page){ + + if(page.type != "main_frame"){ + + return + }; + + // send error on 4xx code + if(page.statusCode >= 400){ + + send_event( + global_ws, + { + "action": "dom_load_fail", + "data": { + id: page.tabId, + url: page.url, + error: page.statusLine.trim() + } + } + ); + } + }, + { urls: [""] } +); + browser.webNavigation.onErrorOccurred.addListener(function(page){ - if(connected === false){ return; } + if( + connected === false || + // must be an error in parent frame + page.frameId !== 0 || + // ignore HSTS error. See: + // https://bugzilla.mozilla.org/show_bug.cgi?id=1801326 + page.error == "Error code 2152398850" || + // page-load abort + page.error == "NS_BINDING_ABORTED" + ){ + + return; + } send_event( global_ws, { "action": "dom_load_fail", "data": { - id: page.tabId + id: page.tabId, + url: page.url, + error: page.error } } );