Chromium Code Reviews| Index: extensions/renderer/script_injection_manager.cc |
| diff --git a/extensions/renderer/script_injection_manager.cc b/extensions/renderer/script_injection_manager.cc |
| index 436c4d00a0fd7e5c1f7f61d0fdf71fac148be73d..47c9fca243b32e11ee96ae2e82737bbcfac09ba9 100644 |
| --- a/extensions/renderer/script_injection_manager.cc |
| +++ b/extensions/renderer/script_injection_manager.cc |
| @@ -41,10 +41,10 @@ class ScriptInjectionManager::RVOHelper : public content::RenderViewObserver { |
| private: |
| // RenderViewObserver implementation. |
| bool OnMessageReceived(const IPC::Message& message) override; |
| + void DidCreateNewDocument(blink::WebLocalFrame* frame) override; |
| void DidCreateDocumentElement(blink::WebLocalFrame* frame) override; |
| void DidFinishDocumentLoad(blink::WebLocalFrame* frame) override; |
| void DidFinishLoad(blink::WebLocalFrame* frame) override; |
| - void DidStartProvisionalLoad(blink::WebLocalFrame* frame) override; |
| void FrameDetached(blink::WebFrame* frame) override; |
| void OnDestruct() override; |
| @@ -99,6 +99,17 @@ bool ScriptInjectionManager::RVOHelper::OnMessageReceived( |
| return handled; |
| } |
| +void ScriptInjectionManager::RVOHelper::DidCreateNewDocument( |
| + blink::WebLocalFrame* frame) { |
| + // A new document is going to be shown, so invalidate the old document state. |
| + // Check that the frame's state is known before invalidating the frame, |
| + // because it is possible that a script injection was scheduled before the |
| + // page was loaded, e.g. by navigating to a javascript: URL before the page |
| + // has loaded. |
| + if (manager_->frame_statuses_.find(frame) != manager_->frame_statuses_.end()) |
| + InvalidateFrame(frame); |
|
not at google - send to devlin
2014/11/17 22:20:05
Let's just call InvalidateFrame(frame) and forget
|
| +} |
| + |
| void ScriptInjectionManager::RVOHelper::DidCreateDocumentElement( |
| blink::WebLocalFrame* frame) { |
| manager_->InjectScripts(frame, UserScript::DOCUMENT_START); |
| @@ -137,12 +148,6 @@ void ScriptInjectionManager::RVOHelper::DidFinishLoad( |
| frame)); |
| } |
| -void ScriptInjectionManager::RVOHelper::DidStartProvisionalLoad( |
| - blink::WebLocalFrame* frame) { |
| - // We're starting a new load - invalidate. |
| - InvalidateFrame(frame); |
| -} |
| - |
| void ScriptInjectionManager::RVOHelper::FrameDetached(blink::WebFrame* frame) { |
| // The frame is closing - invalidate. |
| InvalidateFrame(frame); |