| 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 "content/browser/frame_host/render_frame_host_impl.h" | 5 #include "content/browser/frame_host/render_frame_host_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 928 accessibility_reset_token_ = g_next_accessibility_reset_token++; | 928 accessibility_reset_token_ = g_next_accessibility_reset_token++; |
| 929 Send(new AccessibilityMsg_Reset(routing_id_, accessibility_reset_token_)); | 929 Send(new AccessibilityMsg_Reset(routing_id_, accessibility_reset_token_)); |
| 930 } | 930 } |
| 931 } | 931 } |
| 932 | 932 |
| 933 gfx::AcceleratedWidget | 933 gfx::AcceleratedWidget |
| 934 RenderFrameHostImpl::AccessibilityGetAcceleratedWidget() { | 934 RenderFrameHostImpl::AccessibilityGetAcceleratedWidget() { |
| 935 // Only the main frame's current frame host is connected to the native | 935 // Only the main frame's current frame host is connected to the native |
| 936 // widget tree for accessibility, so return null if this is queried on | 936 // widget tree for accessibility, so return null if this is queried on |
| 937 // any other frame. | 937 // any other frame. |
| 938 if (frame_tree_node()->parent() || | 938 if (frame_tree_node()->parent() || !IsCurrent()) |
| 939 frame_tree_node()->current_frame_host() != this) { | |
| 940 return gfx::kNullAcceleratedWidget; | 939 return gfx::kNullAcceleratedWidget; |
| 941 } | |
| 942 | 940 |
| 943 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( | 941 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
| 944 render_view_host_->GetWidget()->GetView()); | 942 render_view_host_->GetWidget()->GetView()); |
| 945 if (view) | 943 if (view) |
| 946 return view->AccessibilityGetAcceleratedWidget(); | 944 return view->AccessibilityGetAcceleratedWidget(); |
| 947 return gfx::kNullAcceleratedWidget; | 945 return gfx::kNullAcceleratedWidget; |
| 948 } | 946 } |
| 949 | 947 |
| 950 gfx::NativeViewAccessible | 948 gfx::NativeViewAccessible |
| 951 RenderFrameHostImpl::AccessibilityGetNativeViewAccessible() { | 949 RenderFrameHostImpl::AccessibilityGetNativeViewAccessible() { |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1145 blink::WebSandboxFlags sandbox_flags, | 1143 blink::WebSandboxFlags sandbox_flags, |
| 1146 const ParsedFeaturePolicyHeader& container_policy, | 1144 const ParsedFeaturePolicyHeader& container_policy, |
| 1147 const FrameOwnerProperties& frame_owner_properties) { | 1145 const FrameOwnerProperties& frame_owner_properties) { |
| 1148 // TODO(lukasza): Call ReceivedBadMessage when |frame_unique_name| is empty. | 1146 // TODO(lukasza): Call ReceivedBadMessage when |frame_unique_name| is empty. |
| 1149 DCHECK(!frame_unique_name.empty()); | 1147 DCHECK(!frame_unique_name.empty()); |
| 1150 | 1148 |
| 1151 // The RenderFrame corresponding to this host sent an IPC message to create a | 1149 // The RenderFrame corresponding to this host sent an IPC message to create a |
| 1152 // child, but by the time we get here, it's possible for the host to have been | 1150 // child, but by the time we get here, it's possible for the host to have been |
| 1153 // swapped out, or for its process to have disconnected (maybe due to browser | 1151 // swapped out, or for its process to have disconnected (maybe due to browser |
| 1154 // shutdown). Ignore such messages. | 1152 // shutdown). Ignore such messages. |
| 1155 if (!is_active() || frame_tree_node_->current_frame_host() != this || | 1153 if (!is_active() || !IsCurrent() || !render_frame_created_) |
| 1156 !render_frame_created_) | |
| 1157 return; | 1154 return; |
| 1158 | 1155 |
| 1159 frame_tree_->AddFrame(frame_tree_node_, GetProcess()->GetID(), new_routing_id, | 1156 frame_tree_->AddFrame(frame_tree_node_, GetProcess()->GetID(), new_routing_id, |
| 1160 scope, frame_name, frame_unique_name, sandbox_flags, | 1157 scope, frame_name, frame_unique_name, sandbox_flags, |
| 1161 container_policy, frame_owner_properties); | 1158 container_policy, frame_owner_properties); |
| 1162 } | 1159 } |
| 1163 | 1160 |
| 1164 void RenderFrameHostImpl::SetLastCommittedOrigin(const url::Origin& origin) { | 1161 void RenderFrameHostImpl::SetLastCommittedOrigin(const url::Origin& origin) { |
| 1165 last_committed_origin_ = origin; | 1162 last_committed_origin_ = origin; |
| 1166 CSPContext::SetSelf(origin); | 1163 CSPContext::SetSelf(origin); |
| (...skipping 1372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2539 "frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url", | 2536 "frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url", |
| 2540 params->target_url.possibly_invalid_spec()); | 2537 params->target_url.possibly_invalid_spec()); |
| 2541 | 2538 |
| 2542 bool no_javascript_access = false; | 2539 bool no_javascript_access = false; |
| 2543 | 2540 |
| 2544 // Filter out URLs that this process cannot request. | 2541 // Filter out URLs that this process cannot request. |
| 2545 GetProcess()->FilterURL(false, ¶ms->target_url); | 2542 GetProcess()->FilterURL(false, ¶ms->target_url); |
| 2546 | 2543 |
| 2547 // Ignore creation when sent from a frame that's not current or created. | 2544 // Ignore creation when sent from a frame that's not current or created. |
| 2548 bool can_create_window = | 2545 bool can_create_window = |
| 2549 frame_tree_node_->current_frame_host() == this && render_frame_created_ && | 2546 IsCurrent() && render_frame_created_ && |
| 2550 GetContentClient()->browser()->CanCreateWindow( | 2547 GetContentClient()->browser()->CanCreateWindow( |
| 2551 this, last_committed_url(), | 2548 this, last_committed_url(), |
| 2552 frame_tree_node_->frame_tree()->GetMainFrame()->last_committed_url(), | 2549 frame_tree_node_->frame_tree()->GetMainFrame()->last_committed_url(), |
| 2553 last_committed_origin_.GetURL(), params->window_container_type, | 2550 last_committed_origin_.GetURL(), params->window_container_type, |
| 2554 params->target_url, params->referrer, params->frame_name, | 2551 params->target_url, params->referrer, params->frame_name, |
| 2555 params->disposition, *params->features, params->user_gesture, | 2552 params->disposition, *params->features, params->user_gesture, |
| 2556 params->opener_suppressed, &no_javascript_access); | 2553 params->opener_suppressed, &no_javascript_access); |
| 2557 | 2554 |
| 2558 mojom::CreateNewWindowReplyPtr reply = mojom::CreateNewWindowReply::New(); | 2555 mojom::CreateNewWindowReplyPtr reply = mojom::CreateNewWindowReply::New(); |
| 2559 if (!can_create_window) { | 2556 if (!can_create_window) { |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3031 FrameMsg_Navigate_Type::IsSameDocument(common_params.navigation_type) || | 3028 FrameMsg_Navigate_Type::IsSameDocument(common_params.navigation_type) || |
| 3032 IsRendererDebugURL(common_params.url)); | 3029 IsRendererDebugURL(common_params.url)); |
| 3033 UpdatePermissionsForNavigation(common_params, request_params); | 3030 UpdatePermissionsForNavigation(common_params, request_params); |
| 3034 | 3031 |
| 3035 // Get back to a clean state, in case we start a new navigation without | 3032 // Get back to a clean state, in case we start a new navigation without |
| 3036 // completing an unload handler. | 3033 // completing an unload handler. |
| 3037 ResetWaitingState(); | 3034 ResetWaitingState(); |
| 3038 | 3035 |
| 3039 // The renderer can exit view source mode when any error or cancellation | 3036 // The renderer can exit view source mode when any error or cancellation |
| 3040 // happen. When reusing the same renderer, overwrite to recover the mode. | 3037 // happen. When reusing the same renderer, overwrite to recover the mode. |
| 3041 if (is_view_source && | 3038 if (is_view_source && IsCurrent()) { |
| 3042 this == frame_tree_node_->render_manager()->current_frame_host()) { | |
| 3043 DCHECK(!GetParent()); | 3039 DCHECK(!GetParent()); |
| 3044 render_view_host()->Send(new FrameMsg_EnableViewSourceMode(routing_id_)); | 3040 render_view_host()->Send(new FrameMsg_EnableViewSourceMode(routing_id_)); |
| 3045 } | 3041 } |
| 3046 | 3042 |
| 3047 const GURL body_url = body.get() ? body->GetURL() : GURL(); | 3043 const GURL body_url = body.get() ? body->GetURL() : GURL(); |
| 3048 const ResourceResponseHead head = response ? | 3044 const ResourceResponseHead head = response ? |
| 3049 response->head : ResourceResponseHead(); | 3045 response->head : ResourceResponseHead(); |
| 3050 FrameMsg_CommitDataNetworkService_Params commit_data; | 3046 FrameMsg_CommitDataNetworkService_Params commit_data; |
| 3051 commit_data.handle = handle.release(); | 3047 commit_data.handle = handle.release(); |
| 3052 // TODO(scottmg): Pass a factory for SW, etc. once we have one. | 3048 // TODO(scottmg): Pass a factory for SW, etc. once we have one. |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3378 | 3374 |
| 3379 bool RenderFrameHostImpl::IsRenderFrameLive() { | 3375 bool RenderFrameHostImpl::IsRenderFrameLive() { |
| 3380 bool is_live = GetProcess()->HasConnection() && render_frame_created_; | 3376 bool is_live = GetProcess()->HasConnection() && render_frame_created_; |
| 3381 | 3377 |
| 3382 // Sanity check: the RenderView should always be live if the RenderFrame is. | 3378 // Sanity check: the RenderView should always be live if the RenderFrame is. |
| 3383 DCHECK(!is_live || render_view_host_->IsRenderViewLive()); | 3379 DCHECK(!is_live || render_view_host_->IsRenderViewLive()); |
| 3384 | 3380 |
| 3385 return is_live; | 3381 return is_live; |
| 3386 } | 3382 } |
| 3387 | 3383 |
| 3384 bool RenderFrameHostImpl::IsCurrent() { |
| 3385 return this == frame_tree_node_->current_frame_host(); |
| 3386 } |
| 3387 |
| 3388 int RenderFrameHostImpl::GetProxyCount() { | 3388 int RenderFrameHostImpl::GetProxyCount() { |
| 3389 if (this != frame_tree_node_->current_frame_host()) | 3389 if (!IsCurrent()) |
| 3390 return 0; | 3390 return 0; |
| 3391 return frame_tree_node_->render_manager()->GetProxyCount(); | 3391 return frame_tree_node_->render_manager()->GetProxyCount(); |
| 3392 } | 3392 } |
| 3393 | 3393 |
| 3394 void RenderFrameHostImpl::FilesSelectedInChooser( | 3394 void RenderFrameHostImpl::FilesSelectedInChooser( |
| 3395 const std::vector<content::FileChooserFileInfo>& files, | 3395 const std::vector<content::FileChooserFileInfo>& files, |
| 3396 FileChooserParams::Mode permissions) { | 3396 FileChooserParams::Mode permissions) { |
| 3397 storage::FileSystemContext* const file_system_context = | 3397 storage::FileSystemContext* const file_system_context = |
| 3398 BrowserContext::GetStoragePartition(GetProcess()->GetBrowserContext(), | 3398 BrowserContext::GetStoragePartition(GetProcess()->GetBrowserContext(), |
| 3399 GetSiteInstance()) | 3399 GetSiteInstance()) |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3913 } | 3913 } |
| 3914 | 3914 |
| 3915 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( | 3915 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( |
| 3916 const std::string& interface_name, | 3916 const std::string& interface_name, |
| 3917 mojo::ScopedMessagePipeHandle pipe) { | 3917 mojo::ScopedMessagePipeHandle pipe) { |
| 3918 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); | 3918 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); |
| 3919 } | 3919 } |
| 3920 #endif | 3920 #endif |
| 3921 | 3921 |
| 3922 } // namespace content | 3922 } // namespace content |
| OLD | NEW |