From 35ba4532c5aedfdb348b51129103695379d1c89b Mon Sep 17 00:00:00 2001 From: Gregory Szorc Date: Wed, 13 Feb 2013 14:33:24 -0800 Subject: [PATCH] Bug 840177 - Part 4: Record search bar searches in Firefox Health Report; r=gavin --- browser/components/search/content/search.xml | 1 + browser/components/search/test/Makefile.in | 1 + .../search/test/browser_healthreport.js | 96 +++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 browser/components/search/test/browser_healthreport.js diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index 5e4cf34f2c0c..a82ba6a73abe 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -455,6 +455,7 @@ diff --git a/browser/components/search/test/Makefile.in b/browser/components/search/test/Makefile.in index cd7e0024c6ab..a9fa3f84c3b6 100644 --- a/browser/components/search/test/Makefile.in +++ b/browser/components/search/test/Makefile.in @@ -15,6 +15,7 @@ MOCHITEST_BROWSER_FILES = \ browser_405664.js \ browser_addEngine.js \ browser_contextmenu.js \ + browser_healthreport.js \ browser_private_search_perwindowpb.js \ testEngine.xml \ testEngine_mozsearch.xml \ diff --git a/browser/components/search/test/browser_healthreport.js b/browser/components/search/test/browser_healthreport.js new file mode 100644 index 000000000000..e97a15844e32 --- /dev/null +++ b/browser/components/search/test/browser_healthreport.js @@ -0,0 +1,96 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +function test() { + waitForExplicitFinish(); + + if (!("@mozilla.org/datareporting/service;1" in Components.classes)) { + // We need a test or else we'll be marked as failure. + ok(true, "Firefox Health Report is not enabled."); + finish(); + return; + } + + function testFHR() { + let reporter = Components.classes["@mozilla.org/datareporting/service;1"] + .getService() + .wrappedJSObject + .healthReporter; + ok(reporter, "Health Reporter available."); + reporter.onInit().then(function onInit() { + let provider = reporter.getProvider("org.mozilla.searches"); + let m = provider.getMeasurement("counts", 1); + + m.getValues().then(function onData(data) { + let now = new Date(); + let oldCount = 0; + + // Foo engine goes into "other" bucket. + let field = "other.searchbar"; + + if (data.days.hasDay(now)) { + let day = data.days.getDay(now); + if (day.has(field)) { + oldCount = day.get(field); + } + } + + // Now perform a search and ensure the count is incremented. + let tab = gBrowser.addTab(); + gBrowser.selectedTab = tab; + let searchBar = BrowserSearch.searchBar; + + searchBar.value = "firefox health report"; + searchBar.focus(); + + function afterSearch() { + searchBar.value = ""; + gBrowser.removeTab(tab); + + m.getValues().then(function onData(data) { + ok(data.days.hasDay(now), "Have data for today."); + let day = data.days.getDay(now); + + is(day.get(field), oldCount + 1, "Performing a search increments FHR count by 1."); + + let engine = Services.search.getEngineByName("Foo"); + Services.search.removeEngine(engine); + }); + } + + EventUtils.synthesizeKey("VK_RETURN", {}); + executeSoon(afterSearch); + }); + }); + } + + function observer(subject, topic, data) { + switch (data) { + case "engine-added": + let engine = Services.search.getEngineByName("Foo"); + ok(engine, "Engine was added."); + Services.search.currentEngine = engine; + break; + + case "engine-current": + is(Services.search.currentEngine.name, "Foo", "Current engine is Foo"); + testFHR(); + break; + + case "engine-removed": + Services.obs.removeObserver(observer, "browser-search-engine-modified"); + finish(); + break; + } + } + + Services.obs.addObserver(observer, "browser-search-engine-modified", false); + Services.search.addEngine("http://mochi.test:8888/browser/browser/components/search/test/testEngine.xml", + Ci.nsISearchEngine.DATA_XML, + "data:image/x-icon,%00", + false); + +} +