forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			155 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
const TP_PREF = "privacy.trackingprotection.enabled";
 | 
						|
const TPC_PREF = "network.cookie.cookieBehavior";
 | 
						|
const TRACKING_PAGE =
 | 
						|
  // eslint-disable-next-line @microsoft/sdl/no-insecure-url
 | 
						|
  "http://tracking.example.org/browser/browser/base/content/test/protectionsUI/trackingPage.html";
 | 
						|
const COOKIE_PAGE =
 | 
						|
  // eslint-disable-next-line @microsoft/sdl/no-insecure-url
 | 
						|
  "http://tracking.example.com/browser/browser/base/content/test/protectionsUI/cookiePage.html";
 | 
						|
 | 
						|
async function waitAndAssertPreferencesShown(_spotlight) {
 | 
						|
  await BrowserTestUtils.waitForEvent(
 | 
						|
    gProtectionsHandler._protectionsPopup,
 | 
						|
    "popuphidden"
 | 
						|
  );
 | 
						|
  await TestUtils.waitForCondition(
 | 
						|
    () => gBrowser.currentURI.spec == "about:preferences#privacy",
 | 
						|
    "Should open about:preferences."
 | 
						|
  );
 | 
						|
 | 
						|
  await SpecialPowers.spawn(
 | 
						|
    gBrowser.selectedBrowser,
 | 
						|
    [_spotlight],
 | 
						|
    async spotlight => {
 | 
						|
      let doc = content.document;
 | 
						|
      let section = await ContentTaskUtils.waitForCondition(
 | 
						|
        () => doc.querySelector(".spotlight"),
 | 
						|
        "The spotlight should appear."
 | 
						|
      );
 | 
						|
      Assert.equal(
 | 
						|
        section.getAttribute("data-subcategory"),
 | 
						|
        spotlight,
 | 
						|
        "The correct section is spotlighted."
 | 
						|
      );
 | 
						|
    }
 | 
						|
  );
 | 
						|
 | 
						|
  BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | 
						|
}
 | 
						|
 | 
						|
add_setup(async function() {
 | 
						|
  await UrlClassifierTestUtils.addTestTrackers();
 | 
						|
  let oldCanRecord = Services.telemetry.canRecordExtended;
 | 
						|
  Services.telemetry.canRecordExtended = true;
 | 
						|
 | 
						|
  registerCleanupFunction(() => {
 | 
						|
    Services.telemetry.canRecordExtended = oldCanRecord;
 | 
						|
    UrlClassifierTestUtils.cleanupTestTrackers();
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
// Tests that pressing the preferences button in the trackers subview
 | 
						|
// links to about:preferences
 | 
						|
add_task(async function testOpenPreferencesFromTrackersSubview() {
 | 
						|
  Services.prefs.setBoolPref(TP_PREF, true);
 | 
						|
 | 
						|
  let promise = BrowserTestUtils.openNewForegroundTab({
 | 
						|
    url: TRACKING_PAGE,
 | 
						|
    gBrowser,
 | 
						|
  });
 | 
						|
 | 
						|
  // Wait for 2 content blocking events - one for the load and one for the tracker.
 | 
						|
  let [tab] = await Promise.all([promise, waitForContentBlockingEvent(2)]);
 | 
						|
 | 
						|
  await openProtectionsPanel();
 | 
						|
 | 
						|
  let categoryItem = document.getElementById(
 | 
						|
    "protections-popup-category-trackers"
 | 
						|
  );
 | 
						|
 | 
						|
  // Explicitly waiting for the category item becoming visible.
 | 
						|
  await TestUtils.waitForCondition(() => {
 | 
						|
    return BrowserTestUtils.is_visible(categoryItem);
 | 
						|
  });
 | 
						|
 | 
						|
  ok(BrowserTestUtils.is_visible(categoryItem), "TP category item is visible");
 | 
						|
  let trackersView = document.getElementById("protections-popup-trackersView");
 | 
						|
  let viewShown = BrowserTestUtils.waitForEvent(trackersView, "ViewShown");
 | 
						|
  categoryItem.click();
 | 
						|
  await viewShown;
 | 
						|
 | 
						|
  ok(true, "Trackers view was shown");
 | 
						|
 | 
						|
  let preferencesButton = document.getElementById(
 | 
						|
    "protections-popup-trackersView-settings-button"
 | 
						|
  );
 | 
						|
 | 
						|
  ok(
 | 
						|
    BrowserTestUtils.is_visible(preferencesButton),
 | 
						|
    "The preferences button is shown."
 | 
						|
  );
 | 
						|
 | 
						|
  let shown = waitAndAssertPreferencesShown("trackingprotection");
 | 
						|
  preferencesButton.click();
 | 
						|
  await shown;
 | 
						|
  BrowserTestUtils.removeTab(tab);
 | 
						|
 | 
						|
  Services.prefs.clearUserPref(TP_PREF);
 | 
						|
});
 | 
						|
 | 
						|
// Tests that pressing the preferences button in the cookies subview
 | 
						|
// links to about:preferences
 | 
						|
add_task(async function testOpenPreferencesFromCookiesSubview() {
 | 
						|
  Services.prefs.setIntPref(
 | 
						|
    TPC_PREF,
 | 
						|
    Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER
 | 
						|
  );
 | 
						|
 | 
						|
  let promise = BrowserTestUtils.openNewForegroundTab({
 | 
						|
    url: COOKIE_PAGE,
 | 
						|
    gBrowser,
 | 
						|
  });
 | 
						|
 | 
						|
  // Wait for 2 content blocking events - one for the load and one for the tracker.
 | 
						|
  let [tab] = await Promise.all([promise, waitForContentBlockingEvent(2)]);
 | 
						|
 | 
						|
  await openProtectionsPanel();
 | 
						|
 | 
						|
  let categoryItem = document.getElementById(
 | 
						|
    "protections-popup-category-cookies"
 | 
						|
  );
 | 
						|
 | 
						|
  // Explicitly waiting for the category item becoming visible.
 | 
						|
  await TestUtils.waitForCondition(() => {
 | 
						|
    return BrowserTestUtils.is_visible(categoryItem);
 | 
						|
  });
 | 
						|
 | 
						|
  ok(BrowserTestUtils.is_visible(categoryItem), "TP category item is visible");
 | 
						|
  let cookiesView = document.getElementById("protections-popup-cookiesView");
 | 
						|
  let viewShown = BrowserTestUtils.waitForEvent(cookiesView, "ViewShown");
 | 
						|
  categoryItem.click();
 | 
						|
  await viewShown;
 | 
						|
 | 
						|
  ok(true, "Cookies view was shown");
 | 
						|
 | 
						|
  let preferencesButton = document.getElementById(
 | 
						|
    "protections-popup-cookiesView-settings-button"
 | 
						|
  );
 | 
						|
 | 
						|
  ok(
 | 
						|
    BrowserTestUtils.is_visible(preferencesButton),
 | 
						|
    "The preferences button is shown."
 | 
						|
  );
 | 
						|
 | 
						|
  let shown = waitAndAssertPreferencesShown("trackingprotection");
 | 
						|
  preferencesButton.click();
 | 
						|
  await shown;
 | 
						|
  BrowserTestUtils.removeTab(tab);
 | 
						|
 | 
						|
  Services.prefs.clearUserPref(TPC_PREF);
 | 
						|
});
 |