| 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/renderer/render_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 // static | 558 // static |
| 559 RenderFrameImpl* RenderFrameImpl::FromRoutingID(int routing_id) { | 559 RenderFrameImpl* RenderFrameImpl::FromRoutingID(int routing_id) { |
| 560 RoutingIDFrameMap::iterator iter = | 560 RoutingIDFrameMap::iterator iter = |
| 561 g_routing_id_frame_map.Get().find(routing_id); | 561 g_routing_id_frame_map.Get().find(routing_id); |
| 562 if (iter != g_routing_id_frame_map.Get().end()) | 562 if (iter != g_routing_id_frame_map.Get().end()) |
| 563 return iter->second; | 563 return iter->second; |
| 564 return NULL; | 564 return NULL; |
| 565 } | 565 } |
| 566 | 566 |
| 567 // static | 567 // static |
| 568 RenderFrameImpl* RenderFrameImpl::CreateMainFrame(RenderViewImpl* render_view, | 568 RenderFrameImpl* RenderFrameImpl::CreateMainFrame( |
| 569 int32 routing_id) { | 569 RenderViewImpl* render_view, |
| 570 int32_t routing_id, |
| 571 int32_t widget_routing_id, |
| 572 bool hidden, |
| 573 const blink::WebScreenInfo& screen_info, |
| 574 CompositorDependencies* compositor_deps) { |
| 575 // A main frame RenderFrame must have a RenderWidget. |
| 576 DCHECK_NE(MSG_ROUTING_NONE, widget_routing_id); |
| 577 |
| 570 RenderFrameImpl* render_frame = | 578 RenderFrameImpl* render_frame = |
| 571 RenderFrameImpl::Create(render_view, routing_id); | 579 RenderFrameImpl::Create(render_view, routing_id); |
| 572 WebLocalFrame* web_frame = | 580 WebLocalFrame* web_frame = |
| 573 WebLocalFrame::create(blink::WebTreeScopeType::Document, render_frame); | 581 WebLocalFrame::create(blink::WebTreeScopeType::Document, render_frame); |
| 574 render_frame->SetWebFrame(web_frame); | 582 render_frame->SetWebFrame(web_frame); |
| 575 render_view->webview()->setMainFrame(web_frame); | 583 render_view->webview()->setMainFrame(web_frame); |
| 584 render_frame->render_widget_ = RenderWidget::CreateForFrame( |
| 585 widget_routing_id, hidden, screen_info, compositor_deps, web_frame); |
| 586 // TODO(kenrb): Observing shouldn't be necessary when we sort out |
| 587 // WasShown and WasHidden, separating page-level visibility from |
| 588 // frame-level visibility. |
| 589 // TODO(avi): This DCHECK is to track cleanup for https://crbug.com/545684 |
| 590 DCHECK_EQ(render_view, render_frame->render_widget_) |
| 591 << "Main frame is no longer reusing the RenderView as its widget! " |
| 592 << "Does the RenderFrame need to register itself with the RenderWidget?"; |
| 576 return render_frame; | 593 return render_frame; |
| 577 } | 594 } |
| 578 | 595 |
| 579 // static | 596 // static |
| 580 void RenderFrameImpl::CreateFrame( | 597 void RenderFrameImpl::CreateFrame( |
| 581 int routing_id, | 598 int routing_id, |
| 582 int proxy_routing_id, | 599 int proxy_routing_id, |
| 583 int opener_routing_id, | 600 int opener_routing_id, |
| 584 int parent_routing_id, | 601 int parent_routing_id, |
| 585 int previous_sibling_routing_id, | 602 int previous_sibling_routing_id, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 proxy->web_frame(), WebString::fromUTF8(replicated_state.name), | 638 proxy->web_frame(), WebString::fromUTF8(replicated_state.name), |
| 622 replicated_state.sandbox_flags); | 639 replicated_state.sandbox_flags); |
| 623 } | 640 } |
| 624 render_frame->SetWebFrame(web_frame); | 641 render_frame->SetWebFrame(web_frame); |
| 625 CHECK_IMPLIES(parent_routing_id == MSG_ROUTING_NONE, !web_frame->parent()); | 642 CHECK_IMPLIES(parent_routing_id == MSG_ROUTING_NONE, !web_frame->parent()); |
| 626 | 643 |
| 627 WebFrame* opener = ResolveOpener(opener_routing_id, nullptr); | 644 WebFrame* opener = ResolveOpener(opener_routing_id, nullptr); |
| 628 web_frame->setOpener(opener); | 645 web_frame->setOpener(opener); |
| 629 | 646 |
| 630 if (widget_params.routing_id != MSG_ROUTING_NONE) { | 647 if (widget_params.routing_id != MSG_ROUTING_NONE) { |
| 631 CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible()); | 648 CHECK_IMPLIES(web_frame->parent(), |
| 649 SiteIsolationPolicy::AreCrossProcessFramesPossible()); |
| 632 render_frame->render_widget_ = RenderWidget::CreateForFrame( | 650 render_frame->render_widget_ = RenderWidget::CreateForFrame( |
| 633 widget_params.routing_id, widget_params.hidden, | 651 widget_params.routing_id, widget_params.hidden, |
| 634 render_frame->render_view_->screen_info(), compositor_deps, web_frame); | 652 render_frame->render_view_->screen_info(), compositor_deps, web_frame); |
| 635 // TODO(kenrb): Observing shouldn't be necessary when we sort out | 653 // TODO(avi): The main frame re-uses the RenderViewImpl as its widget, so |
| 636 // WasShown and WasHidden, separating page-level visibility from | 654 // avoid double-registering the frame as an observer. |
| 637 // frame-level visibility. | 655 // https://crbug.com/545684 |
| 638 render_frame->render_widget_->RegisterRenderFrame(render_frame); | 656 if (web_frame->parent()) { |
| 657 // TODO(kenrb): Observing shouldn't be necessary when we sort out |
| 658 // WasShown and WasHidden, separating page-level visibility from |
| 659 // frame-level visibility. |
| 660 render_frame->render_widget_->RegisterRenderFrame(render_frame); |
| 661 } |
| 639 } | 662 } |
| 640 | 663 |
| 641 render_frame->Initialize(); | 664 render_frame->Initialize(); |
| 642 } | 665 } |
| 643 | 666 |
| 644 // static | 667 // static |
| 645 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { | 668 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { |
| 646 return RenderFrameImpl::FromWebFrame(web_frame); | 669 return RenderFrameImpl::FromWebFrame(web_frame); |
| 647 } | 670 } |
| 648 | 671 |
| (...skipping 3289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3938 } | 3961 } |
| 3939 | 3962 |
| 3940 void RenderFrameImpl::WasHidden() { | 3963 void RenderFrameImpl::WasHidden() { |
| 3941 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasHidden()); | 3964 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasHidden()); |
| 3942 } | 3965 } |
| 3943 | 3966 |
| 3944 void RenderFrameImpl::WasShown() { | 3967 void RenderFrameImpl::WasShown() { |
| 3945 // TODO(kenrb): Need to figure out how to do this better. Should | 3968 // TODO(kenrb): Need to figure out how to do this better. Should |
| 3946 // VisibilityState remain a page-level concept or move to frames? | 3969 // VisibilityState remain a page-level concept or move to frames? |
| 3947 // The semantics of 'Show' might have to change here. | 3970 // The semantics of 'Show' might have to change here. |
| 3948 if (render_widget_) { | 3971 // TODO(avi): This DCHECK is to track cleanup for https://crbug.com/545684 |
| 3972 DCHECK_IMPLIES(IsMainFrame(), render_widget_.get() == render_view_.get()) |
| 3973 << "The main render frame is no longer reusing the RenderView as its " |
| 3974 << "RenderWidget!"; |
| 3975 if (render_widget_ && render_view_.get() != render_widget_.get()) { |
| 3949 static_cast<blink::WebFrameWidget*>(render_widget_->webwidget())-> | 3976 static_cast<blink::WebFrameWidget*>(render_widget_->webwidget())-> |
| 3950 setVisibilityState(blink::WebPageVisibilityStateVisible, false); | 3977 setVisibilityState(blink::WebPageVisibilityStateVisible, false); |
| 3951 } | 3978 } |
| 3952 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasShown()); | 3979 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasShown()); |
| 3953 } | 3980 } |
| 3954 | 3981 |
| 3955 void RenderFrameImpl::WidgetWillClose() { | 3982 void RenderFrameImpl::WidgetWillClose() { |
| 3956 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WidgetWillClose()); | 3983 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WidgetWillClose()); |
| 3957 } | 3984 } |
| 3958 | 3985 |
| (...skipping 1260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5219 mojo::ServiceProviderPtr service_provider; | 5246 mojo::ServiceProviderPtr service_provider; |
| 5220 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5247 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 5221 request->url = mojo::String::From(url); | 5248 request->url = mojo::String::From(url); |
| 5222 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5249 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
| 5223 nullptr, nullptr, | 5250 nullptr, nullptr, |
| 5224 base::Bind(&OnGotContentHandlerID)); | 5251 base::Bind(&OnGotContentHandlerID)); |
| 5225 return service_provider.Pass(); | 5252 return service_provider.Pass(); |
| 5226 } | 5253 } |
| 5227 | 5254 |
| 5228 } // namespace content | 5255 } // namespace content |
| OLD | NEW |