diff options
author | chase@chromium.org <chase@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-12 01:02:01 +0000 |
---|---|---|
committer | chase@chromium.org <chase@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-12 01:02:01 +0000 |
commit | 180d0acbeadc434f7a855442e5f4a2c7bcc89d5a (patch) | |
tree | dcd83a199567dad52f67a313edb3139b67956aa6 /chrome | |
parent | fac41f0f15d55fae67d6a1a149585c1682cc9bf9 (diff) | |
download | chromium_src-180d0acbeadc434f7a855442e5f4a2c7bcc89d5a.zip chromium_src-180d0acbeadc434f7a855442e5f4a2c7bcc89d5a.tar.gz chromium_src-180d0acbeadc434f7a855442e5f4a2c7bcc89d5a.tar.bz2 |
Add a RWH_TabSwitchPaintDuration histogram.
The RWH_TabSwitchPaintDuration histogram calculates
the amount of time it took after a particular view was
selected for it to be fully painted.
Previous versions of this patch included modifications
to the tab switching test. Those are blocked on setting
up a new builder for accurate measurement and are now
removed from this CL.
BUG=4104
TEST=none
Commit: http://src.chromium.org/viewvc/chrome?view=rev&revision=31632
Revert: http://src.chromium.org/viewvc/chrome?view=rev&revision=31645
Commit: http://src.chromium.org/viewvc/chrome?view=rev&revision=31679
Revert: http://src.chromium.org/viewvc/chrome?view=rev&revision=31683
Review URL: http://codereview.chromium.org/378038
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31747 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
6 files changed, 42 insertions, 0 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_gtk.cc b/chrome/browser/renderer_host/render_widget_host_view_gtk.cc index b54aba3..b19cb46 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_gtk.cc +++ b/chrome/browser/renderer_host/render_widget_host_view_gtk.cc @@ -376,6 +376,8 @@ void RenderWidgetHostViewGtk::DidBecomeSelected() { if (!is_hidden_) return; + if (tab_switch_paint_time_.is_null()) + tab_switch_paint_time_ = base::TimeTicks::Now(); is_hidden_ = false; host_->WasRestored(); } @@ -595,6 +597,15 @@ void RenderWidgetHostViewGtk::Paint(const gfx::Rect& damage_rect) { // time the backing store is NULL... whiteout_start_time_ = base::TimeTicks(); } + if (!tab_switch_paint_time_.is_null()) { + base::TimeDelta tab_switch_paint_duration = base::TimeTicks::Now() - + tab_switch_paint_time_; + UMA_HISTOGRAM_TIMES("MPArch.RWH_TabSwitchPaintDuration", + tab_switch_paint_duration); + // Reset tab_switch_paint_time_ to 0 so future tab selections are + // recorded. + tab_switch_paint_time_ = base::TimeTicks(); + } } else { if (window) gdk_window_clear(window); diff --git a/chrome/browser/renderer_host/render_widget_host_view_gtk.h b/chrome/browser/renderer_host/render_widget_host_view_gtk.h index c246581..94f4f1a 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_gtk.h +++ b/chrome/browser/renderer_host/render_widget_host_view_gtk.h @@ -120,6 +120,9 @@ class RenderWidgetHostViewGtk : public RenderWidgetHostView { // value returns true for is_null() if we are not recording whiteout times. base::TimeTicks whiteout_start_time_; + // The time it took after this view was selected for it to be fully painted. + base::TimeTicks tab_switch_paint_time_; + // Variables used only for popups -------------------------------------------- // Our parent widget. RenderWidgetHostView* parent_host_view_; diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.h b/chrome/browser/renderer_host/render_widget_host_view_mac.h index 9d6ffbb..67c8abf 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_mac.h +++ b/chrome/browser/renderer_host/render_widget_host_view_mac.h @@ -140,6 +140,9 @@ class RenderWidgetHostViewMac : public RenderWidgetHostView { // value returns true for is_null() if we are not recording whiteout times. base::TimeTicks whiteout_start_time_; + // The time it took after this view was selected for it to be fully painted. + base::TimeTicks tab_switch_paint_time_; + // Variables used by our implementaion of the NSTextInput protocol. // An input method of Mac calls the methods of this protocol not only to // notify an application of its status, but also to retrieve the status of diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.mm b/chrome/browser/renderer_host/render_widget_host_view_mac.mm index 82720be..d043a52 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_mac.mm +++ b/chrome/browser/renderer_host/render_widget_host_view_mac.mm @@ -118,6 +118,8 @@ void RenderWidgetHostViewMac::DidBecomeSelected() { if (!is_hidden_) return; + if (tab_switch_paint_time_.is_null()) + tab_switch_paint_time_ = base::TimeTicks::Now(); is_hidden_ = false; render_widget_host_->WasRestored(); } @@ -823,6 +825,15 @@ void RenderWidgetHostViewMac::SetBackground(const SkBitmap& background) { // time the backing store is NULL... renderWidgetHostView_->whiteout_start_time_ = base::TimeTicks(); } + if (!renderWidgetHostView_->tab_switch_paint_time_.is_null()) { + base::TimeDelta tab_switch_paint_duration = base::TimeTicks::Now() - + renderWidgetHostView_->tab_switch_paint_time_; + UMA_HISTOGRAM_TIMES("MPArch.RWH_TabSwitchPaintDuration", + tab_switch_paint_duration); + // Reset tab_switch_paint_time_ to 0 so future tab selections are + // recorded. + renderWidgetHostView_->tab_switch_paint_time_ = base::TimeTicks(); + } } else { [[NSColor whiteColor] set]; NSRectFill(dirtyRect); diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.cc b/chrome/browser/renderer_host/render_widget_host_view_win.cc index f97d249..d01c410 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_win.cc +++ b/chrome/browser/renderer_host/render_widget_host_view_win.cc @@ -255,6 +255,8 @@ void RenderWidgetHostViewWin::DidBecomeSelected() { if (!is_hidden_) return; + if (tab_switch_paint_time_.is_null()) + tab_switch_paint_time_ = TimeTicks::Now(); is_hidden_ = false; EnsureTooltip(); render_widget_host_->WasRestored(); @@ -793,6 +795,15 @@ void RenderWidgetHostViewWin::OnPaint(HDC dc) { // time the backing store is NULL... whiteout_start_time_ = TimeTicks(); } + if (!tab_switch_paint_time_.is_null()) { + TimeDelta tab_switch_paint_duration = TimeTicks::Now() - + tab_switch_paint_time_; + UMA_HISTOGRAM_TIMES("MPArch.RWH_TabSwitchPaintDuration", + tab_switch_paint_duration); + // Reset tab_switch_paint_time_ to 0 so future tab selections are + // recorded. + tab_switch_paint_time_ = TimeTicks(); + } } else { DrawBackground(paint_dc.m_ps.rcPaint, &paint_dc); if (whiteout_start_time_.is_null()) diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.h b/chrome/browser/renderer_host/render_widget_host_view_win.h index 68db850..4601ec2 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_win.h +++ b/chrome/browser/renderer_host/render_widget_host_view_win.h @@ -290,6 +290,9 @@ class RenderWidgetHostViewWin : // until that bug is fixed. bool renderer_accessible_; + // The time it took after this view was selected for it to be fully painted. + base::TimeTicks tab_switch_paint_time_; + DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewWin); }; |