mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
Backed out changeset d744fed63a45 (bug 1744243) for causing xpc failures in test_URIFixup_external_protocol_fallback. CLOSED TREE
This commit is contained in:
parent
8efdb3cc26
commit
087b91b1a1
@ -55,13 +55,6 @@ XPCOMUtils.defineLazyServiceGetter(
|
||||
"nsIDNSService"
|
||||
);
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(
|
||||
lazy,
|
||||
"handlerService",
|
||||
"@mozilla.org/uriloader/handler-service;1",
|
||||
"nsIHandlerService"
|
||||
);
|
||||
|
||||
XPCOMUtils.defineLazyPreferenceGetter(
|
||||
lazy,
|
||||
"fixupSchemeTypos",
|
||||
@ -266,15 +259,7 @@ XPCOMUtils.defineLazyGetter(lazy, "knownSuffixes", () => {
|
||||
return suffixes;
|
||||
});
|
||||
|
||||
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()}__`
|
||||
);
|
||||
}
|
||||
function URIFixup() {}
|
||||
|
||||
URIFixup.prototype = {
|
||||
get FIXUP_FLAG_NONE() {
|
||||
@ -344,7 +329,7 @@ URIFixup.prototype = {
|
||||
scheme &&
|
||||
(isCommonProtocol ||
|
||||
Services.io.getProtocolHandler(scheme) != lazy.defaultProtocolHandler ||
|
||||
this._isKnownExternalProtocol(scheme));
|
||||
lazy.externalProtocolService.externalProtocolHandlerExists(scheme));
|
||||
|
||||
if (
|
||||
canHandleProtocol ||
|
||||
@ -646,14 +631,6 @@ URIFixup.prototype = {
|
||||
|
||||
isDomainKnown,
|
||||
|
||||
_isKnownExternalProtocol(scheme) {
|
||||
return this._trustExternalProtocolService
|
||||
? lazy.externalProtocolService.externalProtocolHandlerExists(scheme)
|
||||
: lazy.handlerService.exists(
|
||||
lazy.externalProtocolService.getProtocolHandlerInfo(scheme)
|
||||
);
|
||||
},
|
||||
|
||||
classID: Components.ID("{c6cf88b7-452e-47eb-bdc9-86e3561648ef}"),
|
||||
QueryInterface: ChromeUtils.generateQI(["nsIURIFixup"]),
|
||||
};
|
||||
|
@ -1,100 +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 { MockRegistrar } = ChromeUtils.import(
|
||||
"resource://testing-common/MockRegistrar.jsm"
|
||||
);
|
||||
|
||||
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)
|
||||
);
|
||||
|
||||
registerCleanupFunction(() => {
|
||||
handlerService.remove(dummyProtocolHandlerInfo);
|
||||
MockRegistrar.unregister(mockId);
|
||||
});
|
||||
});
|
||||
|
||||
add_task(function basic() {
|
||||
const testData = [
|
||||
{
|
||||
input: "mailto:test@example.com",
|
||||
expected: isSupportedInHandlerService("mailto")
|
||||
? "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,7 +10,6 @@ support-files =
|
||||
[test_browsing_context_structured_clone.js]
|
||||
[test_URIFixup.js]
|
||||
[test_URIFixup_check_host.js]
|
||||
[test_URIFixup_external_protocol_fallback.js]
|
||||
[test_URIFixup_forced.js]
|
||||
# Disabled for 1563343 -- URI fixup should be done at the app level in GV.
|
||||
skip-if = os == 'android'
|
||||
@ -25,6 +24,6 @@ skip-if =
|
||||
skip-if = true
|
||||
[test_privacy_transition.js]
|
||||
[test_subframe_stop_after_parent_error.js]
|
||||
skip-if =
|
||||
skip-if =
|
||||
os == 'android'
|
||||
appname == 'thunderbird' # Needs to run without E10s, can't do that.
|
||||
|
Loading…
Reference in New Issue
Block a user