Index: extensions/renderer/script_injection_manager.cc |
diff --git a/extensions/renderer/script_injection_manager.cc b/extensions/renderer/script_injection_manager.cc |
index aa0f5d32b9aa35ee7c4cbb85461f79899b169c6e..d8a24ba8fa9a5e6af5cf71886a6a2f2dbcf03055 100644 |
--- a/extensions/renderer/script_injection_manager.cc |
+++ b/extensions/renderer/script_injection_manager.cc |
@@ -162,7 +162,10 @@ void ScriptInjectionManager::RFOHelper::DidFailProvisionalLoad( |
void ScriptInjectionManager::RFOHelper::DidFinishDocumentLoad() { |
DCHECK(content::RenderThread::Get()); |
+ base::WeakPtr<RFOHelper> weak_self = weak_factory_.GetWeakPtr(); |
manager_->StartInjectScripts(render_frame(), UserScript::DOCUMENT_END); |
+ if (!weak_self.get()) |
+ return; |
// We try to run idle in two places: here and DidFinishLoad. |
// DidFinishDocumentLoad() corresponds to completing the document's load, |
// whereas DidFinishLoad corresponds to completing the document and all |
@@ -172,8 +175,7 @@ void ScriptInjectionManager::RFOHelper::DidFinishDocumentLoad() { |
// triggered), then there's no reason to keep waiting. |
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
FROM_HERE, |
- base::Bind(&ScriptInjectionManager::RFOHelper::RunIdle, |
- weak_factory_.GetWeakPtr()), |
+ base::Bind(&ScriptInjectionManager::RFOHelper::RunIdle, weak_self), |
base::TimeDelta::FromMilliseconds(kScriptIdleTimeoutInMs)); |
} |