OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/renderer/extensions/extension_helper.h" | 5 #include "chrome/renderer/extensions/extension_helper.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/json/json_string_value_serializer.h" | 10 #include "base/json/json_string_value_serializer.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "content/public/renderer/render_view_visitor.h" | 28 #include "content/public/renderer/render_view_visitor.h" |
29 #include "extensions/common/constants.h" | 29 #include "extensions/common/constants.h" |
30 #include "third_party/WebKit/public/platform/WebURLRequest.h" | 30 #include "third_party/WebKit/public/platform/WebURLRequest.h" |
31 #include "third_party/WebKit/public/web/WebConsoleMessage.h" | 31 #include "third_party/WebKit/public/web/WebConsoleMessage.h" |
32 #include "third_party/WebKit/public/web/WebDocument.h" | 32 #include "third_party/WebKit/public/web/WebDocument.h" |
33 #include "third_party/WebKit/public/web/WebFrame.h" | 33 #include "third_party/WebKit/public/web/WebFrame.h" |
34 #include "third_party/WebKit/public/web/WebScopedUserGesture.h" | 34 #include "third_party/WebKit/public/web/WebScopedUserGesture.h" |
35 #include "third_party/WebKit/public/web/WebView.h" | 35 #include "third_party/WebKit/public/web/WebView.h" |
36 | 36 |
37 using content::ConsoleMessageLevel; | 37 using content::ConsoleMessageLevel; |
38 using WebKit::WebConsoleMessage; | 38 using blink::WebConsoleMessage; |
39 using WebKit::WebDataSource; | 39 using blink::WebDataSource; |
40 using WebKit::WebFrame; | 40 using blink::WebFrame; |
41 using WebKit::WebURLRequest; | 41 using blink::WebURLRequest; |
42 using WebKit::WebScopedUserGesture; | 42 using blink::WebScopedUserGesture; |
43 using WebKit::WebView; | 43 using blink::WebView; |
44 | 44 |
45 namespace extensions { | 45 namespace extensions { |
46 | 46 |
47 namespace { | 47 namespace { |
48 // Keeps a mapping from the frame pointer to a UserScriptScheduler object. | 48 // Keeps a mapping from the frame pointer to a UserScriptScheduler object. |
49 // We store this mapping per process, because a frame can jump from one | 49 // We store this mapping per process, because a frame can jump from one |
50 // document to another with adoptNode, and so having the object be a | 50 // document to another with adoptNode, and so having the object be a |
51 // RenderViewObserver means it might miss some notifications after it moves. | 51 // RenderViewObserver means it might miss some notifications after it moves. |
52 typedef std::map<WebFrame*, UserScriptScheduler*> SchedulerMap; | 52 typedef std::map<WebFrame*, UserScriptScheduler*> SchedulerMap; |
53 static base::LazyInstance<SchedulerMap> g_schedulers = | 53 static base::LazyInstance<SchedulerMap> g_schedulers = |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 179 |
180 void ExtensionHelper::DidFinishDocumentLoad(WebFrame* frame) { | 180 void ExtensionHelper::DidFinishDocumentLoad(WebFrame* frame) { |
181 dispatcher_->user_script_slave()->InjectScripts( | 181 dispatcher_->user_script_slave()->InjectScripts( |
182 frame, UserScript::DOCUMENT_END); | 182 frame, UserScript::DOCUMENT_END); |
183 | 183 |
184 SchedulerMap::iterator i = g_schedulers.Get().find(frame); | 184 SchedulerMap::iterator i = g_schedulers.Get().find(frame); |
185 if (i != g_schedulers.Get().end()) | 185 if (i != g_schedulers.Get().end()) |
186 i->second->DidFinishDocumentLoad(); | 186 i->second->DidFinishDocumentLoad(); |
187 } | 187 } |
188 | 188 |
189 void ExtensionHelper::DidFinishLoad(WebKit::WebFrame* frame) { | 189 void ExtensionHelper::DidFinishLoad(blink::WebFrame* frame) { |
190 SchedulerMap::iterator i = g_schedulers.Get().find(frame); | 190 SchedulerMap::iterator i = g_schedulers.Get().find(frame); |
191 if (i != g_schedulers.Get().end()) | 191 if (i != g_schedulers.Get().end()) |
192 i->second->DidFinishLoad(); | 192 i->second->DidFinishLoad(); |
193 } | 193 } |
194 | 194 |
195 void ExtensionHelper::DidCreateDocumentElement(WebFrame* frame) { | 195 void ExtensionHelper::DidCreateDocumentElement(WebFrame* frame) { |
196 dispatcher_->user_script_slave()->InjectScripts( | 196 dispatcher_->user_script_slave()->InjectScripts( |
197 frame, UserScript::DOCUMENT_START); | 197 frame, UserScript::DOCUMENT_START); |
198 SchedulerMap::iterator i = g_schedulers.Get().find(frame); | 198 SchedulerMap::iterator i = g_schedulers.Get().find(frame); |
199 if (i != g_schedulers.Get().end()) | 199 if (i != g_schedulers.Get().end()) |
200 i->second->DidCreateDocumentElement(); | 200 i->second->DidCreateDocumentElement(); |
201 | 201 |
202 dispatcher_->DidCreateDocumentElement(frame); | 202 dispatcher_->DidCreateDocumentElement(frame); |
203 } | 203 } |
204 | 204 |
205 void ExtensionHelper::DidStartProvisionalLoad(WebKit::WebFrame* frame) { | 205 void ExtensionHelper::DidStartProvisionalLoad(blink::WebFrame* frame) { |
206 SchedulerMap::iterator i = g_schedulers.Get().find(frame); | 206 SchedulerMap::iterator i = g_schedulers.Get().find(frame); |
207 if (i != g_schedulers.Get().end()) | 207 if (i != g_schedulers.Get().end()) |
208 i->second->DidStartProvisionalLoad(); | 208 i->second->DidStartProvisionalLoad(); |
209 } | 209 } |
210 | 210 |
211 void ExtensionHelper::DraggableRegionsChanged(WebKit::WebFrame* frame) { | 211 void ExtensionHelper::DraggableRegionsChanged(blink::WebFrame* frame) { |
212 WebKit::WebVector<WebKit::WebDraggableRegion> webregions = | 212 blink::WebVector<blink::WebDraggableRegion> webregions = |
213 frame->document().draggableRegions(); | 213 frame->document().draggableRegions(); |
214 std::vector<DraggableRegion> regions; | 214 std::vector<DraggableRegion> regions; |
215 for (size_t i = 0; i < webregions.size(); ++i) { | 215 for (size_t i = 0; i < webregions.size(); ++i) { |
216 DraggableRegion region; | 216 DraggableRegion region; |
217 region.bounds = webregions[i].bounds; | 217 region.bounds = webregions[i].bounds; |
218 region.draggable = webregions[i].draggable; | 218 region.draggable = webregions[i].draggable; |
219 regions.push_back(region); | 219 regions.push_back(region); |
220 } | 220 } |
221 Send(new ExtensionHostMsg_UpdateDraggableRegions(routing_id(), regions)); | 221 Send(new ExtensionHostMsg_UpdateDraggableRegions(routing_id(), regions)); |
222 } | 222 } |
223 | 223 |
224 void ExtensionHelper::FrameDetached(WebFrame* frame) { | 224 void ExtensionHelper::FrameDetached(WebFrame* frame) { |
225 // This could be called before DidCreateDataSource, in which case the frame | 225 // This could be called before DidCreateDataSource, in which case the frame |
226 // won't be in the map. | 226 // won't be in the map. |
227 SchedulerMap::iterator i = g_schedulers.Get().find(frame); | 227 SchedulerMap::iterator i = g_schedulers.Get().find(frame); |
228 if (i == g_schedulers.Get().end()) | 228 if (i == g_schedulers.Get().end()) |
229 return; | 229 return; |
230 | 230 |
231 delete i->second; | 231 delete i->second; |
232 g_schedulers.Get().erase(i); | 232 g_schedulers.Get().erase(i); |
233 } | 233 } |
234 | 234 |
235 void ExtensionHelper::DidMatchCSS( | 235 void ExtensionHelper::DidMatchCSS( |
236 WebKit::WebFrame* frame, | 236 blink::WebFrame* frame, |
237 const WebKit::WebVector<WebKit::WebString>& newly_matching_selectors, | 237 const blink::WebVector<blink::WebString>& newly_matching_selectors, |
238 const WebKit::WebVector<WebKit::WebString>& stopped_matching_selectors) { | 238 const blink::WebVector<blink::WebString>& stopped_matching_selectors) { |
239 dispatcher_->DidMatchCSS( | 239 dispatcher_->DidMatchCSS( |
240 frame, newly_matching_selectors, stopped_matching_selectors); | 240 frame, newly_matching_selectors, stopped_matching_selectors); |
241 } | 241 } |
242 | 242 |
243 void ExtensionHelper::DidCreateDataSource(WebFrame* frame, WebDataSource* ds) { | 243 void ExtensionHelper::DidCreateDataSource(WebFrame* frame, WebDataSource* ds) { |
244 // Check first if we created a scheduler for the frame, since this function | 244 // Check first if we created a scheduler for the frame, since this function |
245 // gets called for navigations within the document. | 245 // gets called for navigations within the document. |
246 if (g_schedulers.Get().count(frame)) | 246 if (g_schedulers.Get().count(frame)) |
247 return; | 247 return; |
248 | 248 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 render_view()->GetWebView()->mainFrame()->mainWorldScriptContext(); | 369 render_view()->GetWebView()->mainFrame()->mainWorldScriptContext(); |
370 ChromeV8Context* chrome_v8_context = | 370 ChromeV8Context* chrome_v8_context = |
371 dispatcher_->v8_context_set().GetByV8Context(script_context); | 371 dispatcher_->v8_context_set().GetByV8Context(script_context); |
372 if (!chrome_v8_context) | 372 if (!chrome_v8_context) |
373 return; | 373 return; |
374 chrome_v8_context->module_system()->CallModuleMethod( | 374 chrome_v8_context->module_system()->CallModuleMethod( |
375 "app.window", "onAppWindowClosed"); | 375 "app.window", "onAppWindowClosed"); |
376 } | 376 } |
377 | 377 |
378 } // namespace extensions | 378 } // namespace extensions |
OLD | NEW |