1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/base/content/test/general/browser_urlbar_search_healthreport.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,89 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +"use strict"; 1.8 + 1.9 +add_task(function* test_healthreport_search_recording() { 1.10 + try { 1.11 + let cm = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager); 1.12 + cm.getCategoryEntry("healthreport-js-provider-default", "SearchesProvider"); 1.13 + } catch (ex) { 1.14 + // Health Report disabled, or no SearchesProvider. 1.15 + ok(true, "Firefox Health Report is not enabled."); 1.16 + return; 1.17 + } 1.18 + 1.19 + let reporter = Cc["@mozilla.org/datareporting/service;1"] 1.20 + .getService() 1.21 + .wrappedJSObject 1.22 + .healthReporter; 1.23 + ok(reporter, "Health Reporter available."); 1.24 + yield reporter.onInit(); 1.25 + let provider = reporter.getProvider("org.mozilla.searches"); 1.26 + ok(provider, "Searches provider is available."); 1.27 + let m = provider.getMeasurement("counts", 3); 1.28 + 1.29 + let data = yield m.getValues(); 1.30 + let now = new Date(); 1.31 + let oldCount = 0; 1.32 + 1.33 + // This will to be need changed if default search engine is not Google. 1.34 + let field = "google.urlbar"; 1.35 + 1.36 + if (data.days.hasDay(now)) { 1.37 + let day = data.days.getDay(now); 1.38 + if (day.has(field)) { 1.39 + oldCount = day.get(field); 1.40 + } 1.41 + } 1.42 + 1.43 + let tab = gBrowser.addTab(); 1.44 + gBrowser.selectedTab = tab; 1.45 + 1.46 + let searchStr = "firefox health report"; 1.47 + let expectedURL = Services.search.currentEngine. 1.48 + getSubmission(searchStr, "", "keyword").uri.spec; 1.49 + 1.50 + // Expect the search URL to load but stop it as soon as it starts. 1.51 + let docLoadPromise = waitForDocLoadAndStopIt(expectedURL); 1.52 + 1.53 + // Trigger the search. 1.54 + gURLBar.value = searchStr; 1.55 + gURLBar.handleCommand(); 1.56 + 1.57 + yield docLoadPromise; 1.58 + 1.59 + function waitForNextTick() { 1.60 + let deferred = Promise.defer(); 1.61 + executeSoon(function () { 1.62 + deferred.resolve(); 1.63 + }); 1.64 + return deferred.promise; 1.65 + } 1.66 + yield waitForNextTick(); 1.67 + 1.68 + data = yield m.getValues(); 1.69 + ok(data.days.hasDay(now), "We have a search measurement for today."); 1.70 + let day = data.days.getDay(now); 1.71 + ok(day.has(field), "Have a search count for the urlbar."); 1.72 + let newCount = day.get(field); 1.73 + is(newCount, oldCount + 1, "We recorded one new search."); 1.74 + 1.75 + // We should record the default search engine if Telemetry is enabled. 1.76 + let oldTelemetry = Services.prefs.getBoolPref("toolkit.telemetry.enabled"); 1.77 + Services.prefs.setBoolPref("toolkit.telemetry.enabled", true); 1.78 + 1.79 + m = provider.getMeasurement("engines", 1); 1.80 + yield provider.collectDailyData(); 1.81 + data = yield m.getValues(); 1.82 + 1.83 + ok(data.days.hasDay(now), "Have engines data when Telemetry is enabled."); 1.84 + day = data.days.getDay(now); 1.85 + ok(day.has("default"), "We have default engine data."); 1.86 + is(day.get("default"), "google", "The default engine is reported properly."); 1.87 + 1.88 + // Restore. 1.89 + Services.prefs.setBoolPref("toolkit.telemetry.enabled", oldTelemetry); 1.90 + 1.91 + gBrowser.removeTab(tab); 1.92 +});