| 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 2422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2433 void RenderFrameHostImpl::OnShowCreatedWindow(int pending_widget_routing_id, | 2433 void RenderFrameHostImpl::OnShowCreatedWindow(int pending_widget_routing_id, |
| 2434 WindowOpenDisposition disposition, | 2434 WindowOpenDisposition disposition, |
| 2435 const gfx::Rect& initial_rect, | 2435 const gfx::Rect& initial_rect, |
| 2436 bool user_gesture) { | 2436 bool user_gesture) { |
| 2437 delegate_->ShowCreatedWindow(GetProcess()->GetID(), pending_widget_routing_id, | 2437 delegate_->ShowCreatedWindow(GetProcess()->GetID(), pending_widget_routing_id, |
| 2438 disposition, initial_rect, user_gesture); | 2438 disposition, initial_rect, user_gesture); |
| 2439 } | 2439 } |
| 2440 | 2440 |
| 2441 void RenderFrameHostImpl::CreateNewWindow( | 2441 void RenderFrameHostImpl::CreateNewWindow( |
| 2442 mojom::CreateNewWindowParamsPtr params, | 2442 mojom::CreateNewWindowParamsPtr params, |
| 2443 const CreateNewWindowCallback& callback) { | 2443 CreateNewWindowCallback callback) { |
| 2444 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 2444 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 2445 | 2445 |
| 2446 bool no_javascript_access = false; | 2446 bool no_javascript_access = false; |
| 2447 | 2447 |
| 2448 // Filter out URLs that this process cannot request. | 2448 // Filter out URLs that this process cannot request. |
| 2449 GetProcess()->FilterURL(false, ¶ms->target_url); | 2449 GetProcess()->FilterURL(false, ¶ms->target_url); |
| 2450 | 2450 |
| 2451 // Ignore creation when sent from a frame that's not current or created. | 2451 // Ignore creation when sent from a frame that's not current or created. |
| 2452 bool can_create_window = | 2452 bool can_create_window = |
| 2453 frame_tree_node_->current_frame_host() == this && render_frame_created_ && | 2453 frame_tree_node_->current_frame_host() == this && render_frame_created_ && |
| 2454 GetContentClient()->browser()->CanCreateWindow( | 2454 GetContentClient()->browser()->CanCreateWindow( |
| 2455 this, last_committed_url(), | 2455 this, last_committed_url(), |
| 2456 frame_tree_node_->frame_tree()->GetMainFrame()->last_committed_url(), | 2456 frame_tree_node_->frame_tree()->GetMainFrame()->last_committed_url(), |
| 2457 last_committed_origin_.GetURL(), params->window_container_type, | 2457 last_committed_origin_.GetURL(), params->window_container_type, |
| 2458 params->target_url, params->referrer, params->frame_name, | 2458 params->target_url, params->referrer, params->frame_name, |
| 2459 params->disposition, *params->features, params->user_gesture, | 2459 params->disposition, *params->features, params->user_gesture, |
| 2460 params->opener_suppressed, &no_javascript_access); | 2460 params->opener_suppressed, &no_javascript_access); |
| 2461 | 2461 |
| 2462 mojom::CreateNewWindowReplyPtr reply = mojom::CreateNewWindowReply::New(); | 2462 mojom::CreateNewWindowReplyPtr reply = mojom::CreateNewWindowReply::New(); |
| 2463 if (!can_create_window) { | 2463 if (!can_create_window) { |
| 2464 RunCreateWindowCompleteCallback(callback, std::move(reply), | 2464 RunCreateWindowCompleteCallback(std::move(callback), std::move(reply), |
| 2465 MSG_ROUTING_NONE, MSG_ROUTING_NONE, | 2465 MSG_ROUTING_NONE, MSG_ROUTING_NONE, |
| 2466 MSG_ROUTING_NONE, 0); | 2466 MSG_ROUTING_NONE, 0); |
| 2467 return; | 2467 return; |
| 2468 } | 2468 } |
| 2469 | 2469 |
| 2470 // This will clone the sessionStorage for namespace_id_to_clone. | 2470 // This will clone the sessionStorage for namespace_id_to_clone. |
| 2471 | 2471 |
| 2472 StoragePartition* storage_partition = BrowserContext::GetStoragePartition( | 2472 StoragePartition* storage_partition = BrowserContext::GetStoragePartition( |
| 2473 GetSiteInstance()->GetBrowserContext(), GetSiteInstance()); | 2473 GetSiteInstance()->GetBrowserContext(), GetSiteInstance()); |
| 2474 DOMStorageContextWrapper* dom_storage_context = | 2474 DOMStorageContextWrapper* dom_storage_context = |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2520 // If we did not create a WebContents to host the renderer-created | 2520 // If we did not create a WebContents to host the renderer-created |
| 2521 // RenderFrame/RenderView/RenderWidget objects, make sure to send invalid | 2521 // RenderFrame/RenderView/RenderWidget objects, make sure to send invalid |
| 2522 // routing ids back to the renderer. | 2522 // routing ids back to the renderer. |
| 2523 if (main_frame_route_id != MSG_ROUTING_NONE) { | 2523 if (main_frame_route_id != MSG_ROUTING_NONE) { |
| 2524 bool succeeded = | 2524 bool succeeded = |
| 2525 RenderWidgetHost::FromID(render_process_id, | 2525 RenderWidgetHost::FromID(render_process_id, |
| 2526 main_frame_widget_route_id) != nullptr; | 2526 main_frame_widget_route_id) != nullptr; |
| 2527 if (!succeeded) { | 2527 if (!succeeded) { |
| 2528 DCHECK(!RenderFrameHost::FromID(render_process_id, main_frame_route_id)); | 2528 DCHECK(!RenderFrameHost::FromID(render_process_id, main_frame_route_id)); |
| 2529 DCHECK(!RenderViewHost::FromID(render_process_id, render_view_route_id)); | 2529 DCHECK(!RenderViewHost::FromID(render_process_id, render_view_route_id)); |
| 2530 RunCreateWindowCompleteCallback(callback, std::move(reply), | 2530 RunCreateWindowCompleteCallback(std::move(callback), std::move(reply), |
| 2531 MSG_ROUTING_NONE, MSG_ROUTING_NONE, | 2531 MSG_ROUTING_NONE, MSG_ROUTING_NONE, |
| 2532 MSG_ROUTING_NONE, 0); | 2532 MSG_ROUTING_NONE, 0); |
| 2533 return; | 2533 return; |
| 2534 } | 2534 } |
| 2535 DCHECK(RenderFrameHost::FromID(render_process_id, main_frame_route_id)); | 2535 DCHECK(RenderFrameHost::FromID(render_process_id, main_frame_route_id)); |
| 2536 DCHECK(RenderViewHost::FromID(render_process_id, render_view_route_id)); | 2536 DCHECK(RenderViewHost::FromID(render_process_id, render_view_route_id)); |
| 2537 } | 2537 } |
| 2538 | 2538 |
| 2539 RunCreateWindowCompleteCallback( | 2539 RunCreateWindowCompleteCallback( |
| 2540 callback, std::move(reply), render_view_route_id, main_frame_route_id, | 2540 std::move(callback), std::move(reply), render_view_route_id, |
| 2541 main_frame_widget_route_id, cloned_namespace->id()); | 2541 main_frame_route_id, main_frame_widget_route_id, cloned_namespace->id()); |
| 2542 } | 2542 } |
| 2543 | 2543 |
| 2544 void RenderFrameHostImpl::RunCreateWindowCompleteCallback( | 2544 void RenderFrameHostImpl::RunCreateWindowCompleteCallback( |
| 2545 const CreateNewWindowCallback& callback, | 2545 CreateNewWindowCallback callback, |
| 2546 mojom::CreateNewWindowReplyPtr reply, | 2546 mojom::CreateNewWindowReplyPtr reply, |
| 2547 int render_view_route_id, | 2547 int render_view_route_id, |
| 2548 int main_frame_route_id, | 2548 int main_frame_route_id, |
| 2549 int main_frame_widget_route_id, | 2549 int main_frame_widget_route_id, |
| 2550 int cloned_session_storage_namespace_id) { | 2550 int cloned_session_storage_namespace_id) { |
| 2551 reply->route_id = render_view_route_id; | 2551 reply->route_id = render_view_route_id; |
| 2552 reply->main_frame_route_id = main_frame_route_id; | 2552 reply->main_frame_route_id = main_frame_route_id; |
| 2553 reply->main_frame_widget_route_id = main_frame_widget_route_id; | 2553 reply->main_frame_widget_route_id = main_frame_widget_route_id; |
| 2554 reply->cloned_session_storage_namespace_id = | 2554 reply->cloned_session_storage_namespace_id = |
| 2555 cloned_session_storage_namespace_id; | 2555 cloned_session_storage_namespace_id; |
| 2556 callback.Run(std::move(reply)); | 2556 std::move(callback).Run(std::move(reply)); |
| 2557 } | 2557 } |
| 2558 | 2558 |
| 2559 void RenderFrameHostImpl::RegisterMojoInterfaces() { | 2559 void RenderFrameHostImpl::RegisterMojoInterfaces() { |
| 2560 device::GeolocationServiceContext* geolocation_service_context = | 2560 device::GeolocationServiceContext* geolocation_service_context = |
| 2561 delegate_ ? delegate_->GetGeolocationServiceContext() : NULL; | 2561 delegate_ ? delegate_->GetGeolocationServiceContext() : NULL; |
| 2562 | 2562 |
| 2563 #if !defined(OS_ANDROID) | 2563 #if !defined(OS_ANDROID) |
| 2564 // The default (no-op) implementation of InstalledAppProvider. On Android, the | 2564 // The default (no-op) implementation of InstalledAppProvider. On Android, the |
| 2565 // real implementation is provided in Java. | 2565 // real implementation is provided in Java. |
| 2566 GetInterfaceRegistry()->AddInterface( | 2566 GetInterfaceRegistry()->AddInterface( |
| (...skipping 1219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3786 } | 3786 } |
| 3787 | 3787 |
| 3788 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( | 3788 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( |
| 3789 const std::string& interface_name, | 3789 const std::string& interface_name, |
| 3790 mojo::ScopedMessagePipeHandle pipe) { | 3790 mojo::ScopedMessagePipeHandle pipe) { |
| 3791 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); | 3791 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); |
| 3792 } | 3792 } |
| 3793 #endif | 3793 #endif |
| 3794 | 3794 |
| 3795 } // namespace content | 3795 } // namespace content |
| OLD | NEW |