diff options
author | johnnyg@chromium.org <johnnyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-16 16:54:10 +0000 |
---|---|---|
committer | johnnyg@chromium.org <johnnyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-16 16:54:10 +0000 |
commit | ab9eabac05d203dcf424a8f1af646511ea3b305a (patch) | |
tree | 61b2001e1c965bd4fad13319c7049a4d33abb837 | |
parent | f9fa12f17d64eb13cec69fc45377b04c4f1a42e7 (diff) | |
download | chromium_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.cc | 25 | ||||
-rw-r--r-- | chrome/renderer/render_view.h | 8 |
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); }; |