copy from browser/components/extensions/test/browser/context.html
copy to mobile/android/components/extensions/test/mochitest/context.html
copy from browser/components/extensions/test/browser/context_tabs_onUpdated_iframe.html
copy to mobile/android/components/extensions/test/mochitest/context_tabs_onUpdated_iframe.html
copy from browser/components/extensions/test/browser/context_tabs_onUpdated_page.html
copy to mobile/android/components/extensions/test/mochitest/context_tabs_onUpdated_page.html
copy from browser/components/extensions/test/browser/file_bypass_cache.sjs
copy to mobile/android/components/extensions/test/mochitest/file_bypass_cache.sjs
copy from browser/components/extensions/test/browser/file_dummy.html
copy to mobile/android/components/extensions/test/mochitest/file_dummy.html
copy from browser/components/extensions/test/browser/file_iframe_document.html
copy to mobile/android/components/extensions/test/mochitest/file_iframe_document.html
copy from browser/components/extensions/test/browser/file_iframe_document.sjs
copy to mobile/android/components/extensions/test/mochitest/file_iframe_document.sjs
--- a/mobile/android/components/extensions/test/mochitest/mochitest.ini
+++ b/mobile/android/components/extensions/test/mochitest/mochitest.ini
@@ -1,6 +1,29 @@
[DEFAULT]
support-files =
../../../../../../toolkit/components/extensions/test/mochitest/test_ext_all_apis.js
+ context.html
+ context_tabs_onUpdated_iframe.html
+ context_tabs_onUpdated_page.html
+ file_bypass_cache.sjs
+ file_dummy.html
+ file_iframe_document.html
+ file_iframe_document.sjs
tags = webextensions
[test_ext_all_apis.html]
+[test_ext_tab_runtimeConnect.html]
+[test_ext_tabs_captureVisibleTab.html]
+[test_ext_tabs_create.html]
+[test_ext_tabs_events.html]
+[test_ext_tabs_executeScript.html]
+[test_ext_tabs_executeScript_bad.html]
+[test_ext_tabs_executeScript_good.html]
+[test_ext_tabs_executeScript_no_create.html]
+[test_ext_tabs_executeScript_runAt.html]
+[test_ext_tabs_getCurrent.html]
+[test_ext_tabs_insertCSS.html]
+[test_ext_tabs_reload.html]
+[test_ext_tabs_reload_bypass_cache.html]
+[test_ext_tabs_onUpdated.html]
+[test_ext_tabs_sendMessage.html]
+[test_ext_tabs_update_url.html]
copy from browser/components/extensions/test/browser/browser_ext_tab_runtimeConnect.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tab_runtimeConnect.html
--- a/browser/components/extensions/test/browser/browser_ext_tab_runtimeConnect.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tab_runtimeConnect.html
@@ -1,14 +1,25 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs runtimeConnect Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* () {
- let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/");
+ let win = window.open("http://mochi.test:8888/");
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
},
background: function() {
let messages_received = [];
@@ -51,24 +62,28 @@ add_task(function* () {
});
},
"tab.html": `
<!DOCTYPE html>
<html>
<head>
<title>test tab extension page</title>
<meta charset="utf-8">
- <script src="tab.js" async></script>
+ <script src="tab.js" async><\/script>
</head>
<body>
<h1>test tab extension page</h1>
</body>
</html>
`,
},
});
yield extension.startup();
yield extension.awaitFinish("tabRuntimeConnect.pass");
yield extension.unload();
- yield BrowserTestUtils.removeTab(tab);
+ win.close();
});
+</script>
+
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_captureVisibleTab.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_captureVisibleTab.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_captureVisibleTab.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_captureVisibleTab.html
@@ -1,10 +1,21 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs captureVisibleTab Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
function* runTest(options) {
options.neutral = [0xaa, 0xaa, 0xaa];
let html = `
<!DOCTYPE html>
<html lang="en">
@@ -17,19 +28,17 @@ function* runTest(options) {
top: 2px;
bottom: 2px;
background: rgb(${options.neutral});"></div>
</body>
</html>
`;
let url = `data:text/html,${encodeURIComponent(html)}`;
- let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, url, true);
-
- tab.linkedBrowser.fullZoom = options.fullZoom;
+ let win = window.open(url);
async function background(options) {
browser.test.log(`Test color ${options.color} at fullZoom=${options.fullZoom}`);
try {
let [tab] = await browser.tabs.query({currentWindow: true, active: true});
let [jpeg, png, ...pngs] = await Promise.all([
@@ -116,27 +125,23 @@ function* runTest(options) {
});
yield extension.startup();
yield extension.awaitFinish("captureVisibleTab");
yield extension.unload();
- yield BrowserTestUtils.removeTab(tab);
+ win.close();
}
add_task(function* testCaptureVisibleTab() {
- yield runTest({color: [0, 0, 0], fullZoom: 1});
-
- yield runTest({color: [0, 0, 0], fullZoom: 2});
+ yield runTest({color: [0, 0, 0]});
- yield runTest({color: [0, 0, 0], fullZoom: 0.5});
-
- yield runTest({color: [255, 255, 255], fullZoom: 1});
+ yield runTest({color: [255, 255, 255]});
});
add_task(function* testCaptureVisibleTabPermissions() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
},
@@ -148,8 +153,12 @@ add_task(function* testCaptureVisibleTab
});
yield extension.startup();
yield extension.awaitFinish("captureVisibleTabPermissions");
yield extension.unload();
});
+</script>
+
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_create.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_create.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_create.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_create.html
@@ -1,98 +1,72 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs create Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* () {
- let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:robots");
- gBrowser.selectedTab = tab;
-
- // TODO: Multiple windows.
-
- // Using pre-loaded new tab pages interferes with onUpdated events.
- // It probably shouldn't.
- SpecialPowers.setBoolPref("browser.newtab.preload", false);
- registerCleanupFunction(() => {
- SpecialPowers.clearUserPref("browser.newtab.preload");
- });
+ let win = window.open("http://example.org/");
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
"background": {"page": "bg/background.html"},
},
files: {
"bg/blank.html": `<html><head><meta charset="utf-8"></head></html>`,
"bg/background.html": `<html><head>
<meta charset="utf-8">
- <script src="background.js"></script>
+ <script src="background.js"><\/script>
</head></html>`,
"bg/background.js": function() {
let activeTab;
let activeWindow;
function runTests() {
const DEFAULTS = {
- index: 2,
windowId: activeWindow,
active: true,
- pinned: false,
- url: "about:newtab",
+ url: "about:blank",
};
let tests = [
{
create: {url: "http://example.com/"},
result: {url: "http://example.com/"},
},
{
create: {url: "blank.html"},
result: {url: browser.runtime.getURL("bg/blank.html")},
},
{
create: {},
- result: {url: "about:newtab"},
},
{
create: {active: false},
result: {active: false},
},
{
create: {active: true},
result: {active: true},
},
- {
- create: {pinned: true},
- result: {pinned: true, index: 0},
- },
- {
- create: {pinned: true, active: true},
- result: {pinned: true, active: true, index: 0},
- },
- {
- create: {pinned: true, active: false},
- result: {pinned: true, active: false, index: 0},
- },
- {
- create: {index: 1},
- result: {index: 1},
- },
- {
- create: {index: 1, active: false},
- result: {index: 1, active: false},
- },
- {
- create: {windowId: activeWindow},
- result: {windowId: activeWindow},
- },
];
async function nextTest() {
if (!tests.length) {
browser.test.notifyPass("tabs.create");
return;
}
@@ -156,11 +130,14 @@ add_task(function* () {
},
},
});
yield extension.startup();
yield extension.awaitFinish("tabs.create");
yield extension.unload();
- yield BrowserTestUtils.removeTab(tab);
+ win.close();
});
+</script>
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_events.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_events.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_events.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_events.html
@@ -1,10 +1,21 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs Events Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* testTabEvents() {
async function background() {
let events = [];
let eventPromise;
let checkEvents = () => {
if (eventPromise && events.length >= eventPromise.names.length) {
@@ -49,112 +60,34 @@ add_task(function* testTabEvents() {
for (let [i, name] of names.entries()) {
browser.test.assertEq(name, i in events && events[i].type,
`Got expected ${name} event`);
}
return events.splice(0);
}
try {
- browser.test.log("Create second browser window");
-
- let windows = await Promise.all([
- browser.windows.getCurrent(),
- browser.windows.create({url: "about:blank"}),
- ]);
-
- let windowId = windows[0].id;
- let otherWindowId = windows[1].id;
-
- let [created] = await expectEvents(["onCreated"]);
- let initialTab = created.tab;
-
-
- browser.test.log("Create tab in window 1");
- let tab = await browser.tabs.create({windowId, index: 0, url: "about:blank"});
+ browser.test.log("Create tab");
+ let tab = await browser.tabs.create({url: "about:blank"});
let oldIndex = tab.index;
- browser.test.assertEq(0, oldIndex, "Tab has the expected index");
[created] = await expectEvents(["onCreated"]);
browser.test.assertEq(tab.id, created.tab.id, "Got expected tab ID");
browser.test.assertEq(oldIndex, created.tab.index, "Got expected tab index");
- browser.test.log("Move tab to window 2");
- await browser.tabs.move([tab.id], {windowId: otherWindowId, index: 0});
-
- let [detached, attached] = await expectEvents(["onDetached", "onAttached"]);
- browser.test.assertEq(oldIndex, detached.oldPosition, "Expected old index");
- browser.test.assertEq(windowId, detached.oldWindowId, "Expected old window ID");
-
- browser.test.assertEq(0, attached.newPosition, "Expected new index");
- browser.test.assertEq(otherWindowId, attached.newWindowId, "Expected new window ID");
-
-
- browser.test.log("Move tab within the same window");
- let [moved] = await browser.tabs.move([tab.id], {index: 1});
- browser.test.assertEq(1, moved.index, "Expected new index");
-
- [moved] = await expectEvents(["onMoved"]);
- browser.test.assertEq(tab.id, moved.tabId, "Expected tab ID");
- browser.test.assertEq(0, moved.fromIndex, "Expected old index");
- browser.test.assertEq(1, moved.toIndex, "Expected new index");
- browser.test.assertEq(otherWindowId, moved.windowId, "Expected window ID");
-
-
browser.test.log("Remove tab");
await browser.tabs.remove(tab.id);
let [removed] = await expectEvents(["onRemoved"]);
browser.test.assertEq(tab.id, removed.tabId, "Expected removed tab ID");
- browser.test.assertEq(otherWindowId, removed.windowId, "Expected removed tab window ID");
+ browser.test.assertEq(tab.windowId, removed.windowId, "Expected removed tab window ID");
// Note: We want to test for the actual boolean value false here.
browser.test.assertEq(false, removed.isWindowClosing, "Expected isWindowClosing value");
-
- browser.test.log("Close second window");
- await browser.windows.remove(otherWindowId);
- [removed] = await expectEvents(["onRemoved"]);
- browser.test.assertEq(initialTab.id, removed.tabId, "Expected removed tab ID");
- browser.test.assertEq(otherWindowId, removed.windowId, "Expected removed tab window ID");
- browser.test.assertEq(true, removed.isWindowClosing, "Expected isWindowClosing value");
-
-
- browser.test.log("Create additional tab in window 1");
- tab = await browser.tabs.create({windowId, url: "about:blank"});
- await expectEvents(["onCreated"]);
-
-
- browser.test.log("Create a new window, adopting the new tab");
- // We have to explicitly wait for the event here, since its timing is
- // not predictable.
- let promiseAttached = new Promise(resolve => {
- browser.tabs.onAttached.addListener(function listener(tabId) {
- browser.tabs.onAttached.removeListener(listener);
- resolve();
- });
- });
-
- let [window] = await Promise.all([
- browser.windows.create({tabId: tab.id}),
- promiseAttached,
- ]);
-
- [detached, attached] = await expectEvents(["onDetached", "onAttached"]);
-
- browser.test.assertEq(tab.id, detached.tabId, "Expected onDetached tab ID");
-
- browser.test.assertEq(tab.id, attached.tabId, "Expected onAttached tab ID");
- browser.test.assertEq(0, attached.newPosition, "Expected onAttached new index");
- browser.test.assertEq(window.id, attached.newWindowId,
- "Expected onAttached new window id");
-
- browser.test.log("Close the new window");
- await browser.windows.remove(window.id);
-
browser.test.notifyPass("tabs-events");
} catch (e) {
browser.test.fail(`${e} :: ${e.stack}`);
browser.test.notifyFail("tabs-events");
}
}
let extension = ExtensionTestUtils.loadExtension({
@@ -165,92 +98,16 @@ add_task(function* testTabEvents() {
background,
});
yield extension.startup();
yield extension.awaitFinish("tabs-events");
yield extension.unload();
});
-add_task(function* testTabEventsSize() {
- function background() {
- function sendSizeMessages(tab, type) {
- browser.test.sendMessage(`${type}-dims`, {width: tab.width, height: tab.height});
- }
-
- browser.tabs.onCreated.addListener(tab => {
- sendSizeMessages(tab, "on-created");
- });
-
- browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
- if (changeInfo.status == "complete") {
- sendSizeMessages(tab, "on-updated");
- }
- });
-
- browser.test.onMessage.addListener(async (msg, arg) => {
- if (msg === "create-tab") {
- let tab = await browser.tabs.create({url: "http://example.com/"});
- sendSizeMessages(tab, "create");
- browser.test.sendMessage("created-tab-id", tab.id);
- } else if (msg === "update-tab") {
- let tab = await browser.tabs.update(arg, {url: "http://example.org/"});
- sendSizeMessages(tab, "update");
- } else if (msg === "remove-tab") {
- browser.tabs.remove(arg);
- browser.test.sendMessage("tab-removed");
- }
- });
-
- browser.test.sendMessage("ready");
- }
-
- let extension = ExtensionTestUtils.loadExtension({
- manifest: {
- "permissions": ["tabs"],
- },
- background,
- });
-
- const RESOLUTION_PREF = "layout.css.devPixelsPerPx";
- registerCleanupFunction(() => {
- SpecialPowers.clearUserPref(RESOLUTION_PREF);
- });
-
- function checkDimensions(dims, type) {
- is(dims.width, gBrowser.selectedBrowser.clientWidth, `tab from ${type} reports expected width`);
- is(dims.height, gBrowser.selectedBrowser.clientHeight, `tab from ${type} reports expected height`);
- }
-
- yield Promise.all([extension.startup(), extension.awaitMessage("ready")]);
-
- for (let resolution of [2, 1]) {
- SpecialPowers.setCharPref(RESOLUTION_PREF, String(resolution));
- is(window.devicePixelRatio, resolution, "window has the required resolution");
-
- extension.sendMessage("create-tab");
- let tabId = yield extension.awaitMessage("created-tab-id");
-
- checkDimensions(yield extension.awaitMessage("create-dims"), "create");
- checkDimensions(yield extension.awaitMessage("on-created-dims"), "onCreated");
- checkDimensions(yield extension.awaitMessage("on-updated-dims"), "onUpdated");
-
- extension.sendMessage("update-tab", tabId);
-
- checkDimensions(yield extension.awaitMessage("update-dims"), "update");
- checkDimensions(yield extension.awaitMessage("on-updated-dims"), "onUpdated");
-
- extension.sendMessage("remove-tab", tabId);
- yield extension.awaitMessage("tab-removed");
- }
-
- yield extension.unload();
- SpecialPowers.clearUserPref(RESOLUTION_PREF);
-});
-
add_task(function* testTabRemovalEvent() {
async function background() {
function awaitLoad(tabId) {
return new Promise(resolve => {
browser.tabs.onUpdated.addListener(function listener(tabId_, changed, tab) {
if (tabId == tabId_ && changed.status == "complete") {
browser.tabs.onUpdated.removeListener(listener);
resolve();
@@ -265,17 +122,17 @@ add_task(function* testTabRemovalEvent()
for (let tab of tabs) {
browser.test.assertTrue(tab.id != tabId, "Tab query should not include removed tabId");
}
browser.test.notifyPass("tabs-events");
});
});
try {
- let url = "http://example.com/browser/browser/components/extensions/test/browser/context.html";
+ let url = "http://example.com/mochitest/mobile/android/components/extensions/test/mochitest/context.html";
let tab = await browser.tabs.create({url: url});
await awaitLoad(tab.id);
await browser.tabs.remove(tab.id);
} catch (e) {
browser.test.fail(`${e} :: ${e.stack}`);
browser.test.notifyFail("tabs-events");
}
@@ -288,8 +145,12 @@ add_task(function* testTabRemovalEvent()
background,
});
yield extension.startup();
yield extension.awaitFinish("tabs-events");
yield extension.unload();
});
+</script>
+
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_executeScript.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_executeScript.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript.html
@@ -1,46 +1,27 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs executeScript Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* testExecuteScript() {
- let {ExtensionManagement} = Cu.import("resource://gre/modules/ExtensionManagement.jsm", {});
- let {MessageChannel} = Cu.import("resource://gre/modules/MessageChannel.jsm", {});
-
- function countMM(messageManagerMap) {
- let count = 0;
- // List of permanent message managers in the main process. We should not
- // count them in the test because MessageChannel unsubscribes when the
- // message manager closes, which never happens to these, of course.
- let globalMMs = [
- Services.mm,
- Services.ppmm,
- Services.ppmm.getChildAt(0),
- ];
- for (let mm of messageManagerMap.keys()) {
- // Sanity check: mm is a message manager.
- try {
- mm.QueryInterface(Ci.nsIMessageSender);
- } catch (e) {
- mm.QueryInterface(Ci.nsIMessageBroadcaster);
- }
- if (!globalMMs.includes(mm)) {
- ++count;
- }
- }
- return count;
- }
-
- let messageManagersSize = countMM(MessageChannel.messageManagers);
- let responseManagersSize = countMM(MessageChannel.responseManagers);
-
- const BASE = "http://mochi.test:8888/browser/browser/components/extensions/test/browser/";
+ const BASE = "http://mochi.test:8888/tests/mobile/android/components/extensions/test/mochitest/";
const URL = BASE + "file_iframe_document.html";
- let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, URL, true);
+ let win = window.open(URL);
async function background() {
try {
let [tab] = await browser.tabs.query({active: true, currentWindow: true});
let frames = await browser.webNavigation.getAllFrames({tabId: tab.id});
browser.test.log(`FRAMES: ${frames[1].frameId} ${JSON.stringify(frames)}\n`);
await Promise.all([
@@ -197,21 +178,24 @@ add_task(function* testExecuteScript() {
browser.tabs.create({url: "http://example.com/"}).then(async tab => {
let result = await browser.tabs.executeScript(tab.id, {code: "location.href"});
browser.test.assertEq("http://example.com/", result[0], "Script executed correctly in new tab");
await browser.tabs.remove(tab.id);
}),
+ // This currently does not work on Android.
+ /*
browser.tabs.create({url: "about:blank"}).then(async tab => {
const result = await browser.tabs.executeScript(tab.id, {code: "location.href", matchAboutBlank: true});
browser.test.assertEq("about:blank", result[0], "Script executed correctly in new tab");
await browser.tabs.remove(tab.id);
}),
+ */
new Promise(resolve => {
browser.runtime.onMessage.addListener(message => {
browser.test.assertEq("script ran", message, "Expected runtime message");
resolve();
});
}),
]);
@@ -240,18 +224,14 @@ add_task(function* testExecuteScript() {
});
yield extension.startup();
yield extension.awaitFinish("executeScript");
yield extension.unload();
- yield BrowserTestUtils.removeTab(tab);
+ win.close();
+});
+</script>
- // Make sure that we're not holding on to references to closed message
- // managers.
- is(countMM(MessageChannel.messageManagers), messageManagersSize, "Message manager count");
- if (!ExtensionManagement.useRemoteWebExtensions) {
- is(countMM(MessageChannel.responseManagers), responseManagersSize, "Response manager count");
- }
- is(MessageChannel.pendingResponses.size, 0, "Pending response count");
-});
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript_bad.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript_bad.html
@@ -1,8 +1,21 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs executeScript Bad Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
// This is a pretty terrible hack, but it's the best we can do until we
// support |executeScript| callbacks and |lastError|.
function* testHasNoPermission(params) {
let contentSetup = params.contentSetup || (() => Promise.resolve());
async function background(contentSetup) {
@@ -60,91 +73,31 @@ function* testHasNoPermission(params) {
extension.sendMessage("execute-script");
yield extension.awaitFinish("executeScript");
yield extension.unload();
}
add_task(function* testBadPermissions() {
- let tab1 = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
- let tab2 = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/");
+ let win1 = window.open("http://example.com/");
+ let win2 = window.open("http://mochi.test:8888/");
info("Test no special permissions");
yield testHasNoPermission({
manifest: {"permissions": ["http://example.com/"]},
});
info("Test tabs permissions");
yield testHasNoPermission({
manifest: {"permissions": ["http://example.com/", "tabs"]},
});
- info("Test no special permissions, commands, key press");
- yield testHasNoPermission({
- manifest: {
- "permissions": ["http://example.com/"],
- "commands": {
- "test-tabs-executeScript": {
- "suggested_key": {
- "default": "Alt+Shift+K",
- },
- },
- },
- },
- contentSetup() {
- browser.commands.onCommand.addListener(function(command) {
- if (command == "test-tabs-executeScript") {
- browser.test.sendMessage("tabs-command-key-pressed");
- }
- });
- return Promise.resolve();
- },
- setup: function* (extension) {
- yield EventUtils.synthesizeKey("k", {altKey: true, shiftKey: true});
- yield extension.awaitMessage("tabs-command-key-pressed");
- },
- });
-
- info("Test active tab, commands, no key press");
- yield testHasNoPermission({
- manifest: {
- "permissions": ["http://example.com/", "activeTab"],
- "commands": {
- "test-tabs-executeScript": {
- "suggested_key": {
- "default": "Alt+Shift+K",
- },
- },
- },
- },
- });
-
- info("Test active tab, browser action, no click");
- yield testHasNoPermission({
- manifest: {
- "permissions": ["http://example.com/", "activeTab"],
- "browser_action": {},
- },
- });
-
- info("Test active tab, page action, no click");
- yield testHasNoPermission({
- manifest: {
- "permissions": ["http://example.com/", "activeTab"],
- "page_action": {},
- },
- async contentSetup() {
- let [tab] = await browser.tabs.query({active: true, currentWindow: true});
- await browser.pageAction.show(tab.id);
- },
- });
-
- yield BrowserTestUtils.removeTab(tab2);
- yield BrowserTestUtils.removeTab(tab1);
+ win2.close();
+ win2.close();
});
add_task(function* testBadURL() {
async function background() {
let promises = [
new Promise(resolve => {
browser.tabs.executeScript({
file: "http://example.com/script.js",
@@ -208,10 +161,12 @@ add_task(function* testBadURL() {
yield extension.unload();
});
// TODO: Test that |executeScript| fails if the tab has navigated to a
// new page, and no longer matches our expected state. This involves
// intentionally trying to trigger a race condition, and is probably not
// even worth attempting until we have proper |executeScript| callbacks.
+</script>
-add_task(forceGC);
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_executeScript_good.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript_good.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_good.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript_good.html
@@ -1,14 +1,23 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs executeScript Good Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
-requestLongerTimeout(2);
-
function* testHasPermission(params) {
let contentSetup = params.contentSetup || (() => Promise.resolve());
async function background(contentSetup) {
browser.runtime.onMessage.addListener((msg, sender) => {
browser.test.assertEq(msg, "script ran", "script ran");
browser.test.notifyPass("executeScript");
});
@@ -52,138 +61,31 @@ function* testHasPermission(params) {
if (params.tearDown) {
yield params.tearDown(extension);
}
yield extension.unload();
}
add_task(function* testGoodPermissions() {
- let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/", true);
+ let win = window.open("http://mochi.test:8888/");
info("Test explicit host permission");
yield testHasPermission({
manifest: {"permissions": ["http://mochi.test/"]},
});
info("Test explicit host subdomain permission");
yield testHasPermission({
manifest: {"permissions": ["http://*.mochi.test/"]},
});
info("Test explicit <all_urls> permission");
yield testHasPermission({
manifest: {"permissions": ["<all_urls>"]},
});
- info("Test activeTab permission with a command key press");
- yield testHasPermission({
- manifest: {
- "permissions": ["activeTab"],
- "commands": {
- "test-tabs-executeScript": {
- "suggested_key": {
- "default": "Alt+Shift+K",
- },
- },
- },
- },
- contentSetup() {
- browser.commands.onCommand.addListener(function(command) {
- if (command == "test-tabs-executeScript") {
- browser.test.sendMessage("tabs-command-key-pressed");
- }
- });
- return Promise.resolve();
- },
- setup: function* (extension) {
- yield EventUtils.synthesizeKey("k", {altKey: true, shiftKey: true});
- yield extension.awaitMessage("tabs-command-key-pressed");
- },
- });
-
- info("Test activeTab permission with a browser action click");
- yield testHasPermission({
- manifest: {
- "permissions": ["activeTab"],
- "browser_action": {},
- },
- contentSetup() {
- browser.browserAction.onClicked.addListener(() => {
- browser.test.log("Clicked.");
- });
- return Promise.resolve();
- },
- setup: clickBrowserAction,
- tearDown: closeBrowserAction,
- });
-
- info("Test activeTab permission with a page action click");
- yield testHasPermission({
- manifest: {
- "permissions": ["activeTab"],
- "page_action": {},
- },
- contentSetup: async () => {
- let [tab] = await browser.tabs.query({active: true, currentWindow: true});
- await browser.pageAction.show(tab.id);
- },
- setup: clickPageAction,
- tearDown: closePageAction,
- });
+ win.close();
+});
+</script>
- info("Test activeTab permission with a browser action w/popup click");
- yield testHasPermission({
- manifest: {
- "permissions": ["activeTab"],
- "browser_action": {"default_popup": "_blank.html"},
- },
- setup: async extension => {
- await clickBrowserAction(extension);
- return awaitExtensionPanel(extension, window, "_blank.html");
- },
- tearDown: closeBrowserAction,
- });
-
- info("Test activeTab permission with a page action w/popup click");
- yield testHasPermission({
- manifest: {
- "permissions": ["activeTab"],
- "page_action": {"default_popup": "_blank.html"},
- },
- contentSetup: async () => {
- let [tab] = await browser.tabs.query({active: true, currentWindow: true});
- await browser.pageAction.show(tab.id);
- },
- setup: clickPageAction,
- tearDown: closePageAction,
- });
-
- info("Test activeTab permission with a context menu click");
- yield testHasPermission({
- manifest: {
- "permissions": ["activeTab", "contextMenus"],
- },
- contentSetup() {
- browser.contextMenus.create({title: "activeTab", contexts: ["all"]});
- return Promise.resolve();
- },
- setup: function* (extension) {
- let contextMenu = document.getElementById("contentAreaContextMenu");
- let awaitPopupShown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
- let awaitPopupHidden = BrowserTestUtils.waitForEvent(contextMenu, "popuphidden");
-
- yield BrowserTestUtils.synthesizeMouseAtCenter("a[href]", {type: "contextmenu", button: 2},
- gBrowser.selectedBrowser);
- yield awaitPopupShown;
-
- let item = contextMenu.querySelector("[label=activeTab]");
-
- yield EventUtils.synthesizeMouseAtCenter(item, {}, window);
-
- yield awaitPopupHidden;
- },
- });
-
- yield BrowserTestUtils.removeTab(tab);
-});
-
-add_task(forceGC);
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_executeScript_no_create.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript_no_create.html
copy from browser/components/extensions/test/browser/browser_ext_tabs_executeScript_runAt.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript_runAt.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_runAt.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_executeScript_runAt.html
@@ -1,31 +1,42 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs executeScript runAt Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
/**
* These tests ensure that the runAt argument to tabs.executeScript delays
* script execution until the document has reached the correct state.
*
* Since tests of this nature are especially race-prone, it relies on a
* server-JS script to delay the completion of our test page's load cycle long
* enough for us to attempt to load our scripts in the earlies phase we support.
*
* And since we can't actually rely on that timing, it retries any attempts that
* fail to load as early as expected, but don't load at any illegal time.
*/
add_task(function* testExecuteScript() {
- let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank", true);
+ let win = window.open("about:blank");
async function background() {
let tab;
- const BASE = "http://mochi.test:8888/browser/browser/components/extensions/test/browser/";
+ const BASE = "http://mochi.test:8888/tests/mobile/android/components/extensions/test/mochitest/";
const URL = BASE + "file_iframe_document.sjs";
const MAX_TRIES = 10;
try {
[tab] = await browser.tabs.query({active: true, currentWindow: true});
let success = false;
@@ -98,10 +109,14 @@ add_task(function* testExecuteScript() {
});
yield extension.startup();
yield extension.awaitFinish("executeScript-runAt");
yield extension.unload();
- yield BrowserTestUtils.removeTab(tab);
+ win.close();
});
+</script>
+
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_getCurrent.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_getCurrent.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_getCurrent.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_getCurrent.html
@@ -1,70 +1,70 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs getCurrent Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* () {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
-
- "browser_action": {"default_popup": "popup.html"},
},
files: {
"tab.js": function() {
let url = document.location.href;
- browser.tabs.getCurrent(currentTab => {
+ browser.tabs.getCurrent().then(currentTab => {
browser.test.assertEq(currentTab.url, url, "getCurrent in non-active background tab");
// Activate the tab.
browser.tabs.onActivated.addListener(function listener({tabId}) {
if (tabId == currentTab.id) {
browser.tabs.onActivated.removeListener(listener);
- browser.tabs.getCurrent(currentTab => {
+ browser.tabs.getCurrent().then(currentTab => {
browser.test.assertEq(currentTab.id, tabId, "in active background tab");
browser.test.assertEq(currentTab.url, url, "getCurrent in non-active background tab");
browser.test.sendMessage("tab-finished");
});
}
});
browser.tabs.update(currentTab.id, {active: true});
});
},
- "popup.js": function() {
- browser.tabs.getCurrent(tab => {
- browser.test.assertEq(tab, undefined, "getCurrent in popup script");
- browser.test.sendMessage("popup-finished");
- });
- },
-
- "tab.html": `<head><meta charset="utf-8"><script src="tab.js"></script></head>`,
- "popup.html": `<head><meta charset="utf-8"><script src="popup.js"></script></head>`,
+ "tab.html": `<head><meta charset="utf-8"><script src="tab.js"><\/script></head>`,
},
background: function() {
- browser.tabs.getCurrent(tab => {
+ browser.tabs.getCurrent().then(tab => {
browser.test.assertEq(tab, undefined, "getCurrent in background script");
browser.test.sendMessage("background-finished");
});
browser.tabs.create({url: "tab.html", active: false});
},
});
yield extension.startup();
yield extension.awaitMessage("background-finished");
yield extension.awaitMessage("tab-finished");
- clickBrowserAction(extension);
- yield awaitExtensionPanel(extension);
- yield extension.awaitMessage("popup-finished");
- yield closeBrowserAction(extension);
-
// The extension tab is automatically closed when the extension unloads.
yield extension.unload();
});
+</script>
+
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_insertCSS.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_insertCSS.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_insertCSS.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_insertCSS.html
@@ -1,19 +1,25 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs executeScript Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* testExecuteScript() {
- let {MessageChannel} = Cu.import("resource://gre/modules/MessageChannel.jsm", {});
-
- let messageManagersSize = MessageChannel.messageManagers.size;
- let responseManagersSize = MessageChannel.responseManagers.size;
-
- let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/", true);
+ let win = window.open("http://mochi.test:8888/");
async function background() {
let tasks = [
{
background: "transparent",
foreground: "rgb(0, 113, 4)",
promise: () => {
return browser.tabs.insertCSS({
@@ -98,16 +104,14 @@ add_task(function* testExecuteScript() {
});
yield extension.startup();
yield extension.awaitFinish("insertCSS");
yield extension.unload();
- yield BrowserTestUtils.removeTab(tab);
+ win.close();
+});
+</script>
- // Make sure that we're not holding on to references to closed message
- // managers.
- is(MessageChannel.messageManagers.size, messageManagersSize, "Message manager count");
- is(MessageChannel.responseManagers.size, responseManagersSize, "Response manager count");
- is(MessageChannel.pendingResponses.size, 0, "Pending response count");
-});
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_onUpdated.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_onUpdated.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_onUpdated.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_onUpdated.html
@@ -1,48 +1,52 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs onUpdated Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
-requestLongerTimeout(2);
-
-add_task(function* () {
- let win1 = yield BrowserTestUtils.openNewBrowserWindow();
-
- yield focusWindow(win1);
-
+add_task(function* test_onUpdated() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
"content_scripts": [{
"matches": ["http://mochi.test/*/context_tabs_onUpdated_page.html"],
"js": ["content-script.js"],
"run_at": "document_start",
}],
},
background: function() {
- let pageURL = "http://mochi.test:8888/browser/browser/components/extensions/test/browser/context_tabs_onUpdated_page.html";
+ let pageURL = "http://mochi.test:8888/tests/mobile/android/components/extensions/test/mochitest/context_tabs_onUpdated_page.html";
let expectedSequence = [
- {status: "loading"},
{status: "loading", url: pageURL},
{status: "complete"},
];
let collectedSequence = [];
browser.tabs.onUpdated.addListener(function(tabId, updatedInfo) {
// onUpdated also fires with updatedInfo.faviconUrl, so explicitly
// check for updatedInfo.status before recording the event.
if ("status" in updatedInfo) {
collectedSequence.push(updatedInfo);
}
});
- browser.runtime.onMessage.addListener(function() {
+ browser.runtime.onMessage.addListener(msg => {
if (collectedSequence.length !== expectedSequence.length) {
browser.test.assertEq(
JSON.stringify(expectedSequence),
JSON.stringify(collectedSequence),
"got unexpected number of updateInfo data"
);
} else {
for (let i = 0; i < expectedSequence.length; i++) {
@@ -78,83 +82,33 @@ add_task(function* () {
});
yield Promise.all([
extension.startup(),
extension.awaitFinish("tabs.onUpdated"),
]);
yield extension.unload();
-
- yield BrowserTestUtils.closeWindow(win1);
});
function* do_test_update(background, withPermissions = true) {
- let win1 = yield BrowserTestUtils.openNewBrowserWindow();
-
- yield focusWindow(win1);
-
let manifest = {};
if (withPermissions) {
manifest.permissions = ["tabs", "http://mochi.test/"];
}
let extension = ExtensionTestUtils.loadExtension({manifest, background});
yield Promise.all([
yield extension.startup(),
yield extension.awaitFinish("finish"),
]);
yield extension.unload();
-
- yield BrowserTestUtils.closeWindow(win1);
}
-add_task(function* test_pinned() {
- yield do_test_update(function background() {
- // Create a new tab for testing update.
- browser.tabs.create({}, function(tab) {
- browser.tabs.onUpdated.addListener(function onUpdated(tabId, changeInfo) {
- // Check callback
- browser.test.assertEq(tabId, tab.id, "Check tab id");
- browser.test.log("onUpdate: " + JSON.stringify(changeInfo));
- if ("pinned" in changeInfo) {
- browser.test.assertTrue(changeInfo.pinned, "Check changeInfo.pinned");
- browser.tabs.onUpdated.removeListener(onUpdated);
- // Remove created tab.
- browser.tabs.remove(tabId);
- browser.test.notifyPass("finish");
- }
- });
- browser.tabs.update(tab.id, {pinned: true});
- });
- });
-});
-
-add_task(function* test_unpinned() {
- yield do_test_update(function background() {
- // Create a new tab for testing update.
- browser.tabs.create({pinned: true}, function(tab) {
- browser.tabs.onUpdated.addListener(function onUpdated(tabId, changeInfo) {
- // Check callback
- browser.test.assertEq(tabId, tab.id, "Check tab id");
- browser.test.log("onUpdate: " + JSON.stringify(changeInfo));
- if ("pinned" in changeInfo) {
- browser.test.assertFalse(changeInfo.pinned, "Check changeInfo.pinned");
- browser.tabs.onUpdated.removeListener(onUpdated);
- // Remove created tab.
- browser.tabs.remove(tabId);
- browser.test.notifyPass("finish");
- }
- });
- browser.tabs.update(tab.id, {pinned: false});
- });
- });
-});
-
add_task(function* test_url() {
yield do_test_update(function background() {
// Create a new tab for testing update.
browser.tabs.create({}, function(tab) {
browser.tabs.onUpdated.addListener(function onUpdated(tabId, changeInfo) {
// Check callback
browser.test.assertEq(tabId, tab.id, "Check tab id");
browser.test.log("onUpdate: " + JSON.stringify(changeInfo));
@@ -169,17 +123,17 @@ add_task(function* test_url() {
});
browser.tabs.update(tab.id, {url: "about:blank"});
});
});
});
add_task(function* test_title() {
yield do_test_update(async function background() {
- const url = "http://mochi.test:8888/browser/browser/components/extensions/test/browser/context_tabs_onUpdated_page.html";
+ const url = "http://mochi.test:8888/tests/mobile/android/components/extensions/test/mochitest/context_tabs_onUpdated_page.html";
const tab = await browser.tabs.create({url});
browser.tabs.onUpdated.addListener(function onUpdated(tabId, changeInfo) {
browser.test.assertEq(tabId, tab.id, "Check tab id");
browser.test.log(`onUpdated: ${JSON.stringify(changeInfo)}`);
if ("title" in changeInfo && changeInfo.title === "New Message (1)") {
browser.test.log("changeInfo.title is correct");
browser.tabs.onUpdated.removeListener(onUpdated);
@@ -189,17 +143,17 @@ add_task(function* test_title() {
});
browser.tabs.executeScript(tab.id, {code: "document.title = 'New Message (1)'"});
});
});
add_task(function* test_without_tabs_permission() {
yield do_test_update(async function background() {
- const url = "http://mochi.test:8888/browser/browser/components/extensions/test/browser/context_tabs_onUpdated_page.html";
+ const url = "http://mochi.test:8888/tests/mobile/android/components/extensions/test/mochitest/context_tabs_onUpdated_page.html";
const tab = await browser.tabs.create({url});
let count = 0;
browser.tabs.onUpdated.addListener(function onUpdated(tabId, changeInfo) {
browser.test.assertEq(tabId, tab.id, "Check tab id");
browser.test.log(`onUpdated: ${JSON.stringify(changeInfo)}`);
browser.test.assertFalse("url" in changeInfo, "url should not be included without tabs permission");
@@ -215,10 +169,12 @@ add_task(function* test_without_tabs_per
browser.test.notifyPass("finish");
}
}
});
browser.tabs.reload(tab.id);
}, false /* withPermissions */);
});
+</script>
-add_task(forceGC);
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_reload.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_reload.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_reload.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_reload.html
@@ -1,26 +1,37 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs reload Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* () {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
},
files: {
"tab.js": function() {
browser.runtime.sendMessage("tab-loaded");
},
"tab.html":
`<head>
<meta charset="utf-8">
- <script src="tab.js"></script>
+ <script src="tab.js"><\/script>
</head>`,
},
async background() {
let tabLoadedCount = 0;
let tab = await browser.tabs.create({url: "tab.html", active: true});
@@ -47,8 +58,12 @@ add_task(function* () {
});
},
});
yield extension.startup();
yield extension.awaitFinish("tabs.reload");
yield extension.unload();
});
+</script>
+
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_reload_bypass_cache.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_reload_bypass_cache.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_reload_bypass_cache.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_reload_bypass_cache.html
@@ -1,20 +1,31 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs executeScript bypassCache Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* () {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs", "<all_urls>"],
},
async background() {
- const BASE = "http://mochi.test:8888/browser/browser/components/extensions/test/browser/";
+ const BASE = "http://mochi.test:8888/tests/mobile/android/components/extensions/test/mochitest/";
const URL = BASE + "file_bypass_cache.sjs";
function awaitLoad(tabId) {
return new Promise(resolve => {
browser.tabs.onUpdated.addListener(function listener(tabId_, changed, tab) {
if (tabId == tabId_ && changed.status == "complete" && tab.url == URL) {
browser.tabs.onUpdated.removeListener(listener);
resolve();
@@ -51,8 +62,12 @@ add_task(function* () {
}
},
});
yield extension.startup();
yield extension.awaitFinish("tabs.reload_bypass_cache");
yield extension.unload();
});
+</script>
+
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_sendMessage.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_sendMessage.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_sendMessage.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_sendMessage.html
@@ -1,10 +1,21 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs sendMessage Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
add_task(function* tabsSendMessageReply() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
"content_scripts": [{
@@ -197,17 +208,17 @@ add_task(function* tabsSendHidden() {
add_task(function* tabsSendMessageNoExceptionOnNonExistentTab() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
},
async background() {
- let url = "http://example.com/mochitest/browser/browser/components/extensions/test/browser/file_dummy.html";
+ let url = "http://example.com/mochitest/tests/mobile/android/components/extensions/test/mochitest/file_dummy.html";
let tab = await browser.tabs.create({url});
try {
browser.tabs.sendMessage(tab.id, "message");
browser.tabs.sendMessage(tab.id + 100, "message");
} catch (e) {
browser.test.fail("no exception should be raised on tabs.sendMessage to nonexistent tabs");
}
@@ -220,8 +231,12 @@ add_task(function* tabsSendMessageNoExce
yield Promise.all([
extension.startup(),
extension.awaitFinish("tabs.sendMessage"),
]);
yield extension.unload();
});
+</script>
+
+</body>
+</html>
copy from browser/components/extensions/test/browser/browser_ext_tabs_update_url.js
copy to mobile/android/components/extensions/test/mochitest/test_ext_tabs_update_url.html
--- a/browser/components/extensions/test/browser/browser_ext_tabs_update_url.js
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_tabs_update_url.html
@@ -1,10 +1,21 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Tabs update Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+
+<script type="text/javascript">
"use strict";
function* testTabsUpdateURL(existentTabURL, tabsUpdateURL, isErrorExpected) {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"permissions": ["tabs"],
},
@@ -48,22 +59,22 @@ function* testTabsUpdateURL(existentTabU
let mozExtTabURL = yield extension.awaitMessage("ready");
if (tabsUpdateURL == "self") {
tabsUpdateURL = mozExtTabURL;
}
info(`tab.update URL "${tabsUpdateURL}" on tab with URL "${existentTabURL}"`);
- let tab1 = yield BrowserTestUtils.openNewForegroundTab(gBrowser, existentTabURL);
+ let tab1 = window.open(existentTabURL);
extension.sendMessage("start", tabsUpdateURL, isErrorExpected);
yield extension.awaitMessage("done");
- yield BrowserTestUtils.removeTab(tab1);
+ tab1.close();
yield extension.unload();
}
add_task(function* () {
info("Start testing tabs.update on javascript URLs");
let dataURLPage = `data:text/html,
<!DOCTYPE html>
@@ -103,8 +114,12 @@ add_task(function* () {
.map((check) => Object.assign({}, check, {existentTabURL: "about:blank"}));
for (let {existentTabURL, tabsUpdateURL, isErrorExpected} of testCases) {
yield* testTabsUpdateURL(existentTabURL, tabsUpdateURL, isErrorExpected);
}
info("done");
});
+</script>
+
+</body>
+</html>