diff options
| author | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-28 20:50:12 +0000 |
|---|---|---|
| committer | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-28 20:50:12 +0000 |
| commit | aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6 (patch) | |
| tree | a63f2d36e86361d5c27122a6d6ef4098b755d7d9 /chrome/renderer | |
| parent | e115558691eb08608fad56bb32f40265fdfa4ac5 (diff) | |
| download | chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.zip chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.tar.gz chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.tar.bz2 | |
Simplify OneShotTimer and RepeatingTimer. Fix up all consumers.
Major changes:
OneShotTimer and RepeatingTimer become template classes that no longer require
a Task or a Timer object. They just use PostDelayedTask. Under the hood that
still uses a Timer object.
The API is much simpler for consumers as they now no longer need to worry about
allocating a Task or managing the lifetime of the object pointer held by the
Task.
I added some new unit tests to timer_unittest.cc to cover the API.
I preserved the old TimerManager / Timer API for now, but I plan to soon kill
it.
R=brettw
BUG=1346553
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1502 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
| -rw-r--r-- | chrome/renderer/render_view.cc | 7 | ||||
| -rw-r--r-- | chrome/renderer/render_view.h | 2 |
2 files changed, 4 insertions, 5 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index af11413..8d91e58 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -140,7 +140,6 @@ RenderView::RenderView() last_page_id_sent_to_browser_(-1), last_indexed_page_id_(-1), method_factory_(this), - nav_state_sync_timer_(kDelayForNavigationSync), opened_by_user_gesture_(true), enable_dom_automation_(false), enable_dom_ui_bindings_(false), @@ -153,8 +152,6 @@ RenderView::RenderView() disable_popup_blocking_(false), has_unload_listener_(false) { resource_dispatcher_ = new ResourceDispatcher(this); - nav_state_sync_timer_.set_task( - method_factory_.NewRunnableMethod(&RenderView::SyncNavigationState)); #ifdef CHROME_PERSONALIZATION personalization_ = Personalization::CreateRendererPersonalization(); #endif @@ -2190,7 +2187,9 @@ int RenderView::GetHistoryForwardListCount() { } void RenderView::OnNavStateChanged(WebView* webview) { - nav_state_sync_timer_.Start(); + if (!nav_state_sync_timer_.IsRunning()) + nav_state_sync_timer_.Start(kDelayForNavigationSync, this, + &RenderView::SyncNavigationState); } void RenderView::SetTooltipText(WebView* webview, diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index 6ac8f0c..f4afb8f 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -574,7 +574,7 @@ class RenderView : public RenderWidget, public WebViewDelegate, ScopedRunnableMethodFactory<RenderView> method_factory_; // Timer used to delay the updating of nav state (see SyncNavigationState). - OneShotTimer nav_state_sync_timer_; + base::OneShotTimer<RenderView> nav_state_sync_timer_; typedef std::vector<WebPluginDelegateProxy*> PluginDelegateList; PluginDelegateList plugin_delegates_; |
