| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/renderer/script_injection_manager.h" | 5 #include "extensions/renderer/script_injection_manager.h" |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| 11 #include "content/public/renderer/render_frame.h" | 11 #include "content/public/renderer/render_frame.h" |
| 12 #include "content/public/renderer/render_frame_observer.h" | 12 #include "content/public/renderer/render_frame_observer.h" |
| 13 #include "content/public/renderer/render_thread.h" | 13 #include "content/public/renderer/render_thread.h" |
| 14 #include "extensions/common/extension.h" | 14 #include "extensions/common/extension.h" |
| 15 #include "extensions/common/extension_messages.h" | 15 #include "extensions/common/extension_messages.h" |
| 16 #include "extensions/common/extension_set.h" | 16 #include "extensions/common/extension_set.h" |
| 17 #include "extensions/renderer/extension_frame_helper.h" | 17 #include "extensions/renderer/extension_frame_helper.h" |
| 18 #include "extensions/renderer/extension_injection_host.h" | 18 #include "extensions/renderer/extension_injection_host.h" |
| 19 #include "extensions/renderer/programmatic_script_injector.h" | 19 #include "extensions/renderer/programmatic_script_injector.h" |
| 20 #include "extensions/renderer/renderer_extension_registry.h" |
| 20 #include "extensions/renderer/script_injection.h" | 21 #include "extensions/renderer/script_injection.h" |
| 21 #include "extensions/renderer/scripts_run_info.h" | 22 #include "extensions/renderer/scripts_run_info.h" |
| 22 #include "extensions/renderer/web_ui_injection_host.h" | 23 #include "extensions/renderer/web_ui_injection_host.h" |
| 23 #include "ipc/ipc_message_macros.h" | 24 #include "ipc/ipc_message_macros.h" |
| 24 #include "third_party/WebKit/public/web/WebDocument.h" | 25 #include "third_party/WebKit/public/web/WebDocument.h" |
| 25 #include "third_party/WebKit/public/web/WebFrame.h" | 26 #include "third_party/WebKit/public/web/WebFrame.h" |
| 26 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 27 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
| 27 #include "third_party/WebKit/public/web/WebView.h" | 28 #include "third_party/WebKit/public/web/WebView.h" |
| 28 #include "url/gurl.h" | 29 #include "url/gurl.h" |
| 29 | 30 |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 void ScriptInjectionManager::RFOHelper::InvalidateAndResetFrame() { | 209 void ScriptInjectionManager::RFOHelper::InvalidateAndResetFrame() { |
| 209 // Invalidate any pending idle injections, and reset the frame inject on idle. | 210 // Invalidate any pending idle injections, and reset the frame inject on idle. |
| 210 weak_factory_.InvalidateWeakPtrs(); | 211 weak_factory_.InvalidateWeakPtrs(); |
| 211 // We reset to inject on idle, because the frame can be reused (in the case of | 212 // We reset to inject on idle, because the frame can be reused (in the case of |
| 212 // navigation). | 213 // navigation). |
| 213 should_run_idle_ = true; | 214 should_run_idle_ = true; |
| 214 manager_->InvalidateForFrame(render_frame()); | 215 manager_->InvalidateForFrame(render_frame()); |
| 215 } | 216 } |
| 216 | 217 |
| 217 ScriptInjectionManager::ScriptInjectionManager( | 218 ScriptInjectionManager::ScriptInjectionManager( |
| 218 const ExtensionSet* extensions, | |
| 219 UserScriptSetManager* user_script_set_manager) | 219 UserScriptSetManager* user_script_set_manager) |
| 220 : extensions_(extensions), | 220 : user_script_set_manager_(user_script_set_manager), |
| 221 user_script_set_manager_(user_script_set_manager), | |
| 222 user_script_set_manager_observer_(this) { | 221 user_script_set_manager_observer_(this) { |
| 223 user_script_set_manager_observer_.Add(user_script_set_manager_); | 222 user_script_set_manager_observer_.Add(user_script_set_manager_); |
| 224 } | 223 } |
| 225 | 224 |
| 226 ScriptInjectionManager::~ScriptInjectionManager() { | 225 ScriptInjectionManager::~ScriptInjectionManager() { |
| 227 } | 226 } |
| 228 | 227 |
| 229 void ScriptInjectionManager::OnRenderFrameCreated( | 228 void ScriptInjectionManager::OnRenderFrameCreated( |
| 230 content::RenderFrame* render_frame) { | 229 content::RenderFrame* render_frame) { |
| 231 rfo_helpers_.push_back(new RFOHelper(render_frame, this)); | 230 rfo_helpers_.push_back(new RFOHelper(render_frame, this)); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 case ScriptInjection::INJECTION_FINISHED: | 393 case ScriptInjection::INJECTION_FINISHED: |
| 395 break; | 394 break; |
| 396 } | 395 } |
| 397 } | 396 } |
| 398 | 397 |
| 399 void ScriptInjectionManager::HandleExecuteCode( | 398 void ScriptInjectionManager::HandleExecuteCode( |
| 400 const ExtensionMsg_ExecuteCode_Params& params, | 399 const ExtensionMsg_ExecuteCode_Params& params, |
| 401 content::RenderFrame* render_frame) { | 400 content::RenderFrame* render_frame) { |
| 402 scoped_ptr<const InjectionHost> injection_host; | 401 scoped_ptr<const InjectionHost> injection_host; |
| 403 if (params.host_id.type() == HostID::EXTENSIONS) { | 402 if (params.host_id.type() == HostID::EXTENSIONS) { |
| 404 injection_host = ExtensionInjectionHost::Create(params.host_id.id(), | 403 injection_host = ExtensionInjectionHost::Create(params.host_id.id()); |
| 405 extensions_); | |
| 406 if (!injection_host) | 404 if (!injection_host) |
| 407 return; | 405 return; |
| 408 } else if (params.host_id.type() == HostID::WEBUI) { | 406 } else if (params.host_id.type() == HostID::WEBUI) { |
| 409 injection_host.reset( | 407 injection_host.reset( |
| 410 new WebUIInjectionHost(params.host_id)); | 408 new WebUIInjectionHost(params.host_id)); |
| 411 } | 409 } |
| 412 | 410 |
| 413 scoped_ptr<ScriptInjection> injection(new ScriptInjection( | 411 scoped_ptr<ScriptInjection> injection(new ScriptInjection( |
| 414 scoped_ptr<ScriptInjector>( | 412 scoped_ptr<ScriptInjector>( |
| 415 new ProgrammaticScriptInjector(params, render_frame)), | 413 new ProgrammaticScriptInjector(params, render_frame)), |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 ScriptsRunInfo scripts_run_info(injection->render_frame(), | 471 ScriptsRunInfo scripts_run_info(injection->render_frame(), |
| 474 UserScript::RUN_DEFERRED); | 472 UserScript::RUN_DEFERRED); |
| 475 ScriptInjection::InjectionResult res = injection->OnPermissionGranted( | 473 ScriptInjection::InjectionResult res = injection->OnPermissionGranted( |
| 476 &scripts_run_info); | 474 &scripts_run_info); |
| 477 if (res == ScriptInjection::INJECTION_BLOCKED) | 475 if (res == ScriptInjection::INJECTION_BLOCKED) |
| 478 running_injections_.push_back(injection.Pass()); | 476 running_injections_.push_back(injection.Pass()); |
| 479 scripts_run_info.LogRun(); | 477 scripts_run_info.LogRun(); |
| 480 } | 478 } |
| 481 | 479 |
| 482 } // namespace extensions | 480 } // namespace extensions |
| OLD | NEW |