summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authordarin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-28 20:50:12 +0000
committerdarin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-28 20:50:12 +0000
commitaeab57ea8560065d6c513fcd46bb43e1bfbfd7a6 (patch)
treea63f2d36e86361d5c27122a6d6ef4098b755d7d9 /chrome/renderer
parente115558691eb08608fad56bb32f40265fdfa4ac5 (diff)
downloadchromium_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.cc7
-rw-r--r--chrome/renderer/render_view.h2
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_;