[tbb-commits] [tor-browser] 02/04: fixup! Bug 28005: Implement .onion alias urlbar rewrites

gitolite role git at cupani.torproject.org
Tue Jun 7 08:53:12 UTC 2022


This is an automated email from the git hooks/post-receive script.

pierov pushed a commit to branch tor-browser-91.9.0esr-11.5-1
in repository tor-browser.

commit a4f7580cfdaf1440e1be6d7fa841d401658c4354
Author: Pier Angelo Vendrame <pierov at torproject.org>
AuthorDate: Wed Feb 23 11:36:33 2022 +0100

    fixup! Bug 28005: Implement .onion alias urlbar rewrites
    
    The old patch to support .tor.onion hosts was implemented through
    HTTPS-Everywhere.
    Now that the extension has been deprecated (or is going to soon), we
    have a new implementation, so we need only the code that interacts with
    HTTPS-Everywhere, which we use to remove all SecureDrop channels,
    rather than adding the 2021 one.
---
 browser/actors/ClickHandlerChild.jsm               |  20 --
 browser/actors/ClickHandlerParent.jsm              |   1 -
 browser/actors/ContextMenuChild.jsm                |   4 -
 browser/base/content/browser-places.js             |  12 +-
 browser/base/content/browser-siteIdentity.js       |  12 +-
 browser/base/content/browser.js                    |  43 +----
 browser/base/content/nsContextMenu.js              |  18 --
 browser/base/content/pageinfo/pageInfo.js          |   2 +-
 browser/base/content/pageinfo/pageInfo.xhtml       |  10 -
 browser/base/content/pageinfo/security.js          |  17 +-
 browser/base/content/tabbrowser.js                 |   7 -
 browser/base/content/utilityOverlay.js             |  12 --
 browser/components/BrowserGlue.jsm                 |  29 ---
 .../onionservices/HttpsEverywhereControl.jsm       |  69 ++-----
 .../components/onionservices/OnionAliasStore.jsm   | 201 ---------------------
 browser/components/onionservices/moz.build         |   1 -
 browser/components/urlbar/UrlbarInput.jsm          |  13 +-
 docshell/base/nsDocShell.cpp                       |  52 ------
 docshell/base/nsDocShell.h                         |   6 -
 docshell/base/nsDocShellLoadState.cpp              |   4 -
 docshell/base/nsIDocShell.idl                      |   5 -
 docshell/base/nsIWebNavigation.idl                 |   5 -
 docshell/shistory/SessionHistoryEntry.cpp          |  14 --
 docshell/shistory/SessionHistoryEntry.h            |   1 -
 docshell/shistory/nsISHEntry.idl                   |   5 -
 docshell/shistory/nsSHEntry.cpp                    |  22 +--
 docshell/shistory/nsSHEntry.h                      |   1 -
 dom/interfaces/base/nsIBrowser.idl                 |   3 +-
 dom/ipc/BrowserChild.cpp                           |   2 -
 dom/ipc/BrowserParent.cpp                          |   3 +-
 dom/ipc/PBrowser.ipdl                              |   1 -
 modules/libpref/init/StaticPrefList.yaml           |   6 -
 netwerk/dns/effective_tld_names.dat                |   2 -
 netwerk/ipc/DocumentLoadListener.cpp               |  10 -
 toolkit/content/widgets/browser-custom-element.js  |  13 +-
 toolkit/modules/sessionstore/SessionHistory.jsm    |   5 -
 xpcom/reflect/xptinfo/xptinfo.h                    |   3 +-
 37 files changed, 40 insertions(+), 594 deletions(-)

