summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjohnnyg@chromium.org <johnnyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-16 16:54:10 +0000
committerjohnnyg@chromium.org <johnnyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-16 16:54:10 +0000
commitab9eabac05d203dcf424a8f1af646511ea3b305a (patch)
tree61b2001e1c965bd4fad13319c7049a4d33abb837
parentf9fa12f17d64eb13cec69fc45377b04c4f1a42e7 (diff)
downloadchromium_src-ab9eabac05d203dcf424a8f1af646511ea3b305a.zip
chromium_src-ab9eabac05d203dcf424a8f1af646511ea3b305a.tar.gz
chromium_src-ab9eabac05d203dcf424a8f1af646511ea3b305a.tar.bz2
Send cross frame accesses which WebKit reports to UMA.
BUG=none TEST=none Review URL: http://codereview.chromium.org/668129 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41733 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/renderer/render_view.cc25
-rw-r--r--chrome/renderer/render_view.h8
2 files changed, 32 insertions, 1 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 4efea99..473044d 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -325,7 +325,9 @@ RenderView::RenderView(RenderThreadBase* render_thread,
webkit_preferences_(webkit_preferences),
session_storage_namespace_id_(session_storage_namespace_id),
ALLOW_THIS_IN_INITIALIZER_LIST(text_translator_(this)),
- ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)) {
+ ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)),
+ cross_origin_access_count_(0),
+ same_origin_access_count_(0) {
ClearBlockedContentSettings();
page_translator_.reset(new PageTranslator(&text_translator_, this));
}
@@ -2886,6 +2888,17 @@ void RenderView::didCreateIsolatedScriptContext(WebFrame* frame) {
EventBindings::HandleContextCreated(frame, true);
}
+void RenderView::didMakeCrossFrameAccess(WebFrame* frame,
+ bool cross_origin,
+ const WebString& property,
+ unsigned long long event_id) {
+ // TODO(johnnyg): track the individual properties and repeat event_ids.
+ if (cross_origin)
+ cross_origin_access_count_++;
+ else
+ same_origin_access_count_++;
+}
+
void RenderView::didChangeContentsSize(WebFrame* frame, const WebSize& size) {
CheckPreferredSize();
}
@@ -3824,6 +3837,10 @@ void RenderView::OnClosePage(const ViewMsg_ClosePage_Params& params) {
}
webview()->dispatchUnloadEvent();
+ // Reset stats
+ cross_origin_access_count_ = 0;
+ same_origin_access_count_ = 0;
+
// Just echo back the params in the ACK.
Send(new ViewHostMsg_ClosePage_ACK(routing_id_, params));
}
@@ -4131,6 +4148,12 @@ void RenderView::DumpLoadHistograms() const {
UMA_HISTOGRAM_ENUMERATION("Renderer4.LoadType", load_type,
NavigationState::kLoadTypeMax);
+ // Site isolation metrics.
+ UMA_HISTOGRAM_COUNTS("SiteIsolation.PageLoadsWithCrossSiteFrameAccess",
+ cross_origin_access_count_);
+ UMA_HISTOGRAM_COUNTS("SiteIsolation.PageLoadsWithSameSiteFrameAccess",
+ same_origin_access_count_);
+
Time request = navigation_state->request_time();
Time start = navigation_state->start_load_time();
Time commit = navigation_state->commit_load_time();
diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h
index 4478354..01f9cff 100644
--- a/chrome/renderer/render_view.h
+++ b/chrome/renderer/render_view.h
@@ -376,6 +376,9 @@ class RenderView : public RenderWidget,
virtual void didCreateScriptContext(WebKit::WebFrame* frame);
virtual void didDestroyScriptContext(WebKit::WebFrame* frame);
virtual void didCreateIsolatedScriptContext(WebKit::WebFrame* frame);
+ virtual void didMakeCrossFrameAccess(
+ WebKit::WebFrame* frame, bool crossOrigin, const WebKit::WebString& name,
+ unsigned long long event_id);
virtual void didChangeContentsSize(
WebKit::WebFrame* frame, const WebKit::WebSize& size);
virtual void didChangeScrollOffset(WebKit::WebFrame* frame);
@@ -1168,6 +1171,11 @@ class RenderView : public RenderWidget,
RendererWebCookieJarImpl cookie_jar_;
+ // Site isolation metrics flags. These are per-page-load counts, reset to 0
+ // in OnClosePage.
+ int cross_origin_access_count_;
+ int same_origin_access_count_;
+
DISALLOW_COPY_AND_ASSIGN(RenderView);
};