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/browser/guest_view/web_view/web_view_guest.h" | 5 #include "extensions/browser/guest_view/web_view/web_view_guest.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "content/public/browser/browser_context.h" | 10 #include "content/public/browser/browser_context.h" |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
509 const std::string storage_partition_id = | 509 const std::string storage_partition_id = |
510 GetStoragePartitionIdFromSiteURL(site_url); | 510 GetStoragePartitionIdFromSiteURL(site_url); |
511 base::DictionaryValue create_params; | 511 base::DictionaryValue create_params; |
512 create_params.SetString(webview::kStoragePartitionId, storage_partition_id); | 512 create_params.SetString(webview::kStoragePartitionId, storage_partition_id); |
513 | 513 |
514 guest_manager->CreateGuest(WebViewGuest::Type, | 514 guest_manager->CreateGuest(WebViewGuest::Type, |
515 embedder_extension_id(), | 515 embedder_extension_id(), |
516 embedder_web_contents(), | 516 embedder_web_contents(), |
517 create_params, | 517 create_params, |
518 base::Bind(&WebViewGuest::NewGuestWebViewCallback, | 518 base::Bind(&WebViewGuest::NewGuestWebViewCallback, |
519 base::Unretained(this), | 519 weak_ptr_factory_.GetWeakPtr(), |
520 params)); | 520 params)); |
521 } | 521 } |
522 | 522 |
523 void WebViewGuest::NewGuestWebViewCallback( | 523 void WebViewGuest::NewGuestWebViewCallback( |
524 const content::OpenURLParams& params, | 524 const content::OpenURLParams& params, |
525 content::WebContents* guest_web_contents) { | 525 content::WebContents* guest_web_contents) { |
526 WebViewGuest* new_guest = WebViewGuest::FromWebContents(guest_web_contents); | 526 WebViewGuest* new_guest = WebViewGuest::FromWebContents(guest_web_contents); |
527 new_guest->SetOpener(this); | 527 new_guest->SetOpener(this); |
528 | 528 |
529 // Take ownership of |new_guest|. | 529 // Take ownership of |new_guest|. |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 callback); | 656 callback); |
657 return true; | 657 return true; |
658 } | 658 } |
659 | 659 |
660 WebViewGuest::WebViewGuest(content::BrowserContext* browser_context, | 660 WebViewGuest::WebViewGuest(content::BrowserContext* browser_context, |
661 int guest_instance_id) | 661 int guest_instance_id) |
662 : GuestView<WebViewGuest>(browser_context, guest_instance_id), | 662 : GuestView<WebViewGuest>(browser_context, guest_instance_id), |
663 find_helper_(this), | 663 find_helper_(this), |
664 is_overriding_user_agent_(false), | 664 is_overriding_user_agent_(false), |
665 guest_opaque_(true), | 665 guest_opaque_(true), |
666 javascript_dialog_helper_(this) { | 666 javascript_dialog_helper_(this), |
| 667 weak_ptr_factory_(this) { |
667 web_view_guest_delegate_.reset( | 668 web_view_guest_delegate_.reset( |
668 ExtensionsAPIClient::Get()->CreateWebViewGuestDelegate(this)); | 669 ExtensionsAPIClient::Get()->CreateWebViewGuestDelegate(this)); |
669 } | 670 } |
670 | 671 |
671 WebViewGuest::~WebViewGuest() { | 672 WebViewGuest::~WebViewGuest() { |
672 } | 673 } |
673 | 674 |
674 void WebViewGuest::DidCommitProvisionalLoadForFrame( | 675 void WebViewGuest::DidCommitProvisionalLoadForFrame( |
675 content::RenderFrameHost* render_frame_host, | 676 content::RenderFrameHost* render_frame_host, |
676 const GURL& url, | 677 const GURL& url, |
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1172 request_info.Set(webview::kStoragePartitionId, | 1173 request_info.Set(webview::kStoragePartitionId, |
1173 new base::StringValue(storage_partition_id)); | 1174 new base::StringValue(storage_partition_id)); |
1174 request_info.Set( | 1175 request_info.Set( |
1175 webview::kWindowOpenDisposition, | 1176 webview::kWindowOpenDisposition, |
1176 new base::StringValue(WindowOpenDispositionToString(disposition))); | 1177 new base::StringValue(WindowOpenDispositionToString(disposition))); |
1177 | 1178 |
1178 web_view_permission_helper_-> | 1179 web_view_permission_helper_-> |
1179 RequestPermission(WEB_VIEW_PERMISSION_TYPE_NEW_WINDOW, | 1180 RequestPermission(WEB_VIEW_PERMISSION_TYPE_NEW_WINDOW, |
1180 request_info, | 1181 request_info, |
1181 base::Bind(&WebViewGuest::OnWebViewNewWindowResponse, | 1182 base::Bind(&WebViewGuest::OnWebViewNewWindowResponse, |
1182 base::Unretained(this), | 1183 weak_ptr_factory_.GetWeakPtr(), |
1183 guest->guest_instance_id()), | 1184 guest->guest_instance_id()), |
1184 false /* allowed_by_default */); | 1185 false /* allowed_by_default */); |
1185 } | 1186 } |
1186 | 1187 |
1187 void WebViewGuest::DestroyUnattachedWindows() { | 1188 void WebViewGuest::DestroyUnattachedWindows() { |
1188 // Destroy() reaches in and removes the WebViewGuest from its opener's | 1189 // Destroy() reaches in and removes the WebViewGuest from its opener's |
1189 // pending_new_windows_ set. To avoid mutating the set while iterating, we | 1190 // pending_new_windows_ set. To avoid mutating the set while iterating, we |
1190 // create a copy of the pending new windows set and iterate over the copy. | 1191 // create a copy of the pending new windows set and iterate over the copy. |
1191 PendingWindowMap pending_new_windows(pending_new_windows_); | 1192 PendingWindowMap pending_new_windows(pending_new_windows_); |
1192 // Clean up unattached new windows opened by this guest. | 1193 // Clean up unattached new windows opened by this guest. |
(...skipping 24 matching lines...) Expand all Loading... |
1217 WebViewGuest* guest = | 1218 WebViewGuest* guest = |
1218 WebViewGuest::From(embedder_render_process_id(), new_window_instance_id); | 1219 WebViewGuest::From(embedder_render_process_id(), new_window_instance_id); |
1219 if (!guest) | 1220 if (!guest) |
1220 return; | 1221 return; |
1221 | 1222 |
1222 if (!allow) | 1223 if (!allow) |
1223 guest->Destroy(); | 1224 guest->Destroy(); |
1224 } | 1225 } |
1225 | 1226 |
1226 } // namespace extensions | 1227 } // namespace extensions |
OLD | NEW |