diff options
Diffstat (limited to 'addon-sdk/source/test/test-page-mod-debug.js')
-rw-r--r-- | addon-sdk/source/test/test-page-mod-debug.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/addon-sdk/source/test/test-page-mod-debug.js b/addon-sdk/source/test/test-page-mod-debug.js new file mode 100644 index 000000000..86f491149 --- /dev/null +++ b/addon-sdk/source/test/test-page-mod-debug.js @@ -0,0 +1,66 @@ +/* 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"; + +const { Cc, Ci, Cu } = require("chrome"); +const { PageMod } = require("sdk/page-mod"); +const { testPageMod, handleReadyState, openNewTab, + contentScriptWhenServer, createLoader } = require("./page-mod/helpers"); +const { cleanUI, after } = require("sdk/test/utils"); +const { open, getFrames, getMostRecentBrowserWindow, getInnerId } = require("sdk/window/utils"); + +const { devtools } = Cu.import("resource://devtools/shared/Loader.jsm", {}); +const { require: devtoolsRequire } = devtools; +const contentGlobals = devtoolsRequire("devtools/server/content-globals"); + +// The following adds Debugger constructor to the global namespace. +const { addDebuggerToGlobal } = require('resource://gre/modules/jsdebugger.jsm'); +addDebuggerToGlobal(this); + +exports.testDebugMetadata = function(assert, done) { + let dbg = new Debugger; + let globalDebuggees = []; + dbg.onNewGlobalObject = function(global) { + globalDebuggees.push(global); + } + + let mods = testPageMod(assert, done, "about:", [{ + include: "about:", + contentScriptWhen: "start", + contentScript: "null;", + }], function(win, done) { + assert.ok(globalDebuggees.some(function(global) { + try { + let metadata = Cu.getSandboxMetadata(global.unsafeDereference()); + return metadata && metadata.addonID && metadata.SDKContentScript && + metadata['inner-window-id'] == getInnerId(win); + } catch(e) { + // Some of the globals might not be Sandbox instances and thus + // will cause getSandboxMetadata to fail. + return false; + } + }), "one of the globals is a content script"); + done(); + } + ); +}; + +exports.testDevToolsExtensionsGetContentGlobals = function(assert, done) { + let mods = testPageMod(assert, done, "about:", [{ + include: "about:", + contentScriptWhen: "start", + contentScript: "null;", + }], function(win, done) { + assert.equal(contentGlobals.getContentGlobals({ 'inner-window-id': getInnerId(win) }).length, 1); + done(); + } + ); +}; + +after(exports, function*(name, assert) { + assert.pass("cleaning ui."); + yield cleanUI(); +}); + +require('sdk/test').run(exports); |