| 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 "chrome/browser/guest_view/web_view/web_view_guest.h" | 5 #include "chrome/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 "chrome/browser/chrome_notification_types.h" | 10 #include "chrome/browser/chrome_notification_types.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 } | 220 } |
| 221 | 221 |
| 222 } // namespace | 222 } // namespace |
| 223 | 223 |
| 224 WebViewGuest::WebViewGuest(content::BrowserContext* browser_context, | 224 WebViewGuest::WebViewGuest(content::BrowserContext* browser_context, |
| 225 int guest_instance_id) | 225 int guest_instance_id) |
| 226 : GuestView<WebViewGuest>(browser_context, guest_instance_id), | 226 : GuestView<WebViewGuest>(browser_context, guest_instance_id), |
| 227 pending_context_menu_request_id_(0), | 227 pending_context_menu_request_id_(0), |
| 228 next_permission_request_id_(0), | 228 next_permission_request_id_(0), |
| 229 is_overriding_user_agent_(false), | 229 is_overriding_user_agent_(false), |
| 230 main_frame_id_(0), | |
| 231 chromevox_injected_(false), | 230 chromevox_injected_(false), |
| 232 current_zoom_factor_(1.0), | 231 current_zoom_factor_(1.0), |
| 233 find_helper_(this), | 232 find_helper_(this), |
| 234 javascript_dialog_helper_(this) { | 233 javascript_dialog_helper_(this) { |
| 235 } | 234 } |
| 236 | 235 |
| 237 // static | 236 // static |
| 238 bool WebViewGuest::GetGuestPartitionConfigForSite( | 237 bool WebViewGuest::GetGuestPartitionConfigForSite( |
| 239 const GURL& site, | 238 const GURL& site, |
| 240 std::string* partition_domain, | 239 std::string* partition_domain, |
| (...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1036 guest_web_contents()->GetRenderProcessHost()->GetID()); | 1035 guest_web_contents()->GetRenderProcessHost()->GetID()); |
| 1037 DispatchEvent( | 1036 DispatchEvent( |
| 1038 new GuestViewBase::Event(webview::kEventLoadCommit, args.Pass())); | 1037 new GuestViewBase::Event(webview::kEventLoadCommit, args.Pass())); |
| 1039 | 1038 |
| 1040 // Update the current zoom factor for the new page. | 1039 // Update the current zoom factor for the new page. |
| 1041 ZoomController* zoom_controller = | 1040 ZoomController* zoom_controller = |
| 1042 ZoomController::FromWebContents(guest_web_contents()); | 1041 ZoomController::FromWebContents(guest_web_contents()); |
| 1043 DCHECK(zoom_controller); | 1042 DCHECK(zoom_controller); |
| 1044 current_zoom_factor_ = zoom_controller->GetZoomLevel(); | 1043 current_zoom_factor_ = zoom_controller->GetZoomLevel(); |
| 1045 | 1044 |
| 1046 if (!render_frame_host->GetParent()) { | 1045 if (!render_frame_host->GetParent()) |
| 1047 chromevox_injected_ = false; | 1046 chromevox_injected_ = false; |
| 1048 main_frame_id_ = render_frame_host->GetRoutingID(); | |
| 1049 } | |
| 1050 } | 1047 } |
| 1051 | 1048 |
| 1052 void WebViewGuest::DidFailProvisionalLoad( | 1049 void WebViewGuest::DidFailProvisionalLoad( |
| 1053 content::RenderFrameHost* render_frame_host, | 1050 content::RenderFrameHost* render_frame_host, |
| 1054 const GURL& validated_url, | 1051 const GURL& validated_url, |
| 1055 int error_code, | 1052 int error_code, |
| 1056 const base::string16& error_description) { | 1053 const base::string16& error_description) { |
| 1057 // Translate the |error_code| into an error string. | 1054 // Translate the |error_code| into an error string. |
| 1058 std::string error_type(net::ErrorToString(error_code)); | 1055 std::string error_type(net::ErrorToString(error_code)); |
| 1059 DCHECK(StartsWithASCII(error_type, "net::", true)); | 1056 DCHECK(StartsWithASCII(error_type, "net::", true)); |
| 1060 error_type.erase(0, 5); | 1057 error_type.erase(0, 5); |
| 1061 LoadAbort(!render_frame_host->GetParent(), validated_url, error_type); | 1058 LoadAbort(!render_frame_host->GetParent(), validated_url, error_type); |
| 1062 } | 1059 } |
| 1063 | 1060 |
| 1064 void WebViewGuest::DidStartProvisionalLoadForFrame( | 1061 void WebViewGuest::DidStartProvisionalLoadForFrame( |
| 1065 content::RenderFrameHost* render_frame_host, | 1062 content::RenderFrameHost* render_frame_host, |
| 1066 const GURL& validated_url, | 1063 const GURL& validated_url, |
| 1067 bool is_error_page, | 1064 bool is_error_page, |
| 1068 bool is_iframe_srcdoc) { | 1065 bool is_iframe_srcdoc) { |
| 1069 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 1066 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
| 1070 args->SetString(guestview::kUrl, validated_url.spec()); | 1067 args->SetString(guestview::kUrl, validated_url.spec()); |
| 1071 args->SetBoolean(guestview::kIsTopLevel, !render_frame_host->GetParent()); | 1068 args->SetBoolean(guestview::kIsTopLevel, !render_frame_host->GetParent()); |
| 1072 DispatchEvent( | 1069 DispatchEvent( |
| 1073 new GuestViewBase::Event(webview::kEventLoadStart, args.Pass())); | 1070 new GuestViewBase::Event(webview::kEventLoadStart, args.Pass())); |
| 1074 } | 1071 } |
| 1075 | 1072 |
| 1076 void WebViewGuest::DocumentLoadedInFrame( | 1073 void WebViewGuest::DocumentLoadedInFrame( |
| 1077 int64 frame_id, | 1074 content::RenderFrameHost* render_frame_host) { |
| 1078 content::RenderViewHost* render_view_host) { | 1075 if (!render_frame_host->GetParent()) |
| 1079 if (frame_id == main_frame_id_) | 1076 InjectChromeVoxIfNeeded(render_frame_host->GetRenderViewHost()); |
| 1080 InjectChromeVoxIfNeeded(render_view_host); | |
| 1081 } | 1077 } |
| 1082 | 1078 |
| 1083 bool WebViewGuest::OnMessageReceived(const IPC::Message& message, | 1079 bool WebViewGuest::OnMessageReceived(const IPC::Message& message, |
| 1084 RenderFrameHost* render_frame_host) { | 1080 RenderFrameHost* render_frame_host) { |
| 1085 bool handled = true; | 1081 bool handled = true; |
| 1086 IPC_BEGIN_MESSAGE_MAP(WebViewGuest, message) | 1082 IPC_BEGIN_MESSAGE_MAP(WebViewGuest, message) |
| 1087 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_UpdateFrameName, OnUpdateFrameName) | 1083 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_UpdateFrameName, OnUpdateFrameName) |
| 1088 IPC_MESSAGE_UNHANDLED(handled = false) | 1084 IPC_MESSAGE_UNHANDLED(handled = false) |
| 1089 IPC_END_MESSAGE_MAP() | 1085 IPC_END_MESSAGE_MAP() |
| 1090 return handled; | 1086 return handled; |
| (...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1661 bool allow, | 1657 bool allow, |
| 1662 const std::string& user_input) { | 1658 const std::string& user_input) { |
| 1663 WebViewGuest* guest = | 1659 WebViewGuest* guest = |
| 1664 WebViewGuest::From(embedder_render_process_id(), new_window_instance_id); | 1660 WebViewGuest::From(embedder_render_process_id(), new_window_instance_id); |
| 1665 if (!guest) | 1661 if (!guest) |
| 1666 return; | 1662 return; |
| 1667 | 1663 |
| 1668 if (!allow) | 1664 if (!allow) |
| 1669 guest->Destroy(); | 1665 guest->Destroy(); |
| 1670 } | 1666 } |
| OLD | NEW |