forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			107 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* 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";
 | |
| 
 | |
| ChromeUtils.defineESModuleGetters(this, {
 | |
|   Region: "resource://gre/modules/Region.sys.mjs",
 | |
| });
 | |
| 
 | |
| add_setup(async function() {
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [
 | |
|       ["browser.contentblocking.report.monitor.enabled", false],
 | |
|       ["browser.contentblocking.report.lockwise.enabled", false],
 | |
|       ["browser.vpn_promo.enabled", false],
 | |
|     ],
 | |
|   });
 | |
| });
 | |
| 
 | |
| add_task(async function() {
 | |
|   let tab = await BrowserTestUtils.openNewForegroundTab({
 | |
|     url: "about:protections",
 | |
|     gBrowser,
 | |
|   });
 | |
| 
 | |
|   info("Secure Proxy card should be hidden by default");
 | |
|   await SpecialPowers.spawn(tab.linkedBrowser, [], async function() {
 | |
|     await ContentTaskUtils.waitForCondition(() => {
 | |
|       const proxyCard = content.document.querySelector(".proxy-card");
 | |
|       return !proxyCard["data-enabled"];
 | |
|     }, "Proxy card is not enabled.");
 | |
| 
 | |
|     const proxyCard = content.document.querySelector(".proxy-card");
 | |
|     ok(ContentTaskUtils.is_hidden(proxyCard), "Proxy card is hidden.");
 | |
|   });
 | |
| 
 | |
|   info("Enable showing the Secure Proxy card");
 | |
|   Services.prefs.setBoolPref(
 | |
|     "browser.contentblocking.report.proxy.enabled",
 | |
|     true
 | |
|   );
 | |
| 
 | |
|   info(
 | |
|     "Check that secure proxy card is hidden if user's language is not en-US"
 | |
|   );
 | |
|   Services.prefs.setCharPref("intl.accept_languages", "en-CA");
 | |
|   await BrowserTestUtils.reloadTab(tab);
 | |
|   await checkProxyCardVisibility(tab, true);
 | |
| 
 | |
|   info(
 | |
|     "Check that secure proxy card is shown if user's location is in the US."
 | |
|   );
 | |
|   // Set language back to en-US
 | |
|   Services.prefs.setCharPref("intl.accept_languages", "en-US");
 | |
|   Region._setHomeRegion("US", false);
 | |
|   await BrowserTestUtils.reloadTab(tab);
 | |
|   await checkProxyCardVisibility(tab, false);
 | |
| 
 | |
|   info(
 | |
|     "Check that secure proxy card is hidden if user's location is not in the US."
 | |
|   );
 | |
|   Region._setHomeRegion("CA", false);
 | |
|   await BrowserTestUtils.reloadTab(tab);
 | |
|   await checkProxyCardVisibility(tab, true);
 | |
| 
 | |
|   info(
 | |
|     "Check that secure proxy card is hidden if the extension is already installed."
 | |
|   );
 | |
|   // Make sure we set the region back to "US"
 | |
|   Region._setHomeRegion("US", false);
 | |
|   const id = "secure-proxy@mozilla.com";
 | |
|   const extension = ExtensionTestUtils.loadExtension({
 | |
|     manifest: {
 | |
|       browser_specific_settings: { gecko: { id } },
 | |
|       name: "Firefox Proxy",
 | |
|     },
 | |
|     useAddonManager: "temporary",
 | |
|   });
 | |
|   await extension.startup();
 | |
|   await BrowserTestUtils.reloadTab(tab);
 | |
|   await checkProxyCardVisibility(tab, true);
 | |
|   await extension.unload();
 | |
| 
 | |
|   Services.prefs.setBoolPref(
 | |
|     "browser.contentblocking.report.proxy.enabled",
 | |
|     false
 | |
|   );
 | |
| 
 | |
|   await BrowserTestUtils.removeTab(tab);
 | |
| });
 | |
| 
 | |
| async function checkProxyCardVisibility(tab, shouldBeHidden) {
 | |
|   await SpecialPowers.spawn(
 | |
|     tab.linkedBrowser,
 | |
|     [{ _shouldBeHidden: shouldBeHidden }],
 | |
|     async function({ _shouldBeHidden }) {
 | |
|       await ContentTaskUtils.waitForCondition(() => {
 | |
|         const proxyCard = content.document.querySelector(".proxy-card");
 | |
|         return ContentTaskUtils.is_hidden(proxyCard) === _shouldBeHidden;
 | |
|       });
 | |
| 
 | |
|       const visibilityState = _shouldBeHidden ? "hidden" : "shown";
 | |
|       ok(true, `Proxy card is ${visibilityState}.`);
 | |
|     }
 | |
|   );
 | |
| }
 | 
