Bug 840177 - Part 5: Add observer notification for keyword searches; r=gavin

The intent is for this to be captured by Firefox Health Report.
This commit is contained in:
Gregory Szorc 2013-02-14 14:47:47 -08:00
parent c0a743349c
commit c97c97b484
3 changed files with 44 additions and 0 deletions

View File

@ -383,6 +383,20 @@ NS_IMETHODIMP nsDefaultURIFixup::KeywordToURI(const nsACString& aKeyword,
return NS_ERROR_NOT_AVAILABLE;
}
// This notification is meant for Firefox Health Report so it
// can increment counts from the search engine. The assumption
// here is that this keyword/submission will eventually result
// in a search. Since we only generate a URI here, there is the
// possibility we'll increment the counter without actually
// incurring a search. A robust solution would involve currying
// the search engine's name through various function calls.
nsCOMPtr<nsIObserverService> obsSvc = mozilla::services::GetObserverService();
if (obsSvc) {
nsAutoString name;
defaultEngine->GetName(name);
obsSvc->NotifyObservers(nullptr, "keyword-search", name.get());
}
return submission->GetUri(aURI);
}
}

View File

@ -68,6 +68,7 @@ MOCHITEST_BROWSER_FILES = \
file_bug234628-11.html \
file_bug234628-11-child.xhtml \
file_bug234628-11-child.xhtml^headers^ \
browser_search_notification.js \
$(NULL)
include $(topsrcdir)/config/rules.mk

View File

@ -0,0 +1,29 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
waitForExplicitFinish();
let tab = gBrowser.addTab();
gBrowser.selectedTab = tab;
function observer(subject, topic, data) {
Services.obs.removeObserver(observer, "keyword-search");
is(topic, "keyword-search", "Got keyword-search notification");
let engine = Services.search.originalDefaultEngine;
ok(engine, "Have default search engine.");
is(engine.name, data, "Notification data is engine name.");
executeSoon(function cleanup() {
gBrowser.removeTab(tab);
finish();
});
}
Services.obs.addObserver(observer, "keyword-search", false);
gURLBar.value = "firefox health report";
gURLBar.handleCommand();
}