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 "content/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <cmath> | 9 #include <cmath> |
10 #include <utility> | 10 #include <utility> |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 #include "content/public/browser/navigation_details.h" | 97 #include "content/public/browser/navigation_details.h" |
98 #include "content/public/browser/notification_details.h" | 98 #include "content/public/browser/notification_details.h" |
99 #include "content/public/browser/notification_service.h" | 99 #include "content/public/browser/notification_service.h" |
100 #include "content/public/browser/notification_types.h" | 100 #include "content/public/browser/notification_types.h" |
101 #include "content/public/browser/render_widget_host_iterator.h" | 101 #include "content/public/browser/render_widget_host_iterator.h" |
102 #include "content/public/browser/resource_request_details.h" | 102 #include "content/public/browser/resource_request_details.h" |
103 #include "content/public/browser/screen_orientation_dispatcher_host.h" | 103 #include "content/public/browser/screen_orientation_dispatcher_host.h" |
104 #include "content/public/browser/security_style_explanations.h" | 104 #include "content/public/browser/security_style_explanations.h" |
105 #include "content/public/browser/storage_partition.h" | 105 #include "content/public/browser/storage_partition.h" |
106 #include "content/public/browser/user_metrics.h" | 106 #include "content/public/browser/user_metrics.h" |
| 107 #include "content/public/browser/web_contents_binding_set.h" |
107 #include "content/public/browser/web_contents_delegate.h" | 108 #include "content/public/browser/web_contents_delegate.h" |
108 #include "content/public/common/bindings_policy.h" | 109 #include "content/public/common/bindings_policy.h" |
109 #include "content/public/common/browser_plugin_guest_mode.h" | 110 #include "content/public/common/browser_plugin_guest_mode.h" |
110 #include "content/public/common/browser_side_navigation_policy.h" | 111 #include "content/public/common/browser_side_navigation_policy.h" |
111 #include "content/public/common/child_process_host.h" | 112 #include "content/public/common/child_process_host.h" |
112 #include "content/public/common/content_constants.h" | 113 #include "content/public/common/content_constants.h" |
113 #include "content/public/common/content_switches.h" | 114 #include "content/public/common/content_switches.h" |
114 #include "content/public/common/page_zoom.h" | 115 #include "content/public/common/page_zoom.h" |
115 #include "content/public/common/result_codes.h" | 116 #include "content/public/common/result_codes.h" |
116 #include "content/public/common/url_constants.h" | 117 #include "content/public/common/url_constants.h" |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 #endif | 453 #endif |
453 loader_io_thread_notifier_.reset(new LoaderIOThreadNotifier(this)); | 454 loader_io_thread_notifier_.reset(new LoaderIOThreadNotifier(this)); |
454 wake_lock_service_context_.reset(new WakeLockServiceContext(this)); | 455 wake_lock_service_context_.reset(new WakeLockServiceContext(this)); |
455 } | 456 } |
456 | 457 |
457 WebContentsImpl::~WebContentsImpl() { | 458 WebContentsImpl::~WebContentsImpl() { |
458 is_being_destroyed_ = true; | 459 is_being_destroyed_ = true; |
459 | 460 |
460 rwh_input_event_router_.reset(); | 461 rwh_input_event_router_.reset(); |
461 | 462 |
| 463 for (auto& entry : binding_sets_) |
| 464 entry.second->CloseAllBindings(); |
| 465 |
462 WebContentsImpl* outermost = GetOutermostWebContents(); | 466 WebContentsImpl* outermost = GetOutermostWebContents(); |
463 if (GetFocusedWebContents() == this && this != outermost) { | 467 if (GetFocusedWebContents() == this && this != outermost) { |
464 // If the current WebContents is in focus, unset it. | 468 // If the current WebContents is in focus, unset it. |
465 outermost->node_->SetFocusedWebContents(outermost); | 469 outermost->node_->SetFocusedWebContents(outermost); |
466 } | 470 } |
467 | 471 |
468 for (FrameTreeNode* node : frame_tree_.Nodes()) { | 472 for (FrameTreeNode* node : frame_tree_.Nodes()) { |
469 // Delete all RFHs pending shutdown, which will lead the corresponding RVHs | 473 // Delete all RFHs pending shutdown, which will lead the corresponding RVHs |
470 // to be shutdown and be deleted as well. | 474 // to be shutdown and be deleted as well. |
471 node->render_manager()->ClearRFHsPendingShutdown(); | 475 node->render_manager()->ClearRFHsPendingShutdown(); |
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 | 983 |
980 GURL url = HostZoomMap::GetURLFromEntry(entry); | 984 GURL url = HostZoomMap::GetURLFromEntry(entry); |
981 if (host != net::GetHostOrSpecFromURL(url) || | 985 if (host != net::GetHostOrSpecFromURL(url) || |
982 (!scheme.empty() && !url.SchemeIs(scheme))) { | 986 (!scheme.empty() && !url.SchemeIs(scheme))) { |
983 return; | 987 return; |
984 } | 988 } |
985 | 989 |
986 UpdateZoom(level); | 990 UpdateZoom(level); |
987 } | 991 } |
988 | 992 |
| 993 base::Closure WebContentsImpl::AddBindingSet( |
| 994 const std::string& interface_name, |
| 995 WebContentsBindingSet* binding_set) { |
| 996 auto result = |
| 997 binding_sets_.insert(std::make_pair(interface_name, binding_set)); |
| 998 DCHECK(result.second); |
| 999 return base::Bind(&WebContentsImpl::RemoveBindingSet, |
| 1000 weak_factory_.GetWeakPtr(), interface_name); |
| 1001 } |
| 1002 |
989 void WebContentsImpl::UpdateDeviceScaleFactor(double device_scale_factor) { | 1003 void WebContentsImpl::UpdateDeviceScaleFactor(double device_scale_factor) { |
990 SendPageMessage( | 1004 SendPageMessage( |
991 new PageMsg_SetDeviceScaleFactor(MSG_ROUTING_NONE, device_scale_factor)); | 1005 new PageMsg_SetDeviceScaleFactor(MSG_ROUTING_NONE, device_scale_factor)); |
992 } | 1006 } |
993 | 1007 |
994 void WebContentsImpl::GetScreenInfo(ScreenInfo* screen_info) { | 1008 void WebContentsImpl::GetScreenInfo(ScreenInfo* screen_info) { |
995 if (GetView()) | 1009 if (GetView()) |
996 GetView()->GetScreenInfo(screen_info); | 1010 GetView()->GetScreenInfo(screen_info); |
997 } | 1011 } |
998 | 1012 |
(...skipping 3034 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4033 const LoadCommittedDetails& load_details) { | 4047 const LoadCommittedDetails& load_details) { |
4034 FOR_EACH_OBSERVER( | 4048 FOR_EACH_OBSERVER( |
4035 WebContentsObserver, observers_, NavigationEntryCommitted(load_details)); | 4049 WebContentsObserver, observers_, NavigationEntryCommitted(load_details)); |
4036 } | 4050 } |
4037 | 4051 |
4038 bool WebContentsImpl::OnMessageReceived(RenderFrameHost* render_frame_host, | 4052 bool WebContentsImpl::OnMessageReceived(RenderFrameHost* render_frame_host, |
4039 const IPC::Message& message) { | 4053 const IPC::Message& message) { |
4040 return OnMessageReceived(NULL, render_frame_host, message); | 4054 return OnMessageReceived(NULL, render_frame_host, message); |
4041 } | 4055 } |
4042 | 4056 |
| 4057 void WebContentsImpl::OnAssociatedInterfaceRequest( |
| 4058 RenderFrameHost* render_frame_host, |
| 4059 const std::string& interface_name, |
| 4060 mojo::ScopedInterfaceEndpointHandle handle) { |
| 4061 auto it = binding_sets_.find(interface_name); |
| 4062 if (it != binding_sets_.end()) |
| 4063 it->second->OnRequestForFrame(render_frame_host, std::move(handle)); |
| 4064 } |
| 4065 |
4043 const GURL& WebContentsImpl::GetMainFrameLastCommittedURL() const { | 4066 const GURL& WebContentsImpl::GetMainFrameLastCommittedURL() const { |
4044 return GetLastCommittedURL(); | 4067 return GetLastCommittedURL(); |
4045 } | 4068 } |
4046 | 4069 |
4047 void WebContentsImpl::RenderFrameCreated(RenderFrameHost* render_frame_host) { | 4070 void WebContentsImpl::RenderFrameCreated(RenderFrameHost* render_frame_host) { |
4048 FOR_EACH_OBSERVER(WebContentsObserver, | 4071 FOR_EACH_OBSERVER(WebContentsObserver, |
4049 observers_, | 4072 observers_, |
4050 RenderFrameCreated(render_frame_host)); | 4073 RenderFrameCreated(render_frame_host)); |
4051 SetAccessibilityModeOnFrame(accessibility_mode_, render_frame_host); | 4074 SetAccessibilityModeOnFrame(accessibility_mode_, render_frame_host); |
4052 | 4075 |
(...skipping 1149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5202 } | 5225 } |
5203 for (RenderViewHost* render_view_host : render_view_host_set) | 5226 for (RenderViewHost* render_view_host : render_view_host_set) |
5204 render_view_host->OnWebkitPreferencesChanged(); | 5227 render_view_host->OnWebkitPreferencesChanged(); |
5205 } | 5228 } |
5206 | 5229 |
5207 void WebContentsImpl::SetJavaScriptDialogManagerForTesting( | 5230 void WebContentsImpl::SetJavaScriptDialogManagerForTesting( |
5208 JavaScriptDialogManager* dialog_manager) { | 5231 JavaScriptDialogManager* dialog_manager) { |
5209 dialog_manager_ = dialog_manager; | 5232 dialog_manager_ = dialog_manager; |
5210 } | 5233 } |
5211 | 5234 |
| 5235 void WebContentsImpl::RemoveBindingSet(const std::string& interface_name) { |
| 5236 auto it = binding_sets_.find(interface_name); |
| 5237 if (it != binding_sets_.end()) |
| 5238 binding_sets_.erase(it); |
| 5239 } |
| 5240 |
5212 } // namespace content | 5241 } // namespace content |
OLD | NEW |