[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