Files
tubestation/browser/modules/test/browser_UsageTelemetry_content.js
Phil Ringnalda 6f651bae70 Backed out 5 changesets (bug 1316281, bug 1316810) for ASan failures in UsageTelemetry tests
Backed out changeset 2c711bb8e373 (bug 1316281)
Backed out changeset b3ea1334c33a (bug 1316281)
Backed out changeset 823e118b3fad (bug 1316281)
Backed out changeset 84e97301a8c9 (bug 1316810)
Backed out changeset f98ddece4b12 (bug 1316810)

MozReview-Commit-ID: 5tR2v8NWxQW
2016-12-01 07:46:00 -08:00

110 lines
4.6 KiB
JavaScript

"use strict";
const BASE_PROBE_NAME = "browser.engagement.navigation.";
const SCALAR_CONTEXT_MENU = BASE_PROBE_NAME + "contextmenu";
const SCALAR_ABOUT_NEWTAB = BASE_PROBE_NAME + "about_newtab";
add_task(function* setup() {
// Create two new search engines. Mark one as the default engine, so
// the test don't crash. We need to engines for this test as the searchbar
// in content doesn't display the default search engine among the one-off engines.
Services.search.addEngineWithDetails("MozSearch", "", "mozalias", "", "GET",
"http://example.com/?q={searchTerms}");
Services.search.addEngineWithDetails("MozSearch2", "", "mozalias2", "", "GET",
"http://example.com/?q={searchTerms}");
// Make the first engine the default search engine.
let engineDefault = Services.search.getEngineByName("MozSearch");
let originalEngine = Services.search.currentEngine;
Services.search.currentEngine = engineDefault;
// Move the second engine at the beginning of the one-off list.
let engineOneOff = Services.search.getEngineByName("MozSearch2");
Services.search.moveEngine(engineOneOff, 0);
yield SpecialPowers.pushPrefEnv({"set": [
["dom.select_events.enabled", true], // We want select events to be fired.
["toolkit.telemetry.enabled", true] // And Extended Telemetry to be enabled.
]});
// Make sure to restore the engine once we're done.
registerCleanupFunction(function* () {
Services.search.currentEngine = originalEngine;
Services.search.removeEngine(engineDefault);
Services.search.removeEngine(engineOneOff);
});
});
add_task(function* test_context_menu() {
// Let's reset the counts.
Services.telemetry.clearScalars();
let search_hist = getSearchCountsHistogram();
// Open a new tab with a page containing some text.
let tab =
yield BrowserTestUtils.openNewForegroundTab(gBrowser, "data:text/plain;charset=utf8,test%20search");
info("Select all the text in the page.");
yield ContentTask.spawn(tab.linkedBrowser, "", function*() {
return new Promise(resolve => {
content.document.addEventListener("selectionchange", () => resolve(), { once: true });
content.document.getSelection().selectAllChildren(content.document.body);
});
});
info("Open the context menu.");
let contextMenu = document.getElementById("contentAreaContextMenu");
let popupPromise = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
BrowserTestUtils.synthesizeMouseAtCenter("body", { type: "contextmenu", button: 2 },
gBrowser.selectedBrowser);
yield popupPromise;
info("Click on search.");
let searchItem = contextMenu.getElementsByAttribute("id", "context-searchselect")[0];
searchItem.click();
info("Validate the search counts.");
const scalars =
Services.telemetry.snapshotKeyedScalars(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, false);
checkKeyedScalar(scalars, SCALAR_CONTEXT_MENU, "search", 1);
Assert.equal(Object.keys(scalars[SCALAR_CONTEXT_MENU]).length, 1,
"This search must only increment one entry in the scalar.");
// Make sure SEARCH_COUNTS contains identical values.
checkKeyedHistogram(search_hist, 'other-MozSearch.contextmenu', 1);
contextMenu.hidePopup();
yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
yield BrowserTestUtils.removeTab(tab);
});
add_task(function* test_about_newtab() {
// Let's reset the counts.
Services.telemetry.clearScalars();
let search_hist = getSearchCountsHistogram();
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:newtab", false);
yield ContentTask.spawn(tab.linkedBrowser, null, function* () {
yield ContentTaskUtils.waitForCondition(() => !content.document.hidden);
});
info("Trigger a simple serch, just text + enter.");
let p = BrowserTestUtils.browserLoaded(tab.linkedBrowser);
yield typeInSearchField(tab.linkedBrowser, "test query", "newtab-search-text");
yield BrowserTestUtils.synthesizeKey("VK_RETURN", {}, tab.linkedBrowser);
yield p;
// Check if the scalars contain the expected values.
const scalars =
Services.telemetry.snapshotKeyedScalars(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, false);
checkKeyedScalar(scalars, SCALAR_ABOUT_NEWTAB, "search_enter", 1);
Assert.equal(Object.keys(scalars[SCALAR_ABOUT_NEWTAB]).length, 1,
"This search must only increment one entry in the scalar.");
// Make sure SEARCH_COUNTS contains identical values.
checkKeyedHistogram(search_hist, 'other-MozSearch.newtab', 1);
yield BrowserTestUtils.removeTab(tab);
});