Bug 1564367 - Remove the content blocking UI tour. r=MattN,fluent-reviewers,flod
authorJohann Hofmann <jhofmann@mozilla.com>
Thu, 11 Jul 2019 10:29:17 +0000
changeset 482360 a931afa2c4bdaf1da2f657e1c3af2e41d4c73834
parent 482359 bc634ddca05b04dfcf2572b382b232077fc1f5dd
child 482361 fdeb6bc00b0f2ed42777469f10b53b6d79bda4b0
push id36276
push usercbrindusan@mozilla.com
push dateThu, 11 Jul 2019 16:20:48 +0000
treeherdermozilla-central@8013e87c08ac [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMattN, fluent-reviewers, flod
bugs1564367
milestone70.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1564367 - Remove the content blocking UI tour. r=MattN,fluent-reviewers,flod Differential Revision: https://phabricator.services.mozilla.com/D37384
browser/app/profile/firefox.js
browser/base/content/browser-contentblocking.js
browser/base/content/test/trackingUI/browser_trackingUI_animation_2.js
browser/base/content/test/trackingUI/browser_trackingUI_background_tabs.js
browser/base/content/test/trackingUI/browser_trackingUI_cookies_subview.js
browser/base/content/test/trackingUI/browser_trackingUI_cryptominers.js
browser/base/content/test/trackingUI/browser_trackingUI_fingerprinters.js
browser/base/content/test/trackingUI/browser_trackingUI_report_breakage.js
browser/base/content/test/trackingUI/browser_trackingUI_trackers_subview.js
browser/components/preferences/in-content/privacy.inc.xul
browser/components/preferences/in-content/privacy.js
browser/components/uitour/UITour-lib.js
browser/components/uitour/UITour.jsm
browser/components/uitour/test/browser.ini
browser/components/uitour/test/browser_UITour_availableTargets.js
browser/components/uitour/test/browser_contentBlocking.js
browser/components/uitour/test/browser_showMenu.js
browser/components/uitour/test/browser_trackingProtection.js
browser/components/uitour/test/browser_trackingProtection_tour.js
browser/locales/en-US/browser/preferences/preferences.ftl
browser/locales/en-US/chrome/browser/browser.properties
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/ControlCenter.jsm
testing/marionette/client/marionette_driver/geckoinstance.py
testing/marionette/components/marionette.js
toolkit/components/antitracking/test/browser/antitracking_head.js
toolkit/components/antitracking/test/browser/browser_addonHostPermissionIgnoredInTP.js
toolkit/components/antitracking/test/browser/browser_onBeforeRequestNotificationForTrackingResources.js
toolkit/components/antitracking/test/browser/browser_onModifyRequestNotificationForTrackingResources.js
toolkit/components/antitracking/test/browser/browser_storageAccessDoorHanger.js
toolkit/components/antitracking/test/browser/browser_workerPropagation.js
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -1181,17 +1181,16 @@ pref("services.sync.prefs.sync.addons.ig
 pref("services.sync.prefs.sync.app.shield.optoutstudies.enabled", true);
 // The addons prefs related to repository verification are intentionally
 // not synced for security reasons. If a system is compromised, a user
 // could weaken the pref locally, install an add-on from an untrusted
 // source, and this would propagate automatically to other,
 // uncompromised Sync-connected devices.
 pref("services.sync.prefs.sync.browser.contentblocking.category", true);
 pref("services.sync.prefs.sync.browser.contentblocking.features.strict", true);
-pref("services.sync.prefs.sync.browser.contentblocking.introCount", true);
 pref("services.sync.prefs.sync.browser.crashReports.unsubmittedCheck.autoSubmit2", true);
 pref("services.sync.prefs.sync.browser.ctrlTab.recentlyUsedOrder", true);
 pref("services.sync.prefs.sync.browser.discovery.enabled", true);
 pref("services.sync.prefs.sync.browser.download.useDownloadDir", true);
 pref("services.sync.prefs.sync.browser.formfill.enable", true);
 pref("services.sync.prefs.sync.browser.link.open_newwindow", true);
 pref("services.sync.prefs.sync.browser.newtabpage.activity-stream.showSearch", true);
 pref("services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored", true);
@@ -1609,29 +1608,21 @@ pref("browser.contentblocking.reportBrea
 #else
 pref("browser.contentblocking.reportBreakage.enabled", false);
 #endif
 // Show report breakage for tracking cookies in all channels.
 pref("browser.contentblocking.rejecttrackers.reportBreakage.enabled", true);
 
 pref("browser.contentblocking.reportBreakage.url", "https://tracking-protection-issues.herokuapp.com/new");
 
-pref("browser.contentblocking.introCount", 0);
-
-pref("browser.contentblocking.maxIntroCount", 5);
-// 1800 = 30 min in seconds
-pref("browser.contentblocking.introDelaySeconds", 1800);
-
 // Enables the new Protections Panel.
 #ifdef NIGHTLY_BUILD
 pref("browser.protections_panel.enabled", true);
 #endif
 
-pref("privacy.trackingprotection.introURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/content-blocking/start/");
-
 // Always enable newtab segregation using containers
 pref("privacy.usercontext.about_newtab_segregation.enabled", true);
 // Enable Contextual Identity Containers
 #ifdef NIGHTLY_BUILD
 pref("privacy.userContext.enabled", true);
 pref("privacy.userContext.ui.enabled", true);
 
 // 0 disables long press, 1 when clicked, the menu is shown, 2 the menu is shown after X milliseconds.
--- a/browser/base/content/browser-contentblocking.js
+++ b/browser/base/content/browser-contentblocking.js
@@ -902,35 +902,26 @@ var ThirdPartyCookies = {
       listItem.append(removeException);
     }
 
     return listItem;
   },
 };
 
 var ContentBlocking = {
-  // If the user ignores the doorhanger, we stop showing it after some time.
-  MAX_INTROS: Services.prefs.getIntPref(
-    "browser.contentblocking.maxIntroCount"
-  ),
   PREF_ANIMATIONS_ENABLED: "toolkit.cosmeticAnimations.enabled",
   PREF_REPORT_BREAKAGE_ENABLED:
     "browser.contentblocking.reportBreakage.enabled",
   PREF_REPORT_BREAKAGE_URL: "browser.contentblocking.reportBreakage.url",
-  PREF_INTRO_COUNT_CB: "browser.contentblocking.introCount",
   PREF_CB_CATEGORY: "browser.contentblocking.category",
   PREF_SHOW_ALLOWED_LABELS:
     "browser.contentblocking.control-center.ui.showAllowedLabels",
   PREF_SHOW_BLOCKED_LABELS:
     "browser.contentblocking.control-center.ui.showBlockedLabels",
 
-  get prefIntroCount() {
-    return this.PREF_INTRO_COUNT_CB;
-  },
-
   get content() {
     delete this.content;
     return (this.content = document.getElementById(
       "identity-popup-content-blocking-content"
     ));
   },
 
   get icon() {
@@ -1420,40 +1411,16 @@ var ContentBlocking = {
     // (this is most likely happening because the user navigated on to a different site). This
     // allows us to play it from the start without choppiness next time.
     if (isSimulated || !anyBlocking) {
       this.iconBox.removeAttribute("animate");
       // Only play the animation when the shield is not already shown on the page (the visibility
       // of the shield based on this onSecurityChange be determined afterwards).
     } else if (anyBlocking && !this.iconBox.hasAttribute("active")) {
       this.iconBox.setAttribute("animate", "true");
-
-      let isBrowserPrivate = PrivateBrowsingUtils.isBrowserPrivate(
-        gBrowser.selectedBrowser
-      );
-      if (!isBrowserPrivate) {
-        let introCount = Services.prefs.getIntPref(this.prefIntroCount);
-        let installStamp = Services.prefs.getIntPref(
-          "browser.laterrun.bookkeeping.profileCreationTime",
-          Date.now() / 1000
-        );
-        let delayLength = Services.prefs.getIntPref(
-          "browser.contentblocking.introDelaySeconds"
-        );
-        let delayFulfilled = delayLength < Date.now() / 1000 - installStamp;
-        if (
-          introCount < this.MAX_INTROS &&
-          !this.anyOtherWindowHasTour() &&
-          delayFulfilled
-        ) {
-          Services.prefs.setIntPref(this.prefIntroCount, ++introCount);
-          Services.prefs.savePrefFile(null);
-          this.showIntroPanel();
-        }
-      }
     }
 
     // We consider the shield state "active" when some kind of blocking activity
     // occurs on the page.  Note that merely allowing the loading of content that
     // we could have blocked does not trigger the appearance of the shield.
     // This state will be overriden later if there's an exception set for this site.
     for (let elt of [this.content, this.protectionsPopup]) {
       elt.toggleAttribute("detected", anyDetected);
@@ -1504,109 +1471,20 @@ var ContentBlocking = {
 
     if (cryptominingBlocking) {
       this.cryptominersHistogramAdd("blocked");
     } else if (cryptominingAllowing) {
       this.cryptominersHistogramAdd("allowed");
     }
   },
 
-  // Check if any existing window has a UItour initiated, both showing and hidden.
-  anyOtherWindowHasTour() {
-    for (let win of BrowserWindowTracker.orderedWindows) {
-      if (win != window && UITour.tourBrowsersByWindow.has(win)) {
-        return true;
-      }
-    }
-    return false;
-  },
-
   disableForCurrentPage() {
     ContentBlockingAllowList.add(gBrowser.selectedBrowser);
 
     this.hideIdentityPopupAndReload();
   },
 
   enableForCurrentPage() {
     ContentBlockingAllowList.remove(gBrowser.selectedBrowser);
 
     this.hideIdentityPopupAndReload();
   },
-
-  dontShowIntroPanelAgain() {
-    if (!PrivateBrowsingUtils.isBrowserPrivate(gBrowser.selectedBrowser)) {
-      Services.prefs.setIntPref(this.prefIntroCount, this.MAX_INTROS);
-      Services.prefs.savePrefFile(null);
-    }
-  },
-
-  async showIntroPanel() {
-    let brandBundle = document.getElementById("bundle_brand");
-    let brandShortName = brandBundle.getString("brandShortName");
-
-    let introTitle = gNavigatorBundle.getFormattedString(
-      "contentBlocking.intro.title",
-      [brandShortName]
-    );
-    let introDescription;
-    // This will be sent to the onboarding website to let them know which
-    // UI variation we're showing.
-    let variation;
-    // We show a different UI tour variation for users that already have TP
-    // enabled globally.
-    if (TrackingProtection.enabledGlobally) {
-      introDescription = gNavigatorBundle.getString(
-        "contentBlocking.intro.v2.description"
-      );
-      variation = 2;
-    } else {
-      introDescription = gNavigatorBundle.getFormattedString(
-        "contentBlocking.intro.v1.description",
-        [brandShortName]
-      );
-      variation = 1;
-    }
-
-    let openStep2 = () => {
-      // When the user proceeds in the tour, adjust the counter to indicate that
-      // the user doesn't need to see the intro anymore.
-      this.dontShowIntroPanelAgain();
-
-      let nextURL =
-        Services.urlFormatter.formatURLPref(
-          "privacy.trackingprotection.introURL"
-        ) + `?step=2&newtab=true&variation=${variation}`;
-      switchToTabHavingURI(nextURL, true, {
-        // Ignore the fragment in case the intro is shown on the tour page
-        // (e.g. if the user manually visited the tour or clicked the link from
-        // about:privatebrowsing) so we can avoid a reload.
-        ignoreFragment: "whenComparingAndReplace",
-        triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
-      });
-    };
-
-    let buttons = [
-      {
-        label: gNavigatorBundle.getString("trackingProtection.intro.step1of3"),
-        style: "text",
-      },
-      {
-        callback: openStep2,
-        label: gNavigatorBundle.getString(
-          "trackingProtection.intro.nextButton.label"
-        ),
-        style: "primary",
-      },
-    ];
-
-    let panelTarget = await UITour.getTarget(window, "trackingProtection");
-    UITour.initForBrowser(gBrowser.selectedBrowser, window);
-    UITour.showInfo(
-      window,
-      panelTarget,
-      introTitle,
-      introDescription,
-      undefined,
-      buttons,
-      { closeButtonCallback: () => this.dontShowIntroPanelAgain() }
-    );
-  },
 };
--- a/browser/base/content/test/trackingUI/browser_trackingUI_animation_2.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_animation_2.js
@@ -19,17 +19,16 @@ const DTSCBN_PREF = "dom.testing.sync-co
 requestLongerTimeout(2);
 
 registerCleanupFunction(function() {
   UrlClassifierTestUtils.cleanupTestTrackers();
   Services.prefs.clearUserPref(TP_PREF);
   Services.prefs.clearUserPref(TP_PB_PREF);
   Services.prefs.clearUserPref(NCB_PREF);
   Services.prefs.clearUserPref(DTSCBN_PREF);
-  Services.prefs.clearUserPref(ContentBlocking.prefIntroCount);
 });
 
 async function testTrackingProtectionAnimation(tabbrowser) {
   Services.prefs.setBoolPref(DTSCBN_PREF, true);
 
   info("Load a test page not containing tracking elements");
   let benignTab = await BrowserTestUtils.openNewForegroundTab(
     tabbrowser,
@@ -190,20 +189,16 @@ add_task(async function testNormalBrowsi
   Services.prefs.setIntPref(
     NCB_PREF,
     Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER
   );
   ok(
     ThirdPartyCookies.enabled,
     "ThirdPartyCookies is enabled after setting the pref"
   );
-  Services.prefs.setIntPref(
-    ContentBlocking.prefIntroCount,
-    ContentBlocking.MAX_INTROS
-  );
 
   await testTrackingProtectionAnimation(gBrowser);
 });
 
 add_task(async function testPrivateBrowsing() {
   let privateWin = await BrowserTestUtils.openNewBrowserWindow({
     private: true,
   });
@@ -221,17 +216,13 @@ add_task(async function testPrivateBrows
   Services.prefs.setIntPref(
     NCB_PREF,
     Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER
   );
   ok(
     ThirdPartyCookies.enabled,
     "ThirdPartyCookies is enabled after setting the pref"
   );
-  Services.prefs.setIntPref(
-    ContentBlocking.prefIntroCount,
-    ContentBlocking.MAX_INTROS
-  );
 
   await testTrackingProtectionAnimation(tabbrowser);
 
   privateWin.close();
 });
--- a/browser/base/content/test/trackingUI/browser_trackingUI_background_tabs.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_background_tabs.js
@@ -11,20 +11,17 @@ const BENIGN_PAGE =
 const TP_PREF = "privacy.trackingprotection.enabled";
 
 add_task(async function testBackgroundTabs() {
   info(
     "Testing receiving and storing content blocking events in non-selected tabs."
   );
 
   await SpecialPowers.pushPrefEnv({
-    set: [
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
-      [TP_PREF, true],
-    ],
+    set: [[TP_PREF, true]],
   });
   await UrlClassifierTestUtils.addTestTrackers();
 
   registerCleanupFunction(() => {
     UrlClassifierTestUtils.cleanupTestTrackers();
   });
 
   let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, BENIGN_PAGE);
--- a/browser/base/content/test/trackingUI/browser_trackingUI_cookies_subview.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_cookies_subview.js
@@ -11,20 +11,16 @@ const CONTAINER_PAGE =
   "http://not-tracking.example.com/browser/browser/base/content/test/trackingUI/containerPage.html";
 
 const TPC_PREF = "network.cookie.cookieBehavior";
 
 add_task(async function setup() {
   let oldCanRecord = Services.telemetry.canRecordExtended;
   Services.telemetry.canRecordExtended = true;
 
-  // Avoid the content blocking tour interfering with our tests by popping up.
-  await SpecialPowers.pushPrefEnv({
-    set: [[ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS]],
-  });
   await UrlClassifierTestUtils.addTestTrackers();
 
   registerCleanupFunction(() => {
     Services.telemetry.canRecordExtended = oldCanRecord;
     UrlClassifierTestUtils.cleanupTestTrackers();
   });
 });
 
--- a/browser/base/content/test/trackingUI/browser_trackingUI_cryptominers.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_cryptominers.js
@@ -9,17 +9,16 @@ const TRACKING_PAGE =
 const CM_PROTECTION_PREF = "privacy.trackingprotection.cryptomining.enabled";
 const CM_ANNOTATION_PREF =
   "privacy.trackingprotection.cryptomining.annotate.enabled";
 let cmHistogram;
 
 add_task(async function setup() {
   await SpecialPowers.pushPrefEnv({
     set: [
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
       [
         "urlclassifier.features.cryptomining.blacklistHosts",
         "cryptomining.example.com",
       ],
       [
         "urlclassifier.features.cryptomining.annotate.blacklistHosts",
         "cryptomining.example.com",
       ],
--- a/browser/base/content/test/trackingUI/browser_trackingUI_fingerprinters.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_fingerprinters.js
@@ -9,17 +9,16 @@ const TRACKING_PAGE =
 const FP_PROTECTION_PREF = "privacy.trackingprotection.fingerprinting.enabled";
 const FP_ANNOTATION_PREF =
   "privacy.trackingprotection.fingerprinting.annotate.enabled";
 let fpHistogram;
 
 add_task(async function setup() {
   await SpecialPowers.pushPrefEnv({
     set: [
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
       [
         "urlclassifier.features.fingerprinting.blacklistHosts",
         "fingerprinting.example.com",
       ],
       [
         "urlclassifier.features.fingerprinting.annotate.blacklistHosts",
         "fingerprinting.example.com",
       ],
--- a/browser/base/content/test/trackingUI/browser_trackingUI_report_breakage.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_report_breakage.js
@@ -42,17 +42,16 @@ add_task(async function setup() {
     Services.prefs.clearUserPref(PREF_REPORT_BREAKAGE_ENABLED);
     Services.prefs.clearUserPref(PREF_REPORT_BREAKAGE_URL);
 
     UrlClassifierTestUtils.cleanupTestTrackers();
   });
 
   await SpecialPowers.pushPrefEnv({
     set: [
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
       ["privacy.trackingprotection.fingerprinting.annotate.enabled", true],
       [
         "urlclassifier.features.fingerprinting.blacklistHosts",
         "fingerprinting.example.com",
       ],
       [
         "urlclassifier.features.fingerprinting.annotate.blacklistHosts",
         "fingerprinting.example.com",
--- a/browser/base/content/test/trackingUI/browser_trackingUI_trackers_subview.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_trackers_subview.js
@@ -8,20 +8,16 @@ const TRACKING_PAGE =
   "http://tracking.example.org/browser/browser/base/content/test/trackingUI/trackingPage.html";
 
 const TP_PREF = "privacy.trackingprotection.enabled";
 
 add_task(async function setup() {
   let oldCanRecord = Services.telemetry.canRecordExtended;
   Services.telemetry.canRecordExtended = true;
 
-  // Avoid the content blocking tour interfering with our tests by popping up.
-  await SpecialPowers.pushPrefEnv({
-    set: [[ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS]],
-  });
   await UrlClassifierTestUtils.addTestTrackers();
 
   registerCleanupFunction(() => {
     Services.telemetry.canRecordExtended = oldCanRecord;
     UrlClassifierTestUtils.cleanupTestTrackers();
   });
 });
 
--- a/browser/components/preferences/in-content/privacy.inc.xul
+++ b/browser/components/preferences/in-content/privacy.inc.xul
@@ -203,17 +203,16 @@
                 <vbox class="content-blocking-warning">
                   <vbox class="indent">
                     <hbox>
                       <image class="content-blocking-warning-image"/>
                       <label class="content-blocking-warning-title" data-l10n-id="content-blocking-warning-title"/>
                     </hbox>
                     <description class="indent">
                       <html:span class="tail-with-learn-more" data-l10n-id="content-blocking-warning-description"></html:span>
-                      <label class="content-blocking-warning-learn-how" data-l10n-id="content-blocking-learn-how" is="text-link"/>
                     </description>
                   </vbox>
                 </vbox>
               </vbox>
             </vbox>
           </vbox>
         <vbox id="contentBlockingOptionCustom" class="tracking-protection-ui content-blocking-category">
           <hbox>
@@ -318,17 +317,16 @@
               <vbox class="content-blocking-warning">
                 <vbox class="indent">
                   <hbox>
                     <image class="content-blocking-warning-image"/>
                     <label class="content-blocking-warning-title" data-l10n-id="content-blocking-warning-title"/>
                   </hbox>
                   <description class="indent">
                     <html:span class="tail-with-learn-more" data-l10n-id="content-blocking-warning-description"></html:span>
-                    <label class="content-blocking-warning-learn-how" data-l10n-id="content-blocking-learn-how" is="text-link"/>
                   </description>
                 </vbox>
               </vbox>
             </vbox>
           </vbox>
         </vbox>
       </radiogroup>
     </vbox>
--- a/browser/components/preferences/in-content/privacy.js
+++ b/browser/components/preferences/in-content/privacy.js
@@ -704,27 +704,16 @@ var gPrivacyPane = {
     this.highlightCBCategory();
     this.readBlockCookies();
 
     let link = document.getElementById("contentBlockingLearnMore");
     let contentBlockingUrl =
       Services.urlFormatter.formatURLPref("app.support.baseURL") +
       "content-blocking";
     link.setAttribute("href", contentBlockingUrl);
-
-    let contentBlockingTour =
-      Services.urlFormatter.formatURLPref(
-        "privacy.trackingprotection.introURL"
-      ) + `?step=3&newtab=true`;
-    let warningLinks = document.getElementsByClassName(
-      "content-blocking-warning-learn-how"
-    );
-    for (let warningLink of warningLinks) {
-      warningLink.setAttribute("href", contentBlockingTour);
-    }
   },
 
   populateCategoryContents() {
     for (let type of ["strict", "standard"]) {
       let rulesArray = [];
       let selector;
       if (type == "strict") {
         selector = "#contentBlockingOptionStrict";
--- a/browser/components/uitour/UITour-lib.js
+++ b/browser/components/uitour/UITour-lib.js
@@ -96,18 +96,16 @@ if (typeof Mozilla == "undefined") {
    * @see Mozilla.UITour.showInfo
    *
    * @description Valid values:<ul>
    * <li>accountStatus
    * <li>addons
    * <li>appMenu
    * <li>backForward
    * <li>bookmarks
-   * <li>controlCenter-trackingUnblock
-   * <li>controlCenter-trackingBlock
    * <li>customize
    * <li>devtools
    * <li>forget
    * <li>help
    * <li>home
    * <li>library
    * <li>pageActionButton
    * <li>pageAction-bookmark
@@ -118,17 +116,16 @@ if (typeof Mozilla == "undefined") {
    * <li>privateWindow
    * <li>quit
    * <li>readerMode-urlBar
    * <li>screenshots
    * <li>search
    * <li>searchIcon
    * <li>searchPrefsLink
    * <li>selectedTabIcon
-   * <li>trackingProtection
    * <li>urlbar
    * <li>webide
    * </ul>
    *
    * Generate using the following in the Browser Console:
    * <code>`[...UITour.targets.keys()].join("\n* &lt;li&gt;")`</code>
    */
 
@@ -314,17 +311,16 @@ if (typeof Mozilla == "undefined") {
     _sendEvent("hideInfo");
   };
 
   /**
    * @typedef {String} Mozilla.UITour.MenuName
    * Valid values:<ul>
    * <li>appMenu
    * <li>bookmarks
-   * <li>controlCenter
    * <li>pocket
    * </ul>
    *
    * @see Mozilla.UITour.showMenu
    * @see Mozilla.UITour.hideMenu
    * @see Mozilla.UITour.openSearchPanel
    */
 
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -31,21 +31,16 @@ ChromeUtils.defineModuleGetter(
 );
 ChromeUtils.defineModuleGetter(
   this,
   "PageActions",
   "resource:///modules/PageActions.jsm"
 );
 ChromeUtils.defineModuleGetter(
   this,
-  "PrivateBrowsingUtils",
-  "resource://gre/modules/PrivateBrowsingUtils.jsm"
-);
-ChromeUtils.defineModuleGetter(
-  this,
   "ProfileAge",
   "resource://gre/modules/ProfileAge.jsm"
 );
 ChromeUtils.defineModuleGetter(
   this,
   "ReaderParent",
   "resource:///modules/ReaderParent.jsm"
 );
@@ -142,18 +137,16 @@ var UITour = {
         removeTargetListener: (aDocument, aCallback) => {
           let panelPopup = aDocument.defaultView.PanelUI.panel;
           panelPopup.removeEventListener("popupshown", aCallback);
         },
       },
     ],
     ["backForward", { query: "#back-button" }],
     ["bookmarks", { query: "#bookmarks-menu-button" }],
-    ["controlCenter-trackingUnblock", controlCenterTrackingToggleTarget(true)],
-    ["controlCenter-trackingBlock", controlCenterTrackingToggleTarget(false)],
     [
       "customize",
       {
         query: "#appMenu-customize-button",
         widgetName: "appMenu-customize-button",
       },
     ],
     [
@@ -242,34 +235,16 @@ var UITour = {
           if (!element || !UITour.isElementVisible(element)) {
             return null;
           }
           return element;
         },
       },
     ],
     [
-      "trackingProtection",
-      {
-        query: aDocument => {
-          if (
-            Services.prefs.getBoolPref(
-              "toolkit.cosmeticAnimations.enabled",
-              false
-            )
-          ) {
-            return aDocument.getElementById(
-              "tracking-protection-icon-animatable-box"
-            );
-          }
-          return aDocument.getElementById("tracking-protection-icon");
-        },
-      },
-    ],
-    [
       "urlbar",
       {
         query: "#urlbar",
         widgetName: "urlbar-container",
       },
     ],
     [
       "pageActionButton",
@@ -923,24 +898,16 @@ var UITour = {
         name: "pageActionPanel",
         node: aWindow.BrowserPageActions.panelNode,
         events: [
           ["popuphidden", this.onPanelHidden],
           ["popuphiding", this.onPageActionPanelHiding],
           ["ViewShowing", this.onPageActionPanelSubviewShowing],
         ],
       },
-      {
-        name: "controlCenter",
-        node: aWindow.gIdentityHandler._identityPopup,
-        events: [
-          ["popuphidden", this.onPanelHidden],
-          ["popuphiding", this.onControlCenterHiding],
-        ],
-      },
     ];
     for (let panel of panels) {
       // Ensure the menu panel is hidden and clean up panel listeners after calling hideMenu.
       if (panel.node.state != "closed") {
         await new Promise(resolve => {
           panel.node.addEventListener("popuphidden", resolve, { once: true });
           this.hideMenu(aWindow, panel.name);
         });
@@ -1531,41 +1498,16 @@ var UITour = {
       }
       menu.node.addEventListener("popuphidden", menu.onPanelHidden);
       menu.node.addEventListener("popuphiding", menu.onPopupHiding);
       menu.node.addEventListener("ViewShowing", menu.onViewShowing);
       menu.show();
     } else if (aMenuName == "bookmarks") {
       let menuBtn = aWindow.document.getElementById("bookmarks-menu-button");
       openMenuButton(menuBtn);
-    } else if (aMenuName == "controlCenter") {
-      let popup = aWindow.gIdentityHandler._identityPopup;
-
-      // Add the listener even if the panel is already open since it will still
-      // only get registered once even if it was UITour that opened it.
-      popup.addEventListener("popuphiding", this.onControlCenterHiding);
-      popup.addEventListener("popuphidden", this.onPanelHidden);
-
-      popup.setAttribute("noautohide", "true");
-      this.clearAvailableTargetsCache();
-
-      if (popup.state == "open") {
-        if (aOpenCallback) {
-          aOpenCallback();
-        }
-        return;
-      }
-
-      this.recreatePopup(popup);
-
-      // Open the control center
-      if (aOpenCallback) {
-        popup.addEventListener("popupshown", aOpenCallback, { once: true });
-      }
-      aWindow.document.getElementById("identity-box").click();
     } else if (aMenuName == "pocket") {
       let pageAction = PageActions.actionForID("pocket");
       if (!pageAction) {
         log.error("Can't open the pocket menu without a page action");
         return;
       }
       pageAction.doCommand(aWindow);
     } else if (aMenuName == "urlbar") {
@@ -1610,19 +1552,16 @@ var UITour = {
       }
     }
 
     if (aMenuName == "appMenu") {
       aWindow.PanelUI.hide();
     } else if (aMenuName == "bookmarks") {
       let menuBtn = aWindow.document.getElementById("bookmarks-menu-button");
       closeMenuButton(menuBtn);
-    } else if (aMenuName == "controlCenter") {
-      let panel = aWindow.gIdentityHandler._identityPopup;
-      panel.hidePopup();
     } else if (aMenuName == "urlbar") {
       aWindow.gURLBar.view.close();
     } else if (aMenuName == "pageActionPanel") {
       aWindow.BrowserPageActions.panelNode.hidePopup();
     }
   },
 
   showNewTab(aWindow, aBrowser) {
@@ -1698,22 +1637,16 @@ var UITour = {
   onPageActionPanelSubviewShowing(aEvent) {
     UITour._hideAnnotationsForPanel(
       aEvent,
       false,
       UITour.targetIsInPageActionPanel
     );
   },
 
-  onControlCenterHiding(aEvent) {
-    UITour._hideAnnotationsForPanel(aEvent, true, aTarget => {
-      return aTarget.targetName.startsWith("controlCenter-");
-    });
-  },
-
   onPanelHidden(aEvent) {
     aEvent.target.removeAttribute("noautohide");
     UITour.recreatePopup(aEvent.target);
     UITour.clearAvailableTargetsCache();
   },
 
   recreatePopup(aPanel) {
     // After changing popup attributes that relate to how the native widget is created
@@ -2017,40 +1950,16 @@ var UITour = {
           params,
         };
         messageManager.sendAsyncMessage("UITour:SendPageNotification", detail);
       }
     }
   },
 };
 
-function controlCenterTrackingToggleTarget(aUnblock) {
-  return {
-    infoPanelPosition: "rightcenter topleft",
-    query(aDocument) {
-      let popup = aDocument.defaultView.gIdentityHandler._identityPopup;
-      if (popup.state != "open") {
-        return null;
-      }
-      let buttonId = null;
-      if (aUnblock) {
-        if (PrivateBrowsingUtils.isWindowPrivate(aDocument.defaultView)) {
-          buttonId = "tracking-action-unblock-private";
-        } else {
-          buttonId = "tracking-action-unblock";
-        }
-      } else {
-        buttonId = "tracking-action-block";
-      }
-      let element = aDocument.getElementById(buttonId);
-      return UITour.isElementVisible(element) ? element : null;
-    },
-  };
-}
-
 this.UITour.init();
 
 /**
  * UITour Health Report
  */
 /**
  * Public API to be called by the UITour code
  */
--- a/browser/components/uitour/test/browser.ini
+++ b/browser/components/uitour/test/browser.ini
@@ -3,33 +3,23 @@ support-files =
   head.js
   image.png
   uitour.html
   ../UITour-lib.js
 
 [browser_backgroundTab.js]
 [browser_closeTab.js]
 skip-if = (verify && !debug && (os == 'linux'))
-[browser_contentBlocking.js]
 [browser_fxa.js]
 skip-if = debug || asan # updateUI leaks
 [browser_no_tabs.js]
 [browser_openPreferences.js]
 [browser_openSearchPanel.js]
 skip-if = true # Bug 1113038 - Intermittent "Popup was opened"
-[browser_trackingProtection.js]
-skip-if = os == "linux" # Intermittent NS_ERROR_NOT_AVAILABLE [nsIUrlClassifierDBService.beginUpdate]
-tag = trackingprotection
-support-files =
-  !/browser/base/content/test/trackingUI/benignPage.html
-  !/browser/base/content/test/trackingUI/trackingPage.html
-[browser_trackingProtection_tour.js]
-tag = trackingprotection
 [browser_showMenu.js]
-tag = trackingprotection
 [browser_UITour.js]
 skip-if = os == "linux" || verify # Intermittent failures, bug 951965
 [browser_UITour2.js]
 [browser_UITour3.js]
 [browser_UITour4.js]
 [browser_UITour5.js]
 skip-if = os == "linux" # Linux: Bug 986760, Bug 989101.
 [browser_UITour_availableTargets.js]
--- a/browser/components/uitour/test/browser_UITour_availableTargets.js
+++ b/browser/components/uitour/test/browser_UITour_availableTargets.js
@@ -25,17 +25,16 @@ function getExpectedTargets() {
     "pageAction-copyURL",
     "pageAction-emailLink",
     "pageAction-sendToDevice",
     ...(hasPocket ? ["pocket"] : []),
     "privateWindow",
     ...(hasQuit ? ["quit"] : []),
     "readerMode-urlBar",
     "screenshots",
-    "trackingProtection",
     "urlbar",
   ];
 }
 
 add_task(setup_UITourTest);
 
 add_UITour_task(async function test_availableTargets() {
   await ensureScreenshotsEnabled();
deleted file mode 100644
--- a/browser/components/uitour/test/browser_contentBlocking.js
+++ /dev/null
@@ -1,119 +0,0 @@
-"use strict";
-
-const PREF_INTRO_DELAY = "browser.contentblocking.introDelaySeconds";
-const PREF_INTRO_COUNT = "browser.contentblocking.introCount";
-const PREF_TP_ENABLED = "privacy.trackingprotection.enabled";
-const BENIGN_PAGE =
-  "http://tracking.example.org/browser/browser/base/content/test/trackingUI/benignPage.html";
-const TRACKING_PAGE =
-  "http://tracking.example.org/browser/browser/base/content/test/trackingUI/trackingPage.html";
-const TOOLTIP_PANEL = document.getElementById("UITourTooltip");
-const TOOLTIP_ANCHOR = document.getElementById(
-  "tracking-protection-icon-animatable-box"
-);
-
-var { UrlClassifierTestUtils } = ChromeUtils.import(
-  "resource://testing-common/UrlClassifierTestUtils.jsm"
-);
-
-registerCleanupFunction(function() {
-  UrlClassifierTestUtils.cleanupTestTrackers();
-  Services.prefs.clearUserPref(PREF_TP_ENABLED);
-  Services.prefs.clearUserPref(PREF_INTRO_COUNT);
-  Services.prefs.clearUserPref(PREF_INTRO_DELAY);
-});
-
-function allowOneIntro() {
-  Services.prefs.setIntPref(
-    PREF_INTRO_COUNT,
-    window.ContentBlocking.MAX_INTROS - 1
-  );
-}
-
-add_task(async function setup_test() {
-  Services.prefs.setBoolPref(PREF_TP_ENABLED, true);
-  Services.prefs.setIntPref(PREF_INTRO_DELAY, 0);
-  await UrlClassifierTestUtils.addTestTrackers();
-});
-
-add_task(async function test_benignPage() {
-  info("Load a test page not containing tracking elements");
-  allowOneIntro();
-  await BrowserTestUtils.withNewTab(BENIGN_PAGE, async function() {
-    await Assert.rejects(
-      waitForConditionPromise(() => {
-        return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
-      }, "timeout"),
-      /timeout/,
-      "Info panel shouldn't appear on a benign page"
-    );
-  });
-});
-
-add_task(async function test_tracking() {
-  info("Load a test page containing tracking elements");
-  allowOneIntro();
-  await BrowserTestUtils.withNewTab(
-    { gBrowser, url: TRACKING_PAGE },
-    async function() {
-      await new Promise((resolve, reject) => {
-        waitForPopupAtAnchor(
-          TOOLTIP_PANEL,
-          TOOLTIP_ANCHOR,
-          resolve,
-          "Intro panel should appear"
-        );
-      });
-
-      is(
-        Services.prefs.getIntPref(PREF_INTRO_COUNT),
-        window.ContentBlocking.MAX_INTROS,
-        "Check intro count increased"
-      );
-
-      let step2URL =
-        Services.urlFormatter.formatURLPref(
-          "privacy.trackingprotection.introURL"
-        ) + "?step=2&newtab=true&variation=2";
-      let buttons = document.getElementById("UITourTooltipButtons");
-
-      info("Click the step text and nothing should happen");
-      let tabCount = gBrowser.tabs.length;
-      await EventUtils.synthesizeMouseAtCenter(buttons.children[0], {});
-      is(gBrowser.tabs.length, tabCount, "Same number of tabs should be open");
-
-      info(
-        "Resetting count to test that viewing the tour prevents future panels"
-      );
-      allowOneIntro();
-
-      let panelHiddenPromise = promisePanelElementHidden(window, TOOLTIP_PANEL);
-      let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, step2URL);
-      info("Clicking the main button");
-      EventUtils.synthesizeMouseAtCenter(buttons.children[1], {});
-      let tab = await tabPromise;
-      is(
-        Services.prefs.getIntPref(PREF_INTRO_COUNT),
-        window.ContentBlocking.MAX_INTROS,
-        "Check intro count is at the max after opening step 2"
-      );
-      is(gBrowser.tabs.length, tabCount + 1, "Tour step 2 tab opened");
-      await panelHiddenPromise;
-      ok(true, "Panel hid when the button was clicked");
-      BrowserTestUtils.removeTab(tab);
-    }
-  );
-
-  info(
-    "Open another tracking page and make sure we don't show the panel again"
-  );
-  await BrowserTestUtils.withNewTab(TRACKING_PAGE, async function() {
-    await Assert.rejects(
-      waitForConditionPromise(() => {
-        return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
-      }, "timeout"),
-      /timeout/,
-      "Info panel shouldn't appear more than MAX_INTROS"
-    );
-  });
-});
--- a/browser/components/uitour/test/browser_showMenu.js
+++ b/browser/components/uitour/test/browser_showMenu.js
@@ -1,80 +1,20 @@
 "use strict";
 
-const CONTROL_CENTER_PANEL = gIdentityHandler._identityPopup;
-const CONTROL_CENTER_MENU_NAME = "controlCenter";
-
 const { UrlbarTestUtils } = ChromeUtils.import(
   "resource://testing-common/UrlbarTestUtils.jsm"
 );
 
 var gTestTab;
 var gContentAPI;
 var gContentWindow;
 
 add_task(setup_UITourTest);
 
-add_UITour_task(async function test_showMenu_controlCenter() {
-  is_element_hidden(CONTROL_CENTER_PANEL, "Panel should initially be hidden");
-  await showMenuPromise(CONTROL_CENTER_MENU_NAME);
-  is_element_visible(
-    CONTROL_CENTER_PANEL,
-    "Panel should be visible after showMenu"
-  );
-
-  await gURLBar.focus();
-  is_element_visible(
-    CONTROL_CENTER_PANEL,
-    "Panel should remain visible after focus outside"
-  );
-
-  await showMenuPromise(CONTROL_CENTER_MENU_NAME);
-  is_element_visible(
-    CONTROL_CENTER_PANEL,
-    "Panel should remain visible and callback called after a 2nd showMenu"
-  );
-
-  await BrowserTestUtils.withNewTab(
-    {
-      gBrowser,
-      url: "about:blank",
-    },
-    function() {
-      ok(true, "Tab opened");
-    }
-  );
-
-  is_element_hidden(CONTROL_CENTER_PANEL, "Panel should hide upon tab switch");
-});
-
-add_UITour_task(async function test_hideMenu_controlCenter() {
-  is_element_hidden(CONTROL_CENTER_PANEL, "Panel should initially be hidden");
-  await showMenuPromise(CONTROL_CENTER_MENU_NAME);
-  is_element_visible(
-    CONTROL_CENTER_PANEL,
-    "Panel should be visible after showMenu"
-  );
-  let hidePromise = promisePanelElementHidden(window, CONTROL_CENTER_PANEL);
-  await gContentAPI.hideMenu(CONTROL_CENTER_MENU_NAME);
-  await hidePromise;
-
-  is_element_hidden(CONTROL_CENTER_PANEL, "Panel should hide after hideMenu");
-});
-
-add_UITour_task(async function test_showMenu_hideMenu_urlbarPopup() {
-  await UrlbarTestUtils.promisePopupOpen(window, () =>
-    showMenuPromise("urlbar")
-  );
-  is(gURLBar.value, "Firefox", "Search string is Firefox");
-  await UrlbarTestUtils.promisePopupClose(window, () =>
-    gContentAPI.hideMenu("urlbar")
-  );
-});
-
 add_UITour_task(async function test_showMenu_hideMenu_pageActionPanel() {
   let pageActionPanel = BrowserPageActions.panelNode;
   let shownPromise = promisePanelElementShown(window, pageActionPanel);
   await showMenuPromise("pageActionPanel");
   await shownPromise;
   is(
     pageActionPanel.state,
     "open",
deleted file mode 100644
--- a/browser/components/uitour/test/browser_trackingProtection.js
+++ /dev/null
@@ -1,129 +0,0 @@
-"use strict";
-
-const PREF_INTRO_DELAY = "browser.contentblocking.introDelaySeconds";
-const PREF_INTRO_COUNT = "browser.contentblocking.introCount";
-const PREF_TP_ENABLED = "privacy.trackingprotection.enabled";
-const BENIGN_PAGE =
-  "http://tracking.example.org/browser/browser/base/content/test/trackingUI/benignPage.html";
-const TRACKING_PAGE =
-  "http://tracking.example.org/browser/browser/base/content/test/trackingUI/trackingPage.html";
-const TOOLTIP_PANEL = document.getElementById("UITourTooltip");
-const TOOLTIP_ANCHOR = document.getElementById(
-  "tracking-protection-icon-animatable-box"
-);
-
-var { UrlClassifierTestUtils } = ChromeUtils.import(
-  "resource://testing-common/UrlClassifierTestUtils.jsm"
-);
-
-registerCleanupFunction(function() {
-  UrlClassifierTestUtils.cleanupTestTrackers();
-  Services.prefs.clearUserPref(PREF_TP_ENABLED);
-  Services.prefs.clearUserPref(PREF_INTRO_DELAY);
-});
-
-function allowOneIntro() {
-  Services.prefs.setIntPref(
-    PREF_INTRO_COUNT,
-    window.ContentBlocking.MAX_INTROS - 1
-  );
-}
-
-add_task(async function setup_test() {
-  Services.prefs.setBoolPref(PREF_TP_ENABLED, true);
-  Services.prefs.setIntPref(PREF_INTRO_DELAY, 0);
-  await UrlClassifierTestUtils.addTestTrackers();
-});
-
-add_task(async function test_benignPage() {
-  info("Load a test page not containing tracking elements");
-  allowOneIntro();
-  await BrowserTestUtils.withNewTab(
-    { gBrowser, url: BENIGN_PAGE },
-    async function() {
-      await waitForConditionPromise(() => {
-        return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
-      }, "Info panel shouldn't appear on a benign page").then(
-        () => ok(false, "Info panel shouldn't appear"),
-        () => {
-          ok(true, "Info panel didn't appear on a benign page");
-        }
-      );
-    }
-  );
-});
-
-add_task(async function test_trackingPages() {
-  info("Load a test page containing tracking elements");
-  allowOneIntro();
-  await BrowserTestUtils.withNewTab(
-    { gBrowser, url: TRACKING_PAGE },
-    async function() {
-      await new Promise((resolve, reject) => {
-        waitForPopupAtAnchor(
-          TOOLTIP_PANEL,
-          TOOLTIP_ANCHOR,
-          resolve,
-          "Intro panel should appear"
-        );
-      });
-
-      is(
-        Services.prefs.getIntPref(PREF_INTRO_COUNT),
-        window.ContentBlocking.MAX_INTROS,
-        "Check intro count increased"
-      );
-
-      let step2URL =
-        Services.urlFormatter.formatURLPref(
-          "privacy.trackingprotection.introURL"
-        ) + "?step=2&newtab=true&variation=2";
-      let buttons = document.getElementById("UITourTooltipButtons");
-
-      info("Click the step text and nothing should happen");
-      let tabCount = gBrowser.tabs.length;
-      await EventUtils.synthesizeMouseAtCenter(buttons.children[0], {});
-      is(gBrowser.tabs.length, tabCount, "Same number of tabs should be open");
-
-      info(
-        "Resetting count to test that viewing the tour prevents future panels"
-      );
-      allowOneIntro();
-
-      let panelHiddenPromise = promisePanelElementHidden(window, TOOLTIP_PANEL);
-      let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, step2URL);
-      info("Clicking the main button");
-      EventUtils.synthesizeMouseAtCenter(buttons.children[1], {});
-      let tab = await tabPromise;
-      is(
-        Services.prefs.getIntPref(PREF_INTRO_COUNT),
-        window.ContentBlocking.MAX_INTROS,
-        "Check intro count is at the max after opening step 2"
-      );
-      is(gBrowser.tabs.length, tabCount + 1, "Tour step 2 tab opened");
-      await panelHiddenPromise;
-      ok(true, "Panel hid when the button was clicked");
-      BrowserTestUtils.removeTab(tab);
-    }
-  );
-
-  info(
-    "Open another tracking page and make sure we don't show the panel again"
-  );
-  await BrowserTestUtils.withNewTab(
-    { gBrowser, url: TRACKING_PAGE },
-    async function() {
-      await waitForConditionPromise(() => {
-        return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
-      }, "Info panel shouldn't appear more than MAX_INTROS").then(
-        () => ok(false, "Info panel shouldn't appear again"),
-        () => {
-          ok(
-            true,
-            "Info panel didn't appear more than MAX_INTROS on tracking pages"
-          );
-        }
-      );
-    }
-  );
-});
deleted file mode 100644
--- a/browser/components/uitour/test/browser_trackingProtection_tour.js
+++ /dev/null
@@ -1,97 +0,0 @@
-"use strict";
-
-var gTestTab;
-var gContentAPI;
-var gContentWindow;
-
-const { UrlClassifierTestUtils } = ChromeUtils.import(
-  "resource://testing-common/UrlClassifierTestUtils.jsm"
-);
-
-const PREF_INTRO_DELAY = "browser.contentblocking.introDelaySeconds";
-const TP_ENABLED_PREF = "privacy.trackingprotection.enabled";
-
-add_task(setup_UITourTest);
-
-add_task(async function test_setup() {
-  Services.prefs.setBoolPref("privacy.trackingprotection.enabled", true);
-  Services.prefs.setIntPref(PREF_INTRO_DELAY, 0);
-  await UrlClassifierTestUtils.addTestTrackers();
-
-  registerCleanupFunction(function() {
-    UrlClassifierTestUtils.cleanupTestTrackers();
-    Services.prefs.clearUserPref("privacy.trackingprotection.enabled");
-    Services.prefs.clearUserPref(PREF_INTRO_DELAY);
-  });
-});
-
-add_UITour_task(async function test_unblock_target() {
-  await checkToggleTarget("controlCenter-trackingUnblock");
-});
-
-add_UITour_task(function setup_block_target() {
-  // Preparation for test_block_target. These are separate since the reload
-  // interferes with UITour as it does a teardown. All we really care about
-  // is the permission manager entry but UITour tests shouldn't rely on that
-  // implementation detail.
-  window.ContentBlocking.disableForCurrentPage();
-});
-
-add_UITour_task(async function test_block_target() {
-  await checkToggleTarget("controlCenter-trackingBlock");
-  window.ContentBlocking.enableForCurrentPage();
-});
-
-async function checkToggleTarget(targetID) {
-  let popup = document.getElementById("UITourTooltip");
-
-  let trackerOpened = new Promise(function(resolve, reject) {
-    Services.obs.addObserver(function onopen(subject) {
-      let asciiSpec = subject.QueryInterface(Ci.nsIHttpChannel).URI.asciiSpec;
-      if (asciiSpec === "https://tracking.example.com/") {
-        Services.obs.removeObserver(onopen, "http-on-opening-request");
-        resolve();
-      }
-    }, "http-on-opening-request");
-  });
-
-  await ContentTask.spawn(gBrowser.selectedBrowser, {}, function() {
-    let doc = content.document;
-    let iframe = doc.createElement("iframe");
-    iframe.setAttribute("id", "tracking-element");
-    iframe.setAttribute("src", "https://tracking.example.com/");
-    doc.body.insertBefore(iframe, doc.body.firstElementChild);
-  });
-
-  await trackerOpened;
-
-  let testTargetAvailability = async function(expectedAvailable) {
-    let data = await getConfigurationPromise("availableTargets");
-    let available = data.targets.includes(targetID);
-    is(available, expectedAvailable, "Target has expected availability.");
-  };
-  await testTargetAvailability(false);
-  await showMenuPromise("controlCenter");
-  await testTargetAvailability(true);
-
-  await showInfoPromise(
-    targetID,
-    "This is " + targetID,
-    "My arrow should be on the side"
-  );
-  is(popup.alignmentPosition, "end_before", "Check " + targetID + " position");
-
-  let hideMenuPromise = promisePanelElementHidden(
-    window,
-    gIdentityHandler._identityPopup
-  );
-  await gContentAPI.hideMenu("controlCenter");
-  await hideMenuPromise;
-
-  ok(!BrowserTestUtils.is_visible(popup), "The tooltip should now be hidden.");
-  await testTargetAvailability(false);
-
-  await ContentTask.spawn(gBrowser.selectedBrowser, {}, function() {
-    content.document.getElementById("tracking-element").remove();
-  });
-}
--- a/browser/locales/en-US/browser/preferences/preferences.ftl
+++ b/browser/locales/en-US/browser/preferences/preferences.ftl
@@ -910,17 +910,16 @@ content-blocking-all-cookies = All cooki
 content-blocking-unvisited-cookies = Cookies from unvisited sites
 content-blocking-all-windows-trackers = Known trackers in all windows
 content-blocking-all-third-party-cookies = All third-party cookies
 content-blocking-cryptominers = Cryptominers
 content-blocking-fingerprinters = Fingerprinters
 
 content-blocking-warning-title = Heads up!
 content-blocking-warning-description = Blocking content can cause some websites to break. It’s easy to disable blocking for sites you trust.
-content-blocking-learn-how = Learn how
 
 content-blocking-reload-description = You will need to reload your tabs to apply these changes.
 content-blocking-reload-tabs-button =
   .label = Reload All Tabs
   .accesskey = R
 
 content-blocking-trackers-label =
   .label = Trackers
--- a/browser/locales/en-US/chrome/browser/browser.properties
+++ b/browser/locales/en-US/chrome/browser/browser.properties
@@ -618,25 +618,16 @@ contentBlocking.cryptominers.allowed.lab
 #   tense expresses that we are waiting for cryptominers to load
 #   and will block them as appropriate. This concept may not directly
 #   translate to your language, but it is still preferable if the translation
 #   would not make it seem like the blocking had already happened.
 #   So in full context this word could be part of the sentence:
 #   "[Firefox is] Blocking [cryptominers when they get loaded.]"
 contentBlocking.cryptominers.blocking.label=Blocking
 
-# LOCALIZATION NOTE (contentBlocking.intro.title): %S is brandShortName.
-contentBlocking.intro.title=New in %S: Content Blocking
-# LOCALIZATION NOTE (contentBlocking.v1.intro.description): %S is brandShortName.
-contentBlocking.intro.v1.description=When you see the shield, %S is blocking parts of the page that can slow your browsing or track you online.
-contentBlocking.intro.v2.description=The privacy benefits of Tracking Protection are now just one part of content blocking. When you see the shield, content blocking is on.
-# LOCALIZATION NOTE (trackingProtection.intro.step1of3): Indicates that the intro panel is step one of three in a tour.
-trackingProtection.intro.step1of3=1 of 3
-trackingProtection.intro.nextButton.label=Next
-
 trackingProtection.icon.activeTooltip=Tracking attempts blocked
 trackingProtection.icon.disabledTooltip=Tracking content detected
 
 # Edit Bookmark UI
 editBookmarkPanel.newBookmarkTitle=New Bookmark
 editBookmarkPanel.editBookmarkTitle=Edit This Bookmark
 editBookmarkPanel.cancel.label=Cancel
 editBookmarkPanel.cancel.accesskey=C
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/ControlCenter.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/ControlCenter.jsm
@@ -30,20 +30,17 @@ const HTTPS_PAGE = "https://example.com/
 const PERMISSIONS_PAGE = "https://test1.example.com/";
 const HTTP_PASSWORD_PAGE = `http://test2.example.org/${RESOURCE_PATH}/password.html`;
 const MIXED_CONTENT_URL = `https://example.com/${RESOURCE_PATH}/mixed.html`;
 const MIXED_ACTIVE_CONTENT_URL = `https://example.com/${RESOURCE_PATH}/mixed_active.html`;
 const MIXED_PASSIVE_CONTENT_URL = `https://example.com/${RESOURCE_PATH}/mixed_passive.html`;
 const TRACKING_PAGE = `http://tracking.example.org/${RESOURCE_PATH}/tracking.html`;
 
 var ControlCenter = {
-  init(libDir) {
-    // Disable the FTU tours.
-    Services.prefs.setIntPref("browser.contentblocking.introCount", 5);
-  },
+  init(libDir) {},
 
   configurations: {
     about: {
       selectors: ["#navigator-toolbox", "#identity-popup"],
       async applyConfig() {
         await loadPage("about:rights");
         await openIdentityPopup();
       },
--- a/testing/marionette/client/marionette_driver/geckoinstance.py
+++ b/testing/marionette/client/marionette_driver/geckoinstance.py
@@ -522,20 +522,16 @@ class DesktopInstance(GeckoInstance):
         #
         # Note: Possible update tests could reset or flip the value to allow
         # updates to be downloaded and applied.
         "app.update.disabledForTesting": True,
         # !!! For backward compatibility up to Firefox 64. Only remove
         # when this Firefox version is no longer supported by the client !!!
         "app.update.auto": False,
 
-        # Don't show the content blocking introduction panel
-        # We use a larger number than the default 22 to have some buffer
-        "browser.contentblocking.introCount": 99,
-
         # Enable output for dump() and chrome console API
         "browser.dom.window.dump.enabled": True,
         "devtools.console.stdout.chrome": True,
 
         # Indicate that the download panel has been shown once so that whichever
         # download test runs first doesn"t show the popup inconsistently
         "browser.download.panel.shown": True,
 
--- a/testing/marionette/components/marionette.js
+++ b/testing/marionette/components/marionette.js
@@ -81,20 +81,16 @@ const RECOMMENDED_PREFS = new Map([
   // This is to accommodate the fact that test environments tends to be
   // slower than production environments (with the b2g emulator being
   // the slowest of them all), resulting in the production timeout value
   // sometimes being exceeded and causing false-positive test failures.
   //
   // (bug 1176798, bug 1177018, bug 1210465)
   ["apz.content_response_timeout", 60000],
 
-  // Don't show the content blocking introduction panel.
-  // We use a larger number than the default 22 to have some buffer
-  ["browser.contentblocking.introCount", 99],
-
   // Indicate that the download panel has been shown once so that
   // whichever download test runs first doesn't show the popup
   // inconsistently.
   ["browser.download.panel.shown", true],
 
   // Always display a blank page
   ["browser.newtabpage.enabled", false],
 
--- a/toolkit/components/antitracking/test/browser/antitracking_head.js
+++ b/toolkit/components/antitracking/test/browser/antitracking_head.js
@@ -283,17 +283,16 @@ this.AntiTracking = {
         ],
         ["network.cookie.cookieBehavior", cookieBehavior],
         ["privacy.trackingprotection.enabled", false],
         ["privacy.trackingprotection.pbmode.enabled", false],
         [
           "privacy.trackingprotection.annotate_channels",
           cookieBehavior != BEHAVIOR_ACCEPT,
         ],
-        [win.ContentBlocking.prefIntroCount, win.ContentBlocking.MAX_INTROS],
         [
           "privacy.restrict3rdpartystorage.userInteractionRequiredForHosts",
           "tracking.example.com,tracking.example.org",
         ],
       ],
     });
 
     if (extraPrefs && Array.isArray(extraPrefs) && extraPrefs.length) {
--- a/toolkit/components/antitracking/test/browser/browser_addonHostPermissionIgnoredInTP.js
+++ b/toolkit/components/antitracking/test/browser/browser_addonHostPermissionIgnoredInTP.js
@@ -1,20 +1,16 @@
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 add_task(async function() {
   info("Starting test");
 
   await SpecialPowers.flushPrefEnv();
   await SpecialPowers.pushPrefEnv({
-    set: [
-      ["privacy.trackingprotection.enabled", true],
-      // prevent the content blocking on-boarding UI to start mid-way through the test!
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
-    ],
+    set: [["privacy.trackingprotection.enabled", true]],
   });
 
   await UrlClassifierTestUtils.addTestTrackers();
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: { permissions: ["https://tracking.example.com/"] },
     files: {
       "page.html":
--- a/toolkit/components/antitracking/test/browser/browser_onBeforeRequestNotificationForTrackingResources.js
+++ b/toolkit/components/antitracking/test/browser/browser_onBeforeRequestNotificationForTrackingResources.js
@@ -55,18 +55,16 @@ add_task(async function() {
     set: [
       ["browser.contentblocking.allowlist.annotations.enabled", true],
       ["browser.contentblocking.allowlist.storage.enabled", true],
       ["privacy.trackingprotection.enabled", true],
       // the test doesn't open a private window, so we don't care about this pref's value
       ["privacy.trackingprotection.pbmode.enabled", false],
       // tracking annotations aren't needed in this test, only TP is needed
       ["privacy.trackingprotection.annotate_channels", false],
-      // prevent the content blocking on-boarding UI to start mid-way through the test!
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
       [
         "privacy.restrict3rdpartystorage.userInteractionRequiredForHosts",
         "tracking.example.com,tracking.example.org",
       ],
     ],
   });
 
   await UrlClassifierTestUtils.addTestTrackers();
--- a/toolkit/components/antitracking/test/browser/browser_onModifyRequestNotificationForTrackingResources.js
+++ b/toolkit/components/antitracking/test/browser/browser_onModifyRequestNotificationForTrackingResources.js
@@ -52,18 +52,16 @@ add_task(async function() {
     set: [
       ["browser.contentblocking.allowlist.annotations.enabled", true],
       ["browser.contentblocking.allowlist.storage.enabled", true],
       ["privacy.trackingprotection.enabled", true],
       // the test doesn't open a private window, so we don't care about this pref's value
       ["privacy.trackingprotection.pbmode.enabled", false],
       // tracking annotations aren't needed in this test, only TP is needed
       ["privacy.trackingprotection.annotate_channels", false],
-      // prevent the content blocking on-boarding UI to start mid-way through the test!
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
       [
         "privacy.restrict3rdpartystorage.userInteractionRequiredForHosts",
         "tracking.example.com,tracking.example.org",
       ],
     ],
   });
 
   await UrlClassifierTestUtils.addTestTrackers();
--- a/toolkit/components/antitracking/test/browser/browser_storageAccessDoorHanger.js
+++ b/toolkit/components/antitracking/test/browser/browser_storageAccessDoorHanger.js
@@ -28,17 +28,16 @@ async function testDoorHanger(
     );
   }
 
   await SpecialPowers.flushPrefEnv();
   await SpecialPowers.pushPrefEnv({
     set: [
       ["browser.contentblocking.allowlist.annotations.enabled", true],
       ["browser.contentblocking.allowlist.storage.enabled", true],
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
       ["dom.storage_access.auto_grants", true],
       ["dom.storage_access.auto_grants.delayed", false],
       ["dom.storage_access.enabled", true],
       ["dom.storage_access.max_concurrent_auto_grants", maxConcurrent],
       ["dom.storage_access.prompt.testing", false],
       [
         "network.cookie.cookieBehavior",
         Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER,
--- a/toolkit/components/antitracking/test/browser/browser_workerPropagation.js
+++ b/toolkit/components/antitracking/test/browser/browser_workerPropagation.js
@@ -6,17 +6,16 @@
 add_task(async function() {
   info("Starting subResources test");
 
   await SpecialPowers.flushPrefEnv();
   await SpecialPowers.pushPrefEnv({
     set: [
       ["browser.contentblocking.allowlist.annotations.enabled", true],
       ["browser.contentblocking.allowlist.storage.enabled", true],
-      [ContentBlocking.prefIntroCount, ContentBlocking.MAX_INTROS],
       ["dom.storage_access.auto_grants", true],
       ["dom.storage_access.auto_grants.delayed", false],
       ["dom.storage_access.enabled", true],
       ["dom.storage_access.prompt.testing", false],
       [
         "network.cookie.cookieBehavior",
         Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER,
       ],