"use strict"; const BASE = "http://mochi.test:8888/browser/browser/components/extensions/test/browser"; const REDIRECT_URL = BASE + "/redirection.sjs"; const REDIRECTED_URL = BASE + "/dummy_page.html"; add_task(async function history_redirect() { function background() { browser.test.onMessage.addListener(async (msg, url) => { switch (msg) { case "delete-all": { let results = await browser.history.deleteAll(); browser.test.sendMessage("delete-all-result", results); break; } case "search": { let results = await browser.history.search({ text: url, startTime: new Date(0), }); browser.test.sendMessage("search-result", results); break; } case "get-visits": { let results = await browser.history.getVisits({ url }); browser.test.sendMessage("get-visits-result", results); break; } } }); browser.test.sendMessage("ready"); } let extensionData = { manifest: { permissions: ["history"], }, background, }; let extension = ExtensionTestUtils.loadExtension(extensionData); await Promise.all([extension.startup(), extension.awaitMessage("ready")]); info("extension loaded"); extension.sendMessage("delete-all"); await extension.awaitMessage("delete-all-result"); await BrowserTestUtils.withNewTab( { gBrowser, url: REDIRECT_URL }, async browser => { is( browser.currentURI.spec, REDIRECTED_URL, "redirected to the expected location" ); extension.sendMessage("search", REDIRECT_URL); let results = await extension.awaitMessage("search-result"); is(results.length, 1, "search returned expected length of results"); extension.sendMessage("get-visits", REDIRECT_URL); let visits = await extension.awaitMessage("get-visits-result"); is(visits.length, 1, "getVisits returned expected length of visits"); } ); await extension.unload(); info("extension unloaded"); });