| Index: ext/background.js |
| =================================================================== |
| --- a/ext/background.js |
| +++ b/ext/background.js |
| @@ -483,21 +483,24 @@ |
| updateContextMenu(); |
| } |
| } |
| } |
| }; |
| chrome.tabs.onActivated.addListener(updateContextMenu); |
| - chrome.windows.onFocusChanged.addListener(windowId => |
| + if ("windows" in chrome) |
| { |
| - if (windowId != chrome.windows.WINDOW_ID_NONE) |
| - updateContextMenu(); |
| - }); |
| + chrome.windows.onFocusChanged.addListener(windowId => |
| + { |
| + if (windowId != chrome.windows.WINDOW_ID_NONE) |
| + updateContextMenu(); |
| + }); |
| + } |
| /* Web requests */ |
| let framesOfTabs = new Map(); |
| ext.getFrame = (tabId, frameId) => |
| { |
| @@ -698,51 +701,61 @@ |
| { |
| // Edge does not yet support runtime.openOptionsPage (tested version 38) |
|
Sebastian Noack
2017/08/15 14:40:19
This comment should be updated, also mentioning Fi
Manish Jethani
2017/08/15 16:24:12
I'm going to make another change for runtime.openO
|
| // 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/ |
| ext.showOptions = callback => |
| { |
| - chrome.windows.getLastFocused(win => |
| + let optionsUrl = "options.html"; |
| + let queryInfo = {url: optionsUrl}; |
| + |
| + let open = win => |
| { |
| - let optionsUrl = "options.html"; |
| - let queryInfo = {url: optionsUrl}; |
| - |
| // extension pages can't be accessed in incognito windows. In order to |
| // correctly mimic the way in which Chrome opens extension options, |
| // we have to focus the options page in any other window. |
| - if (!win.incognito) |
| + if (win && !win.incognito) |
| queryInfo.windowId = win.id; |
| chrome.tabs.query(queryInfo, tabs => |
| { |
| if (tabs.length > 0) |
| { |
| let tab = tabs[0]; |
| - chrome.windows.update(tab.windowId, {focused: true}); |
| + if ("windows" in chrome) |
| + chrome.windows.update(tab.windowId, {focused: true}); |
| + |
| chrome.tabs.update(tab.id, {active: true}); |
| if (callback) |
| callback(new Page(tab)); |
| } |
| else |
| { |
| ext.pages.open(optionsUrl, callback); |
| } |
| }); |
| - }); |
| + }; |
| + |
| + if ("windows" in chrome) |
| + chrome.windows.getLastFocused(open); |
| + else |
| + open(); |
| }; |
| } |
| /* Windows */ |
| - ext.windows = { |
| - create(createData, callback) |
| - { |
| - chrome.windows.create(createData, createdWindow => |
| + if ("windows" in chrome) |
| + { |
| + ext.windows = { |
|
Sebastian Noack
2017/08/15 14:40:19
What is about the code using ext.windows? I suppos
Manish Jethani
2017/08/15 16:24:12
ext.windows is only used from lib/filterComposer.j
Sebastian Noack
2017/08/18 10:25:21
I guess we can just leave the code here unchanged
Manish Jethani
2017/08/18 14:09:58
I just checked and the only way ext.windows can be
|
| + create(createData, callback) |
| { |
| - afterTabLoaded(callback)(createdWindow.tabs[0]); |
| - }); |
| - } |
| - }; |
| + chrome.windows.create(createData, createdWindow => |
| + { |
| + afterTabLoaded(callback)(createdWindow.tabs[0]); |
| + }); |
| + } |
| + }; |
| + } |
| }()); |