|
8 | 8 |
|
9 | 9 | let pendingRequests = new Map(); |
10 | 10 |
|
11 | | - let reloadingTabs = new Set(); |
| 11 | + let reloadingTabs = new Map(); |
12 | 12 | let tabKey = (tabId, url) => `${tabId}:${url}`; |
13 | 13 |
|
14 | 14 | let cleanup = r => { |
15 | 15 | pendingRequests.delete(r.requestId); |
| 16 | + let key = tabKey(r.tabId, r.url); |
| 17 | + if (reloadingTabs.get(key) === false) { |
| 18 | + reloadingTabs.delete(key); |
| 19 | + } |
16 | 20 | }; |
17 | 21 | let filter = { |
18 | 22 | urls: ["<all_urls>"], |
|
66 | 70 | if (frameId === 0) { |
67 | 71 | let key = tabKey(tabId, url); |
68 | 72 | debug("Checking whether %s is a reloading tab...", key); |
69 | | - if (reloadingTabs.has(key)) { |
70 | | - debug("Skipping dynamic script injection for reloading feed tab", key); |
71 | | - let filter = browser.webRequest.filterResponseData(requestId); |
72 | | - filter.onstart = e => { |
73 | | - reloadingTabs.delete(key); |
74 | | - filter.write(NULL); |
75 | | - filter.disconnect(); |
76 | | - } |
| 73 | + if (reloadingTabs.get(key)) { |
| 74 | + reloadingTabs.set(key, false); // doom it for removal in cleanup |
77 | 75 | return; |
78 | 76 | } |
79 | 77 | } |
|
97 | 95 | if (mustCheckFeed && !scriptsRan) { |
98 | 96 | mustReload = true; |
99 | 97 | debug(`Marking as "must reload"`, tabId, url); |
100 | | - reloadingTabs.add(tabKey(tabId, url)); |
| 98 | + reloadingTabs.set(tabKey(tabId, url), true); |
101 | 99 | } |
102 | 100 | if (buffer && buffer.length) { |
103 | 101 | debug("Flushing %s buffer chunks", buffer.length); |
|
0 commit comments