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 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 } | 211 } |
212 | 212 |
213 } // namespace | 213 } // namespace |
214 | 214 |
215 WebViewGuest::WebViewGuest(content::BrowserContext* browser_context, | 215 WebViewGuest::WebViewGuest(content::BrowserContext* browser_context, |
216 int guest_instance_id) | 216 int guest_instance_id) |
217 : GuestView<WebViewGuest>(browser_context, guest_instance_id), | 217 : GuestView<WebViewGuest>(browser_context, guest_instance_id), |
218 pending_context_menu_request_id_(0), | 218 pending_context_menu_request_id_(0), |
219 next_permission_request_id_(0), | 219 next_permission_request_id_(0), |
220 is_overriding_user_agent_(false), | 220 is_overriding_user_agent_(false), |
221 main_frame_id_(0), | |
222 chromevox_injected_(false), | 221 chromevox_injected_(false), |
223 find_helper_(this), | 222 find_helper_(this), |
224 javascript_dialog_helper_(this) { | 223 javascript_dialog_helper_(this) { |
225 } | 224 } |
226 | 225 |
227 // static | 226 // static |
228 bool WebViewGuest::GetGuestPartitionConfigForSite( | 227 bool WebViewGuest::GetGuestPartitionConfigForSite( |
229 const GURL& site, | 228 const GURL& site, |
230 std::string* partition_domain, | 229 std::string* partition_domain, |
231 std::string* partition_name, | 230 std::string* partition_name, |
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1024 guest_web_contents()->GetController().GetEntryCount()); | 1023 guest_web_contents()->GetController().GetEntryCount()); |
1025 args->SetInteger(webview::kInternalProcessId, | 1024 args->SetInteger(webview::kInternalProcessId, |
1026 guest_web_contents()->GetRenderProcessHost()->GetID()); | 1025 guest_web_contents()->GetRenderProcessHost()->GetID()); |
1027 DispatchEvent( | 1026 DispatchEvent( |
1028 new GuestViewBase::Event(webview::kEventLoadCommit, args.Pass())); | 1027 new GuestViewBase::Event(webview::kEventLoadCommit, args.Pass())); |
1029 | 1028 |
1030 // Update the current zoom factor for the new page. | 1029 // Update the current zoom factor for the new page. |
1031 current_zoom_factor_ = content::ZoomLevelToZoomFactor( | 1030 current_zoom_factor_ = content::ZoomLevelToZoomFactor( |
1032 content::HostZoomMap::GetZoomLevel(guest_web_contents())); | 1031 content::HostZoomMap::GetZoomLevel(guest_web_contents())); |
1033 | 1032 |
1034 if (!render_frame_host->GetParent()) { | 1033 if (!render_frame_host->GetParent()) |
1035 chromevox_injected_ = false; | 1034 chromevox_injected_ = false; |
1036 main_frame_id_ = render_frame_host->GetRoutingID(); | |
1037 } | |
1038 } | 1035 } |
1039 | 1036 |
1040 void WebViewGuest::DidFailProvisionalLoad( | 1037 void WebViewGuest::DidFailProvisionalLoad( |
1041 content::RenderFrameHost* render_frame_host, | 1038 content::RenderFrameHost* render_frame_host, |
1042 const GURL& validated_url, | 1039 const GURL& validated_url, |
1043 int error_code, | 1040 int error_code, |
1044 const base::string16& error_description) { | 1041 const base::string16& error_description) { |
1045 // Translate the |error_code| into an error string. | 1042 // Translate the |error_code| into an error string. |
1046 std::string error_type(net::ErrorToString(error_code)); | 1043 std::string error_type(net::ErrorToString(error_code)); |
1047 DCHECK(StartsWithASCII(error_type, "net::", true)); | 1044 DCHECK(StartsWithASCII(error_type, "net::", true)); |
1048 error_type.erase(0, 5); | 1045 error_type.erase(0, 5); |
1049 LoadAbort(!render_frame_host->GetParent(), validated_url, error_type); | 1046 LoadAbort(!render_frame_host->GetParent(), validated_url, error_type); |
1050 } | 1047 } |
1051 | 1048 |
1052 void WebViewGuest::DidStartProvisionalLoadForFrame( | 1049 void WebViewGuest::DidStartProvisionalLoadForFrame( |
1053 content::RenderFrameHost* render_frame_host, | 1050 content::RenderFrameHost* render_frame_host, |
1054 const GURL& validated_url, | 1051 const GURL& validated_url, |
1055 bool is_error_page, | 1052 bool is_error_page, |
1056 bool is_iframe_srcdoc) { | 1053 bool is_iframe_srcdoc) { |
1057 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 1054 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
1058 args->SetString(guestview::kUrl, validated_url.spec()); | 1055 args->SetString(guestview::kUrl, validated_url.spec()); |
1059 args->SetBoolean(guestview::kIsTopLevel, !render_frame_host->GetParent()); | 1056 args->SetBoolean(guestview::kIsTopLevel, !render_frame_host->GetParent()); |
1060 DispatchEvent( | 1057 DispatchEvent( |
1061 new GuestViewBase::Event(webview::kEventLoadStart, args.Pass())); | 1058 new GuestViewBase::Event(webview::kEventLoadStart, args.Pass())); |
1062 } | 1059 } |
1063 | 1060 |
1064 void WebViewGuest::DocumentLoadedInFrame( | 1061 void WebViewGuest::DocumentLoadedInFrame( |
1065 int64 frame_id, | 1062 content::RenderFrameHost* render_frame_host) { |
1066 content::RenderViewHost* render_view_host) { | 1063 if (!render_frame_host->GetParent()) |
1067 if (frame_id == main_frame_id_) | 1064 InjectChromeVoxIfNeeded(render_frame_host->GetRenderViewHost()); |
1068 InjectChromeVoxIfNeeded(render_view_host); | |
1069 } | 1065 } |
1070 | 1066 |
1071 bool WebViewGuest::OnMessageReceived(const IPC::Message& message, | 1067 bool WebViewGuest::OnMessageReceived(const IPC::Message& message, |
1072 RenderFrameHost* render_frame_host) { | 1068 RenderFrameHost* render_frame_host) { |
1073 bool handled = true; | 1069 bool handled = true; |
1074 IPC_BEGIN_MESSAGE_MAP(WebViewGuest, message) | 1070 IPC_BEGIN_MESSAGE_MAP(WebViewGuest, message) |
1075 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_UpdateFrameName, OnUpdateFrameName) | 1071 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_UpdateFrameName, OnUpdateFrameName) |
1076 IPC_MESSAGE_UNHANDLED(handled = false) | 1072 IPC_MESSAGE_UNHANDLED(handled = false) |
1077 IPC_END_MESSAGE_MAP() | 1073 IPC_END_MESSAGE_MAP() |
1078 return handled; | 1074 return handled; |
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1646 bool allow, | 1642 bool allow, |
1647 const std::string& user_input) { | 1643 const std::string& user_input) { |
1648 WebViewGuest* guest = | 1644 WebViewGuest* guest = |
1649 WebViewGuest::From(embedder_render_process_id(), new_window_instance_id); | 1645 WebViewGuest::From(embedder_render_process_id(), new_window_instance_id); |
1650 if (!guest) | 1646 if (!guest) |
1651 return; | 1647 return; |
1652 | 1648 |
1653 if (!allow) | 1649 if (!allow) |
1654 guest->Destroy(); | 1650 guest->Destroy(); |
1655 } | 1651 } |
OLD | NEW |