 Issue 29536764:
  Issue 5587, 5748 - Use mobile options page on Firefox for Android  (Closed) 
  Base URL: https://hg.adblockplus.org/adblockpluschrome/
    
  
    Issue 29536764:
  Issue 5587, 5748 - Use mobile options page on Firefox for Android  (Closed) 
  Base URL: https://hg.adblockplus.org/adblockpluschrome/| Index: ext/background.js | 
| =================================================================== | 
| --- a/ext/background.js | 
| +++ b/ext/background.js | 
| @@ -312,26 +312,16 @@ | 
| chrome.tabs.onActivated.addListener(details => | 
| { | 
| ext.pages.onActivated._dispatch(new Page({id: details.tabId})); | 
| }); | 
| /* Browser actions */ | 
| - // On Firefox for Android, open the options page directly when the browser | 
| - // action is clicked. | 
| - if (!("getPopup" in chrome.browserAction)) | 
| - { | 
| - chrome.browserAction.onClicked.addListener(() => | 
| - { | 
| - ext.showOptions(); | 
| - }); | 
| - } | 
| - | 
| let BrowserAction = function(tabId) | 
| { | 
| this._tabId = tabId; | 
| this._changes = null; | 
| }; | 
| BrowserAction.prototype = { | 
| _applyChanges() | 
| { | 
| @@ -727,55 +717,58 @@ | 
| callback(new Page(tabs[0])); | 
| else | 
| afterTabLoaded(callback)(tabs[0]); | 
| } | 
| }); | 
| }); | 
| } | 
| } | 
| - else if ("windows" in chrome) | 
| + else | 
| { | 
| // Edge does not yet support runtime.openOptionsPage (tested version 38) | 
| - // and so this workaround needs to stay for now. | 
| - // We are not using extension.getURL to get the absolute path here | 
| - // because of the Edge issue: | 
| - // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10276332/ | 
| - let optionsUrl = "options.html"; | 
| - let fullOptionsUrl = ext.getURL(optionsUrl); | 
| - | 
| chrome.tabs.query({}, tabs => | 
| { | 
| // We find a tab ourselves because Edge has a bug when quering tabs | 
| // with extension URL protocol: | 
| // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8094141/ | 
| // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8604703/ | 
| + // Firefox won't let us query for moz-extension:// pages either, though | 
| + // starting with Firefox 56 an extension can query for its own URLs: | 
| + // https://bugzilla.mozilla.org/show_bug.cgi?id=1271354 | 
| + let optionsUrl = "options.html"; | 
| + let fullOptionsUrl = ext.getURL(optionsUrl); | 
| let tab = tabs.find(element => element.url == fullOptionsUrl); | 
| if (tab) | 
| { | 
| - chrome.windows.update(tab.windowId, {focused: true}); | 
| + // Firefox for Android before version 57 does not support | 
| + // runtime.openOptionsPage, nor does it support the windows API. | 
| + // Since there is effectively only one window on the mobile browser, | 
| + // there's no need to bring it into focus. | 
| + if ("windows" in chrome) | 
| + chrome.windows.update(tab.windowId, {focused: true}); | 
| + | 
| chrome.tabs.update(tab.id, {active: true}); | 
| if (callback) | 
| - callback(new Page(tab)); | 
| + { | 
| 
Manish Jethani
2017/09/15 17:57:27
This should be done regardless of the other change
 | 
| + if (tab.status == "complete") | 
| + callback(new Page(tab)); | 
| + else | 
| + afterTabLoaded(callback)(tab); | 
| + } | 
| } | 
| else | 
| { | 
| + // We don't use fullOptionsUrl here because of this Edge issue: | 
| + // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10276332 | 
| ext.pages.open(optionsUrl, callback); | 
| } | 
| }); | 
| } | 
| - else | 
| - { | 
| - // Firefox for Android before version 57 does not support | 
| - // runtime.openOptionsPage, nor does it support the windows API. Since | 
| - // there is effectively only one window on the mobile browser, there's no | 
| - // need to bring it into focus. | 
| - ext.pages.open("options.html", callback); | 
| - } | 
| }; | 
| /* Windows */ | 
| ext.windows = { | 
| create(createData, callback) | 
| { | 
| chrome.windows.create(createData, createdWindow => | 
| { |