diff --git a/browser/actors/ClickHandlerChild.jsm b/browser/actors/ClickHandlerChild.jsm
index 0f0f9330197fd..0f3bf42e2290c 100644
--- a/browser/actors/ClickHandlerChild.jsm
+++ b/browser/actors/ClickHandlerChild.jsm
@@ -146,26 +146,6 @@ class ClickHandlerChild extends JSWindowActorChild {
       json.originStoragePrincipal = ownerDoc.effectiveStoragePrincipal;
       json.triggeringPrincipal = ownerDoc.nodePrincipal;
 
-      // Check if the link needs to be opened with .tor.onion urlbar rewrites
-      // allowed. Only when the owner doc has onionUrlbarRewritesAllowed = true
-      // and the same origin we should allow this.
-      json.onionUrlbarRewritesAllowed = false;
-      if (this.docShell.onionUrlbarRewritesAllowed) {
-        const sm = Services.scriptSecurityManager;
-        try {
-          let targetURI = Services.io.newURI(href);
-          let isPrivateWin =
-            ownerDoc.nodePrincipal.originAttributes.privateBrowsingId > 0;
-          sm.checkSameOriginURI(
-            docshell.currentDocumentChannel.URI,
-            targetURI,
-            false,
-            isPrivateWin
-          );
-          json.onionUrlbarRewritesAllowed = true;
-        } catch (e) {}
-      }
-
       // If a link element is clicked with middle button, user wants to open
       // the link somewhere rather than pasting clipboard content.  Therefore,
       // when it's clicked with middle button, we should prevent multiple
diff --git a/browser/actors/ClickHandlerParent.jsm b/browser/actors/ClickHandlerParent.jsm
index 3a5be306be467..89363074ed148 100644
--- a/browser/actors/ClickHandlerParent.jsm
+++ b/browser/actors/ClickHandlerParent.jsm
@@ -103,7 +103,6 @@ class ClickHandlerParent extends JSWindowActorParent {
     let params = {
       charset: browser.characterSet,
       referrerInfo: E10SUtils.deserializeReferrerInfo(data.referrerInfo),
-      onionUrlbarRewritesAllowed: data.onionUrlbarRewritesAllowed,
       isContentWindowPrivate: data.isContentWindowPrivate,
       originPrincipal: data.originPrincipal,
       originStoragePrincipal: data.originStoragePrincipal,
diff --git a/browser/actors/ContextMenuChild.jsm b/browser/actors/ContextMenuChild.jsm
index dd7809eeb1cad..a9521642e4953 100644
--- a/browser/actors/ContextMenuChild.jsm
+++ b/browser/actors/ContextMenuChild.jsm
@@ -545,9 +545,6 @@ class ContextMenuChild extends JSWindowActorChild {
       doc.defaultView
     ).getFieldContext(aEvent.composedTarget);
 
-    let parentAllowsOnionUrlbarRewrites = this.docShell
-      .onionUrlbarRewritesAllowed;
-
     let disableSetDesktopBackground = null;
 
     // Media related cache info parent needs for saving
@@ -659,7 +656,6 @@ class ContextMenuChild extends JSWindowActorChild {
       frameID,
       frameBrowsingContextID,
       disableSetDesktopBackground,
-      parentAllowsOnionUrlbarRewrites,
     };
 
     if (context.inFrame && !context.inSrcdocFrame) {
diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js
index d90dc636f8db6..b0c9f6623097a 100644
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -470,8 +470,7 @@ var PlacesCommandHook = {
    */
   async bookmarkPage() {
     let browser = gBrowser.selectedBrowser;
-    const uri = browser.currentOnionAliasURI || browser.currentURI;
-    let url = new URL(uri.spec);
+    let url = new URL(browser.currentURI.spec);
     let info = await PlacesUtils.bookmarks.fetch({ url });
     let isNewBookmark = !info;
     let showEditUI = !isNewBookmark || StarUI.showForNewBookmarks;
@@ -582,7 +581,7 @@ var PlacesCommandHook = {
 
     tabs.forEach(tab => {
       let browser = tab.linkedBrowser;
-      let uri = browser.currentOnionAliasURI || browser.currentURI;
+      let uri = browser.currentURI;
       let title = browser.contentTitle || tab.label;
       let spec = uri.spec;
       if (!(spec in uniquePages)) {
@@ -1829,17 +1828,14 @@ var BookmarkingUI = {
   },
 
   onLocationChange: function BUI_onLocationChange() {
-    const uri =
-      gBrowser.selectedBrowser.currentOnionAliasURI || gBrowser.currentURI;
-    if (this._uri && uri.equals(this._uri)) {
+    if (this._uri && gBrowser.currentURI.equals(this._uri)) {
       return;
     }
     this.updateStarState();
   },
 
   updateStarState: function BUI_updateStarState() {
-    this._uri =
-      gBrowser.selectedBrowser.currentOnionAliasURI || gBrowser.currentURI;
+    this._uri = gBrowser.currentURI;
     this._itemGuids.clear();
     let guids = new Set();
 
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 45b992c14fca0..6682ae8b096fe 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -658,13 +658,13 @@ var gIdentityHandler = {
    *        nsIURI for which the identity UI should be displayed, already
    *        processed by createExposableURI.
    */
-  updateIdentity(state, uri, onionAliasURI) {
+  updateIdentity(state, uri) {
     let shouldHidePopup = this._uri && this._uri.spec != uri.spec;
     this._state = state;
 
     // Firstly, populate the state properties required to display the UI. See
     // the documentation of the individual properties for details.
-    this.setURI(uri, onionAliasURI);
+    this.setURI(uri);
     this._secInfo = gBrowser.securityUI.secInfo;
     this._isSecureContext = gBrowser.securityUI.isSecureContext;
 
@@ -687,18 +687,17 @@ var gIdentityHandler = {
    * Attempt to provide proper IDN treatment for host names
    */
   getEffectiveHost() {
-    let uri = this._onionAliasURI || this._uri;
     if (!this._IDNService) {
       this._IDNService = Cc["@mozilla.org/network/idn-service;1"].getService(
         Ci.nsIIDNService
       );
     }
     try {
-      return this._IDNService.convertToDisplayIDN(uri.host, {});
+      return this._IDNService.convertToDisplayIDN(this._uri.host, {});
     } catch (e) {
       // If something goes wrong (e.g. host is an IP address) just fail back
       // to the full domain.
-      return uri.host;
+      return this._uri.host;
     }
   },
 
@@ -1141,12 +1140,11 @@ var gIdentityHandler = {
     this._identityPopupContentVerif.textContent = verifier;
   },
 
-  setURI(uri, onionAliasURI) {
+  setURI(uri) {
     if (uri.schemeIs("view-source")) {
       uri = Services.io.newURI(uri.spec.replace(/^view-source:/i, ""));
     }
     this._uri = uri;
-    this._onionAliasURI = onionAliasURI;
 
     try {
       // Account for file: urls and catch when "" is the value
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 16123f02ff49b..faf6433ccacf8 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -82,7 +82,6 @@ XPCOMUtils.defineLazyModuleGetters(this, {
   TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.jsm",
   TorConnect: "resource:///modules/TorConnect.jsm",
   Translation: "resource:///modules/translation/TranslationParent.jsm",
-  OnionAliasStore: "resource:///modules/OnionAliasStore.jsm",
   UITour: "resource:///modules/UITour.jsm",
   UpdateUtils: "resource://gre/modules/UpdateUtils.jsm",
   UrlbarInput: "resource:///modules/UrlbarInput.jsm",
@@ -2249,7 +2248,6 @@ var gBrowserInit = {
         //                 [9]: allowInheritPrincipal (bool)
         //                 [10]: csp (nsIContentSecurityPolicy)
         //                 [11]: nsOpenWindowInfo
-        //                 [12]: onionUrlbarRewritesAllowed (bool)
         let userContextId =
           window.arguments[5] != undefined
             ? window.arguments[5]
@@ -2269,8 +2267,7 @@ var gBrowserInit = {
           // TODO fix allowInheritPrincipal to default to false.
           // Default to true unless explicitly set to false because of bug 1475201.
           window.arguments[9] !== false,
-          window.arguments[10],
-          window.arguments[12]
+          window.arguments[10]
         );
         window.focus();
       } else {
@@ -3068,8 +3065,7 @@ function loadURI(
   forceAboutBlankViewerInCurrent,
   triggeringPrincipal,
   allowInheritPrincipal = false,
-  csp = null,
-  onionUrlbarRewritesAllowed = false
+  csp = null
 ) {
   if (!triggeringPrincipal) {
     throw new Error("Must load with a triggering Principal");
@@ -3087,7 +3083,6 @@ function loadURI(
       csp,
       forceAboutBlankViewerInCurrent,
       allowInheritPrincipal,
-      onionUrlbarRewritesAllowed,
     });
   } catch (e) {
     Cu.reportError(e);
@@ -5214,24 +5209,11 @@ var XULBrowserWindow = {
       this.reloadCommand.removeAttribute("disabled");
     }
 
-    // The onion memorable alias needs to be used in gURLBar.setURI, but also in
-    // other parts of the code (like the bookmarks UI), so we save it.
-    if (gBrowser.selectedBrowser.onionUrlbarRewritesAllowed) {
-      gBrowser.selectedBrowser.currentOnionAliasURI = OnionAliasStore.getShortURI(
-        aLocationURI
-      );
-    } else {
-      gBrowser.selectedBrowser.currentOnionAliasURI = null;
-    }
-
     // We want to update the popup visibility if we received this notification
     // via simulated locationchange events such as switching between tabs, however
     // if this is a document navigation then PopupNotifications will be updated
     // via TabsProgressListener.onLocationChange and we do not want it called twice
-    gURLBar.setURI(
-      gBrowser.selectedBrowser.currentOnionAliasURI || aLocationURI,
-      aIsSimulated
-    );
+    gURLBar.setURI(aLocationURI, aIsSimulated);
 
     BookmarkingUI.onLocationChange();
     // If we've actually changed document, update the toolbar visibility.
@@ -5455,7 +5437,6 @@ var XULBrowserWindow = {
     // Don't need to do anything if the data we use to update the UI hasn't
     // changed
     let uri = gBrowser.currentURI;
-    let onionAliasURI = gBrowser.selectedBrowser.currentOnionAliasURI;
     let spec = uri.spec;
     let isSecureContext = gBrowser.securityUI.isSecureContext;
     if (
@@ -5479,7 +5460,7 @@ var XULBrowserWindow = {
     try {
       uri = Services.io.createExposableURI(uri);
     } catch (e) {}
-    gIdentityHandler.updateIdentity(this._state, uri, onionAliasURI);
+    gIdentityHandler.updateIdentity(this._state, uri);
   },
 
   // simulate all change notifications after switching tabs
@@ -6998,21 +6979,6 @@ function handleLinkClick(event, href, linkNode) {
     return true;
   }
 
-  // Check if the link needs to be opened with .tor.onion urlbar rewrites
-  // allowed. Only when the owner doc has onionUrlbarRewritesAllowed = true
-  // and the same origin we should allow this.
-  let persistOnionUrlbarRewritesAllowedInChildTab = false;
-  if (where == "tab" && gBrowser.docShell.onionUrlbarRewritesAllowed) {
-    const sm = Services.scriptSecurityManager;
-    try {
-      let tURI = makeURI(href);
-      let isPrivateWin =
-        doc.nodePrincipal.originAttributes.privateBrowsingId > 0;
-      sm.checkSameOriginURI(doc.documentURIObject, tURI, false, isPrivateWin);
-      persistOnionUrlbarRewritesAllowedInChildTab = true;
-    } catch (e) {}
-  }
-
   let frameID = WebNavigationFrames.getFrameId(doc.defaultView);
 
   urlSecurityCheck(href, doc.nodePrincipal);
@@ -7024,7 +6990,6 @@ function handleLinkClick(event, href, linkNode) {
     triggeringPrincipal: doc.nodePrincipal,
     csp: doc.csp,
     frameID,
-    onionUrlbarRewritesAllowed: persistOnionUrlbarRewritesAllowedInChildTab,
   };
 
   // The new tab/window must use the same userContextId
diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js
index e96df23142f86..1ff16ffbab9f1 100644
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -58,7 +58,6 @@ function openContextMenu(aMessage, aBrowser, aActor) {
     selectionInfo: data.selectionInfo,
     disableSetDesktopBackground: data.disableSetDesktopBackground,
     loginFillInfo: data.loginFillInfo,
-    parentAllowsOnionUrlbarRewrites: data.parentAllowsOnionUrlbarRewrites,
     userContextId: data.userContextId,
     webExtContextData: data.webExtContextData,
     cookieJarSettings: E10SUtils.deserializeCookieJarSettings(
@@ -1198,7 +1197,6 @@ class nsContextMenu {
       triggeringPrincipal: this.principal,
       csp: this.csp,
       frameID: this.contentData.frameID,
-      onionUrlbarRewritesAllowed: false,
     };
     for (let p in extra) {
       params[p] = extra[p];
@@ -1222,22 +1220,6 @@ class nsContextMenu {
     }
 
     params.referrerInfo = referrerInfo;
-
-    // Check if the link needs to be opened with .tor.onion urlbar rewrites
-    // allowed. Only when parent has onionUrlbarRewritesAllowed = true
-    // and the same origin we should allow this.
-    if (this.contentData.parentAllowsOnionUrlbarRewrites) {
-      let referrerURI = this.contentData.documentURIObject;
-      const sm = Services.scriptSecurityManager;
-      try {
-        let targetURI = this.linkURI;
-        let isPrivateWin =
-          this.browser.contentPrincipal.originAttributes.privateBrowsingId > 0;
-        sm.checkSameOriginURI(referrerURI, targetURI, false, isPrivateWin);
-        params.onionUrlbarRewritesAllowed = true;
-      } catch (e) {}
-    }
-
     return params;
   }
 
diff --git a/browser/base/content/pageinfo/pageInfo.js b/browser/base/content/pageinfo/pageInfo.js
index dd1a4a90fedf8..cd02b73bd0c76 100644
--- a/browser/base/content/pageinfo/pageInfo.js
+++ b/browser/base/content/pageinfo/pageInfo.js
@@ -398,7 +398,7 @@ async function onNonMediaPageInfoLoad(browser, pageInfoData, imageInfo) {
     );
   }
   onLoadPermission(uri, principal);
-  securityOnLoad(uri, windowInfo, browser.currentOnionAliasURI);
+  securityOnLoad(uri, windowInfo);
 }
 
 function resetPageInfo(args) {
diff --git a/browser/base/content/pageinfo/pageInfo.xhtml b/browser/base/content/pageinfo/pageInfo.xhtml
index a23f2bb5748c6..f40ffd3778d8c 100644
--- a/browser/base/content/pageinfo/pageInfo.xhtml
+++ b/browser/base/content/pageinfo/pageInfo.xhtml
@@ -312,16 +312,6 @@
               <input id="security-identity-domain-value" readonly="readonly"/>
             </td>
           </tr>
-          <!-- Onion Alias -->
-          <tr id="security-view-identity-onionalias-row">
-            <th>
-              <xul:label id="security-view-identity-onionalias"
-                     control="security-view-identity-onionalias-value"/>
-            </th>
-            <td>
-              <input id="security-view-identity-onionalias-value" readonly="true"/>
-            </td>
-          </tr>
           <!-- Owner -->
           <tr>
             <th>
diff --git a/browser/base/content/pageinfo/security.js b/browser/base/content/pageinfo/security.js
index 2e22f4670503d..8d10c8df814c4 100644
--- a/browser/base/content/pageinfo/security.js
+++ b/browser/base/content/pageinfo/security.js
@@ -248,7 +248,7 @@ var security = {
   },
 };
 
-async function securityOnLoad(uri, windowInfo, onionAliasURI) {
+async function securityOnLoad(uri, windowInfo) {
   await security.init(uri, windowInfo);
 
   let info = security.securityInfo;
@@ -261,21 +261,6 @@ async function securityOnLoad(uri, windowInfo, onionAliasURI) {
   }
   document.getElementById("securityTab").hidden = false;
 
-  if (onionAliasURI) {
-    setText(
-      "security-view-identity-onionalias",
-      gTorButtonBundle.GetStringFromName("pageInfo_OnionName")
-    );
-    setText("security-view-identity-onionalias-value", onionAliasURI.host);
-    document.getElementById(
-      "security-view-identity-onionalias-row"
-    ).hidden = false;
-  } else {
-    document.getElementById(
-      "security-view-identity-onionalias-row"
-    ).hidden = true;
-  }
-
   /* Set Identity section text */
   setText("security-identity-domain-value", windowInfo.hostName);
 
diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js
index 520fea7cc3457..e47c81541bfab 100644
--- a/browser/base/content/tabbrowser.js
+++ b/browser/base/content/tabbrowser.js
@@ -1635,7 +1635,6 @@
       var aFromExternal;
       var aRelatedToCurrent;
       var aAllowInheritPrincipal;
-      var aOnionUrlbarRewritesAllowed;
       var aSkipAnimation;
       var aForceNotRemote;
       var aPreferredRemoteType;
@@ -1665,7 +1664,6 @@
         aFromExternal = params.fromExternal;
         aRelatedToCurrent = params.relatedToCurrent;
         aAllowInheritPrincipal = !!params.allowInheritPrincipal;
-        aOnionUrlbarRewritesAllowed = params.onionUrlbarRewritesAllowed;
         aSkipAnimation = params.skipAnimation;
         aForceNotRemote = params.forceNotRemote;
         aPreferredRemoteType = params.preferredRemoteType;
@@ -1706,7 +1704,6 @@
         fromExternal: aFromExternal,
         relatedToCurrent: aRelatedToCurrent,
         skipAnimation: aSkipAnimation,
-        onionUrlbarRewritesAllowed: aOnionUrlbarRewritesAllowed,
         forceNotRemote: aForceNotRemote,
         createLazyBrowser: aCreateLazyBrowser,
         preferredRemoteType: aPreferredRemoteType,
@@ -2539,7 +2536,6 @@
       aURI,
       {
         allowInheritPrincipal,
-        onionUrlbarRewritesAllowed,
         allowThirdPartyFixup,
         bulkOrderedOpen,
         charset,
@@ -2881,9 +2877,6 @@
             // lands.
             flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FIRST_LOAD;
           }
-          if (onionUrlbarRewritesAllowed) {
-            flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
-          }
           if (!allowInheritPrincipal) {
             flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
           }
diff --git a/browser/base/content/utilityOverlay.js b/browser/base/content/utilityOverlay.js
index 4926885cca3bd..a95717544b80f 100644
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -303,7 +303,6 @@ function openLinkIn(url, where, params) {
     : new ReferrerInfo(Ci.nsIReferrerInfo.EMPTY, true, null);
   var aRelatedToCurrent = params.relatedToCurrent;
   var aAllowInheritPrincipal = !!params.allowInheritPrincipal;
-  var aOnionUrlbarRewritesAllowed = params.onionUrlbarRewritesAllowed;
   var aForceAllowDataURI = params.forceAllowDataURI;
   var aInBackground = params.inBackground;
   var aInitiatingDoc = params.initiatingDoc;
@@ -420,11 +419,6 @@ function openLinkIn(url, where, params) {
     ].createInstance(Ci.nsISupportsPRBool);
     allowThirdPartyFixupSupports.data = aAllowThirdPartyFixup;
 
-    var onionUrlbarRewritesAllowed = Cc[
-      "@mozilla.org/supports-PRBool;1"
-    ].createInstance(Ci.nsISupportsPRBool);
-    onionUrlbarRewritesAllowed.data = aOnionUrlbarRewritesAllowed;
-
     var userContextIdSupports = Cc[
       "@mozilla.org/supports-PRUint32;1"
     ].createInstance(Ci.nsISupportsPRUint32);
@@ -441,8 +435,6 @@ function openLinkIn(url, where, params) {
     sa.appendElement(aTriggeringPrincipal);
     sa.appendElement(null); // allowInheritPrincipal
     sa.appendElement(aCsp);
-    sa.appendElement(null); // nsOpenWindowInfo
-    sa.appendElement(onionUrlbarRewritesAllowed);
 
     const sourceWindow = w || window;
     let win;
@@ -560,9 +552,6 @@ function openLinkIn(url, where, params) {
       if (aForceAllowDataURI) {
         flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FORCE_ALLOW_DATA_URI;
       }
-      if (aOnionUrlbarRewritesAllowed) {
-        flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
-      }
 
       let { URI_INHERITS_SECURITY_CONTEXT } = Ci.nsIProtocolHandler;
       if (
@@ -609,7 +598,6 @@ function openLinkIn(url, where, params) {
         allowThirdPartyFixup: aAllowThirdPartyFixup,
         relatedToCurrent: aRelatedToCurrent,
         skipAnimation: aSkipTabAnimation,
-        onionUrlbarRewritesAllowed: aOnionUrlbarRewritesAllowed,
         userContextId: aUserContextId,
         originPrincipal: aPrincipal,
         originStoragePrincipal: aStoragePrincipal,
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index e2824bffdf070..08fed785874fd 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -85,7 +85,6 @@ XPCOMUtils.defineLazyModuleGetters(this, {
   TabUnloader: "resource:///modules/TabUnloader.jsm",
   TelemetryUtils: "resource://gre/modules/TelemetryUtils.jsm",
   TRRRacer: "resource:///modules/TRRPerformance.jsm",
-  OnionAliasStore: "resource:///modules/OnionAliasStore.jsm",
   UIState: "resource://services-sync/UIState.jsm",
   UrlbarQuickSuggest: "resource:///modules/UrlbarQuickSuggest.jsm",
   UrlbarPrefs: "resource:///modules/UrlbarPrefs.jsm",
@@ -2029,7 +2028,6 @@ BrowserGlue.prototype = {
     Normandy.uninit();
     RFPHelper.uninit();
     ASRouterNewTabHook.destroy();
-    OnionAliasStore.uninit();
   },
 
   // Set up a listener to enable/disable the screenshots extension
@@ -2534,33 +2532,6 @@ BrowserGlue.prototype = {
         },
       },
 
-      {
-        task: () => {
-          const { TorConnect, TorConnectTopics } = ChromeUtils.import(
-            "resource:///modules/TorConnect.jsm"
-          );
-          if (!TorConnect.shouldShowTorConnect) {
-            // we will take this path when the user is using the legacy tor launcher or
-            // when Tor Browser didn't launch its own tor.
-            OnionAliasStore.init();
-          } else {
-            // this path is taken when using about:torconnect, we wait to init
-            // after we are bootstrapped and connected to tor
-            const topic = TorConnectTopics.BootstrapComplete;
-            let bootstrapObserver = {
-              observe(aSubject, aTopic, aData) {
-                if (aTopic === topic) {
-                  OnionAliasStore.init();
-                  // we only need to init once, so remove ourselves as an obvserver
-                  Services.obs.removeObserver(this, topic);
-                }
-              }
-            };
-            Services.obs.addObserver(bootstrapObserver, topic);
-          }
-        },
-      },
-
       {
         task: () => {
           Blocklist.loadBlocklistAsync();
diff --git a/browser/components/onionservices/HttpsEverywhereControl.jsm b/browser/components/onionservices/HttpsEverywhereControl.jsm
index d673de4cd6e57..9e14b7d88b501 100644
--- a/browser/components/onionservices/HttpsEverywhereControl.jsm
+++ b/browser/components/onionservices/HttpsEverywhereControl.jsm
@@ -59,9 +59,9 @@ class HttpsEverywhereControl {
   }
 
   /**
-   * Installs the .tor.onion update channel in https-everywhere
+   * Uninstalls old .tor.onion update channels from https-everywhere
    */
-  async installTorOnionUpdateChannel(retries = 5) {
+  async uninstallTorOnionUpdateChannel(retries = 5) {
 
     // TODO: https-everywhere store is initialized asynchronously, so sending a message
     // immediately results in a `store.get is undefined` error.
@@ -70,73 +70,35 @@ class HttpsEverywhereControl {
     // for that here.
     await HttpsEverywhereControl.wait();
 
+    // We now handle .tor.onion domains with our first-party component, so we
+    // remove known rules from HTTPS-Everywhere.
+
     try {
-      // Delete the previous channel signing key, and add the new one below.
       await this._sendMessage(
         "delete_update_channel",
         SECUREDROP_TOR_ONION_CHANNEL_2020.name
       );
     } catch (e) {
       if (retries <= 0) {
-        throw new Error("Could not uninstall SecureDropTorOnion update channel");
+        console.warn("Cannot uninstall the SecureDropTorOnion 2020 channel", e);
+        throw new Error("Could not uninstall the SecureDropTorOnion update channel");
       }
-      await this.installTorOnionUpdateChannel(retries - 1);
+      await this.uninstallTorOnionUpdateChannel(retries - 1);
       return;
     }
-
     try {
-      // TODO: we may want a way to "lock" this update channel, so that it cannot be modified
-      // by the user via UI, but I think this is not possible at the time of writing via
-      // the existing messages in https-everywhere.
       await this._sendMessage(
-        "create_update_channel",
+        "delete_update_channel",
         SECUREDROP_TOR_ONION_CHANNEL.name
       );
     } catch (e) {
       if (retries <= 0) {
-        throw new Error("Could not install SecureDropTorOnion update channel");
+        console.warn("Cannot uninstall the SecureDropTorOnion 2021 channel", e);
+        throw new Error("Could not uninstall the SecureDropTorOnion update channel");
       }
-      await this.installTorOnionUpdateChannel(retries - 1);
+      await this.uninstallTorOnionUpdateChannel(retries - 1);
       return;
     }
-
-    await this._sendMessage(
-      "update_update_channel",
-      SECUREDROP_TOR_ONION_CHANNEL
-    );
-  }
-
-  /**
-   * Returns the .tor.onion rulesets available in https-everywhere
-   */
-  async getTorOnionRules() {
-    return this._sendMessage("get_simple_rules_ending_with", ".tor.onion");
-  }
-
-  /**
-   * Returns the timestamp of the last .tor.onion update channel update.
-   */
-  async getRulesetTimestamp() {
-    const rulesets = await this._sendMessage("get_update_channel_timestamps");
-    const securedrop =
-      rulesets &&
-      rulesets.find(([{ name }]) => name === SECUREDROP_TOR_ONION_CHANNEL.name);
-    if (securedrop) {
-      const [
-        updateChannel, // This has the same structure as SECUREDROP_TOR_ONION_CHANNEL
-        lastUpdatedTimestamp, // An integer, 0 if the update channel was never updated
-      ] = securedrop;
-      void updateChannel; // Ignore eslint unused warning for ruleset
-      return lastUpdatedTimestamp;
-    }
-    return null;
-  }
-
-  unload() {
-    if (this._extensionMessaging) {
-      this._extensionMessaging.unload();
-      this._extensionMessaging = null;
-    }
   }
 
   _init() {
@@ -146,6 +108,8 @@ class HttpsEverywhereControl {
 
     // update all of the existing https-everywhere channels
     setTimeout(async () => {
+      await this.uninstallTorOnionUpdateChannel();
+
       let pinnedChannels = await this._sendMessage("get_pinned_update_channels");
       for(let channel of pinnedChannels.update_channels) {
         this._sendMessage("update_update_channel", channel);
@@ -155,8 +119,9 @@ class HttpsEverywhereControl {
       for(let channel of storedChannels.update_channels) {
         this._sendMessage("update_update_channel", channel);
       }
-    }, 0);
-
 
+      this._extensionMessaging.unload();
+      this._extensionMessaging = null;
+    }, 0);
   }
 }
diff --git a/browser/components/onionservices/OnionAliasStore.jsm b/browser/components/onionservices/OnionAliasStore.jsm
deleted file mode 100644
index 66cf569227bf7..0000000000000
--- a/browser/components/onionservices/OnionAliasStore.jsm
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright (c) 2020, The Tor Project, Inc.
-
-"use strict";
-
-const EXPORTED_SYMBOLS = ["OnionAliasStore"];
-
-const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
-const { XPCOMUtils } = ChromeUtils.import(
-  "resource://gre/modules/XPCOMUtils.jsm"
-);
-const { setTimeout, clearTimeout } = ChromeUtils.import(
-  "resource://gre/modules/Timer.jsm"
-);
-const { HttpsEverywhereControl } = ChromeUtils.import(
-  "resource:///modules/HttpsEverywhereControl.jsm"
-);
-
-// Logger adapted from CustomizableUI.jsm
-const kPrefOnionAliasDebug = "browser.onionalias.debug";
-XPCOMUtils.defineLazyPreferenceGetter(
-  this,
-  "gDebuggingEnabled",
-  kPrefOnionAliasDebug,
-  false,
-  (pref, oldVal, newVal) => {
-    if (typeof log != "undefined") {
-      log.maxLogLevel = newVal ? "all" : "log";
-    }
-  }
-);
-XPCOMUtils.defineLazyGetter(this, "log", () => {
-  let scope = {};
-  ChromeUtils.import("resource://gre/modules/Console.jsm", scope);
-  let consoleOptions = {
-    maxLogLevel: gDebuggingEnabled ? "all" : "log",
-    prefix: "OnionAlias",
-  };
-  return new scope.ConsoleAPI(consoleOptions);
-});
-
-function observe(topic, callback) {
-  let observer = {
-    observe(aSubject, aTopic, aData) {
-      if (topic === aTopic) {
-        callback(aSubject, aData);
-      }
-    },
-  };
-  Services.obs.addObserver(observer, topic);
-  return () => Services.obs.removeObserver(observer, topic);
-}
-
-class _OnionAliasStore {
-  static get RULESET_CHECK_INTERVAL() {
-    return 1000 * 60; // 1 minute
-  }
-
-  static get RULESET_CHECK_INTERVAL_FAST() {
-    return 1000 * 5; // 5 seconds
-  }
-
-  constructor() {
-    this._onionMap = new Map();
-    this._rulesetTimeout = null;
-    this._removeObserver = () => {};
-    this._canLoadRules = false;
-    this._rulesetTimestamp = null;
-    this._updateChannelInstalled = false;
-  }
-
-  async _periodicRulesetCheck() {
-    // TODO: it would probably be preferable to listen to some message broadcasted by
-    // the https-everywhere extension when some update channel is updated, instead of
-    // polling every N seconds.
-    log.debug("Checking for new rules");
-    const ts = await this.httpsEverywhereControl.getRulesetTimestamp();
-    log.debug(
-      `Found ruleset timestamp ${ts}, current is ${this._rulesetTimestamp}`
-    );
-    if (ts !== this._rulesetTimestamp) {
-      this._rulesetTimestamp = ts;
-      log.debug("New rules found, updating");
-      // We clear the mappings even if we cannot load the rules from https-everywhere,
-      // since we cannot be sure if the stored mappings are correct anymore.
-      this._clear();
-      if (this._canLoadRules) {
-        await this._loadRules();
-      }
-    }
-    // If the timestamp is 0, that means the update channel was not yet updated, so
-    // we schedule a check soon.
-    this._rulesetTimeout = setTimeout(
-      () => this._periodicRulesetCheck(),
-      ts === 0
-        ? _OnionAliasStore.RULESET_CHECK_INTERVAL_FAST
-        : _OnionAliasStore.RULESET_CHECK_INTERVAL
-    );
-  }
-
-  async init() {
-    this.httpsEverywhereControl = new HttpsEverywhereControl();
-
-    // Setup .tor.onion rule loading.
-    // The http observer is a fallback, and is removed in _loadRules() as soon as we are able
-    // to load some rules from HTTPS Everywhere.
-    this._loadHttpObserver();
-    try {
-      await this.httpsEverywhereControl.installTorOnionUpdateChannel();
-      this._updateChannelInstalled = true;
-      await this.httpsEverywhereControl.getTorOnionRules();
-      this._canLoadRules = true;
-    } catch (e) {
-      // Loading rules did not work, probably because "get_simple_rules_ending_with" is not yet
-      // working in https-everywhere. Use an http observer as a fallback for learning the rules.
-      log.debug(`Could not load rules: ${e.message}`);
-    }
-
-    // Setup checker for https-everywhere ruleset updates
-    if (this._updateChannelInstalled) {
-      this._periodicRulesetCheck();
-    }
-  }
-
-  /**
-   * Loads the .tor.onion mappings from https-everywhere.
-   */
-  async _loadRules() {
-    const rules = await this.httpsEverywhereControl.getTorOnionRules();
-    // Remove http observer if we are able to load some rules directly.
-    if (rules.length) {
-      this._removeObserver();
-      this._removeObserver = () => {};
-    }
-    this._clear();
-    log.debug(`Loading ${rules.length} rules`, rules);
-    for (const rule of rules) {
-      // Here we are trusting that the securedrop ruleset follows some conventions so that we can
-      // assume there is a host mapping from `rule.host` to the hostname of the URL in `rule.to`.
-      try {
-        const url = new URL(rule.to);
-        const shortHost = rule.host;
-        const longHost = url.hostname;
-        this._addMapping(shortHost, longHost);
-      } catch (e) {
-        log.error("Could not process rule:", rule);
-      }
-    }
-  }
-
-  /**
-   * Loads a http observer to listen for local redirects for populating
-   * the .tor.onion -> .onion mappings. Should only be used if we cannot ask https-everywhere
-   * directly for the mappings.
-   */
-  _loadHttpObserver() {
-    this._removeObserver = observe("http-on-before-connect", channel => {
-      if (
-        channel.isMainDocumentChannel &&
-        channel.originalURI.host.endsWith(".tor.onion")
-      ) {
-        this._addMapping(channel.originalURI.host, channel.URI.host);
-      }
-    });
-  }
-
-  uninit() {
-    this._clear();
-    this._removeObserver();
-    this._removeObserver = () => {};
-    if (this.httpsEverywhereControl) {
-      this.httpsEverywhereControl.unload();
-      delete this.httpsEverywhereControl;
-    }
-    clearTimeout(this._rulesetTimeout);
-    this._rulesetTimeout = null;
-    this._rulesetTimestamp = null;
-  }
-
-  _clear() {
-    this._onionMap.clear();
-  }
-
-  _addMapping(shortOnionHost, longOnionHost) {
-    this._onionMap.set(longOnionHost, shortOnionHost);
-  }
-
-  getShortURI(onionURI) {
-    if (
-      (onionURI.schemeIs("http") || onionURI.schemeIs("https")) &&
-      this._onionMap.has(onionURI.host)
-    ) {
-      return onionURI
-        .mutate()
-        .setHost(this._onionMap.get(onionURI.host))
-        .finalize();
-    }
-    return null;
-  }
-}
-
-let OnionAliasStore = new _OnionAliasStore();
diff --git a/browser/components/onionservices/moz.build b/browser/components/onionservices/moz.build
index 8027233d65a68..6187035ca00af 100644
--- a/browser/components/onionservices/moz.build
+++ b/browser/components/onionservices/moz.build
@@ -3,7 +3,6 @@ JAR_MANIFESTS += ["jar.mn"]
 EXTRA_JS_MODULES += [
     "ExtensionMessaging.jsm",
     "HttpsEverywhereControl.jsm",
-    "OnionAliasStore.jsm",
     "OnionLocationChild.jsm",
     "OnionLocationParent.jsm",
 ]
diff --git a/browser/components/urlbar/UrlbarInput.jsm b/browser/components/urlbar/UrlbarInput.jsm
index 29ee12914719b..db83e09109bf2 100644
--- a/browser/components/urlbar/UrlbarInput.jsm
+++ b/browser/components/urlbar/UrlbarInput.jsm
@@ -359,10 +359,7 @@ class UrlbarInput {
     // user makes the input empty, switches tabs, and switches back, we want the
     // URI to become visible again so the user knows what URI they're viewing.
     if (value === null || (!value && dueToTabSwitch)) {
-      uri =
-        uri ||
-        this.window.gBrowser.selectedBrowser.currentOnionAliasURI ||
-        this.window.gBrowser.currentURI;
+      uri = uri || this.window.gBrowser.currentURI;
       // Strip off usernames and passwords for the location bar
       try {
         uri = Services.io.createExposableURI(uri);
@@ -2132,13 +2129,7 @@ class UrlbarInput {
     }
 
     let uri;
-    // When we rewrite .onion to an alias, gBrowser.currentURI will be different than
-    // the URI displayed in the urlbar. We need to use the urlbar value to copy the
-    // alias instead of the actual .onion URI that is loaded.
-    if (
-      this.getAttribute("pageproxystate") == "valid" &&
-      !this.window.gBrowser.selectedBrowser.currentOnionAliasURI
-    ) {
+    if (this.getAttribute("pageproxystate") == "valid") {
       uri = this.window.gBrowser.currentURI;
     } else {
       // The value could be:
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 0632b6fac2598..d8a059910a0f9 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -5766,10 +5766,6 @@ void nsDocShell::OnRedirectStateChange(nsIChannel* aOldChannel,
     return;
   }
 
-  if (!mOnionUrlbarRewritesAllowed && IsTorOnionRedirect(oldURI, newURI)) {
-    mOnionUrlbarRewritesAllowed = true;
-  }
-
   // DocumentChannel adds redirect chain to global history in the parent
   // process. The redirect chain can't be queried from the content process, so
   // there's no need to update global history here.
@@ -9191,20 +9187,6 @@ static bool NavigationShouldTakeFocus(nsDocShell* aDocShell,
   return !Preferences::GetBool("browser.tabs.loadDivertedInBackground", false);
 }
 
-/* static */
-bool nsDocShell::IsTorOnionRedirect(nsIURI* aOldURI, nsIURI* aNewURI) {
-  nsAutoCString oldHost;
-  nsAutoCString newHost;
-  if (aOldURI && aNewURI && NS_SUCCEEDED(aOldURI->GetHost(oldHost)) &&
-      StringEndsWith(oldHost, ".tor.onion"_ns) &&
-      NS_SUCCEEDED(aNewURI->GetHost(newHost)) &&
-      StringEndsWith(newHost, ".onion"_ns) &&
-      !StringEndsWith(newHost, ".tor.onion"_ns)) {
-    return true;
-  }
-  return false;
-}
-
 nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState,
                                   Maybe<uint32_t> aCacheKey) {
   MOZ_ASSERT(aLoadState, "need a load state!");
@@ -9358,30 +9340,6 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState,
 
   mAllowKeywordFixup = aLoadState->HasInternalLoadFlags(
       INTERNAL_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP);
-
-  if (mOnionUrlbarRewritesAllowed) {
-    mOnionUrlbarRewritesAllowed = false;
-    nsCOMPtr<nsIURI> referrer;
-    nsIReferrerInfo* referrerInfo = aLoadState->GetReferrerInfo();
-    if (referrerInfo) {
-      referrerInfo->GetOriginalReferrer(getter_AddRefs(referrer));
-      bool isPrivateWin = false;
-      Document* doc = GetDocument();
-      if (doc) {
-        isPrivateWin =
-            doc->NodePrincipal()->OriginAttributesRef().mPrivateBrowsingId > 0;
-        nsCOMPtr<nsIScriptSecurityManager> secMan =
-            do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID);
-        mOnionUrlbarRewritesAllowed =
-            secMan && NS_SUCCEEDED(secMan->CheckSameOriginURI(
-                          aLoadState->URI(), referrer, false, isPrivateWin));
-      }
-    }
-  }
-  mOnionUrlbarRewritesAllowed =
-      mOnionUrlbarRewritesAllowed ||
-      aLoadState->HasInternalLoadFlags(INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES);
-
   mURIResultedInDocument = false;  // reset the clock...
 
   // See if this is actually a load between two history entries for the same
@@ -11804,7 +11762,6 @@ nsresult nsDocShell::AddToSessionHistory(
                 HistoryID(), GetCreatedDynamically(), originalURI,
                 resultPrincipalURI, loadReplace, referrerInfo, srcdoc,
                 srcdocEntry, baseURI, saveLayoutState, expired, userActivation);
-  entry->SetOnionUrlbarRewritesAllowed(mOnionUrlbarRewritesAllowed);
 
   if (mBrowsingContext->IsTop() && GetSessionHistory()) {
     bool shouldPersist = ShouldAddToSessionHistory(aURI, aChannel);
@@ -13735,12 +13692,3 @@ void nsDocShell::MaybeDisconnectChildListenersOnPageHide() {
     mChannelToDisconnectOnPageHide = 0;
   }
 }
-
-NS_IMETHODIMP
-nsDocShell::GetOnionUrlbarRewritesAllowed(bool* aOnionUrlbarRewritesAllowed) {
-  NS_ENSURE_ARG(aOnionUrlbarRewritesAllowed);
-  *aOnionUrlbarRewritesAllowed =
-      StaticPrefs::browser_urlbar_onionRewrites_enabled() &&
-      mOnionUrlbarRewritesAllowed;
-  return NS_OK;
-}
diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
index adbbf38ef2775..1b06af5c84e5c 100644
--- a/docshell/base/nsDocShell.h
+++ b/docshell/base/nsDocShell.h
@@ -134,9 +134,6 @@ class nsDocShell final : public nsDocLoader,
 
     // Whether the load should go through LoadURIDelegate.
     INTERNAL_LOAD_FLAGS_BYPASS_LOAD_URI_DELEGATE = 0x2000,
-
-    // Whether rewriting the urlbar to a short .onion alias is allowed.
-    INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES = 0x4000,
   };
 
   // Event type dispatched by RestorePresentation
@@ -571,8 +568,6 @@ class nsDocShell final : public nsDocLoader,
 
   virtual void DestroyChildren() override;
 
-  static bool IsTorOnionRedirect(nsIURI* aOldURI, nsIURI* aNewURI);
-
   // Overridden from nsDocLoader, this provides more information than the
   // normal OnStateChange with flags STATE_REDIRECTING
   virtual void OnRedirectStateChange(nsIChannel* aOldChannel,
@@ -1270,7 +1265,6 @@ class nsDocShell final : public nsDocLoader,
   bool mCSSErrorReportingEnabled : 1;
   bool mAllowAuth : 1;
   bool mAllowKeywordFixup : 1;
-  bool mOnionUrlbarRewritesAllowed : 1;
   bool mDisableMetaRefreshWhenInactive : 1;
   bool mIsAppTab : 1;
   bool mDeviceSizeIsPageSize : 1;
diff --git a/docshell/base/nsDocShellLoadState.cpp b/docshell/base/nsDocShellLoadState.cpp
index 9eb0e9307113e..6cac48a517283 100644
--- a/docshell/base/nsDocShellLoadState.cpp
+++ b/docshell/base/nsDocShellLoadState.cpp
@@ -874,10 +874,6 @@ void nsDocShellLoadState::CalculateLoadURIFlags() {
     mInternalLoadFlags |= nsDocShell::INTERNAL_LOAD_FLAGS_FIRST_LOAD;
   }
 
-  if (mLoadFlags & nsIWebNavigation::LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES) {
-    mInternalLoadFlags |= nsDocShell::INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
-  }
-
   if (mLoadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_CLASSIFIER) {
     mInternalLoadFlags |= nsDocShell::INTERNAL_LOAD_FLAGS_BYPASS_CLASSIFIER;
   }
diff --git a/docshell/base/nsIDocShell.idl b/docshell/base/nsIDocShell.idl
index bd373c54a6327..352b70d120305 100644
--- a/docshell/base/nsIDocShell.idl
+++ b/docshell/base/nsIDocShell.idl
@@ -838,9 +838,4 @@ interface nsIDocShell : nsIDocShellTreeItem
    * until session history state is moved into the parent process.
    */
   void persistLayoutHistoryState();
-
-  /**
-   * Whether rewriting the urlbar to a short .onion alias is allowed.
-   */
-  [infallible] readonly attribute boolean onionUrlbarRewritesAllowed;
 };
diff --git a/docshell/base/nsIWebNavigation.idl b/docshell/base/nsIWebNavigation.idl
index 2ee46f3d68869..bec4f13d8b2b2 100644
--- a/docshell/base/nsIWebNavigation.idl
+++ b/docshell/base/nsIWebNavigation.idl
@@ -268,11 +268,6 @@ interface nsIWebNavigation : nsISupports
    */
   const unsigned long LOAD_FLAGS_USER_ACTIVATION = 0x8000000;
 
-  /**
-   * Allow rewriting the urlbar to a short .onion alias.
-   */
-  const unsigned long LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES = 0x10000000;
-
   /**
    * Loads a given URI.  This will give priority to loading the requested URI
    * in the object implementing this interface.  If it can't be loaded here
diff --git a/docshell/shistory/SessionHistoryEntry.cpp b/docshell/shistory/SessionHistoryEntry.cpp
index 3a882dd1ffe79..509955485108e 100644
--- a/docshell/shistory/SessionHistoryEntry.cpp
+++ b/docshell/shistory/SessionHistoryEntry.cpp
@@ -934,20 +934,6 @@ SessionHistoryEntry::SetPersist(bool aPersist) {
   return NS_OK;
 }
 
-NS_IMETHODIMP
-SessionHistoryEntry::GetOnionUrlbarRewritesAllowed(
-    bool* aOnionUrlbarRewritesAllowed) {
-  *aOnionUrlbarRewritesAllowed = mInfo->mOnionUrlbarRewritesAllowed;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-SessionHistoryEntry::SetOnionUrlbarRewritesAllowed(
-    bool aOnionUrlbarRewritesAllowed) {
-  mInfo->mOnionUrlbarRewritesAllowed = aOnionUrlbarRewritesAllowed;
-  return NS_OK;
-}
-
 NS_IMETHODIMP
 SessionHistoryEntry::GetScrollPosition(int32_t* aX, int32_t* aY) {
   *aX = mInfo->mScrollPositionX;
diff --git a/docshell/shistory/SessionHistoryEntry.h b/docshell/shistory/SessionHistoryEntry.h
index 8f7e6f3193e97..2fa195cf3b8f0 100644
--- a/docshell/shistory/SessionHistoryEntry.h
+++ b/docshell/shistory/SessionHistoryEntry.h
@@ -170,7 +170,6 @@ class SessionHistoryInfo {
   bool mPersist = true;
   bool mHasUserInteraction = false;
   bool mHasUserActivation = false;
-  bool mOnionUrlbarRewritesAllowed = false;
 
   union SharedState {
     SharedState();
diff --git a/docshell/shistory/nsISHEntry.idl b/docshell/shistory/nsISHEntry.idl
index 622402456d076..73ac40551d4e4 100644
--- a/docshell/shistory/nsISHEntry.idl
+++ b/docshell/shistory/nsISHEntry.idl
@@ -260,11 +260,6 @@ interface nsISHEntry : nsISupports
      */
     [infallible] attribute boolean persist;
 
-    /**
-     * Whether rewriting the urlbar to a short .onion alias is allowed.
-     */
-    [infallible] attribute boolean onionUrlbarRewritesAllowed;
-
     /**
      * Set/Get the visual viewport scroll position if session history is
      * changed through anchor navigation or pushState.
diff --git a/docshell/shistory/nsSHEntry.cpp b/docshell/shistory/nsSHEntry.cpp
index 41ea6086df8b4..1e4000eacd2bc 100644
--- a/docshell/shistory/nsSHEntry.cpp
+++ b/docshell/shistory/nsSHEntry.cpp
@@ -44,8 +44,7 @@ nsSHEntry::nsSHEntry()
       mLoadedInThisProcess(false),
       mPersist(true),
       mHasUserInteraction(false),
-      mHasUserActivation(false),
-      mOnionUrlbarRewritesAllowed(false) {}
+      mHasUserActivation(false) {}
 
 nsSHEntry::nsSHEntry(const nsSHEntry& aOther)
     : mShared(aOther.mShared),
@@ -73,8 +72,7 @@ nsSHEntry::nsSHEntry(const nsSHEntry& aOther)
       mLoadedInThisProcess(aOther.mLoadedInThisProcess),
       mPersist(aOther.mPersist),
       mHasUserInteraction(false),
-      mHasUserActivation(aOther.mHasUserActivation),
-      mOnionUrlbarRewritesAllowed(aOther.mOnionUrlbarRewritesAllowed) {}
+      mHasUserActivation(aOther.mHasUserActivation) {}
 
 nsSHEntry::~nsSHEntry() {
   // Null out the mParent pointers on all our kids.
@@ -882,18 +880,6 @@ nsSHEntry::SetPersist(bool aPersist) {
   return NS_OK;
 }
 
-NS_IMETHODIMP
-nsSHEntry::GetOnionUrlbarRewritesAllowed(bool* aOnionUrlbarRewritesAllowed) {
-  *aOnionUrlbarRewritesAllowed = mOnionUrlbarRewritesAllowed;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSHEntry::SetOnionUrlbarRewritesAllowed(bool aOnionUrlbarRewritesAllowed) {
-  mOnionUrlbarRewritesAllowed = aOnionUrlbarRewritesAllowed;
-  return NS_OK;
-}
-
 NS_IMETHODIMP
 nsSHEntry::CreateLoadInfo(nsDocShellLoadState** aLoadState) {
   nsCOMPtr<nsIURI> uri = GetURI();
@@ -943,10 +929,6 @@ nsSHEntry::CreateLoadInfo(nsDocShellLoadState** aLoadState) {
   } else {
     srcdoc = VoidString();
   }
-  if (GetOnionUrlbarRewritesAllowed()) {
-    flags |= nsDocShell::InternalLoad::
-        INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
-  }
   loadState->SetSrcdocData(srcdoc);
   loadState->SetBaseURI(baseURI);
   loadState->SetInternalLoadFlags(flags);
diff --git a/docshell/shistory/nsSHEntry.h b/docshell/shistory/nsSHEntry.h
index 76be0ac650505..326b0092cf940 100644
--- a/docshell/shistory/nsSHEntry.h
+++ b/docshell/shistory/nsSHEntry.h
@@ -66,7 +66,6 @@ class nsSHEntry : public nsISHEntry {
   bool mPersist;
   bool mHasUserInteraction;
   bool mHasUserActivation;
-  bool mOnionUrlbarRewritesAllowed;
 };
 
 #endif /* nsSHEntry_h */
diff --git a/dom/interfaces/base/nsIBrowser.idl b/dom/interfaces/base/nsIBrowser.idl
index b8a25de3629e1..973a9244b8f8b 100644
--- a/dom/interfaces/base/nsIBrowser.idl
+++ b/dom/interfaces/base/nsIBrowser.idl
@@ -127,8 +127,7 @@ interface nsIBrowser : nsISupports
                                in boolean aIsSynthetic,
                                in boolean aHasRequestContextID,
                                in uint64_t aRequestContextID,
-                               in AString aContentType,
-                               in boolean aOnionUrlbarRewritesAllowed);
+                               in AString aContentType);
 
   /**
    * Determine what process switching behavior this browser element should have.
diff --git a/dom/ipc/BrowserChild.cpp b/dom/ipc/BrowserChild.cpp
index bb368b38c5f42..9f1bccda2efef 100644
--- a/dom/ipc/BrowserChild.cpp
+++ b/dom/ipc/BrowserChild.cpp
@@ -3714,8 +3714,6 @@ NS_IMETHODIMP BrowserChild::OnLocationChange(nsIWebProgress* aWebProgress,
 
     locationChangeData->mayEnableCharacterEncodingMenu() =
         docShell->GetMayEnableCharacterEncodingMenu();
-    locationChangeData->onionUrlbarRewritesAllowed() =
-        docShell->GetOnionUrlbarRewritesAllowed();
 
     locationChangeData->contentPrincipal() = document->NodePrincipal();
     locationChangeData->contentPartitionedPrincipal() =
diff --git a/dom/ipc/BrowserParent.cpp b/dom/ipc/BrowserParent.cpp
index 10f94926a53ef..4145111ae8490 100644
--- a/dom/ipc/BrowserParent.cpp
+++ b/dom/ipc/BrowserParent.cpp
@@ -2788,8 +2788,7 @@ mozilla::ipc::IPCResult BrowserParent::RecvOnLocationChange(
           aLocationChangeData->isSyntheticDocument(),
           aLocationChangeData->requestContextID().isSome(),
           aLocationChangeData->requestContextID().valueOr(0),
-          aLocationChangeData->contentType(),
-          aLocationChangeData->onionUrlbarRewritesAllowed());
+          aLocationChangeData->contentType());
     }
   }
 
diff --git a/dom/ipc/PBrowser.ipdl b/dom/ipc/PBrowser.ipdl
index 5b21a809251e5..5706c7f5da003 100644
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -143,7 +143,6 @@ struct WebProgressLocationChangeData
   bool isNavigating;
   bool isSyntheticDocument;
   bool mayEnableCharacterEncodingMenu;
-  bool onionUrlbarRewritesAllowed;
   nsString contentType;
   nsString title;
   nsString charset;
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
index 8567b4e5a2272..e6efcc4c16d63 100644
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
@@ -1338,12 +1338,6 @@
   value: true
   mirror: always
 
-  # Whether rewriting the urlbar to a short .onion alias is allowed.
-- name: browser.urlbar.onionRewrites.enabled
-  type: RelaxedAtomicBool
-  value: true
-  mirror: always
-
 - name: browser.viewport.desktopWidth
   type: RelaxedAtomicInt32
   value: 980
diff --git a/netwerk/dns/effective_tld_names.dat b/netwerk/dns/effective_tld_names.dat
index bdad4efc7f99b..4c0c6e9a98695 100644
--- a/netwerk/dns/effective_tld_names.dat
+++ b/netwerk/dns/effective_tld_names.dat
@@ -5527,8 +5527,6 @@ pro.om
 
 // onion : https://tools.ietf.org/html/rfc7686
 onion
-tor.onion
-securedrop.tor.onion
 
 // org : https://en.wikipedia.org/wiki/.org
 org
diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp
index d76a14e1203af..0b460750971a0 100644
--- a/netwerk/ipc/DocumentLoadListener.cpp
+++ b/netwerk/ipc/DocumentLoadListener.cpp
@@ -2539,16 +2539,6 @@ DocumentLoadListener::AsyncOnChannelRedirect(
        "mHaveVisibleRedirect=%c",
        this, mHaveVisibleRedirect ? 'T' : 'F'));
 
-  // Like the code above for allowing mixed content, we need to check this here
-  // in case the redirect is not handled in the docshell.
-  nsCOMPtr<nsIURI> oldURI, newURI;
-  aOldChannel->GetURI(getter_AddRefs(oldURI));
-  aNewChannel->GetURI(getter_AddRefs(newURI));
-  if (nsDocShell::IsTorOnionRedirect(oldURI, newURI)) {
-    mLoadStateInternalLoadFlags |=
-        nsDocShell::INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
-  }
-
   // We need the original URI of the current channel to use to open the real
   // channel in the content process. Unfortunately we overwrite the original
   // uri of the new channel with the original pre-redirect URI, so grab
diff --git a/toolkit/content/widgets/browser-custom-element.js b/toolkit/content/widgets/browser-custom-element.js
index 8120ca995103a..59a7a5b435229 100644
--- a/toolkit/content/widgets/browser-custom-element.js
+++ b/toolkit/content/widgets/browser-custom-element.js
@@ -255,8 +255,6 @@
 
       this._mayEnableCharacterEncodingMenu = null;
 
-      this._onionUrlbarRewritesAllowed = false;
-
       this._contentPrincipal = null;
 
       this._contentPartitionedPrincipal = null;
@@ -585,12 +583,6 @@
       }
     }
 
-    get onionUrlbarRewritesAllowed() {
-      return this.isRemoteBrowser
-        ? this._onionUrlbarRewritesAllowed
-        : this.docShell.onionUrlbarRewritesAllowed;
-    }
-
     get contentPrincipal() {
       return this.isRemoteBrowser
         ? this._contentPrincipal
@@ -1120,8 +1112,7 @@
       aIsSynthetic,
       aHaveRequestContextID,
       aRequestContextID,
-      aContentType,
-      aOnionUrlbarRewritesAllowed
+      aContentType
     ) {
       if (this.isRemoteBrowser && this.messageManager) {
         if (aCharset != null) {
@@ -1143,7 +1134,6 @@
         this._contentRequestContextID = aHaveRequestContextID
           ? aRequestContextID
           : null;
-        this._onionUrlbarRewritesAllowed = aOnionUrlbarRewritesAllowed;
       }
     }
 
@@ -1545,7 +1535,6 @@
             "_contentPrincipal",
             "_contentPartitionedPrincipal",
             "_isSyntheticDocument",
-            "_onionUrlbarRewritesAllowed",
           ]
         );
       }
diff --git a/toolkit/modules/sessionstore/SessionHistory.jsm b/toolkit/modules/sessionstore/SessionHistory.jsm
index e78ec8ddf6b74..f02930aa6e22d 100644
--- a/toolkit/modules/sessionstore/SessionHistory.jsm
+++ b/toolkit/modules/sessionstore/SessionHistory.jsm
@@ -310,7 +310,6 @@ var SessionHistoryInternal = {
     }
 
     entry.persist = shEntry.persist;
-    entry.onionUrlbarRewritesAllowed = shEntry.onionUrlbarRewritesAllowed;
 
     return entry;
   },
@@ -605,10 +604,6 @@ var SessionHistoryInternal = {
       }
     }
 
-    if (entry.onionUrlbarRewritesAllowed) {
-      shEntry.onionUrlbarRewritesAllowed = entry.onionUrlbarRewritesAllowed;
-    }
-
     return shEntry;
   },
 
diff --git a/xpcom/reflect/xptinfo/xptinfo.h b/xpcom/reflect/xptinfo/xptinfo.h
index 4295efb39f1fc..efee881c14217 100644
--- a/xpcom/reflect/xptinfo/xptinfo.h
+++ b/xpcom/reflect/xptinfo/xptinfo.h
@@ -514,8 +514,7 @@ static_assert(sizeof(nsXPTMethodInfo) == 8, "wrong size");
 #if defined(MOZ_THUNDERBIRD) || defined(MOZ_SUITE)
 #  define PARAM_BUFFER_COUNT 18
 #else
-// The max is currently updateForLocationChange in nsIBrowser.idl
-#  define PARAM_BUFFER_COUNT 15
+#  define PARAM_BUFFER_COUNT 14
 #endif
 
 /**

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tbb-commits mailing list