browser/base/content/test/general/browser_urlbar_search_healthreport.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:c4a0ebef04e4
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 "use strict";
5
6 add_task(function* test_healthreport_search_recording() {
7 try {
8 let cm = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
9 cm.getCategoryEntry("healthreport-js-provider-default", "SearchesProvider");
10 } catch (ex) {
11 // Health Report disabled, or no SearchesProvider.
12 ok(true, "Firefox Health Report is not enabled.");
13 return;
14 }
15
16 let reporter = Cc["@mozilla.org/datareporting/service;1"]
17 .getService()
18 .wrappedJSObject
19 .healthReporter;
20 ok(reporter, "Health Reporter available.");
21 yield reporter.onInit();
22 let provider = reporter.getProvider("org.mozilla.searches");
23 ok(provider, "Searches provider is available.");
24 let m = provider.getMeasurement("counts", 3);
25
26 let data = yield m.getValues();
27 let now = new Date();
28 let oldCount = 0;
29
30 // This will to be need changed if default search engine is not Google.
31 let field = "google.urlbar";
32
33 if (data.days.hasDay(now)) {
34 let day = data.days.getDay(now);
35 if (day.has(field)) {
36 oldCount = day.get(field);
37 }
38 }
39
40 let tab = gBrowser.addTab();
41 gBrowser.selectedTab = tab;
42
43 let searchStr = "firefox health report";
44 let expectedURL = Services.search.currentEngine.
45 getSubmission(searchStr, "", "keyword").uri.spec;
46
47 // Expect the search URL to load but stop it as soon as it starts.
48 let docLoadPromise = waitForDocLoadAndStopIt(expectedURL);
49
50 // Trigger the search.
51 gURLBar.value = searchStr;
52 gURLBar.handleCommand();
53
54 yield docLoadPromise;
55
56 function waitForNextTick() {
57 let deferred = Promise.defer();
58 executeSoon(function () {
59 deferred.resolve();
60 });
61 return deferred.promise;
62 }
63 yield waitForNextTick();
64
65 data = yield m.getValues();
66 ok(data.days.hasDay(now), "We have a search measurement for today.");
67 let day = data.days.getDay(now);
68 ok(day.has(field), "Have a search count for the urlbar.");
69 let newCount = day.get(field);
70 is(newCount, oldCount + 1, "We recorded one new search.");
71
72 // We should record the default search engine if Telemetry is enabled.
73 let oldTelemetry = Services.prefs.getBoolPref("toolkit.telemetry.enabled");
74 Services.prefs.setBoolPref("toolkit.telemetry.enabled", true);
75
76 m = provider.getMeasurement("engines", 1);
77 yield provider.collectDailyData();
78 data = yield m.getValues();
79
80 ok(data.days.hasDay(now), "Have engines data when Telemetry is enabled.");
81 day = data.days.getDay(now);
82 ok(day.has("default"), "We have default engine data.");
83 is(day.get("default"), "google", "The default engine is reported properly.");
84
85 // Restore.
86 Services.prefs.setBoolPref("toolkit.telemetry.enabled", oldTelemetry);
87
88 gBrowser.removeTab(tab);
89 });

mercurial