| Left: | ||
| Right: |
| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-present eyeo GmbH | 3 * Copyright (C) 2006-present eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 219 url: browser.extension.getURL("composer.html"), | 219 url: browser.extension.getURL("composer.html"), |
| 220 left: 50, | 220 left: 50, |
| 221 top: 50, | 221 top: 50, |
| 222 width: 420, | 222 width: 420, |
| 223 height: 200, | 223 height: 200, |
| 224 type: "popup" | 224 type: "popup" |
| 225 }).then(window => | 225 }).then(window => |
| 226 { | 226 { |
| 227 let popupPageId = window.tabs[0].id; | 227 let popupPageId = window.tabs[0].id; |
| 228 | 228 |
| 229 let doInitAttempt = 0; | |
| 229 let doInit = () => | 230 let doInit = () => |
| 230 { | 231 { |
| 232 doInitAttempt += 1; | |
| 233 if (doInitAttempt > 3) | |
| 234 return; | |
| 235 | |
| 231 browser.tabs.sendMessage(popupPageId, { | 236 browser.tabs.sendMessage(popupPageId, { |
| 232 type: "composer.dialog.init", | 237 type: "composer.dialog.init", |
| 233 sender: sender.page.id, | 238 sender: sender.page.id, |
| 234 filters: message.filters | 239 filters: message.filters |
| 240 }).catch(e => | |
| 241 { | |
| 242 // Firefox 57 sometimes sets the status for a window to "complete" | |
|
Wladimir Palant
2017/11/23 11:49:00
Nit: Please drop the version number, we don't know
kzar
2017/11/23 12:31:53
Done.
| |
| 243 // before it is ready to receive messages[1]. As a workaround we'll | |
| 244 // try again a few times with a second delay. | |
| 245 // [1] - https://bugzilla.mozilla.org/show_bug.cgi?id=1418655 | |
| 246 setTimeout(doInit, 1000); | |
|
kzar
2017/11/21 15:39:20
Initially I retried every 100ms, but then I found
| |
| 235 }); | 247 }); |
| 236 }; | 248 }; |
| 237 if (window.tabs[0].status != "complete") | 249 if (window.tabs[0].status != "complete") |
| 238 { | 250 { |
| 239 let updateListener = (tabId, changeInfo, tab) => | 251 let updateListener = (tabId, changeInfo, tab) => |
| 240 { | 252 { |
| 241 if (tabId == popupPageId && changeInfo.status == "complete") | 253 if (tabId == popupPageId && changeInfo.status == "complete") |
| 242 { | 254 { |
| 243 browser.tabs.onUpdated.removeListener(updateListener); | 255 browser.tabs.onUpdated.removeListener(updateListener); |
| 244 doInit(); | 256 doInit(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 292 { | 304 { |
| 293 return quoteCSS(message.CSS); | 305 return quoteCSS(message.CSS); |
| 294 }); | 306 }); |
| 295 | 307 |
| 296 ext.pages.onLoading.addListener(page => | 308 ext.pages.onLoading.addListener(page => |
| 297 { | 309 { |
| 298 // A newly opened tab that is still loading has its URL set to about:blank | 310 // A newly opened tab that is still loading has its URL set to about:blank |
| 299 if (/^https?:/.test(page.url.protocol)) | 311 if (/^https?:/.test(page.url.protocol)) |
| 300 page.sendMessage({type: "composer.content.finished"}); | 312 page.sendMessage({type: "composer.content.finished"}); |
| 301 }); | 313 }); |
| OLD | NEW |