diff options
Diffstat (limited to 'browser/components/tests')
6 files changed, 237 insertions, 57 deletions
diff --git a/browser/components/tests/browser/browser.toml b/browser/components/tests/browser/browser.toml index ffb3012e72..c754191b8b 100644 --- a/browser/components/tests/browser/browser.toml +++ b/browser/components/tests/browser/browser.toml @@ -20,6 +20,9 @@ reason = "test depends on update channel" ["browser_default_browser_prompt.js"] +["browser_default_webprotocol_handler_mailto.js"] +run-if = ["os == 'win'"] + ["browser_initial_tab_remoteType.js"] https_first_disabled = true @@ -33,8 +36,5 @@ skip-if = ["os == 'mac'"] ["browser_startup_homepage.js"] -["browser_system_notification_telemetry.js"] -run-if = ["os == 'win'"] - ["browser_to_handle_telemetry.js"] run-if = ["os == 'win'"] diff --git a/browser/components/tests/browser/browser_default_webprotocol_handler_mailto.js b/browser/components/tests/browser/browser_default_webprotocol_handler_mailto.js new file mode 100644 index 0000000000..d061d84b23 --- /dev/null +++ b/browser/components/tests/browser/browser_default_webprotocol_handler_mailto.js @@ -0,0 +1,117 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const WebProtocolHandlerRegistrar = ChromeUtils.importESModule( + "resource:///modules/WebProtocolHandlerRegistrar.sys.mjs" +).WebProtocolHandlerRegistrar.prototype; + +add_setup(function add_setup() { + Services.prefs.setBoolPref("browser.mailto.dualPrompt", true); +}); + +// site specific settings +const protocol = "mailto"; +const sss_domain = "test.example.com"; +const ss_setting = "system.under.test"; + +add_task(async function check_null_value() { + Assert.equal( + null, + await WebProtocolHandlerRegistrar._getSiteSpecificSetting( + sss_domain, + ss_setting + ), + "site specific setting should initially not exist and return null." + ); +}); + +add_task(async function check_default_value() { + Assert.equal( + true, + await WebProtocolHandlerRegistrar._getSiteSpecificSetting( + sss_domain, + ss_setting, + null, + true + ), + "site specific setting with a fallback/default value set to true." + ); +}); + +add_task(async function check_save_value() { + WebProtocolHandlerRegistrar._saveSiteSpecificSetting( + sss_domain, + ss_setting, + ss_setting + ); + Assert.equal( + ss_setting, + await WebProtocolHandlerRegistrar._getSiteSpecificSetting( + sss_domain, + ss_setting + ), + "site specific setting save and retrieve test." + ); +}); + +add_task(async function check_installHash() { + Assert.notEqual( + null, + WebProtocolHandlerRegistrar._getInstallHash(), + "test to check the installHash" + ); +}); + +add_task(async function check_addLocal() { + let currentHandler = WebProtocolHandlerRegistrar._addLocal( + protocol, + sss_domain, + sss_domain + ); + + Assert.equal( + sss_domain, + currentHandler.name, + "does the handler have the right name?" + ); + Assert.equal( + sss_domain, + currentHandler.uriTemplate, + "does the handler have the right uri?" + ); + + WebProtocolHandlerRegistrar._setLocalDefault(currentHandler); + + WebProtocolHandlerRegistrar.removeProtocolHandler( + protocol, + currentHandler.uriTemplate + ); +}); + +add_task(async function check_bar_is_shown() { + let browserWindow = Services.wm.getMostRecentWindow("navigator:browser"); + browserWindow.windowUtils.disableNonTestMouseEvents(true); + browserWindow.document + .getElementById("main-window") + .removeAttribute("remotecontrol"); + let browser = browserWindow.gBrowser.selectedBrowser; + + await WebProtocolHandlerRegistrar._askUserToSetMailtoHandler( + browser, + protocol, + Services.io.newURI("https://" + sss_domain), + sss_domain + ); + + let button_yes = browserWindow.document.querySelector( + "[data-l10n-id='protocolhandler-mailto-os-handler-yes-button']" + ); + Assert.notEqual(null, button_yes, "is the yes-button there?"); + + let button_no = browserWindow.document.querySelector( + "[data-l10n-id='protocolhandler-mailto-os-handler-no-button']" + ); + Assert.notEqual(null, button_no, "is the no-button there?"); +}); diff --git a/browser/components/tests/browser/browser_system_notification_telemetry.js b/browser/components/tests/browser/browser_system_notification_telemetry.js deleted file mode 100644 index 6cc8d12165..0000000000 --- a/browser/components/tests/browser/browser_system_notification_telemetry.js +++ /dev/null @@ -1,54 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. -http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -async function handleCommandLine(args, state) { - let newWinPromise; - let target = Services.urlFormatter.formatURLPref( - "browser.shell.defaultBrowserAgent.thanksURL" - ); - - const EXISTING_FILE = Cc["@mozilla.org/file/local;1"].createInstance( - Ci.nsIFile - ); - EXISTING_FILE.initWithPath(getTestFilePath("dummy.pdf")); - - if (state == Ci.nsICommandLine.STATE_INITIAL_LAUNCH) { - newWinPromise = BrowserTestUtils.waitForNewWindow({ - url: target, // N.b.: trailing slashes matter when matching. - }); - } - - let cmdLineHandler = Cc["@mozilla.org/browser/final-clh;1"].getService( - Ci.nsICommandLineHandler - ); - - let fakeCmdLine = Cu.createCommandLine(args, EXISTING_FILE.parent, state); - cmdLineHandler.handle(fakeCmdLine); - - if (newWinPromise) { - let newWin = await newWinPromise; - await BrowserTestUtils.closeWindow(newWin); - } else { - BrowserTestUtils.removeTab(gBrowser.selectedTab); - } -} - -// Launching from the WDBA should open the "thanks" page and should send a -// telemetry event. -add_task(async function test_launched_to_handle_default_browser_agent() { - await handleCommandLine( - ["-to-handle-default-browser-agent"], - Ci.nsICommandLine.STATE_INITIAL_LAUNCH - ); - - TelemetryTestUtils.assertEvents( - [{ extra: { name: "default-browser-agent" } }], - { - category: "browser.launched_to_handle", - method: "system_notification", - object: "toast", - } - ); -}); diff --git a/browser/components/tests/browser/whats_new_page/browser.toml b/browser/components/tests/browser/whats_new_page/browser.toml index b8b9b93d4a..51426ea851 100644 --- a/browser/components/tests/browser/whats_new_page/browser.toml +++ b/browser/components/tests/browser/whats_new_page/browser.toml @@ -19,3 +19,5 @@ prefs = [ ] ["browser_whats_new_page.js"] + +["include:./browser_whats_new_page_nimbus.toml"] diff --git a/browser/components/tests/browser/whats_new_page/browser_whats_new_page_nimbus.js b/browser/components/tests/browser/whats_new_page/browser_whats_new_page_nimbus.js new file mode 100644 index 0000000000..a46e4fec34 --- /dev/null +++ b/browser/components/tests/browser/whats_new_page/browser_whats_new_page_nimbus.js @@ -0,0 +1,109 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +add_task(async function nimbus_whats_new_page() { + // The test harness will use the current tab and remove the tab's history. + // Since the page that is tested is opened prior to the test harness taking + // over the current tab the active-update.xml specifies two pages to open by + // having 'https://example.com/|https://example.com/' for the value of openURL + // and then uses the first tab for the test. + gBrowser.selectedTab = gBrowser.tabs[0]; + // The test harness also changes the page to about:blank so go back to the + // page that was originally opened. + gBrowser.goBack(); + // Wait for the page to go back to the original page. + await TestUtils.waitForCondition( + () => + gBrowser.selectedBrowser && + gBrowser.selectedBrowser.currentURI && + gBrowser.selectedBrowser.currentURI.spec == + "https://www.mozilla.org/en-US/projects/firefox/whatsnew/", + `Waiting for the expected page to reopen, ${gBrowser.selectedBrowser.currentURI.spec}` + ); + is( + gBrowser.selectedBrowser.currentURI.spec, + "https://www.mozilla.org/en-US/projects/firefox/whatsnew/", + "The what's new page's url should equal https://www.mozilla.org/en-US/projects/firefox/whatsnew/" + ); + gBrowser.removeTab(gBrowser.selectedTab); + + let um = Cc["@mozilla.org/updates/update-manager;1"].getService( + Ci.nsIUpdateManager + ); + await TestUtils.waitForCondition( + () => !um.readyUpdate, + "Waiting for the ready update to be removed" + ); + ok(!um.readyUpdate, "There should not be a ready update"); + await TestUtils.waitForCondition( + () => !!um.getUpdateAt(0), + "Waiting for the ready update to be moved to the update history" + ); + ok(!!um.getUpdateAt(0), "There should be an update in the update history"); + + // Leave no trace. Since this test modifies its support files put them back in + // their original state. + let alternatePath = Services.prefs.getCharPref("app.update.altUpdateDirPath"); + let testRoot = Services.prefs.getCharPref("mochitest.testRoot"); + let relativePath = alternatePath.substring("<test-root>".length); + if (AppConstants.platform == "win") { + relativePath = relativePath.replace(/\//g, "\\"); + } + alternatePath = testRoot + relativePath; + let updateDir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); + updateDir.initWithPath(alternatePath); + + let activeUpdateFile = updateDir.clone(); + activeUpdateFile.append("active-update.xml"); + await TestUtils.waitForCondition( + () => !activeUpdateFile.exists(), + "Waiting until the active-update.xml file does not exist" + ); + + let updatesFile = updateDir.clone(); + updatesFile.append("updates.xml"); + await TestUtils.waitForCondition( + () => updatesFile.exists(), + "Waiting until the updates.xml file exists" + ); + + let fos = Cc["@mozilla.org/network/file-output-stream;1"].createInstance( + Ci.nsIFileOutputStream + ); + let flags = + FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE; + + let stateSucceeded = "succeeded\n"; + let updateStatusFile = updateDir.clone(); + updateStatusFile.append("updates"); + updateStatusFile.append("0"); + updateStatusFile.append("update.status"); + updateStatusFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + fos.init(updateStatusFile, flags, FileUtils.PERMS_FILE, 0); + fos.write(stateSucceeded, stateSucceeded.length); + fos.close(); + + let xmlContents = + '<?xml version="1.0"?><updates xmlns="http://www.mozilla.org/2005/' + + 'app-update"><update xmlns="http://www.mozilla.org/2005/app-update" ' + + 'appVersion="99999999.0" buildID="20990101111111" channel="test" ' + + 'detailsURL="https://127.0.0.1/" displayVersion="1.0" installDate="' + + '1555716429454" isCompleteUpdate="true" name="What\'s New Page Test" ' + + 'previousAppVersion="60.0" serviceURL="https://127.0.0.1/update.xml" ' + + 'type="minor" platformVersion="99999999.0" actions="showURL" ' + + 'openURL="https://example.com/|https://example.com/"><patch size="1" ' + + 'type="complete" URL="https://127.0.0.1/complete.mar" ' + + 'selected="true" state="pending"/></update></updates>\n'; + activeUpdateFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + fos.init(activeUpdateFile, flags, FileUtils.PERMS_FILE, 0); + fos.write(xmlContents, xmlContents.length); + fos.close(); + + updatesFile.remove(false); + Cc["@mozilla.org/updates/update-manager;1"] + .getService(Ci.nsIUpdateManager) + .QueryInterface(Ci.nsIObserver) + .observe(null, "um-reload-update-data", ""); +}); diff --git a/browser/components/tests/browser/whats_new_page/browser_whats_new_page_nimbus.toml b/browser/components/tests/browser/whats_new_page/browser_whats_new_page_nimbus.toml new file mode 100644 index 0000000000..fafe08af36 --- /dev/null +++ b/browser/components/tests/browser/whats_new_page/browser_whats_new_page_nimbus.toml @@ -0,0 +1,6 @@ +[DEFAULT] + +["browser_whats_new_page_nimbus.js"] +# This is a pref set by nimbus to be used for What's new pages +prefs = ["startup.homepage_override_url_nimbus='https://www.mozilla.org/en-US/projects/firefox/whatsnew/|https://www.mozilla.org/en-US/projects/firefox/whatsnew/'", +"startup.homepage_override_nimbus_maxVersion='99999999.0'"] |