function captureTab(tab) { let browser = getBrowserForTab(getTabForId(tab.id)); try { PageThumbs.captureAndStore(browser); } catch(e){} }
open(self).then(({ tabId, document }) => { sp.once("sayHello", _ => { assert.pass("The button was pressed!"); tabs.activeTab.close(done); }); let browser = getBrowserForTab(getTabForId(tabId)); let browserMM = browser.messageManager; browserMM.loadFrameScript(self.data.url("test-button-frame-script.js"), false); });
open({ id: id }).then(({ tabId }) => { let tab = Tab({ tab: getTabForId(tabId) }); assert.pass('the add-on prefs page was opened.'); tab.attach({ contentScriptWhen: "end", contentScript: 'self.postMessage({\n' + 'someCount: unsafeWindow.document.querySelectorAll("setting[title=\'some-title\']").length,\n' + 'somePreference: getAttributes(unsafeWindow.document.querySelector("setting[title=\'some-title\']")),\n' + 'myInteger: getAttributes(unsafeWindow.document.querySelector("setting[title=\'my-int\']")),\n' + 'myHiddenInt: getAttributes(unsafeWindow.document.querySelector("setting[title=\'hidden-int\']")),\n' + 'sayHello: getAttributes(unsafeWindow.document.querySelector("button[label=\'Click me!\']"))\n' + '});\n' + 'function getAttributes(ele) {\n' + 'if (!ele) return {};\n' + 'return {\n' + 'pref: ele.getAttribute("pref"),\n' + 'type: ele.getAttribute("type"),\n' + 'title: ele.getAttribute("title"),\n' + 'desc: ele.getAttribute("desc"),\n' + '"data-jetpack-id": ele.getAttribute(\'data-jetpack-id\')\n' + '}\n' + '}\n', onMessage: msg => { // test against doc caching assert.equal(msg.someCount, 1, 'there is exactly one <setting> node for somePreference'); // test somePreference assert.equal(msg.somePreference.type, 'string', 'some pref is a string'); assert.equal(msg.somePreference.pref, 'extensions.' + id + '.somePreference', 'somePreference path is correct'); assert.equal(msg.somePreference.title, 'some-title', 'somePreference title is correct'); assert.equal(msg.somePreference.desc, 'Some short description for the preference', 'somePreference description is correct'); assert.equal(msg.somePreference['data-jetpack-id'], id, 'data-jetpack-id attribute value is correct'); // test myInteger assert.equal(msg.myInteger.type, 'integer', 'myInteger is a int'); assert.equal(msg.myInteger.pref, 'extensions.' + id + '.myInteger', 'extensions.test-simple-prefs.myInteger'); assert.equal(msg.myInteger.title, 'my-int', 'myInteger title is correct'); assert.equal(msg.myInteger.desc, 'How many of them we have.', 'myInteger desc is correct'); assert.equal(msg.myInteger['data-jetpack-id'], id, 'data-jetpack-id attribute value is correct'); // test myHiddenInt assert.equal(msg.myHiddenInt.type, undefined, 'myHiddenInt was not displayed'); assert.equal(msg.myHiddenInt.pref, undefined, 'myHiddenInt was not displayed'); assert.equal(msg.myHiddenInt.title, undefined, 'myHiddenInt was not displayed'); assert.equal(msg.myHiddenInt.desc, undefined, 'myHiddenInt was not displayed'); // test sayHello assert.equal(msg.sayHello['data-jetpack-id'], id, 'data-jetpack-id attribute value is correct'); tab.close(done); } }); })
open({ id: id }).then(({ tabId, document }) => { let tab = Tab({ tab: getTabForId(tabId) }); sp.once('sayHello', _ => { assert.pass('The button was pressed!'); tab.close(done); }); tab.attach({ contentScript: 'unsafeWindow.document.querySelector("button[label=\'Click me!\']").click();' }); });
open(self).then(({ tabId }) => { assert.pass("the add-on prefs page was opened."); let browser = getBrowserForTab(getTabForId(tabId)); let browserMM = browser.messageManager; browserMM.loadFrameScript(self.data.url("test-AOM-frame-script.js"), false); browserMM.addMessageListener("test-aom@jpm:results", ({ data }) => { // test against doc caching assert.equal(data.someCount, 1, "there is exactly one <setting> node for somePreference"); // test somePreference assert.equal(data.somePreference.type, "string", "some pref is a string"); assert.equal(data.somePreference.pref, "extensions."+self.id+".somePreference", "somePreference path is correct"); assert.equal(data.somePreference.title, "some-title", "somePreference title is correct"); assert.equal(data.somePreference.desc, "Some short description for the preference", "somePreference description is correct"); assert.equal(data.somePreference["data-jetpack-id"], self.id, "data-jetpack-id attribute value is correct"); // test myInteger assert.equal(data.myInteger.type, "integer", "myInteger is a int"); assert.equal(data.myInteger.pref, "extensions."+self.id+".myInteger", "extensions.test-simple-prefs.myInteger"); assert.equal(data.myInteger.title, "my-int", "myInteger title is correct"); assert.equal(data.myInteger.desc, "How many of them we have.", "myInteger desc is correct"); assert.equal(data.myInteger["data-jetpack-id"], self.id, "data-jetpack-id attribute value is correct"); // test myHiddenInt assert.equal(data.myHiddenInt.type, undefined, "myHiddenInt was not displayed"); assert.equal(data.myHiddenInt.pref, undefined, "myHiddenInt was not displayed"); assert.equal(data.myHiddenInt.title, undefined, "myHiddenInt was not displayed"); assert.equal(data.myHiddenInt.desc, undefined, "myHiddenInt was not displayed"); // test sayHello assert.equal(data.sayHello["data-jetpack-id"], self.id, "data-jetpack-id attribute value is correct"); tabs.activeTab.close(done); }); })
mouse_scroll: function (event) { let tab = tabs.activeTab; let xulTab = tabUtils.getTabForId(tab.id); this.handle_mouse_scroll({event: event, tab: xulTab, e10s:false}); },
setTabActive: function(worker) { let xulTab = tabUtils.getTabForId(worker.tabId); tabUtils.activateTab(xulTab, tabUtils.getOwnerWindow(xulTab)); },
getDOMWindowByWorker: function (worker) { let xulTab = tabUtils.getTabForId(worker.tabId); let chromeWindow = tabUtils.getOwnerWindow(xulTab); return chromeWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow); },
geXulTabBytWorker: function (worker) { return tabUtils.getTabForId(worker.tabId); },