Skip to content

Commit

Permalink
Bug 1660530 - Transition the docshell URIFixup tests to work with the…
Browse files Browse the repository at this point in the history
… modern search engine configuration. r=mak

Differential Revision: https://phabricator.services.mozilla.com/D87894
  • Loading branch information
Standard8 committed Aug 26, 2020
1 parent 3f561dc commit 2c1c249
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 126 deletions.
76 changes: 75 additions & 1 deletion docshell/test/unit/head_docshell.js
@@ -1,7 +1,81 @@
/* 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/. */
var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");

var { XPCOMUtils } = ChromeUtils.import(
"resource://gre/modules/XPCOMUtils.jsm"
);

XPCOMUtils.defineLazyModuleGetters(this, {
AddonTestUtils: "resource://testing-common/AddonTestUtils.jsm",
SearchUtils: "resource://gre/modules/SearchUtils.jsm",
SearchTestUtils: "resource://testing-common/SearchTestUtils.jsm",
Services: "resource://gre/modules/Services.jsm",
});

var dirSvc = Services.dirSvc;
var profileDir = do_get_profile();

const kSearchEngineID = "test_urifixup_search_engine";
const kSearchEngineURL = "https://www.example.org/?search={searchTerms}";
const kPrivateSearchEngineID = "test_urifixup_search_engine_private";
const kPrivateSearchEngineURL =
"https://www.example.org/?private={searchTerms}";

const SEARCH_CONFIG = [
{
appliesTo: [
{
included: {
everywhere: true,
},
},
],
default: "yes",
webExtension: {
id: "fixup_search@search.mozilla.org",
},
},
];

async function setupSearchService() {
SearchTestUtils.init(Assert, registerCleanupFunction);

Services.prefs.setBoolPref("browser.search.modernConfig", true);
AddonTestUtils.init(this);
AddonTestUtils.overrideCertDB();
AddonTestUtils.createAppInfo(
"xpcshell@tests.mozilla.org",
"XPCShell",
"1",
"42"
);

await SearchTestUtils.useTestEngines(".", null, SEARCH_CONFIG);
await AddonTestUtils.promiseStartupManager();
await Services.search.init();
}

