| Index: ext/background.js |
| =================================================================== |
| --- a/ext/background.js |
| +++ b/ext/background.js |
| @@ -608,13 +608,41 @@ |
| if (type == "sub_frame") |
| frameId = details.parentFrameId; |
| + let frame2 = null; |
| + if (details.frameAncestors) { |
| + for (let i = details.frameAncestors.length - 1; i >= 0; i--) { |
| + frame2 = {id: details.frameAncestors[i].frameId, |
| + url: new URL(details.frameAncestors[i].url), |
| + parent: frame2}; |
| + } |
| + |
| + // the url here is not correct I think. |
| + if (type != "sub_frame") |
| + frame2 = {url: new URL(details.documentUrl), parent: frame2}; |
| + } |
| + |
| // Sometimes requests are not associated with a browser tab and |
| // in this case we want to still be able to view the url being called. |
| + let page = null; |
| let frame = null; |
| - let page = null; |
| if (details.tabId != -1) |
| { |
| - frame = ext.getFrame(details.tabId, frameId); |
| + // Only Firefox supports frameAncestors, so we have to keep the list |
| + // of frames ourself. |
| + if (!frame) |
| + frame = ext.getFrame(details.tabId, frameId); |
| + |
| + |
| + let s = (f, a = []) => { |
| + a.push(f.url.toString()); |
| + if (f.parent) |
| + return s(f.parent, a) |
| + return a; |
| + } |
| + |
| + if (s(frame).length > 0) |
| + console.log(url.toString(), s(frame), s(frame2)) |
| + |
| page = new Page({id: details.tabId}); |
| } |