| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */'use strict';// The panel module currently supports only Firefox.// See: https://bugzilla.mozilla.org/show_bug.cgi?id=jetpack-panel-appsmodule.metadata = {  'stability': 'unstable',  'engines': {    'Firefox': '*'  }};const { getMostRecentBrowserWindow, windows: getWindows } = require('../window/utils');const { ignoreWindow } = require('../private-browsing/utils');const { isPrivateBrowsingSupported } = require('../self');const { isGlobalPBSupported } = require('../private-browsing/utils');function getWindow(anchor) {  let window;  let windows = getWindows("navigator:browser", {    includePrivate: isPrivateBrowsingSupported || isGlobalPBSupported  });  if (anchor) {    let anchorWindow = anchor.ownerDocument.defaultView.top;    let anchorDocument = anchorWindow.document;    // loop thru supported windows    for each(let enumWindow in windows) {      // Check if the anchor is in this browser window.      if (enumWindow == anchorWindow) {        window = anchorWindow;        break;      }      // Check if the anchor is in a browser tab in this browser window.      let browser = enumWindow.gBrowser.getBrowserForDocument(anchorDocument);      if (browser) {        window = enumWindow;        break;      }      // Look in other subdocuments (sidebar, etc.)?    }  }  // If we didn't find the anchor's window (or we have no anchor),  // return the most recent browser window.  if (!window)    window = getMostRecentBrowserWindow();  // if the window is not supported, then it should be ignored  if (ignoreWindow(window)) {  	return null;  }  return window;}exports.getWindow = getWindow;
 |