Bug 1966666 - Remove no longer needed flatpak workaround. r=mak
Newer portals support asking for a protocol. Differential Revision: https://phabricator.services.mozilla.com/D249574
This commit is contained in:
committed by
ealvarez@mozilla.com
parent
2c500f0af0
commit
e672b371da
@@ -43,13 +43,6 @@ XPCOMUtils.defineLazyServiceGetter(
|
||||
"nsIFileProtocolHandler"
|
||||
);
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(
|
||||
lazy,
|
||||
"handlerService",
|
||||
"@mozilla.org/uriloader/handler-service;1",
|
||||
"nsIHandlerService"
|
||||
);
|
||||
|
||||
XPCOMUtils.defineLazyPreferenceGetter(
|
||||
lazy,
|
||||
"fixupSchemeTypos",
|
||||
@@ -249,16 +242,7 @@ ChromeUtils.defineLazyGetter(lazy, "knownSuffixes", () => {
|
||||
return suffixes;
|
||||
});
|
||||
|
||||
export function URIFixup() {
|
||||
// There are cases that nsIExternalProtocolService.externalProtocolHandlerExists() does
|
||||
// not work well and returns always true due to flatpak. In this case, in order to
|
||||
// fallback to nsIHandlerService.exits(), we test whether can trust
|
||||
// nsIExternalProtocolService here.
|
||||
this._trustExternalProtocolService =
|
||||
!lazy.externalProtocolService.externalProtocolHandlerExists(
|
||||
`__dummy${Date.now()}__`
|
||||
);
|
||||
}
|
||||
export function URIFixup() {}
|
||||
|
||||
URIFixup.prototype = {
|
||||
get FIXUP_FLAG_NONE() {
|
||||
@@ -645,19 +629,7 @@ URIFixup.prototype = {
|
||||
isDomainKnown,
|
||||
|
||||
_isKnownExternalProtocol(scheme) {
|
||||
if (this._trustExternalProtocolService) {
|
||||
return lazy.externalProtocolService.externalProtocolHandlerExists(scheme);
|
||||
}
|
||||
|
||||
try {
|
||||
// nsIExternalProtocolService.getProtocolHandlerInfo() on Android throws
|
||||
// error due to not implemented.
|
||||
return lazy.handlerService.exists(
|
||||
lazy.externalProtocolService.getProtocolHandlerInfo(scheme)
|
||||
);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
classID: Components.ID("{c6cf88b7-452e-47eb-bdc9-86e3561648ef}"),
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
// Test whether fallback mechanism is working if don't trust nsIExternalProtocolService.
|
||||
|
||||
const { AppConstants } = ChromeUtils.importESModule(
|
||||
"resource://gre/modules/AppConstants.sys.mjs"
|
||||
);
|
||||
const { MockRegistrar } = ChromeUtils.importESModule(
|
||||
"resource://testing-common/MockRegistrar.sys.mjs"
|
||||
);
|
||||
|
||||
add_task(async function setup() {
|
||||
info(
|
||||
"Prepare mock nsIExternalProtocolService whose externalProtocolHandlerExists returns always true"
|
||||
);
|
||||
const externalProtocolService = Cc[
|
||||
"@mozilla.org/uriloader/external-protocol-service;1"
|
||||
].getService(Ci.nsIExternalProtocolService);
|
||||
const mockId = MockRegistrar.register(
|
||||
"@mozilla.org/uriloader/external-protocol-service;1",
|
||||
{
|
||||
getProtocolHandlerInfo: scheme =>
|
||||
externalProtocolService.getProtocolHandlerInfo(scheme),
|
||||
externalProtocolHandlerExists: () => true,
|
||||
QueryInterface: ChromeUtils.generateQI(["nsIExternalProtocolService"]),
|
||||
}
|
||||
);
|
||||
const mockExternalProtocolService = Cc[
|
||||
"@mozilla.org/uriloader/external-protocol-service;1"
|
||||
].getService(Ci.nsIExternalProtocolService);
|
||||
Assert.ok(
|
||||
mockExternalProtocolService.externalProtocolHandlerExists("__invalid__"),
|
||||
"Mock service is working"
|
||||
);
|
||||
|
||||
info("Register new dummy protocol");
|
||||
const dummyProtocolHandlerInfo =
|
||||
externalProtocolService.getProtocolHandlerInfo("dummy");
|
||||
const handlerService = Cc[
|
||||
"@mozilla.org/uriloader/handler-service;1"
|
||||
].getService(Ci.nsIHandlerService);
|
||||
handlerService.store(dummyProtocolHandlerInfo);
|
||||
|
||||
info("Prepare test search engine");
|
||||
await setupSearchService();
|
||||
await addTestEngines();
|
||||
await Services.search.setDefault(
|
||||
Services.search.getEngineByName(kSearchEngineID),
|
||||
Ci.nsISearchService.CHANGE_REASON_UNKNOWN
|
||||
);
|
||||
|
||||
registerCleanupFunction(() => {
|
||||
handlerService.remove(dummyProtocolHandlerInfo);
|
||||
MockRegistrar.unregister(mockId);
|
||||
});
|
||||
});
|
||||
|
||||
add_task(function basic() {
|
||||
const testData = [
|
||||
{
|
||||
input: "mailto:test@example.com",
|
||||
expected:
|
||||
isSupportedInHandlerService("mailto") ||
|
||||
// Thunderbird IS a mailto handler, it doesn't have handlers.
|
||||
AppConstants.MOZ_APP_NAME == "thunderbird"
|
||||
? "mailto:test@example.com"
|
||||
: "http://mailto:test@example.com/",
|
||||
},
|
||||
{
|
||||
input: "keyword:search",
|
||||
expected: "https://www.example.org/?search=keyword%3Asearch",
|
||||
},
|
||||
{
|
||||
input: "dummy:protocol",
|
||||
expected: "dummy:protocol",
|
||||
},
|
||||
];
|
||||
|
||||
for (const { input, expected } of testData) {
|
||||
assertFixup(input, expected);
|
||||
}
|
||||
});
|
||||
|
||||
function assertFixup(input, expected) {
|
||||
const { preferredURI } = Services.uriFixup.getFixupURIInfo(
|
||||
input,
|
||||
Services.uriFixup.FIXUP_FLAG_FIX_SCHEME_TYPOS
|
||||
);
|
||||
Assert.equal(preferredURI.spec, expected);
|
||||
}
|
||||
|
||||
function isSupportedInHandlerService(scheme) {
|
||||
const externalProtocolService = Cc[
|
||||
"@mozilla.org/uriloader/external-protocol-service;1"
|
||||
].getService(Ci.nsIExternalProtocolService);
|
||||
const handlerService = Cc[
|
||||
"@mozilla.org/uriloader/handler-service;1"
|
||||
].getService(Ci.nsIHandlerService);
|
||||
return handlerService.exists(
|
||||
externalProtocolService.getProtocolHandlerInfo(scheme)
|
||||
);
|
||||
}
|
||||
@@ -10,9 +10,6 @@ support-files = [
|
||||
|
||||
["test_URIFixup_check_host.js"]
|
||||
|
||||
["test_URIFixup_external_protocol_fallback.js"]
|
||||
skip-if = ["os == 'android' && android_version == '24' && processor == 'x86_64'"]
|
||||
|
||||
["test_URIFixup_forced.js"]
|
||||
# Disabled for 1563343 -- URI fixup should be done at the app level in GV.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user