async function addTestEngines() {
// This is a hack, ideally we should be setting up a configuration with
// built-in engines, but the `chrome_settings_overrides` section that
// WebExtensions need is only defined for browser/
await Services.search.addPolicyEngine({
description: "urifixup search engine",
chrome_settings_overrides: {
search_provider: {
name: "test_urifixup_search_engine",
search_url: "https://www.example.org/?search={searchTerms}",
},
},
});
await Services.search.addPolicyEngine({
description: "urifixup private search engine",
chrome_settings_overrides: {
search_provider: {
name: "test_urifixup_search_engine_private",
search_url: "https://www.example.org/?private={searchTerms}",
},
},
});
}
6 changes: 5 additions & 1 deletion docshell/test/unit/test_URIFixup.js
Expand Up @@ -56,7 +56,11 @@ var data = [
var len = data.length;

add_task(async function setup() {
await Services.search.init();
await setupSearchService();
// Now we've initialised the search service, we force remove the engines
// it has, so they don't interfere with this test.
// Search engine integration is tested in test_URIFixup_search.js.
Services.search.wrappedJSObject._engines.clear();
});

// Make sure we fix what needs fixing when there is no pref set.
Expand Down
70 changes: 6 additions & 64 deletions docshell/test/unit/test_URIFixup_info.js
@@ -1,25 +1,9 @@
const { AddonTestUtils } = ChromeUtils.import(
"resource://testing-common/AddonTestUtils.jsm"
);
const { AppConstants } = ChromeUtils.import(
"resource://gre/modules/AppConstants.jsm"
);

const kSearchEngineID = "test_urifixup_search_engine";
const kSearchEngineURL = "http://www.example.org/?search={searchTerms}";
const kPrivateSearchEngineID = "test_urifixup_search_engine_private";
const kPrivateSearchEngineURL = "http://www.example.org/?private={searchTerms}";
const kForceDNSLookup = "browser.fixup.dns_first_for_single_words";

AddonTestUtils.init(this);
AddonTestUtils.overrideCertDB();
AddonTestUtils.createAppInfo(
"xpcshell@tests.mozilla.org",
"XPCShell",
"1",
"42"
);

// TODO(bug 1522134), this test should also use
// combinations of the following flags.
var flagInputs = [
Expand Down Expand Up @@ -709,57 +693,15 @@ add_task(async function setup() {
Services.prefs.setBoolPref(pref, true);
}

await AddonTestUtils.promiseStartupManager();

Services.io
.getProtocolHandler("resource")
.QueryInterface(Ci.nsIResProtocolHandler)
.setSubstitution(
"search-extensions",
Services.io.newURI("chrome://mozapps/locale/searchextensions/")
);
await setupSearchService();
await addTestEngines();

var oldCurrentEngine = await Services.search.getDefault();
var oldPrivateEngine = await Services.search.getDefaultPrivate();

let newCurrentEngine = await Services.search.addEngineWithDetails(
kSearchEngineID,
{
method: "get",
template: kSearchEngineURL,
}
await Services.search.setDefault(
Services.search.getEngineByName(kSearchEngineID)
);
await Services.search.setDefault(newCurrentEngine);

let newPrivateEngine = await Services.search.addEngineWithDetails(
kPrivateSearchEngineID,
{
method: "get",
template: kPrivateSearchEngineURL,
}
await Services.search.setDefaultPrivate(
Services.search.getEngineByName(kPrivateSearchEngineID)
);
await Services.search.setDefaultPrivate(newPrivateEngine);

var selectedName = (await Services.search.getDefault()).name;
Assert.equal(selectedName, kSearchEngineID);

registerCleanupFunction(async function() {
if (oldCurrentEngine) {
await Services.search.setDefault(oldCurrentEngine);
}
if (oldPrivateEngine) {
await Services.search.setDefault(oldPrivateEngine);
}
await Services.search.removeEngine(newCurrentEngine);
await Services.search.removeEngine(newPrivateEngine);
Services.prefs.clearUserPref("keyword.enabled");
Services.prefs.clearUserPref("browser.fixup.typo.scheme");
Services.prefs.clearUserPref(kForceDNSLookup);
Services.prefs.clearUserPref("browser.search.separatePrivateDefault");
Services.prefs.clearUserPref(
"browser.search.separatePrivateDefault.ui.enabled"
);
});
});

var gSingleWordDNSLookup = false;
Expand Down
66 changes: 6 additions & 60 deletions docshell/test/unit/test_URIFixup_search.js
@@ -1,14 +1,6 @@
const { AppConstants } = ChromeUtils.import(
"resource://gre/modules/AppConstants.jsm"
);
const { AddonTestUtils } = ChromeUtils.import(
"resource://testing-common/AddonTestUtils.jsm"
);

const kSearchEngineID = "test_urifixup_search_engine";
const kSearchEngineURL = "http://www.example.org/?search={searchTerms}";
const kPrivateSearchEngineID = "test_urifixup_search_engine_private";
const kPrivateSearchEngineURL = "http://www.example.org/?private={searchTerms}";

var isWin = AppConstants.platform == "win";

Expand Down Expand Up @@ -117,17 +109,9 @@ if (extProtocolSvc && extProtocolSvc.externalProtocolHandlerExists("mailto")) {

var len = data.length;

AddonTestUtils.init(this);
AddonTestUtils.overrideCertDB();
AddonTestUtils.createAppInfo(
"xpcshell@tests.mozilla.org",
"XPCShell",
"1",
"42"
);

add_task(async function setup() {
await AddonTestUtils.promiseStartupManager();
await setupSearchService();
await addTestEngines();

Services.prefs.setBoolPref("keyword.enabled", true);
Services.prefs.setBoolPref("browser.search.separatePrivateDefault", true);
Expand All @@ -136,50 +120,12 @@ add_task(async function setup() {
true
);

Services.io
.getProtocolHandler("resource")
.QueryInterface(Ci.nsIResProtocolHandler)
.setSubstitution(
"search-extensions",
Services.io.newURI("chrome://mozapps/locale/searchextensions/")
);

var oldCurrentEngine = await Services.search.getDefault();
var oldPrivateEngine = await Services.search.getDefaultPrivate();

let newCurrentEngine = await Services.search.addEngineWithDetails(
kSearchEngineID,
{
method: "get",
template: kSearchEngineURL,
}
await Services.search.setDefault(
Services.search.getEngineByName(kSearchEngineID)
);
await Services.search.setDefault(newCurrentEngine);

let newPrivateEngine = await Services.search.addEngineWithDetails(
kPrivateSearchEngineID,
{
method: "get",
template: kPrivateSearchEngineURL,
}
await Services.search.setDefaultPrivate(
Services.search.getEngineByName(kPrivateSearchEngineID)
);
await Services.search.setDefaultPrivate(newPrivateEngine);

registerCleanupFunction(async function() {
if (oldCurrentEngine) {
await Services.search.setDefault(oldCurrentEngine);
}
if (oldPrivateEngine) {
await Services.search.setDefault(oldPrivateEngine);
}
await Services.search.removeEngine(newCurrentEngine);
await Services.search.removeEngine(newPrivateEngine);
Services.prefs.clearUserPref("keyword.enabled");
Services.prefs.clearUserPref("browser.search.separatePrivateDefault");
Services.prefs.clearUserPref(
"browser.search.separatePrivateDefault.ui.enabled"
);
});
});

// Make sure we fix what needs fixing
Expand Down

0 comments on commit 2c1c249

Please sign in to comment.