Index: extensions/renderer/dispatcher.cc |
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc |
index a8a2b3ed3076b3dc1d3405b6025a9c2025ce59cc..8a7cc96a0a2c642162db8a72ec8a856e532669d8 100644 |
--- a/extensions/renderer/dispatcher.cc |
+++ b/extensions/renderer/dispatcher.cc |
@@ -500,6 +500,31 @@ void Dispatcher::DidCreateDocumentElement(blink::WebLocalFrame* frame) { |
} |
} |
+void Dispatcher::AfterDidCreateDocumentElement( |
+ content::RenderFrame* render_frame) { |
+ ExtensionFrameHelper* frame_helper = ExtensionFrameHelper::Get(render_frame); |
+ if (!frame_helper) |
+ return; // The frame is invisible to extensions. |
+ |
+ base::WeakPtr<ExtensionFrameHelper> frame_helper_weak = |
+ frame_helper->AsWeakPtr(); |
+ |
+ script_injection_manager_->AfterDidCreateDocumentElement(render_frame); |
Devlin
2016/02/12 22:21:56
Would it make sense to have the script injection m
robwu
2016/02/12 22:37:13
I avoided that, because ScriptInjectionManager nee
Devlin
2016/02/12 22:51:01
What's the optimization there? Just avoiding crea
robwu
2016/02/12 23:24:49
This happens (which seems not that expensive):
1.
Devlin
2016/02/12 23:42:24
That sounds reasonable to me. If we're going to s
|
+ if (!frame_helper_weak.get()) |
+ return; // Frame was destroyed by injected user script. |
+ |
+ frame_helper->AfterDidCreateDocumentElement(); |
+} |
+ |
+void Dispatcher::AfterDidFinishDocumentLoad( |
+ content::RenderFrame* render_frame) { |
+ if (!ExtensionFrameHelper::Get(render_frame)) |
+ return; // The frame is invisible to extensions. |
+ |
+ script_injection_manager_->AfterDidFinishDocumentLoad(render_frame); |
+ // The frame might be destroyed by the injected user script at this point. |
+} |
+ |
void Dispatcher::OnExtensionResponse(int request_id, |
bool success, |
const base::ListValue& response, |