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 "apps/shell/renderer/shell_content_renderer_client.h" | 5 #include "apps/shell/renderer/shell_content_renderer_client.h" |
6 | 6 |
7 #include "apps/shell/common/shell_extensions_client.h" | 7 #include "apps/shell/common/shell_extensions_client.h" |
8 #include "apps/shell/renderer/shell_dispatcher_delegate.h" | 8 #include "apps/shell/renderer/shell_dispatcher_delegate.h" |
9 #include "apps/shell/renderer/shell_extensions_renderer_client.h" | 9 #include "apps/shell/renderer/shell_extensions_renderer_client.h" |
| 10 #include "apps/shell/renderer/shell_renderer_main_delegate.h" |
10 #include "content/public/renderer/render_frame.h" | 11 #include "content/public/renderer/render_frame.h" |
11 #include "content/public/renderer/render_frame_observer.h" | 12 #include "content/public/renderer/render_frame_observer.h" |
12 #include "content/public/renderer/render_frame_observer_tracker.h" | 13 #include "content/public/renderer/render_frame_observer_tracker.h" |
13 #include "content/public/renderer/render_thread.h" | 14 #include "content/public/renderer/render_thread.h" |
14 #include "extensions/common/extensions_client.h" | 15 #include "extensions/common/extensions_client.h" |
15 #include "extensions/renderer/dispatcher.h" | 16 #include "extensions/renderer/dispatcher.h" |
16 #include "extensions/renderer/extension_helper.h" | 17 #include "extensions/renderer/extension_helper.h" |
17 | 18 |
18 using blink::WebFrame; | 19 using blink::WebFrame; |
19 using blink::WebString; | 20 using blink::WebString; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 ShellFrameHelper::~ShellFrameHelper() {} | 52 ShellFrameHelper::~ShellFrameHelper() {} |
52 | 53 |
53 void ShellFrameHelper::WillReleaseScriptContext(v8::Handle<v8::Context> context, | 54 void ShellFrameHelper::WillReleaseScriptContext(v8::Handle<v8::Context> context, |
54 int world_id) { | 55 int world_id) { |
55 extension_dispatcher_->WillReleaseScriptContext( | 56 extension_dispatcher_->WillReleaseScriptContext( |
56 render_frame()->GetWebFrame(), context, world_id); | 57 render_frame()->GetWebFrame(), context, world_id); |
57 } | 58 } |
58 | 59 |
59 } // namespace | 60 } // namespace |
60 | 61 |
61 ShellContentRendererClient::ShellContentRendererClient() {} | 62 ShellContentRendererClient::ShellContentRendererClient( |
| 63 scoped_ptr<ShellRendererMainDelegate> delegate) |
| 64 : delegate_(delegate.Pass()) { |
| 65 } |
62 | 66 |
63 ShellContentRendererClient::~ShellContentRendererClient() {} | 67 ShellContentRendererClient::~ShellContentRendererClient() {} |
64 | 68 |
65 void ShellContentRendererClient::RenderThreadStarted() { | 69 void ShellContentRendererClient::RenderThreadStarted() { |
66 RenderThread* thread = RenderThread::Get(); | 70 RenderThread* thread = RenderThread::Get(); |
67 | 71 |
68 extensions_client_.reset(new ShellExtensionsClient); | 72 extensions_client_.reset(new ShellExtensionsClient); |
69 extensions::ExtensionsClient::Set(extensions_client_.get()); | 73 extensions::ExtensionsClient::Set(extensions_client_.get()); |
70 | 74 |
71 extensions_renderer_client_.reset(new ShellExtensionsRendererClient); | 75 extensions_renderer_client_.reset(new ShellExtensionsRendererClient); |
72 extensions::ExtensionsRendererClient::Set(extensions_renderer_client_.get()); | 76 extensions::ExtensionsRendererClient::Set(extensions_renderer_client_.get()); |
73 | 77 |
74 extension_dispatcher_delegate_.reset(new ShellDispatcherDelegate()); | 78 extension_dispatcher_delegate_.reset(new ShellDispatcherDelegate()); |
75 | 79 |
76 // Must be initialized after ExtensionsRendererClient. | 80 // Must be initialized after ExtensionsRendererClient. |
77 extension_dispatcher_.reset( | 81 extension_dispatcher_.reset( |
78 new extensions::Dispatcher(extension_dispatcher_delegate_.get())); | 82 new extensions::Dispatcher(extension_dispatcher_delegate_.get())); |
79 thread->AddObserver(extension_dispatcher_.get()); | 83 thread->AddObserver(extension_dispatcher_.get()); |
80 | 84 |
81 // TODO(jamescook): Init WebSecurityPolicy for chrome-extension: schemes. | 85 // TODO(jamescook): Init WebSecurityPolicy for chrome-extension: schemes. |
82 // See ChromeContentRendererClient for details. | 86 // See ChromeContentRendererClient for details. |
| 87 if (delegate_) |
| 88 delegate_->OnThreadStarted(thread); |
83 } | 89 } |
84 | 90 |
85 void ShellContentRendererClient::RenderFrameCreated( | 91 void ShellContentRendererClient::RenderFrameCreated( |
86 content::RenderFrame* render_frame) { | 92 content::RenderFrame* render_frame) { |
87 // ShellFrameHelper destroyes itself when the RenderFrame is destroyed. | 93 // ShellFrameHelper destroyes itself when the RenderFrame is destroyed. |
88 new ShellFrameHelper(render_frame, extension_dispatcher_.get()); | 94 new ShellFrameHelper(render_frame, extension_dispatcher_.get()); |
89 } | 95 } |
90 | 96 |
91 void ShellContentRendererClient::RenderViewCreated( | 97 void ShellContentRendererClient::RenderViewCreated( |
92 content::RenderView* render_view) { | 98 content::RenderView* render_view) { |
93 new extensions::ExtensionHelper(render_view, extension_dispatcher_.get()); | 99 new extensions::ExtensionHelper(render_view, extension_dispatcher_.get()); |
| 100 if (delegate_) |
| 101 delegate_->OnViewCreated(render_view); |
94 } | 102 } |
95 | 103 |
96 bool ShellContentRendererClient::WillSendRequest( | 104 bool ShellContentRendererClient::WillSendRequest( |
97 blink::WebFrame* frame, | 105 blink::WebFrame* frame, |
98 content::PageTransition transition_type, | 106 content::PageTransition transition_type, |
99 const GURL& url, | 107 const GURL& url, |
100 const GURL& first_party_for_cookies, | 108 const GURL& first_party_for_cookies, |
101 GURL* new_url) { | 109 GURL* new_url) { |
102 // TODO(jamescook): Cause an error for bad extension scheme requests? | 110 // TODO(jamescook): Cause an error for bad extension scheme requests? |
103 return false; | 111 return false; |
104 } | 112 } |
105 | 113 |
106 void ShellContentRendererClient::DidCreateScriptContext( | 114 void ShellContentRendererClient::DidCreateScriptContext( |
107 WebFrame* frame, v8::Handle<v8::Context> context, int extension_group, | 115 WebFrame* frame, v8::Handle<v8::Context> context, int extension_group, |
108 int world_id) { | 116 int world_id) { |
109 extension_dispatcher_->DidCreateScriptContext( | 117 extension_dispatcher_->DidCreateScriptContext( |
110 frame, context, extension_group, world_id); | 118 frame, context, extension_group, world_id); |
111 } | 119 } |
112 | 120 |
113 bool ShellContentRendererClient::ShouldEnableSiteIsolationPolicy() const { | 121 bool ShellContentRendererClient::ShouldEnableSiteIsolationPolicy() const { |
114 // Extension renderers don't need site isolation. | 122 // Extension renderers don't need site isolation. |
115 return false; | 123 return false; |
116 } | 124 } |
117 | 125 |
118 } // namespace apps | 126 } // namespace apps |
OLD | NEW |