OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/browser/guestview/webview/webview_guest.h" | 5 #include "chrome/browser/guestview/webview/webview_guest.h" |
6 | 6 |
7 #include "chrome/browser/extensions/api/web_request/web_request_api.h" | 7 #include "chrome/browser/extensions/api/web_request/web_request_api.h" |
8 #include "chrome/browser/extensions/extension_renderer_state.h" | 8 #include "chrome/browser/extensions/extension_renderer_state.h" |
9 #include "chrome/browser/extensions/script_executor.h" | 9 #include "chrome/browser/extensions/script_executor.h" |
10 #include "chrome/browser/guestview/guestview_constants.h" | 10 #include "chrome/browser/guestview/guestview_constants.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 WebViewGuest* WebViewGuest::From(int embedder_process_id, | 73 WebViewGuest* WebViewGuest::From(int embedder_process_id, |
74 int guest_instance_id) { | 74 int guest_instance_id) { |
75 GuestView* guest = GuestView::From(embedder_process_id, guest_instance_id); | 75 GuestView* guest = GuestView::From(embedder_process_id, guest_instance_id); |
76 if (!guest) | 76 if (!guest) |
77 return NULL; | 77 return NULL; |
78 return guest->AsWebView(); | 78 return guest->AsWebView(); |
79 } | 79 } |
80 | 80 |
81 void WebViewGuest::Attach(WebContents* embedder_web_contents, | 81 void WebViewGuest::Attach(WebContents* embedder_web_contents, |
82 const std::string& extension_id, | 82 const std::string& extension_id, |
83 int view_instance_id, | |
84 const base::DictionaryValue& args) { | 83 const base::DictionaryValue& args) { |
85 GuestView::Attach( | 84 GuestView::Attach( |
86 embedder_web_contents, extension_id, view_instance_id, args); | 85 embedder_web_contents, extension_id, args); |
87 | 86 |
88 AddWebViewToExtensionRendererState(); | 87 AddWebViewToExtensionRendererState(); |
89 } | 88 } |
90 | 89 |
91 GuestView::Type WebViewGuest::GetViewType() const { | 90 GuestView::Type WebViewGuest::GetViewType() const { |
92 return GuestView::WEBVIEW; | 91 return GuestView::WEBVIEW; |
93 } | 92 } |
94 | 93 |
95 WebViewGuest* WebViewGuest::AsWebView() { | 94 WebViewGuest* WebViewGuest::AsWebView() { |
96 return this; | 95 return this; |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 args->SetBoolean(guestview::kIsTopLevel, is_top_level); | 309 args->SetBoolean(guestview::kIsTopLevel, is_top_level); |
311 args->SetString(webview::kNewURL, new_url.spec()); | 310 args->SetString(webview::kNewURL, new_url.spec()); |
312 args->SetString(webview::kOldURL, old_url.spec()); | 311 args->SetString(webview::kOldURL, old_url.spec()); |
313 DispatchEvent(new GuestView::Event(webview::kEventLoadRedirect, args.Pass())); | 312 DispatchEvent(new GuestView::Event(webview::kEventLoadRedirect, args.Pass())); |
314 } | 313 } |
315 | 314 |
316 void WebViewGuest::AddWebViewToExtensionRendererState() { | 315 void WebViewGuest::AddWebViewToExtensionRendererState() { |
317 ExtensionRendererState::WebViewInfo webview_info; | 316 ExtensionRendererState::WebViewInfo webview_info; |
318 webview_info.embedder_process_id = embedder_render_process_id(); | 317 webview_info.embedder_process_id = embedder_render_process_id(); |
319 webview_info.embedder_routing_id = embedder_web_contents()->GetRoutingID(); | 318 webview_info.embedder_routing_id = embedder_web_contents()->GetRoutingID(); |
320 webview_info.guest_instance_id = guest_instance_id(); | |
321 webview_info.instance_id = view_instance_id(); | 319 webview_info.instance_id = view_instance_id(); |
322 | 320 |
323 content::BrowserThread::PostTask( | 321 content::BrowserThread::PostTask( |
324 content::BrowserThread::IO, FROM_HERE, | 322 content::BrowserThread::IO, FROM_HERE, |
325 base::Bind( | 323 base::Bind( |
326 &ExtensionRendererState::AddWebView, | 324 &ExtensionRendererState::AddWebView, |
327 base::Unretained(ExtensionRendererState::GetInstance()), | 325 base::Unretained(ExtensionRendererState::GetInstance()), |
328 guest_web_contents()->GetRenderProcessHost()->GetID(), | 326 guest_web_contents()->GetRenderProcessHost()->GetID(), |
329 guest_web_contents()->GetRoutingID(), | 327 guest_web_contents()->GetRoutingID(), |
330 webview_info)); | 328 webview_info)); |
331 } | 329 } |
332 | 330 |
333 // static | 331 // static |
334 void WebViewGuest::RemoveWebViewFromExtensionRendererState( | 332 void WebViewGuest::RemoveWebViewFromExtensionRendererState( |
335 WebContents* web_contents) { | 333 WebContents* web_contents) { |
336 content::BrowserThread::PostTask( | 334 content::BrowserThread::PostTask( |
337 content::BrowserThread::IO, FROM_HERE, | 335 content::BrowserThread::IO, FROM_HERE, |
338 base::Bind( | 336 base::Bind( |
339 &ExtensionRendererState::RemoveWebView, | 337 &ExtensionRendererState::RemoveWebView, |
340 base::Unretained(ExtensionRendererState::GetInstance()), | 338 base::Unretained(ExtensionRendererState::GetInstance()), |
341 web_contents->GetRenderProcessHost()->GetID(), | 339 web_contents->GetRenderProcessHost()->GetID(), |
342 web_contents->GetRoutingID())); | 340 web_contents->GetRoutingID())); |
343 } | 341 } |
OLD | NEW |