diff options
Diffstat (limited to 'chrome/renderer/extensions')
-rw-r--r-- | chrome/renderer/extensions/user_script_idle_scheduler.cc | 15 | ||||
-rw-r--r-- | chrome/renderer/extensions/user_script_idle_scheduler.h | 4 |
2 files changed, 11 insertions, 8 deletions
diff --git a/chrome/renderer/extensions/user_script_idle_scheduler.cc b/chrome/renderer/extensions/user_script_idle_scheduler.cc index 6dec8c4..c271bae 100644 --- a/chrome/renderer/extensions/user_script_idle_scheduler.cc +++ b/chrome/renderer/extensions/user_script_idle_scheduler.cc @@ -4,6 +4,7 @@ #include "chrome/renderer/extensions/user_script_idle_scheduler.h" +#include "base/bind.h" #include "base/message_loop.h" #include "chrome/common/extensions/extension_error_utils.h" #include "chrome/common/extensions/extension_messages.h" @@ -30,7 +31,7 @@ using WebKit::WebView; UserScriptIdleScheduler::UserScriptIdleScheduler( WebFrame* frame, ExtensionDispatcher* extension_dispatcher) - : ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), + : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), frame_(frame), has_run_(false), extension_dispatcher_(extension_dispatcher) { @@ -52,22 +53,24 @@ void UserScriptIdleScheduler::ExecuteCode( } void UserScriptIdleScheduler::DidFinishDocumentLoad() { - MessageLoop::current()->PostDelayedTask(FROM_HERE, - method_factory_.NewRunnableMethod(&UserScriptIdleScheduler::MaybeRun), + MessageLoop::current()->PostDelayedTask( + FROM_HERE, base::Bind(&UserScriptIdleScheduler::MaybeRun, + weak_factory_.GetWeakPtr()), kUserScriptIdleTimeoutMs); } void UserScriptIdleScheduler::DidFinishLoad() { // Ensure that running scripts does not keep any progress UI running. - MessageLoop::current()->PostTask(FROM_HERE, - method_factory_.NewRunnableMethod(&UserScriptIdleScheduler::MaybeRun)); + MessageLoop::current()->PostTask( + FROM_HERE, base::Bind(&UserScriptIdleScheduler::MaybeRun, + weak_factory_.GetWeakPtr())); } void UserScriptIdleScheduler::DidStartProvisionalLoad() { // The frame is navigating, so reset the state since we'll want to inject // scripts once the load finishes. has_run_ = false; - method_factory_.RevokeAll(); + weak_factory_.InvalidateWeakPtrs(); while (!pending_code_execution_queue_.empty()) pending_code_execution_queue_.pop(); } diff --git a/chrome/renderer/extensions/user_script_idle_scheduler.h b/chrome/renderer/extensions/user_script_idle_scheduler.h index 62258c6..782ce86 100644 --- a/chrome/renderer/extensions/user_script_idle_scheduler.h +++ b/chrome/renderer/extensions/user_script_idle_scheduler.h @@ -10,7 +10,7 @@ #include <vector> #include "base/memory/linked_ptr.h" -#include "base/task.h" +#include "base/memory/weak_ptr.h" class ExtensionDispatcher; class RenderView; @@ -60,7 +60,7 @@ class UserScriptIdleScheduler { bool GetAllChildFrames(WebKit::WebFrame* parent_frame, std::vector<WebKit::WebFrame*>* frames_vector) const; - ScopedRunnableMethodFactory<UserScriptIdleScheduler> method_factory_; + base::WeakPtrFactory<UserScriptIdleScheduler> weak_factory_; // The Frame we will run scripts in. WebKit::WebFrame* frame_; |