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:
@@ -9,8 +9,7 @@ const TELEMETRY_PREF =
|
|||||||
"browser.search.serpEventTelemetryCategorization.enabled";
|
"browser.search.serpEventTelemetryCategorization.enabled";
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(lazy, {
|
ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
SearchSERPDomainToCategoriesMap:
|
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
XPCOMUtils.defineLazyPreferenceGetter(
|
XPCOMUtils.defineLazyPreferenceGetter(
|
||||||
@@ -166,7 +165,7 @@ add_task(async function test_enable_experiment_when_pref_is_not_enabled() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Assert.ok(
|
Assert.ok(
|
||||||
lazy.SearchSERPDomainToCategoriesMap.empty,
|
lazy.SERPDomainToCategoriesMap.empty,
|
||||||
"Domain to categories map should be empty."
|
"Domain to categories map should be empty."
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs",
|
ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs",
|
||||||
ExperimentFakes: "resource://testing-common/NimbusTestUtils.sys.mjs",
|
ExperimentFakes: "resource://testing-common/NimbusTestUtils.sys.mjs",
|
||||||
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
SERPCategorizationRecorder: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SERPCategorizationRecorder: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|
||||||
const TEST_PROVIDER_INFO = [
|
const TEST_PROVIDER_INFO = [
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ add_task(async function test_count_incremented_if_map_is_not_downloaded() {
|
|||||||
resetTelemetry();
|
resetTelemetry();
|
||||||
|
|
||||||
// Clear the existing domain-to-categories map.
|
// Clear the existing domain-to-categories map.
|
||||||
await SearchSERPDomainToCategoriesMap.uninit({ deleteMap: true });
|
await SERPDomainToCategoriesMap.uninit({ deleteMap: true });
|
||||||
|
|
||||||
let sandbox = sinon.createSandbox();
|
let sandbox = sinon.createSandbox();
|
||||||
sandbox
|
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:")
|
msg.wrappedJSObject.arguments[0].includes("Could not download file:")
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
info("Wait for download error.");
|
info("Wait for download error.");
|
||||||
await downloadError;
|
await downloadError;
|
||||||
info("Domain-to-categories map unsuccessfully downloaded.");
|
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.
|
// Simulate a broken domain-to-categories map.
|
||||||
let sandbox = sinon.createSandbox();
|
let sandbox = sinon.createSandbox();
|
||||||
sandbox.stub(SearchSERPDomainToCategoriesMap, "get").returns([]);
|
sandbox.stub(SERPDomainToCategoriesMap, "get").returns([]);
|
||||||
|
|
||||||
let submitted = false;
|
let submitted = false;
|
||||||
GleanPings.serpCategorization.testBeforeNextSubmit(reason => {
|
GleanPings.serpCategorization.testBeforeNextSubmit(reason => {
|
||||||
|
|||||||
@@ -11,9 +11,8 @@
|
|||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
TELEMETRY_CATEGORIZATION_DOWNLOAD_SETTINGS:
|
TELEMETRY_CATEGORIZATION_DOWNLOAD_SETTINGS:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SERPCategorization.sys.mjs",
|
||||||
SearchSERPDomainToCategoriesMap:
|
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
|
||||||
SearchUtils: "resource://gre/modules/SearchUtils.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(consoleObserved, false, "Encountered download failure");
|
||||||
Assert.equal(timeout, true, "Timeout occured");
|
Assert.equal(timeout, true, "Timeout occured");
|
||||||
|
|
||||||
Assert.ok(SearchSERPDomainToCategoriesMap.empty, "Map is empty");
|
Assert.ok(SERPDomainToCategoriesMap.empty, "Map is empty");
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await SpecialPowers.popPrefEnv();
|
await SpecialPowers.popPrefEnv();
|
||||||
@@ -285,7 +284,7 @@ add_task(async function test_cancel_download_timer() {
|
|||||||
await Promise.race([firstPromise, secondPromise]);
|
await Promise.race([firstPromise, secondPromise]);
|
||||||
Assert.equal(consoleObserved, false, "Encountered download failure");
|
Assert.equal(consoleObserved, false, "Encountered download failure");
|
||||||
Assert.equal(timeout, true, "Timeout occured");
|
Assert.equal(timeout, true, "Timeout occured");
|
||||||
Assert.ok(SearchSERPDomainToCategoriesMap.empty, "Map is empty");
|
Assert.ok(SERPDomainToCategoriesMap.empty, "Map is empty");
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await resetCategorizationCollection(record);
|
await resetCategorizationCollection(record);
|
||||||
|
|||||||
@@ -9,14 +9,17 @@
|
|||||||
* a test of the ping's submission upon startup.)
|
* a test of the ping's submission upon startup.)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Can fail in TV mode.
|
||||||
|
requestLongerTimeout(2);
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
DomainToCategoriesStore: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
DomainToCategoriesStore: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
||||||
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
SERPCategorizationRecorder: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SERPCategorizationRecorder: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
TELEMETRY_CATEGORIZATION_KEY:
|
TELEMETRY_CATEGORIZATION_KEY:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SERPCategorization.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|
||||||
const TEST_PROVIDER_INFO = [
|
const TEST_PROVIDER_INFO = [
|
||||||
@@ -306,7 +309,7 @@ add_task(async function test_count_incremented_if_store_is_not_created() {
|
|||||||
resetTelemetry();
|
resetTelemetry();
|
||||||
|
|
||||||
// Clear the existing domain-to-categories map.
|
// Clear the existing domain-to-categories map.
|
||||||
await SearchSERPDomainToCategoriesMap.uninit({ deleteMap: true });
|
await SERPDomainToCategoriesMap.uninit({ deleteMap: true });
|
||||||
|
|
||||||
let sandbox = sinon.createSandbox();
|
let sandbox = sinon.createSandbox();
|
||||||
sandbox
|
sandbox
|
||||||
@@ -314,7 +317,7 @@ add_task(async function test_count_incremented_if_store_is_not_created() {
|
|||||||
.throws(new Error());
|
.throws(new Error());
|
||||||
// Initializing should fail and cause the component to un-initialize.
|
// Initializing should fail and cause the component to un-initialize.
|
||||||
let promise = waitForDomainToCategoriesUninit();
|
let promise = waitForDomainToCategoriesUninit();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
info("Store for the domain-to-categories map not created successfully.");
|
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();
|
sandbox.restore();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await BrowserTestUtils.removeTab(tab);
|
await BrowserTestUtils.removeTab(tab);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,9 +8,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
SearchSERPDomainToCategoriesMap:
|
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const TEST_PROVIDER_INFO = [
|
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
|
// 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
|
// do it, so instead reset the map so later tests don't get interrupted by
|
||||||
// a sync event caused by this test.
|
// a sync event caused by this test.
|
||||||
await SearchSERPDomainToCategoriesMap.uninit();
|
await SERPDomainToCategoriesMap.uninit();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_no_reporting_if_no_records() {
|
add_task(async function test_no_reporting_if_no_records() {
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
SearchSERPCategorizationEventScheduler:
|
SERPCategorizationEventScheduler:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SERPCategorization.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|
||||||
const TEST_PROVIDER_INFO = [
|
const TEST_PROVIDER_INFO = [
|
||||||
@@ -74,8 +74,8 @@ add_setup(async function () {
|
|||||||
"browser.search.serpEventTelemetryCategorization.enabled"
|
"browser.search.serpEventTelemetryCategorization.enabled"
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
SearchSERPCategorizationEventScheduler.uninit();
|
SERPCategorizationEventScheduler.uninit();
|
||||||
SearchSERPCategorizationEventScheduler.init();
|
SERPCategorizationEventScheduler.init();
|
||||||
}
|
}
|
||||||
await waitForIdle();
|
await waitForIdle();
|
||||||
|
|
||||||
@@ -98,8 +98,8 @@ add_setup(async function () {
|
|||||||
await waitForDomainToCategoriesUninit();
|
await waitForDomainToCategoriesUninit();
|
||||||
} else {
|
} else {
|
||||||
// The scheduler uses the mock idle service.
|
// The scheduler uses the mock idle service.
|
||||||
SearchSERPCategorizationEventScheduler.uninit();
|
SERPCategorizationEventScheduler.uninit();
|
||||||
SearchSERPCategorizationEventScheduler.init();
|
SERPCategorizationEventScheduler.init();
|
||||||
}
|
}
|
||||||
SearchSERPTelemetry.overrideSearchTelemetryForTests();
|
SearchSERPTelemetry.overrideSearchTelemetryForTests();
|
||||||
resetTelemetry();
|
resetTelemetry();
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
SearchSERPCategorizationEventScheduler:
|
SERPCategorizationEventScheduler:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SERPCategorization.sys.mjs",
|
||||||
TELEMETRY_CATEGORIZATION_KEY:
|
TELEMETRY_CATEGORIZATION_KEY:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SERPCategorization.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|
||||||
const TEST_PROVIDER_INFO = [
|
const TEST_PROVIDER_INFO = [
|
||||||
@@ -79,8 +79,8 @@ add_setup(async function () {
|
|||||||
"browser.search.serpEventTelemetryCategorization.enabled"
|
"browser.search.serpEventTelemetryCategorization.enabled"
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
SearchSERPCategorizationEventScheduler.uninit();
|
SERPCategorizationEventScheduler.uninit();
|
||||||
SearchSERPCategorizationEventScheduler.init();
|
SERPCategorizationEventScheduler.init();
|
||||||
}
|
}
|
||||||
await waitForIdle();
|
await waitForIdle();
|
||||||
|
|
||||||
@@ -103,8 +103,8 @@ add_setup(async function () {
|
|||||||
await waitForDomainToCategoriesUninit();
|
await waitForDomainToCategoriesUninit();
|
||||||
} else {
|
} else {
|
||||||
// The scheduler uses the mock idle service.
|
// The scheduler uses the mock idle service.
|
||||||
SearchSERPCategorizationEventScheduler.uninit();
|
SERPCategorizationEventScheduler.uninit();
|
||||||
SearchSERPCategorizationEventScheduler.init();
|
SERPCategorizationEventScheduler.init();
|
||||||
}
|
}
|
||||||
CATEGORIZATION_SETTINGS.WAKE_TIMEOUT_MS = oldWakeTimeout;
|
CATEGORIZATION_SETTINGS.WAKE_TIMEOUT_MS = oldWakeTimeout;
|
||||||
SearchSERPTelemetry.overrideSearchTelemetryForTests();
|
SearchSERPTelemetry.overrideSearchTelemetryForTests();
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ ChromeUtils.defineESModuleGetters(this, {
|
|||||||
ADLINK_CHECK_TIMEOUT_MS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
ADLINK_CHECK_TIMEOUT_MS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
||||||
SEARCH_TELEMETRY_SHARED: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SEARCH_TELEMETRY_SHARED: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
SearchSERPCategorization: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SearchSERPCategorization:
|
||||||
|
"resource:///modules/SearchSERPCategorization.sys.mjs",
|
||||||
SearchSERPDomainToCategoriesMap:
|
SearchSERPDomainToCategoriesMap:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
SearchUtils: "resource://gre/modules/SearchUtils.sys.mjs",
|
SearchUtils: "resource://gre/modules/SearchUtils.sys.mjs",
|
||||||
|
|||||||
@@ -5,24 +5,23 @@ ChromeUtils.defineESModuleGetters(this, {
|
|||||||
ADLINK_CHECK_TIMEOUT_MS:
|
ADLINK_CHECK_TIMEOUT_MS:
|
||||||
"resource:///actors/SearchSERPTelemetryChild.sys.mjs",
|
"resource:///actors/SearchSERPTelemetryChild.sys.mjs",
|
||||||
BrowserSearchTelemetry: "resource:///modules/BrowserSearchTelemetry.sys.mjs",
|
BrowserSearchTelemetry: "resource:///modules/BrowserSearchTelemetry.sys.mjs",
|
||||||
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
CustomizableUITestUtils:
|
CustomizableUITestUtils:
|
||||||
"resource://testing-common/CustomizableUITestUtils.sys.mjs",
|
"resource://testing-common/CustomizableUITestUtils.sys.mjs",
|
||||||
Region: "resource://gre/modules/Region.sys.mjs",
|
Region: "resource://gre/modules/Region.sys.mjs",
|
||||||
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
||||||
SEARCH_TELEMETRY_SHARED: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SEARCH_TELEMETRY_SHARED: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
SearchSERPDomainToCategoriesMap:
|
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
|
||||||
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
SearchSERPTelemetryUtils: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SearchSERPTelemetryUtils: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
SearchTestUtils: "resource://testing-common/SearchTestUtils.sys.mjs",
|
SearchTestUtils: "resource://testing-common/SearchTestUtils.sys.mjs",
|
||||||
SearchUtils: "resource://gre/modules/SearchUtils.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",
|
sinon: "resource://testing-common/Sinon.sys.mjs",
|
||||||
SPA_ADLINK_CHECK_TIMEOUT_MS:
|
SPA_ADLINK_CHECK_TIMEOUT_MS:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
||||||
TELEMETRY_CATEGORIZATION_KEY:
|
TELEMETRY_CATEGORIZATION_KEY:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SERPCategorization.sys.mjs",
|
||||||
TelemetryTestUtils: "resource://testing-common/TelemetryTestUtils.sys.mjs",
|
TelemetryTestUtils: "resource://testing-common/TelemetryTestUtils.sys.mjs",
|
||||||
VISIBILITY_THRESHOLD: "resource:///actors/SearchSERPTelemetryChild.sys.mjs",
|
VISIBILITY_THRESHOLD: "resource:///actors/SearchSERPTelemetryChild.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class TestPingSubmitted(MarionetteTestCase):
|
|||||||
# Record an event for the ping to eventually submit.
|
# Record an event for the ping to eventually submit.
|
||||||
self.marionette.execute_script(
|
self.marionette.execute_script(
|
||||||
"""
|
"""
|
||||||
const { SERPCategorizationRecorder } = ChromeUtils.importESModule("resource:///modules/SearchSERPTelemetry.sys.mjs");
|
const { SERPCategorizationRecorder } = ChromeUtils.importESModule("resource:///modules/SERPCategorization.sys.mjs");
|
||||||
SERPCategorizationRecorder.recordCategorizationTelemetry({
|
SERPCategorizationRecorder.recordCategorizationTelemetry({
|
||||||
organic_category: "3",
|
organic_category: "3",
|
||||||
organic_num_domains: "1",
|
organic_num_domains: "1",
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
CATEGORIZATION_SETTINGS: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
DomainToCategoriesStore: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
DomainToCategoriesStore: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
sinon: "resource://testing-common/Sinon.sys.mjs",
|
sinon: "resource://testing-common/Sinon.sys.mjs",
|
||||||
Sqlite: "resource://gre/modules/Sqlite.sys.mjs",
|
Sqlite: "resource://gre/modules/Sqlite.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,10 +9,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
SearchSERPCategorization: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SERPCategorization: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
SearchSERPDomainToCategoriesMap:
|
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
CATEGORIZATION_SETTINGS: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
SearchSERPTelemetryUtils: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
ChromeUtils.defineLazyGetter(this, "gCryptoHash", () => {
|
ChromeUtils.defineLazyGetter(this, "gCryptoHash", () => {
|
||||||
@@ -115,11 +114,11 @@ add_setup(async () => {
|
|||||||
"browser.search.serpEventTelemetryCategorization.enabled",
|
"browser.search.serpEventTelemetryCategorization.enabled",
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_categorization_simple() {
|
add_task(async function test_categorization_simple() {
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
|
await SERPDomainToCategoriesMap.overrideMapForTests(
|
||||||
TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE
|
TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -137,7 +136,7 @@ add_task(async function test_categorization_simple() {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
let resultsToReport =
|
let resultsToReport =
|
||||||
await SearchSERPCategorization.applyCategorizationLogic(domains);
|
await SERPCategorization.applyCategorizationLogic(domains);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
resultsToReport,
|
resultsToReport,
|
||||||
@@ -147,7 +146,7 @@ add_task(async function test_categorization_simple() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_categorization_inconclusive() {
|
add_task(async function test_categorization_inconclusive() {
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
|
await SERPDomainToCategoriesMap.overrideMapForTests(
|
||||||
TEST_DOMAIN_TO_CATEGORIES_MAP_INCONCLUSIVE
|
TEST_DOMAIN_TO_CATEGORIES_MAP_INCONCLUSIVE
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -165,12 +164,12 @@ add_task(async function test_categorization_inconclusive() {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
let resultsToReport =
|
let resultsToReport =
|
||||||
await SearchSERPCategorization.applyCategorizationLogic(domains);
|
await SERPCategorization.applyCategorizationLogic(domains);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
resultsToReport,
|
resultsToReport,
|
||||||
{
|
{
|
||||||
category: SearchSERPTelemetryUtils.CATEGORIZATION.INCONCLUSIVE,
|
category: CATEGORIZATION_SETTINGS.INCONCLUSIVE,
|
||||||
num_domains: 10,
|
num_domains: 10,
|
||||||
num_inconclusive: 10,
|
num_inconclusive: 10,
|
||||||
num_unknown: 0,
|
num_unknown: 0,
|
||||||
@@ -182,7 +181,7 @@ add_task(async function test_categorization_inconclusive() {
|
|||||||
add_task(async function test_categorization_unknown() {
|
add_task(async function test_categorization_unknown() {
|
||||||
// Reusing TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE since none of this task's
|
// Reusing TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE since none of this task's
|
||||||
// domains will be keys within it.
|
// domains will be keys within it.
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
|
await SERPDomainToCategoriesMap.overrideMapForTests(
|
||||||
TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE
|
TEST_DOMAIN_TO_CATEGORIES_MAP_SIMPLE
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -200,12 +199,12 @@ add_task(async function test_categorization_unknown() {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
let resultsToReport =
|
let resultsToReport =
|
||||||
await SearchSERPCategorization.applyCategorizationLogic(domains);
|
await SERPCategorization.applyCategorizationLogic(domains);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
resultsToReport,
|
resultsToReport,
|
||||||
{
|
{
|
||||||
category: SearchSERPTelemetryUtils.CATEGORIZATION.INCONCLUSIVE,
|
category: CATEGORIZATION_SETTINGS.INCONCLUSIVE,
|
||||||
num_domains: 10,
|
num_domains: 10,
|
||||||
num_inconclusive: 0,
|
num_inconclusive: 0,
|
||||||
num_unknown: 10,
|
num_unknown: 10,
|
||||||
@@ -215,7 +214,7 @@ add_task(async function test_categorization_unknown() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_categorization_unknown_and_inconclusive() {
|
add_task(async function test_categorization_unknown_and_inconclusive() {
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
|
await SERPDomainToCategoriesMap.overrideMapForTests(
|
||||||
TEST_DOMAIN_TO_CATEGORIES_MAP_UNKNOWN_AND_INCONCLUSIVE
|
TEST_DOMAIN_TO_CATEGORIES_MAP_UNKNOWN_AND_INCONCLUSIVE
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -233,12 +232,12 @@ add_task(async function test_categorization_unknown_and_inconclusive() {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
let resultsToReport =
|
let resultsToReport =
|
||||||
await SearchSERPCategorization.applyCategorizationLogic(domains);
|
await SERPCategorization.applyCategorizationLogic(domains);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
resultsToReport,
|
resultsToReport,
|
||||||
{
|
{
|
||||||
category: SearchSERPTelemetryUtils.CATEGORIZATION.INCONCLUSIVE,
|
category: CATEGORIZATION_SETTINGS.INCONCLUSIVE,
|
||||||
num_domains: 10,
|
num_domains: 10,
|
||||||
num_inconclusive: 5,
|
num_inconclusive: 5,
|
||||||
num_unknown: 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.
|
// Tests a mixture of categorized, inconclusive and unknown domains.
|
||||||
add_task(async function test_categorization_all_types() {
|
add_task(async function test_categorization_all_types() {
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
|
await SERPDomainToCategoriesMap.overrideMapForTests(
|
||||||
TEST_DOMAIN_TO_CATEGORIES_MAP_ALL_TYPES
|
TEST_DOMAIN_TO_CATEGORIES_MAP_ALL_TYPES
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -269,7 +268,7 @@ add_task(async function test_categorization_all_types() {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
let resultsToReport =
|
let resultsToReport =
|
||||||
await SearchSERPCategorization.applyCategorizationLogic(domains);
|
await SERPCategorization.applyCategorizationLogic(domains);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
resultsToReport,
|
resultsToReport,
|
||||||
@@ -284,7 +283,7 @@ add_task(async function test_categorization_all_types() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_categorization_tie() {
|
add_task(async function test_categorization_tie() {
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
|
await SERPDomainToCategoriesMap.overrideMapForTests(
|
||||||
TEST_DOMAIN_TO_CATEGORIES_MAP_TIE
|
TEST_DOMAIN_TO_CATEGORIES_MAP_TIE
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -302,7 +301,7 @@ add_task(async function test_categorization_tie() {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
let resultsToReport =
|
let resultsToReport =
|
||||||
await SearchSERPCategorization.applyCategorizationLogic(domains);
|
await SERPCategorization.applyCategorizationLogic(domains);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
[1, 2].includes(resultsToReport.category),
|
[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() {
|
add_task(async function test_rank_penalization_equal_scores() {
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
|
await SERPDomainToCategoriesMap.overrideMapForTests(
|
||||||
TEST_DOMAIN_TO_CATEGORIES_MAP_RANK_PENALIZATION_1
|
TEST_DOMAIN_TO_CATEGORIES_MAP_RANK_PENALIZATION_1
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -340,7 +339,7 @@ add_task(async function test_rank_penalization_equal_scores() {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
let resultsToReport =
|
let resultsToReport =
|
||||||
await SearchSERPCategorization.applyCategorizationLogic(domains);
|
await SERPCategorization.applyCategorizationLogic(domains);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
resultsToReport,
|
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() {
|
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
|
TEST_DOMAIN_TO_CATEGORIES_MAP_RANK_PENALIZATION_2
|
||||||
);
|
);
|
||||||
|
|
||||||
let domains = new Set(["test61.com", "test62.com"]);
|
let domains = new Set(["test61.com", "test62.com"]);
|
||||||
|
|
||||||
let resultsToReport =
|
let resultsToReport =
|
||||||
await SearchSERPCategorization.applyCategorizationLogic(domains);
|
await SERPCategorization.applyCategorizationLogic(domains);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
resultsToReport,
|
resultsToReport,
|
||||||
|
|||||||
@@ -8,8 +8,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
SearchSERPDomainToCategoriesMap:
|
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function record_matches_region() {
|
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) {
|
for (let { title, record, expectedResult, region } of TESTS) {
|
||||||
info(title);
|
info(title);
|
||||||
let result = SearchSERPDomainToCategoriesMap.recordMatchesRegion(
|
let result = SERPDomainToCategoriesMap.recordMatchesRegion(record, region);
|
||||||
record,
|
|
||||||
region
|
|
||||||
);
|
|
||||||
Assert.equal(result, expectedResult, "Result should match.");
|
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) {
|
for (let { title, record, expectedResult, region } of TESTS) {
|
||||||
info(title);
|
info(title);
|
||||||
let result = SearchSERPDomainToCategoriesMap.findRecordsForRegion(
|
let result = SERPDomainToCategoriesMap.findRecordsForRegion(record, region);
|
||||||
record,
|
|
||||||
region
|
|
||||||
);
|
|
||||||
Assert.deepEqual(result, expectedResult, "Result should match.");
|
Assert.deepEqual(result, expectedResult, "Result should match.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,11 +10,10 @@
|
|||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
||||||
Region: "resource://gre/modules/Region.sys.mjs",
|
Region: "resource://gre/modules/Region.sys.mjs",
|
||||||
SearchSERPCategorization: "resource:///modules/SearchSERPTelemetry.sys.mjs",
|
SERPCategorization: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
SearchSERPDomainToCategoriesMap:
|
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
|
||||||
TELEMETRY_CATEGORIZATION_KEY:
|
TELEMETRY_CATEGORIZATION_KEY:
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
"resource:///modules/SERPCategorization.sys.mjs",
|
||||||
TestUtils: "resource://testing-common/TestUtils.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.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 100 }],
|
[{ category: 1, score: 100 }],
|
||||||
"Return value from lookup of example.com should be the same."
|
"Return value from lookup of example.com should be the same."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.org"),
|
await SERPDomainToCategoriesMap.get("example.org"),
|
||||||
[{ category: 2, score: 90 }],
|
[{ category: 2, score: 90 }],
|
||||||
"Return value from lookup of example.org should be the same."
|
"Return value from lookup of example.org should be the same."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_update_records() {
|
add_task(async function test_update_records() {
|
||||||
@@ -216,7 +215,7 @@ add_task(async function test_update_records() {
|
|||||||
|
|
||||||
info("Initialize search categorization mappings.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
info("Send update from Remote Settings with updates to attachments.");
|
info("Send update from Remote Settings with updates to attachments.");
|
||||||
@@ -238,13 +237,13 @@ add_task(async function test_update_records() {
|
|||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 80 }],
|
[{ category: 1, score: 80 }],
|
||||||
"Return value from lookup of example.com should have changed."
|
"Return value from lookup of example.com should have changed."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.org"),
|
await SERPDomainToCategoriesMap.get("example.org"),
|
||||||
[
|
[
|
||||||
{ category: 2, score: 50 },
|
{ category: 2, score: 50 },
|
||||||
{ category: 4, score: 80 },
|
{ category: 4, score: 80 },
|
||||||
@@ -253,14 +252,14 @@ add_task(async function test_update_records() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
2,
|
2,
|
||||||
"Version should be correct."
|
"Version should be correct."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_delayed_initial_import() {
|
add_task(async function test_delayed_initial_import() {
|
||||||
@@ -274,10 +273,10 @@ add_task(async function test_delayed_initial_import() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
info("Initialize without records.");
|
info("Initialize without records.");
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await observeNoRecordsFound;
|
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.");
|
info("Send update from Remote Settings with updates to attachments.");
|
||||||
let record1a = await mockRecordWithCachedAttachment(RECORDS.record1a);
|
let record1a = await mockRecordWithCachedAttachment(RECORDS.record1a);
|
||||||
@@ -295,26 +294,26 @@ add_task(async function test_delayed_initial_import() {
|
|||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 100 }],
|
[{ category: 1, score: 100 }],
|
||||||
"Return value from lookup of example.com should be the same."
|
"Return value from lookup of example.com should be the same."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.org"),
|
await SERPDomainToCategoriesMap.get("example.org"),
|
||||||
[{ category: 2, score: 90 }],
|
[{ category: 2, score: 90 }],
|
||||||
"Return value from lookup of example.org should be the same."
|
"Return value from lookup of example.org should be the same."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
1,
|
1,
|
||||||
"Version should be correct."
|
"Version should be correct."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_remove_record() {
|
add_task(async function test_remove_record() {
|
||||||
@@ -331,11 +330,11 @@ add_task(async function test_remove_record() {
|
|||||||
|
|
||||||
info("Initialize search categorization mappings.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 80 }],
|
[{ category: 1, score: 80 }],
|
||||||
"Initialized properly."
|
"Initialized properly."
|
||||||
);
|
);
|
||||||
@@ -354,26 +353,26 @@ add_task(async function test_remove_record() {
|
|||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 80 }],
|
[{ category: 1, score: 80 }],
|
||||||
"Return value from lookup of example.com should remain unchanged."
|
"Return value from lookup of example.com should remain unchanged."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.org"),
|
await SERPDomainToCategoriesMap.get("example.org"),
|
||||||
[],
|
[],
|
||||||
"Return value from lookup of example.org should be empty."
|
"Return value from lookup of example.org should be empty."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
2,
|
2,
|
||||||
"Version should be correct."
|
"Version should be correct."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_different_versions_coexisting() {
|
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.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
category: 1,
|
category: 1,
|
||||||
@@ -405,7 +404,7 @@ add_task(async function test_different_versions_coexisting() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.org"),
|
await SERPDomainToCategoriesMap.get("example.org"),
|
||||||
[
|
[
|
||||||
{ category: 2, score: 50 },
|
{ category: 2, score: 50 },
|
||||||
{ category: 4, score: 80 },
|
{ category: 4, score: 80 },
|
||||||
@@ -414,14 +413,14 @@ add_task(async function test_different_versions_coexisting() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
2,
|
2,
|
||||||
"Version should be the latest."
|
"Version should be the latest."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_download_error() {
|
add_task(async function test_download_error() {
|
||||||
@@ -434,11 +433,11 @@ add_task(async function test_download_error() {
|
|||||||
|
|
||||||
info("Initialize search categorization mappings.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
category: 1,
|
category: 1,
|
||||||
@@ -449,7 +448,7 @@ add_task(async function test_download_error() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
1,
|
1,
|
||||||
"Version should be present."
|
"Version should be present."
|
||||||
);
|
);
|
||||||
@@ -477,20 +476,20 @@ add_task(async function test_download_error() {
|
|||||||
await observeDownloadError;
|
await observeDownloadError;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[],
|
[],
|
||||||
"Domain should not exist in store."
|
"Domain should not exist in store."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
null,
|
null,
|
||||||
"Version should remain null."
|
"Version should remain null."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function test_mock_restart() {
|
add_task(async function test_mock_restart() {
|
||||||
@@ -507,11 +506,11 @@ add_task(async function test_mock_restart() {
|
|||||||
|
|
||||||
info("Initialize search categorization mappings.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPCategorization.init();
|
await SERPCategorization.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
category: 1,
|
category: 1,
|
||||||
@@ -522,19 +521,19 @@ add_task(async function test_mock_restart() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
2,
|
2,
|
||||||
"Version should be the latest."
|
"Version should be the latest."
|
||||||
);
|
);
|
||||||
|
|
||||||
info("Mock a restart by un-initializing the map.");
|
info("Mock a restart by un-initializing the map.");
|
||||||
await SearchSERPCategorization.uninit();
|
await SERPCategorization.uninit();
|
||||||
promise = waitForDomainToCategoriesUpdate();
|
promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPCategorization.init();
|
await SERPCategorization.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
category: 1,
|
category: 1,
|
||||||
@@ -545,14 +544,14 @@ add_task(async function test_mock_restart() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
2,
|
2,
|
||||||
"Version should be the latest."
|
"Version should be the latest."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function update_record_from_non_matching_region() {
|
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.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 100 }],
|
[{ category: 1, score: 100 }],
|
||||||
"Return value from lookup of example.com should exist."
|
"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;
|
await observeNoChange;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 100 }],
|
[{ category: 1, score: 100 }],
|
||||||
"Return value from lookup of example.com should still exist."
|
"Return value from lookup of example.com should still exist."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.ca"),
|
await SERPDomainToCategoriesMap.get("example.ca"),
|
||||||
[],
|
[],
|
||||||
"Domain from non-home region should not exist."
|
"Domain from non-home region should not exist."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
1,
|
1,
|
||||||
"Version should be remain the same."
|
"Version should be remain the same."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function update_record_from_non_matching_region() {
|
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.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 100 }],
|
[{ category: 1, score: 100 }],
|
||||||
"Return value from lookup of example.com should exist."
|
"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;
|
await observeNoChange;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 100 }],
|
[{ category: 1, score: 100 }],
|
||||||
"Return value from lookup of example.com should still exist."
|
"Return value from lookup of example.com should still exist."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.ca"),
|
await SERPDomainToCategoriesMap.get("example.ca"),
|
||||||
[],
|
[],
|
||||||
"Domain from non-home region should not exist."
|
"Domain from non-home region should not exist."
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
SearchSERPDomainToCategoriesMap.version,
|
SERPDomainToCategoriesMap.version,
|
||||||
1,
|
1,
|
||||||
"Version should be remain the same."
|
"Version should be remain the same."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function update_() {
|
add_task(async function update_() {
|
||||||
@@ -693,17 +692,17 @@ add_task(async function update_() {
|
|||||||
|
|
||||||
info("Initialize search categorization mappings.");
|
info("Initialize search categorization mappings.");
|
||||||
let promise = waitForDomainToCategoriesUpdate();
|
let promise = waitForDomainToCategoriesUpdate();
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await promise;
|
await promise;
|
||||||
|
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[{ category: 1, score: 100 }],
|
[{ category: 1, score: 100 }],
|
||||||
"Return value from lookup of example.com should exist."
|
"Return value from lookup of example.com should exist."
|
||||||
);
|
);
|
||||||
|
|
||||||
// Re-init the Map to mimic a restart.
|
// 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.");
|
info("Change home region to one that doesn't match region of map.");
|
||||||
let originalHomeRegion = Region.home;
|
let originalHomeRegion = Region.home;
|
||||||
@@ -718,10 +717,10 @@ add_task(async function update_() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await observeDropStore;
|
await observeDropStore;
|
||||||
Assert.deepEqual(
|
Assert.deepEqual(
|
||||||
await SearchSERPDomainToCategoriesMap.get("example.com"),
|
await SERPDomainToCategoriesMap.get("example.com"),
|
||||||
[],
|
[],
|
||||||
"Return value from lookup of example.com should be empty."
|
"Return value from lookup of example.com should be empty."
|
||||||
);
|
);
|
||||||
@@ -729,5 +728,5 @@ add_task(async function update_() {
|
|||||||
// Clean up.
|
// Clean up.
|
||||||
await db.clear();
|
await db.clear();
|
||||||
Region._setHomeRegion(originalHomeRegion);
|
Region._setHomeRegion(originalHomeRegion);
|
||||||
await SearchSERPDomainToCategoriesMap.uninit(true);
|
await SERPDomainToCategoriesMap.uninit(true);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,8 +9,7 @@
|
|||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
ChromeUtils.defineESModuleGetters(this, {
|
||||||
Region: "resource://gre/modules/Region.sys.mjs",
|
Region: "resource://gre/modules/Region.sys.mjs",
|
||||||
SearchSERPDomainToCategoriesMap:
|
SERPDomainToCategoriesMap: "resource:///modules/SERPCategorization.sys.mjs",
|
||||||
"resource:///modules/SearchSERPTelemetry.sys.mjs",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// For the tests, domains aren't checked, but add at least one value so the
|
// 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",
|
"browser.search.serpEventTelemetryCategorization.enabled",
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
await SearchSERPDomainToCategoriesMap.init();
|
await SERPDomainToCategoriesMap.init();
|
||||||
await Region.init();
|
await Region.init();
|
||||||
let originalRegion = Region.home;
|
let originalRegion = Region.home;
|
||||||
Region._setHomeRegion(USER_REGION);
|
Region._setHomeRegion(USER_REGION);
|
||||||
@@ -203,9 +202,9 @@ const TESTS = [
|
|||||||
add_task(async function test_sync_may_modify_store() {
|
add_task(async function test_sync_may_modify_store() {
|
||||||
for (let test of TESTS) {
|
for (let test of TESTS) {
|
||||||
if (test.emptyMap) {
|
if (test.emptyMap) {
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests({}, 0, false);
|
await SERPDomainToCategoriesMap.overrideMapForTests({}, 0, false);
|
||||||
} else {
|
} else {
|
||||||
await SearchSERPDomainToCategoriesMap.overrideMapForTests(
|
await SERPDomainToCategoriesMap.overrideMapForTests(
|
||||||
DATA,
|
DATA,
|
||||||
VERSION,
|
VERSION,
|
||||||
test.isDefault
|
test.isDefault
|
||||||
@@ -213,11 +212,11 @@ add_task(async function test_sync_may_modify_store() {
|
|||||||
}
|
}
|
||||||
info(
|
info(
|
||||||
`Domain to Categories Map: ${
|
`Domain to Categories Map: ${
|
||||||
SearchSERPDomainToCategoriesMap.empty ? "Empty" : "Has Existing Data"
|
SERPDomainToCategoriesMap.empty ? "Empty" : "Has Existing Data"
|
||||||
}.`
|
}.`
|
||||||
);
|
);
|
||||||
info(`${test.title}.`);
|
info(`${test.title}.`);
|
||||||
let result = await SearchSERPDomainToCategoriesMap.syncMayModifyStore(
|
let result = await SERPDomainToCategoriesMap.syncMayModifyStore(
|
||||||
test.data,
|
test.data,
|
||||||
USER_REGION
|
USER_REGION
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user