| 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..0e234d0906bbc96895e8bc7b56a05d2fec8d2dc6 100644 | 
| --- a/extensions/renderer/script_injection_manager.cc | 
| +++ b/extensions/renderer/script_injection_manager.cc | 
| @@ -88,6 +88,8 @@ class ScriptInjectionManager::RFOHelper : public content::RenderFrameObserver { | 
| // document_idle. | 
| void RunIdle(); | 
|  | 
| +  void StartInjectScripts(UserScript::RunLocation run_location); | 
| + | 
| // Indicate that the frame is no longer valid because it is starting | 
| // a new load or closing. | 
| void InvalidateAndResetFrame(); | 
| @@ -136,7 +138,10 @@ void ScriptInjectionManager::RFOHelper::DidCreateNewDocument() { | 
| } | 
|  | 
| void ScriptInjectionManager::RFOHelper::DidCreateDocumentElement() { | 
| -  manager_->StartInjectScripts(render_frame(), UserScript::DOCUMENT_START); | 
| +  ExtensionFrameHelper::Get(render_frame()) | 
| +      ->ScheduleAtDocumentStart( | 
| +          base::Bind(&ScriptInjectionManager::RFOHelper::StartInjectScripts, | 
| +                     weak_factory_.GetWeakPtr(), UserScript::DOCUMENT_START)); | 
| } | 
|  | 
| void ScriptInjectionManager::RFOHelper::DidFailProvisionalLoad( | 
| @@ -162,7 +167,11 @@ void ScriptInjectionManager::RFOHelper::DidFailProvisionalLoad( | 
|  | 
| void ScriptInjectionManager::RFOHelper::DidFinishDocumentLoad() { | 
| DCHECK(content::RenderThread::Get()); | 
| -  manager_->StartInjectScripts(render_frame(), UserScript::DOCUMENT_END); | 
| +  ExtensionFrameHelper::Get(render_frame()) | 
| +      ->ScheduleAtDocumentEnd( | 
| +          base::Bind(&ScriptInjectionManager::RFOHelper::StartInjectScripts, | 
| +                     weak_factory_.GetWeakPtr(), UserScript::DOCUMENT_END)); | 
| + | 
| // 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 | 
| @@ -231,6 +240,11 @@ void ScriptInjectionManager::RFOHelper::RunIdle() { | 
| } | 
| } | 
|  | 
| +void ScriptInjectionManager::RFOHelper::StartInjectScripts( | 
| +    UserScript::RunLocation run_location) { | 
| +  manager_->StartInjectScripts(render_frame(), run_location); | 
| +} | 
| + | 
| void ScriptInjectionManager::RFOHelper::InvalidateAndResetFrame() { | 
| // Invalidate any pending idle injections, and reset the frame inject on idle. | 
| weak_factory_.InvalidateWeakPtrs(); | 
|  |