|
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 }); |