Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1967)

Unified Diff: chrome/browser/google/google_search_counter.cc

Issue 342053002: Add UMA metrics for Android Chrome Google Search. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/google/google_search_counter.cc
diff --git a/chrome/browser/google/google_search_counter.cc b/chrome/browser/google/google_search_counter.cc
index ecf670c87bb36916af32af0739f62b6559c7e703..0963df4b814306138f91c9189daf10bd7e267ecf 100644
--- a/chrome/browser/google/google_search_counter.cc
+++ b/chrome/browser/google/google_search_counter.cc
@@ -12,29 +12,6 @@
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_types.h"
-namespace {
-
-// Returns true iff |entry| represents a Google search from the Omnibox.
-// This method assumes that we have already verified that |entry|'s URL is a
-// Google search URL.
-bool IsOmniboxGoogleSearchNavigation(const content::NavigationEntry& entry) {
- const content::PageTransition stripped_transition =
- PageTransitionStripQualifier(entry.GetTransitionType());
- DCHECK(google_util::IsGoogleSearchUrl(entry.GetURL()));
- return stripped_transition == content::PAGE_TRANSITION_GENERATED;
-}
-
-// Returns true iff |entry| represents a Google search from the Google Search
-// App. This method assumes that we have already verified that |entry|'s URL is
-// a Google search URL.
-bool IsSearchAppGoogleSearchNavigation(const content::NavigationEntry& entry) {
- DCHECK(google_util::IsGoogleSearchUrl(entry.GetURL()));
- return entry.GetURL().query().find("source=search_app") !=
- std::string::npos;
-}
-
-} // namespace
-
// static
void GoogleSearchCounter::RegisterForNotifications() {
GoogleSearchCounter::GetInstance()->RegisterForNotificationsInternal();
@@ -45,6 +22,22 @@ GoogleSearchCounter* GoogleSearchCounter::GetInstance() {
return Singleton<GoogleSearchCounter>::get();
}
+bool GoogleSearchCounter::ShouldRecordCommittedDetails(
+ const content::NotificationDetails& details) const {
+ const content::LoadCommittedDetails* commit =
+ content::Details<content::LoadCommittedDetails>(details).ptr();
+ const content::NavigationEntry& entry = *commit->entry;
+
+ // First see if this is a Google search URL at all.
+ if (!google_util::IsGoogleSearchUrl(entry.GetURL()))
+ return false;
+
+ // Avoid double counting. Sometimes, when a navigation entry is committed, we
+ // receive two notifications events for the same page.
Peter Kasting 2014/06/19 21:20:32 Nit: notifications events -> notifications/notific
kmadhusu 2014/06/19 22:52:49 Done.
Peter Kasting 2014/06/19 22:58:05 :( This would normally cause me to reject this pa
kmadhusu 2014/06/19 23:21:45 My server side changes are still in prototype stag
kmadhusu 2014/06/20 01:15:07 As we discussed offline, I removed this dupe check
+ return commit->previous_url.is_valid() &&
+ entry.GetURL() != commit->previous_url;
+}
+
GoogleSearchCounter::GoogleSearchCounter()
: search_metrics_(new GoogleSearchMetrics) {
}
@@ -55,27 +48,15 @@ GoogleSearchCounter::~GoogleSearchCounter() {
void GoogleSearchCounter::ProcessCommittedEntry(
const content::NotificationSource& source,
const content::NotificationDetails& details) {
+ // Note that GoogleSearchMetrics logs metrics through UMA, which will only
+ // transmit these counts to the server if the user has opted into sending
+ // usage stats.
const content::LoadCommittedDetails* commit =
content::Details<content::LoadCommittedDetails>(details).ptr();
const content::NavigationEntry& entry = *commit->entry;
-
- // First see if this is a Google search URL at all.
- if (!google_util::IsGoogleSearchUrl(entry.GetURL()))
- return;
-
- // If the commit is a GENERATED commit with a Google search URL, we know it's
- // an Omnibox search.
- if (IsOmniboxGoogleSearchNavigation(entry)) {
- // Note that GoogleSearchMetrics logs metrics through UMA, which will only
- // transmit these counts to the server if the user has opted into sending
- // usage stats.
- search_metrics_->RecordGoogleSearch(GoogleSearchMetrics::AP_OMNIBOX);
- } else if (IsSearchAppGoogleSearchNavigation(entry)) {
- search_metrics_->RecordGoogleSearch(GoogleSearchMetrics::AP_SEARCH_APP);
- } else {
- // For all other cases that we have not yet implemented or care to measure,
- // we log a generic "catch-all" metric.
- search_metrics_->RecordGoogleSearch(GoogleSearchMetrics::AP_OTHER);
+ if (ShouldRecordCommittedDetails(details)) {
+ search_metrics_->RecordGoogleSearch(
+ google_util::GetGoogleSearchAccessPointForNavEntry(entry));
}
}

Powered by Google App Engine
This is Rietveld 408576698