summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorbeaudoin@chromium.org <beaudoin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-14 00:27:13 +0000
committerbeaudoin@chromium.org <beaudoin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-14 00:27:13 +0000
commitc74876d2cc8be84a4b4c4acdf2497d17716e1d3a (patch)
tree466052018f7a82e158f1e86317e54b378f75285e /chrome/renderer
parent94730a76ed35eeeddf23fcf4991e44b3dc0b684a (diff)
downloadchromium_src-c74876d2cc8be84a4b4c4acdf2497d17716e1d3a.zip
chromium_src-c74876d2cc8be84a4b4c4acdf2497d17716e1d3a.tar.gz
chromium_src-c74876d2cc8be84a4b4c4acdf2497d17716e1d3a.tar.bz2
[Most Visited] Log per-provider impressions to UMA.
Ensures every thumbnail iframe logs in UMA its position in a histogram that matches the name of the suggestion provider. BUG=None TEST=None Review URL: https://codereview.chromium.org/114413003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240818 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/resources/extensions/searchbox_api.js7
-rw-r--r--chrome/renderer/searchbox/searchbox.cc6
-rw-r--r--chrome/renderer/searchbox/searchbox.h3
-rw-r--r--chrome/renderer/searchbox/searchbox_extension.cc21
4 files changed, 37 insertions, 0 deletions
diff --git a/chrome/renderer/resources/extensions/searchbox_api.js b/chrome/renderer/resources/extensions/searchbox_api.js
index 5b2d441..bba7b28 100644
--- a/chrome/renderer/resources/extensions/searchbox_api.js
+++ b/chrome/renderer/resources/extensions/searchbox_api.js
@@ -87,6 +87,7 @@ if (!chrome.embeddedSearch) {
native function GetThemeBackgroundInfo();
native function IsInputInProgress();
native function LogEvent();
+ native function LogImpression();
native function NavigateContentWindow();
native function UndoAllMostVisitedDeletions();
native function UndoMostVisitedDeletion();
@@ -134,6 +135,12 @@ if (!chrome.embeddedSearch) {
LogEvent(histogram_name);
};
+ // This method is restricted to chrome-search://most-visited pages by
+ // checking the invoking context's origin in searchbox_extension.cc.
+ this.logImpression = function(position, provider) {
+ LogImpression(position, provider);
+ };
+
this.navigateContentWindow = function(destination, disposition) {
NavigateContentWindow(destination, disposition);
};
diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc
index cfd98fe..8fa87b4 100644
--- a/chrome/renderer/searchbox/searchbox.cc
+++ b/chrome/renderer/searchbox/searchbox.cc
@@ -162,6 +162,12 @@ void SearchBox::LogEvent(NTPLoggingEventType event) {
render_view()->GetRoutingID(), render_view()->GetPageId(), event));
}
+void SearchBox::LogImpression(int position, const base::string16& provider) {
+ render_view()->Send(new ChromeViewHostMsg_LogImpression(
+ render_view()->GetRoutingID(), render_view()->GetPageId(), position,
+ provider));
+}
+
void SearchBox::CheckIsUserSignedInToChromeAs(const base::string16& identity) {
render_view()->Send(new ChromeViewHostMsg_ChromeIdentityCheck(
render_view()->GetRoutingID(), render_view()->GetPageId(), identity));
diff --git a/chrome/renderer/searchbox/searchbox.h b/chrome/renderer/searchbox/searchbox.h
index 77a2f9a..4c6c4e5 100644
--- a/chrome/renderer/searchbox/searchbox.h
+++ b/chrome/renderer/searchbox/searchbox.h
@@ -31,6 +31,9 @@ class SearchBox : public content::RenderViewObserver,
// Sends ChromeViewHostMsg_LogEvent to the browser.
void LogEvent(NTPLoggingEventType event);
+ // Sends ChromeViewHostMsg_LogImpression to the browser.
+ void LogImpression(int position, const base::string16& provider);
+
// Sends ChromeViewHostMsg_ChromeIdentityCheck to the browser.
void CheckIsUserSignedInToChromeAs(const base::string16& identity);
diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
index 19bc48b..4aba699 100644
--- a/chrome/renderer/searchbox/searchbox_extension.cc
+++ b/chrome/renderer/searchbox/searchbox_extension.cc
@@ -404,6 +404,9 @@ class SearchBoxExtensionWrapper : public v8::Extension {
// Logs information from the iframes/titles on the NTP.
static void LogEvent(const v8::FunctionCallbackInfo<v8::Value>& args);
+ // Logs an impression on one of the Most Visited tile on the NTP.
+ static void LogImpression(const v8::FunctionCallbackInfo<v8::Value>& args);
+
// Navigates the window to a URL represented by either a URL string or a
// restricted ID.
static void NavigateContentWindow(
@@ -560,6 +563,8 @@ SearchBoxExtensionWrapper::GetNativeFunctionTemplate(
return v8::FunctionTemplate::New(isolate, IsKeyCaptureEnabled);
if (name->Equals(v8::String::NewFromUtf8(isolate, "LogEvent")))
return v8::FunctionTemplate::New(isolate, LogEvent);
+ if (name->Equals(v8::String::NewFromUtf8(isolate, "LogImpression")))
+ return v8::FunctionTemplate::New(isolate, LogImpression);
if (name->Equals(v8::String::NewFromUtf8(isolate, "NavigateContentWindow")))
return v8::FunctionTemplate::New(isolate, NavigateContentWindow);
if (name->Equals(v8::String::NewFromUtf8(isolate, "Paste")))
@@ -934,6 +939,22 @@ void SearchBoxExtensionWrapper::LogEvent(
}
// static
+void SearchBoxExtensionWrapper::LogImpression(
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
+ content::RenderView* render_view = GetRenderViewWithCheckedOrigin(
+ GURL(chrome::kChromeSearchMostVisitedUrl));
+ if (!render_view) return;
+
+ if (args.Length() < 2 || !args[0]->IsNumber() || args[1]->IsUndefined())
+ return;
+
+ DVLOG(1) << render_view << " LogImpression";
+
+ SearchBox::Get(render_view)->LogImpression(args[0]->IntegerValue(),
+ V8ValueToUTF16(args[1]));
+}
+
+// static
void SearchBoxExtensionWrapper::NavigateContentWindow(
const v8::FunctionCallbackInfo<v8::Value>& args) {
content::RenderView* render_view = GetRenderView();