Bug 1949294 - Part 3: Update search tests to target correct SERP categorization components - r=scunnane,search-reviewers

Depends on D240040

Differential Revision: https://phabricator.services.mozilla.com/D240041
This commit is contained in:
James Teow
2025-03-04 04:05:44 +00:00
parent a57f4fb053
commit bb99f7fe94
16 changed files with 141 additions and 151 deletions

View File

@@ -9,8 +9,7 @@ const TELEMETRY_PREF =
"browser.search.serpEventTelemetryCategorization.enabled";
ChromeUtils.defineESModuleGetters(lazy, {
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
});
XPCOMUtils.defineLazyPreferenceGetter(
@@ -166,7 +165,7 @@ add_task(async function test_enable_experiment_when_pref_is_not_enabled() {
);
Assert.ok(
lazy.SearchSERPDomainToCategoriesMap.empty,
lazy.SERPDomainToCategoriesMap.empty,
"Domain to categories map should be empty."
);

View File

@@ -10,11 +10,11 @@
*/
ChromeUtils.defineESModuleGetters(this, {
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs",
ExperimentFakes: "resource://testing-common/NimbusTestUtils.sys.mjs",
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPCategorizationRecorder: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPCategorizationRecorder: "resource:///modules/SERPCategorization.sys.mjs",
});
const TEST_PROVIDER_INFO = [

View File

@@ -108,7 +108,7 @@ add_task(async function test_count_incremented_if_map_is_not_downloaded() {
resetTelemetry();
// Clear the existing domain-to-categories map.
await SearchSERPDomainToCategoriesMap.uninit({ deleteMap: true });
await SERPDomainToCategoriesMap.uninit({ deleteMap: true });
let sandbox = sinon.createSandbox();
sandbox
@@ -120,7 +120,7 @@ add_task(async function test_count_incremented_if_map_is_not_downloaded() {
msg.wrappedJSObject.arguments[0].includes("Could not download file:")
);
});
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
info("Wait for download error.");
await downloadError;
info("Domain-to-categories map unsuccessfully downloaded.");
@@ -158,7 +158,7 @@ add_task(async function test_threshold_reached() {
// Simulate a broken domain-to-categories map.
let sandbox = sinon.createSandbox();
sandbox.stub(SearchSERPDomainToCategoriesMap, "get").returns([]);
sandbox.stub(SERPDomainToCategoriesMap, "get").returns([]);
let submitted = false;
GleanPings.serpCategorization.testBeforeNextSubmit(reason => {

View File

@@ -11,9 +11,8 @@
ChromeUtils.defineESModuleGetters(this, {
TELEMETRY_CATEGORIZATION_DOWNLOAD_SETTINGS:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
"resource:///modules/SERPCategorization.sys.mjs",
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
SearchUtils: "resource://gre/modules/SearchUtils.sys.mjs",
});
@@ -233,7 +232,7 @@ add_task(async function test_download_after_multiple_failures() {
Assert.equal(consoleObserved, false, "Encountered download failure");
Assert.equal(timeout, true, "Timeout occured");
Assert.ok(SearchSERPDomainToCategoriesMap.empty, "Map is empty");
Assert.ok(SERPDomainToCategoriesMap.empty, "Map is empty");
// Clean up.
await SpecialPowers.popPrefEnv();
@@ -285,7 +284,7 @@ add_task(async function test_cancel_download_timer() {
await Promise.race([firstPromise, secondPromise]);
Assert.equal(consoleObserved, false, "Encountered download failure");
Assert.equal(timeout, true, "Timeout occured");
Assert.ok(SearchSERPDomainToCategoriesMap.empty, "Map is empty");
Assert.ok(SERPDomainToCategoriesMap.empty, "Map is empty");
// Clean up.
await resetCategorizationCollection(record);

View File

@@ -9,14 +9,17 @@
* a test of the ping's submission upon startup.)
*/
// Can fail in TV mode.
requestLongerTimeout(2);
ChromeUtils.defineESModuleGetters(this, {
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
DomainToCategoriesStore: "resource:///modules/SearchSERPTelemetry.sys.mjs",
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
DomainToCategoriesStore: "resource:///modules/SERPCategorization.sys.mjs",
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPCategorizationRecorder: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPCategorizationRecorder: "resource:///modules/SERPCategorization.sys.mjs",
TELEMETRY_CATEGORIZATION_KEY:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
"resource:///modules/SERPCategorization.sys.mjs",
});
const TEST_PROVIDER_INFO = [
@@ -306,7 +309,7 @@ add_task(async function test_count_incremented_if_store_is_not_created() {
resetTelemetry();
// Clear the existing domain-to-categories map.
await SearchSERPDomainToCategoriesMap.uninit({ deleteMap: true });
await SERPDomainToCategoriesMap.uninit({ deleteMap: true });
let sandbox = sinon.createSandbox();
sandbox
@@ -314,7 +317,7 @@ add_task(async function test_count_incremented_if_store_is_not_created() {
.throws(new Error());
// Initializing should fail and cause the component to un-initialize.
let promise = waitForDomainToCategoriesUninit();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
info("Store for the domain-to-categories map not created successfully.");
@@ -331,6 +334,6 @@ add_task(async function test_count_incremented_if_store_is_not_created() {
);
sandbox.restore();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await BrowserTestUtils.removeTab(tab);
});

View File

@@ -8,9 +8,8 @@
*/
ChromeUtils.defineESModuleGetters(this, {
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
});
const TEST_PROVIDER_INFO = [
@@ -180,8 +179,8 @@ add_task(async function test_no_reporting_if_download_failure() {
// The map is going to attempt to redo a download. There are other tests that
// do it, so instead reset the map so later tests don't get interrupted by
// a sync event caused by this test.
await SearchSERPDomainToCategoriesMap.uninit();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.uninit();
await SERPDomainToCategoriesMap.init();
});
add_task(async function test_no_reporting_if_no_records() {

View File

@@ -11,8 +11,8 @@
*/
ChromeUtils.defineESModuleGetters(this, {
SearchSERPCategorizationEventScheduler:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPCategorizationEventScheduler:
"resource:///modules/SERPCategorization.sys.mjs",
});
const TEST_PROVIDER_INFO = [
@@ -74,8 +74,8 @@ add_setup(async function () {
"browser.search.serpEventTelemetryCategorization.enabled"
)
) {
SearchSERPCategorizationEventScheduler.uninit();
SearchSERPCategorizationEventScheduler.init();
SERPCategorizationEventScheduler.uninit();
SERPCategorizationEventScheduler.init();
}
await waitForIdle();
@@ -98,8 +98,8 @@ add_setup(async function () {
await waitForDomainToCategoriesUninit();
} else {
// The scheduler uses the mock idle service.
SearchSERPCategorizationEventScheduler.uninit();
SearchSERPCategorizationEventScheduler.init();
SERPCategorizationEventScheduler.uninit();
SERPCategorizationEventScheduler.init();
}
SearchSERPTelemetry.overrideSearchTelemetryForTests();
resetTelemetry();

View File

@@ -9,11 +9,11 @@
*/
ChromeUtils.defineESModuleGetters(this, {
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPCategorizationEventScheduler:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
SERPCategorizationEventScheduler:
"resource:///modules/SERPCategorization.sys.mjs",
TELEMETRY_CATEGORIZATION_KEY:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
"resource:///modules/SERPCategorization.sys.mjs",
});
const TEST_PROVIDER_INFO = [
@@ -79,8 +79,8 @@ add_setup(async function () {
"browser.search.serpEventTelemetryCategorization.enabled"
)
) {
SearchSERPCategorizationEventScheduler.uninit();
SearchSERPCategorizationEventScheduler.init();
SERPCategorizationEventScheduler.uninit();
SERPCategorizationEventScheduler.init();
}
await waitForIdle();
@@ -103,8 +103,8 @@ add_setup(async function () {
await waitForDomainToCategoriesUninit();
} else {
// The scheduler uses the mock idle service.
SearchSERPCategorizationEventScheduler.uninit();
SearchSERPCategorizationEventScheduler.init();
SERPCategorizationEventScheduler.uninit();
SERPCategorizationEventScheduler.init();
}
CATEGORIZATION_SETTINGS.WAKE_TIMEOUT_MS = oldWakeTimeout;
SearchSERPTelemetry.overrideSearchTelemetryForTests();

View File

@@ -15,7 +15,8 @@ ChromeUtils.defineESModuleGetters(this, {
ADLINK_CHECK_TIMEOUT_MS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
SEARCH_TELEMETRY_SHARED: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPCategorization: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPCategorization:
"resource:///modules/SearchSERPCategorization.sys.mjs",
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchUtils: "resource://gre/modules/SearchUtils.sys.mjs",

View File

@@ -5,24 +5,23 @@ ChromeUtils.defineESModuleGetters(this, {
ADLINK_CHECK_TIMEOUT_MS:
"resource:///actors/SearchSERPTelemetryChild.sys.mjs",
BrowserSearchTelemetry: "resource:///modules/BrowserSearchTelemetry.sys.mjs",
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
CustomizableUITestUtils:
"resource://testing-common/CustomizableUITestUtils.sys.mjs",
Region: "resource://gre/modules/Region.sys.mjs",
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
SEARCH_TELEMETRY_SHARED: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPTelemetryUtils: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchTestUtils: "resource://testing-common/SearchTestUtils.sys.mjs",
SearchUtils: "resource://gre/modules/SearchUtils.sys.mjs",
SERPCategorizationRecorder: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPCategorizationRecorder: "resource:///modules/SERPCategorization.sys.mjs",
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
sinon: "resource://testing-common/Sinon.sys.mjs",
SPA_ADLINK_CHECK_TIMEOUT_MS:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
TELEMETRY_CATEGORIZATION_KEY:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
"resource:///modules/SERPCategorization.sys.mjs",
TelemetryTestUtils: "resource://testing-common/TelemetryTestUtils.sys.mjs",
VISIBILITY_THRESHOLD: "resource:///actors/SearchSERPTelemetryChild.sys.mjs",
});

View File

@@ -46,7 +46,7 @@ class TestPingSubmitted(MarionetteTestCase):
# Record an event for the ping to eventually submit.
self.marionette.execute_script(
"""
const { SERPCategorizationRecorder } = ChromeUtils.importESModule("resource:///modules/SearchSERPTelemetry.sys.mjs");
const { SERPCategorizationRecorder } = ChromeUtils.importESModule("resource:///modules/SERPCategorization.sys.mjs");
SERPCategorizationRecorder.recordCategorizationTelemetry({
organic_category: "3",
organic_num_domains: "1",

View File

@@ -7,8 +7,8 @@
*/
ChromeUtils.defineESModuleGetters(this, {
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
DomainToCategoriesStore: "resource:///modules/SearchSERPTelemetry.sys.mjs",
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
DomainToCategoriesStore: "resource:///modules/SERPCategorization.sys.mjs",
sinon: "resource://testing-common/Sinon.sys.mjs",
Sqlite: "resource://gre/modules/Sqlite.sys.mjs",
});

View File

@@ -9,10 +9,9 @@
"use strict";
ChromeUtils.defineESModuleGetters(this, {
SearchSERPCategorization: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPTelemetryUtils: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPCategorization: "resource:///modules/SERPCategorization.sys.mjs",
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
});
ChromeUtils.defineLazyGetter(this, "gCryptoHash", () => {
@@ -115,11 +114,11 @@ add_setup(async () => {
"browser.search.serpEventTelemetryCategorization.enabled",
true
);
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
});
add_task(async function test_categorization_simple() {
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE
);
@@ -137,7 +136,7 @@ add_task(async function test_categorization_simple() {
]);
let resultsToReport =
await SearchSERPCategorization.applyCategorizationLogic(domains);
await SERPCategorization.applyCategorizationLogic(domains);
Assert.deepEqual(
resultsToReport,
@@ -147,7 +146,7 @@ add_task(async function test_categorization_simple() {
});
add_task(async function test_categorization_inconclusive() {
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
TEST_DOMAIN_TO_CATEGORIES_MAP_INCONCLUSIVE
);
@@ -165,12 +164,12 @@ add_task(async function test_categorization_inconclusive() {
]);
let resultsToReport =
await SearchSERPCategorization.applyCategorizationLogic(domains);
await SERPCategorization.applyCategorizationLogic(domains);
Assert.deepEqual(
resultsToReport,
{
category: SearchSERPTelemetryUtils.CATEGORIZATION.INCONCLUSIVE,
category: CATEGORIZATION_SETTINGS.INCONCLUSIVE,
num_domains: 10,
num_inconclusive: 10,
num_unknown: 0,
@@ -182,7 +181,7 @@ add_task(async function test_categorization_inconclusive() {
add_task(async function test_categorization_unknown() {
// Reusing TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE since none of this task's
// domains will be keys within it.
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE
);
@@ -200,12 +199,12 @@ add_task(async function test_categorization_unknown() {
]);
let resultsToReport =
await SearchSERPCategorization.applyCategorizationLogic(domains);
await SERPCategorization.applyCategorizationLogic(domains);
Assert.deepEqual(
resultsToReport,
{
category: SearchSERPTelemetryUtils.CATEGORIZATION.INCONCLUSIVE,
category: CATEGORIZATION_SETTINGS.INCONCLUSIVE,
num_domains: 10,
num_inconclusive: 0,
num_unknown: 10,
@@ -215,7 +214,7 @@ add_task(async function test_categorization_unknown() {
});
add_task(async function test_categorization_unknown_and_inconclusive() {
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
TEST_DOMAIN_TO_CATEGORIES_MAP_UNKNOWN_AND_INCONCLUSIVE
);
@@ -233,12 +232,12 @@ add_task(async function test_categorization_unknown_and_inconclusive() {
]);
let resultsToReport =
await SearchSERPCategorization.applyCategorizationLogic(domains);
await SERPCategorization.applyCategorizationLogic(domains);
Assert.deepEqual(
resultsToReport,
{
category: SearchSERPTelemetryUtils.CATEGORIZATION.INCONCLUSIVE,
category: CATEGORIZATION_SETTINGS.INCONCLUSIVE,
num_domains: 10,
num_inconclusive: 5,
num_unknown: 5,
@@ -249,7 +248,7 @@ add_task(async function test_categorization_unknown_and_inconclusive() {
// Tests a mixture of categorized, inconclusive and unknown domains.
add_task(async function test_categorization_all_types() {
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
TEST_DOMAIN_TO_CATEGORIES_MAP_ALL_TYPES
);
@@ -269,7 +268,7 @@ add_task(async function test_categorization_all_types() {
]);
let resultsToReport =
await SearchSERPCategorization.applyCategorizationLogic(domains);
await SERPCategorization.applyCategorizationLogic(domains);
Assert.deepEqual(
resultsToReport,
@@ -284,7 +283,7 @@ add_task(async function test_categorization_all_types() {
});
add_task(async function test_categorization_tie() {
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
TEST_DOMAIN_TO_CATEGORIES_MAP_TIE
);
@@ -302,7 +301,7 @@ add_task(async function test_categorization_tie() {
]);
let resultsToReport =
await SearchSERPCategorization.applyCategorizationLogic(domains);
await SERPCategorization.applyCategorizationLogic(domains);
Assert.equal(
[1, 2].includes(resultsToReport.category),
@@ -322,7 +321,7 @@ add_task(async function test_categorization_tie() {
});
add_task(async function test_rank_penalization_equal_scores() {
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
TEST_DOMAIN_TO_CATEGORIES_MAP_RANK_PENALIZATION_1
);
@@ -340,7 +339,7 @@ add_task(async function test_rank_penalization_equal_scores() {
]);
let resultsToReport =
await SearchSERPCategorization.applyCategorizationLogic(domains);
await SERPCategorization.applyCategorizationLogic(domains);
Assert.deepEqual(
resultsToReport,
@@ -350,14 +349,14 @@ add_task(async function test_rank_penalization_equal_scores() {
});
add_task(async function test_rank_penalization_highest_score_lower_on_page() {
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
TEST_DOMAIN_TO_CATEGORIES_MAP_RANK_PENALIZATION_2
);
let domains = new Set(["test61.com", "test62.com"]);
let resultsToReport =
await SearchSERPCategorization.applyCategorizationLogic(domains);
await SERPCategorization.applyCategorizationLogic(domains);
Assert.deepEqual(
resultsToReport,

View File

@@ -8,8 +8,7 @@
"use strict";
ChromeUtils.defineESModuleGetters(this, {
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
});
add_task(async function record_matches_region() {
@@ -108,10 +107,7 @@ add_task(async function record_matches_region() {
for (let { title, record, expectedResult, region } of TESTS) {
info(title);
let result = SearchSERPDomainToCategoriesMap.recordMatchesRegion(
record,
region
);
let result = SERPDomainToCategoriesMap.recordMatchesRegion(record, region);
Assert.equal(result, expectedResult, "Result should match.");
}
});
@@ -214,10 +210,7 @@ add_task(async function find_records_for_region() {
for (let { title, record, expectedResult, region } of TESTS) {
info(title);
let result = SearchSERPDomainToCategoriesMap.findRecordsForRegion(
record,
region
);
let result = SERPDomainToCategoriesMap.findRecordsForRegion(record, region);
Assert.deepEqual(result, expectedResult, "Result should match.");
}
});

View File

@@ -10,11 +10,10 @@
ChromeUtils.defineESModuleGetters(this, {
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
Region: "resource://gre/modules/Region.sys.mjs",
SearchSERPCategorization: "resource:///modules/SearchSERPTelemetry.sys.mjs",
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPCategorization: "resource:///modules/SERPCategorization.sys.mjs",
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
TELEMETRY_CATEGORIZATION_KEY:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
"resource:///modules/SERPCategorization.sys.mjs",
TestUtils: "resource://testing-common/TestUtils.sys.mjs",
});
@@ -182,24 +181,24 @@ add_task(async function test_initial_import() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 100 }],
"Return value from lookup of example.com should be the same."
);
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.org"),
await SERPDomainToCategoriesMap.get("example.org"),
[{ category: 2, score: 90 }],
"Return value from lookup of example.org should be the same."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function test_update_records() {
@@ -216,7 +215,7 @@ add_task(async function test_update_records() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
info("Send update from Remote Settings with updates to attachments.");
@@ -238,13 +237,13 @@ add_task(async function test_update_records() {
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 80 }],
"Return value from lookup of example.com should have changed."
);
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.org"),
await SERPDomainToCategoriesMap.get("example.org"),
[
{ category: 2, score: 50 },
{ category: 4, score: 80 },
@@ -253,14 +252,14 @@ add_task(async function test_update_records() {
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
2,
"Version should be correct."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function test_delayed_initial_import() {
@@ -274,10 +273,10 @@ add_task(async function test_delayed_initial_import() {
);
});
info("Initialize without records.");
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await observeNoRecordsFound;
Assert.ok(SearchSERPDomainToCategoriesMap.empty, "Map is empty.");
Assert.ok(SERPDomainToCategoriesMap.empty, "Map is empty.");
info("Send update from Remote Settings with updates to attachments.");
let record1a = await mockRecordWithCachedAttachment(RECORDS.record1a);
@@ -295,26 +294,26 @@ add_task(async function test_delayed_initial_import() {
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 100 }],
"Return value from lookup of example.com should be the same."
);
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.org"),
await SERPDomainToCategoriesMap.get("example.org"),
[{ category: 2, score: 90 }],
"Return value from lookup of example.org should be the same."
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
1,
"Version should be correct."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function test_remove_record() {
@@ -331,11 +330,11 @@ add_task(async function test_remove_record() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 80 }],
"Initialized properly."
);
@@ -354,26 +353,26 @@ add_task(async function test_remove_record() {
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 80 }],
"Return value from lookup of example.com should remain unchanged."
);
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.org"),
await SERPDomainToCategoriesMap.get("example.org"),
[],
"Return value from lookup of example.org should be empty."
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
2,
"Version should be correct."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function test_different_versions_coexisting() {
@@ -390,11 +389,11 @@ add_task(async function test_different_versions_coexisting() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[
{
category: 1,
@@ -405,7 +404,7 @@ add_task(async function test_different_versions_coexisting() {
);
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.org"),
await SERPDomainToCategoriesMap.get("example.org"),
[
{ category: 2, score: 50 },
{ category: 4, score: 80 },
@@ -414,14 +413,14 @@ add_task(async function test_different_versions_coexisting() {
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
2,
"Version should be the latest."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function test_download_error() {
@@ -434,11 +433,11 @@ add_task(async function test_download_error() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[
{
category: 1,
@@ -449,7 +448,7 @@ add_task(async function test_download_error() {
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
1,
"Version should be present."
);
@@ -477,20 +476,20 @@ add_task(async function test_download_error() {
await observeDownloadError;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[],
"Domain should not exist in store."
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
null,
"Version should remain null."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function test_mock_restart() {
@@ -507,11 +506,11 @@ add_task(async function test_mock_restart() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPCategorization.init();
await SERPCategorization.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[
{
category: 1,
@@ -522,19 +521,19 @@ add_task(async function test_mock_restart() {
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
2,
"Version should be the latest."
);
info("Mock a restart by un-initializing the map.");
await SearchSERPCategorization.uninit();
await SERPCategorization.uninit();
promise = waitForDomainToCategoriesUpdate();
await SearchSERPCategorization.init();
await SERPCategorization.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[
{
category: 1,
@@ -545,14 +544,14 @@ add_task(async function test_mock_restart() {
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
2,
"Version should be the latest."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function update_record_from_non_matching_region() {
@@ -565,11 +564,11 @@ add_task(async function update_record_from_non_matching_region() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 100 }],
"Return value from lookup of example.com should exist."
);
@@ -597,26 +596,26 @@ add_task(async function update_record_from_non_matching_region() {
await observeNoChange;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 100 }],
"Return value from lookup of example.com should still exist."
);
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.ca"),
await SERPDomainToCategoriesMap.get("example.ca"),
[],
"Domain from non-home region should not exist."
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
1,
"Version should be remain the same."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function update_record_from_non_matching_region() {
@@ -629,11 +628,11 @@ add_task(async function update_record_from_non_matching_region() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 100 }],
"Return value from lookup of example.com should exist."
);
@@ -661,26 +660,26 @@ add_task(async function update_record_from_non_matching_region() {
await observeNoChange;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 100 }],
"Return value from lookup of example.com should still exist."
);
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.ca"),
await SERPDomainToCategoriesMap.get("example.ca"),
[],
"Domain from non-home region should not exist."
);
Assert.equal(
SearchSERPDomainToCategoriesMap.version,
SERPDomainToCategoriesMap.version,
1,
"Version should be remain the same."
);
// Clean up.
await db.clear();
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});
add_task(async function update_() {
@@ -693,17 +692,17 @@ add_task(async function update_() {
info("Initialize search categorization mappings.");
let promise = waitForDomainToCategoriesUpdate();
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await promise;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[{ category: 1, score: 100 }],
"Return value from lookup of example.com should exist."
);
// Re-init the Map to mimic a restart.
await SearchSERPDomainToCategoriesMap.uninit();
await SERPDomainToCategoriesMap.uninit();
info("Change home region to one that doesn't match region of map.");
let originalHomeRegion = Region.home;
@@ -718,10 +717,10 @@ add_task(async function update_() {
);
});
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await observeDropStore;
Assert.deepEqual(
await SearchSERPDomainToCategoriesMap.get("example.com"),
await SERPDomainToCategoriesMap.get("example.com"),
[],
"Return value from lookup of example.com should be empty."
);
@@ -729,5 +728,5 @@ add_task(async function update_() {
// Clean up.
await db.clear();
Region._setHomeRegion(originalHomeRegion);
await SearchSERPDomainToCategoriesMap.uninit(true);
await SERPDomainToCategoriesMap.uninit(true);
});

View File

@@ -9,8 +9,7 @@
ChromeUtils.defineESModuleGetters(this, {
Region: "resource://gre/modules/Region.sys.mjs",
SearchSERPDomainToCategoriesMap:
"resource:///modules/SearchSERPTelemetry.sys.mjs",
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
});
// For the tests, domains aren't checked, but add at least one value so the
@@ -30,7 +29,7 @@ add_setup(async () => {
"browser.search.serpEventTelemetryCategorization.enabled",
true
);
await SearchSERPDomainToCategoriesMap.init();
await SERPDomainToCategoriesMap.init();
await Region.init();
let originalRegion = Region.home;
Region._setHomeRegion(USER_REGION);
@@ -203,9 +202,9 @@ const TESTS = [
add_task(async function test_sync_may_modify_store() {
for (let test of TESTS) {
if (test.emptyMap) {
await SearchSERPDomainToCategoriesMap.overrideMapForTests({}, 0, false);
await SERPDomainToCategoriesMap.overrideMapForTests({}, 0, false);
} else {
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
await SERPDomainToCategoriesMap.overrideMapForTests(
DATA,
VERSION,
test.isDefault
@@ -213,11 +212,11 @@ add_task(async function test_sync_may_modify_store() {
}
info(
`Domain to Categories Map: ${
SearchSERPDomainToCategoriesMap.empty ? "Empty" : "Has Existing Data"
SERPDomainToCategoriesMap.empty ? "Empty" : "Has Existing Data"
}.`
);
info(`${test.title}.`);
let result = await SearchSERPDomainToCategoriesMap.syncMayModifyStore(
let result = await SERPDomainToCategoriesMap.syncMayModifyStore(
test.data,
USER_REGION
);