summaryrefslogtreecommitdiffstats
path: root/browser/components/search/content/searchReset.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/search/content/searchReset.js')
-rw-r--r--browser/components/search/content/searchReset.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/browser/components/search/content/searchReset.js b/browser/components/search/content/searchReset.js
new file mode 100644
index 000000000..b541d41da
--- /dev/null
+++ b/browser/components/search/content/searchReset.js
@@ -0,0 +1,90 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+
+Cu.import("resource://gre/modules/Services.jsm");
+
+const TELEMETRY_RESULT_ENUM = {
+ RESTORED_DEFAULT: 0,
+ KEPT_CURRENT: 1,
+ CHANGED_ENGINE: 2,
+ CLOSED_PAGE: 3,
+ OPENED_SETTINGS: 4
+};
+
+window.onload = function() {
+ let defaultEngine = document.getElementById("defaultEngine");
+ let originalDefault = Services.search.originalDefaultEngine;
+ defaultEngine.textContent = originalDefault.name;
+ defaultEngine.style.backgroundImage =
+ 'url("' + originalDefault.iconURI.spec + '")';
+
+ document.getElementById("searchResetChangeEngine").focus();
+ window.addEventListener("unload", recordPageClosed);
+ document.getElementById("linkSettingsPage")
+ .addEventListener("click", openingSettings);
+};
+
+function doSearch() {
+ let queryString = "";
+ let purpose = "";
+ let params = window.location.href.match(/^about:searchreset\?([^#]*)/);
+ if (params) {
+ params = params[1].split("&");
+ for (let param of params) {
+ if (param.startsWith("data="))
+ queryString = decodeURIComponent(param.slice(5));
+ else if (param.startsWith("purpose="))
+ purpose = param.slice(8);
+ }
+ }
+
+ let engine = Services.search.currentEngine;
+ let submission = engine.getSubmission(queryString, null, purpose);
+
+ window.removeEventListener("unload", recordPageClosed);
+
+ let win = window.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIWebNavigation)
+ .QueryInterface(Ci.nsIDocShellTreeItem)
+ .rootTreeItem
+ .QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIDOMWindow);
+ win.openUILinkIn(submission.uri.spec, "current", false, submission.postData);
+}
+
+function openingSettings() {
+ record(TELEMETRY_RESULT_ENUM.OPENED_SETTINGS);
+ window.removeEventListener("unload", recordPageClosed);
+}
+
+function record(result) {
+ Services.telemetry.getHistogramById("SEARCH_RESET_RESULT").add(result);
+}
+
+function keepCurrentEngine() {
+ // Calling the currentEngine setter will force a correct loadPathHash to be
+ // written for this engine, so that we don't prompt the user again.
+ Services.search.currentEngine = Services.search.currentEngine;
+ record(TELEMETRY_RESULT_ENUM.KEPT_CURRENT);
+ doSearch();
+}
+
+function changeSearchEngine() {
+ let engine = Services.search.originalDefaultEngine;
+ if (engine.hidden)
+ engine.hidden = false;
+ Services.search.currentEngine = engine;
+
+ record(TELEMETRY_RESULT_ENUM.RESTORED_DEFAULT);
+
+ doSearch();
+}
+
+function recordPageClosed() {
+ record(TELEMETRY_RESULT_ENUM.CLOSED_PAGE);
+}