123456789101112131415161718192021222324252627282930313233 |
- /* 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';
- module.metadata = {
- 'stability': 'unstable'
- };
- const privateNS = require('../../core/namespace').ns();
- function getOwnerWindow(thing) {
- try {
- // check for and return associated window
- let fn = (privateNS(thing.prototype) || privateNS(thing) || {}).getOwnerWindow;
- if (fn)
- return fn.apply(fn, [thing].concat(arguments));
- }
- // stuff like numbers and strings throw errors with namespaces
- catch(e) {}
- // default
- return undefined;
- }
- getOwnerWindow.define = function(Type, fn) {
- privateNS(Type.prototype).getOwnerWindow = fn;
- }
- getOwnerWindow.implement = function(instance, fn) {
- privateNS(instance).getOwnerWindow = fn;
- }
- exports.getOwnerWindow = getOwnerWindow;
|