Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 972313002: Make <webview> use out-of-process iframe architecture. (Closed) Base URL: ssh://saopaulo.wat/mnt/dev/shared/src@testoopif2z-better-chrome
Patch Set: Revert unused changes from previous attempt + more cleanup. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_manager.h" 5 #include "content/browser/frame_host/render_frame_host_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 RenderFrameHostDelegate* render_frame_delegate, 54 RenderFrameHostDelegate* render_frame_delegate,
55 RenderViewHostDelegate* render_view_delegate, 55 RenderViewHostDelegate* render_view_delegate,
56 RenderWidgetHostDelegate* render_widget_delegate, 56 RenderWidgetHostDelegate* render_widget_delegate,
57 Delegate* delegate) 57 Delegate* delegate)
58 : frame_tree_node_(frame_tree_node), 58 : frame_tree_node_(frame_tree_node),
59 delegate_(delegate), 59 delegate_(delegate),
60 cross_navigation_pending_(false), 60 cross_navigation_pending_(false),
61 render_frame_delegate_(render_frame_delegate), 61 render_frame_delegate_(render_frame_delegate),
62 render_view_delegate_(render_view_delegate), 62 render_view_delegate_(render_view_delegate),
63 render_widget_delegate_(render_widget_delegate), 63 render_widget_delegate_(render_widget_delegate),
64 pseudo_parent_frame_tree_node_id_(-1),
64 interstitial_page_(nullptr), 65 interstitial_page_(nullptr),
65 should_reuse_web_ui_(false), 66 should_reuse_web_ui_(false),
66 weak_factory_(this) { 67 weak_factory_(this) {
67 DCHECK(frame_tree_node_); 68 DCHECK(frame_tree_node_);
68 } 69 }
69 70
70 RenderFrameHostManager::~RenderFrameHostManager() { 71 RenderFrameHostManager::~RenderFrameHostManager() {
71 if (pending_render_frame_host_) 72 if (pending_render_frame_host_)
72 UnsetPendingRenderFrameHost(); 73 UnsetPendingRenderFrameHost();
73 74
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 ->render_manager() 143 ->render_manager()
143 ->current_frame_host() 144 ->current_frame_host()
144 ->GetSiteInstance() 145 ->GetSiteInstance()
145 ->GetId()); 146 ->GetId());
146 if (iter == proxy_hosts_.end()) 147 if (iter == proxy_hosts_.end())
147 return NULL; 148 return NULL;
148 149
149 return iter->second; 150 return iter->second;
150 } 151 }
151 152
153 RenderFrameProxyHost* RenderFrameHostManager::GetProxyToEmbedder() {
154 FrameTreeNode* embedder_frame_tree_node =
155 FrameTree::GloballyFindByID(pseudo_parent_frame_tree_node_id_);
156 if (!embedder_frame_tree_node)
157 return NULL;
158 RenderFrameProxyHostMap::iterator iter =
159 proxy_hosts_.find(embedder_frame_tree_node->render_manager()
160 ->current_frame_host()->GetSiteInstance()
161 ->GetId());
162 if (iter == proxy_hosts_.end())
163 return NULL;
164 return iter->second;
165 }
166
152 void RenderFrameHostManager::SetPendingWebUI(const GURL& url, int bindings) { 167 void RenderFrameHostManager::SetPendingWebUI(const GURL& url, int bindings) {
153 pending_web_ui_ = CreateWebUI(url, bindings); 168 pending_web_ui_ = CreateWebUI(url, bindings);
154 pending_and_current_web_ui_.reset(); 169 pending_and_current_web_ui_.reset();
155 } 170 }
156 171
157 scoped_ptr<WebUIImpl> RenderFrameHostManager::CreateWebUI(const GURL& url, 172 scoped_ptr<WebUIImpl> RenderFrameHostManager::CreateWebUI(const GURL& url,
158 int bindings) { 173 int bindings) {
159 scoped_ptr<WebUIImpl> new_web_ui(delegate_->CreateWebUIForRenderManager(url)); 174 scoped_ptr<WebUIImpl> new_web_ui(delegate_->CreateWebUIForRenderManager(url));
160 175
161 // If we have assigned (zero or more) bindings to this NavigationEntry in the 176 // If we have assigned (zero or more) bindings to this NavigationEntry in the
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 response_started_id_.reset(); 437 response_started_id_.reset();
423 } 438 }
424 439
425 void RenderFrameHostManager::ClearNavigationTransitionData() { 440 void RenderFrameHostManager::ClearNavigationTransitionData() {
426 render_frame_host_->ClearPendingTransitionRequestData(); 441 render_frame_host_->ClearPendingTransitionRequestData();
427 } 442 }
428 443
429 void RenderFrameHostManager::DidNavigateFrame( 444 void RenderFrameHostManager::DidNavigateFrame(
430 RenderFrameHostImpl* render_frame_host, 445 RenderFrameHostImpl* render_frame_host,
431 bool was_caused_by_user_gesture) { 446 bool was_caused_by_user_gesture) {
447 if (render_frame_host->GetSiteInstance()->GetSiteURL().SchemeIs(
Fady Samuel 2015/03/04 22:21:06 This doesn't work for other guest types such as <a
Charlie Reis 2015/03/10 04:09:44 Is RenderProcessHostImpl::IsIsolatedGuest() still
lazyboy 2015/04/01 21:47:57 I'm using GetProxyToEmbedder() instead, if we have
448 "chrome-guest")) {
449 RenderFrameProxyHost* proxy_to_embedder = GetProxyToEmbedder();
450 DCHECK(proxy_to_embedder);
451 proxy_to_embedder->SetChildRWHView(current_host()->GetView());
Charlie Reis 2015/03/10 04:09:44 This doesn't seem like the right place for these c
lazyboy 2015/04/01 21:47:57 Technically we don't have pending and don't commit
452 proxy_to_embedder->SetOverriddenParentFTNID(
453 pseudo_parent_frame_tree_node_id_);
454 current_host()->GetView()->Show();
Fady Samuel 2015/03/04 22:21:06 This breaks visibility I think.
lazyboy 2015/04/01 21:47:57 Added TODO to investigate.
455 }
456
432 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 457 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
433 switches::kEnableBrowserSideNavigation)) { 458 switches::kEnableBrowserSideNavigation)) {
434 if (render_frame_host == speculative_render_frame_host_.get()) { 459 if (render_frame_host == speculative_render_frame_host_.get()) {
435 CommitPending(); 460 CommitPending();
436 } else if (render_frame_host == render_frame_host_.get()) { 461 } else if (render_frame_host == render_frame_host_.get()) {
437 // TODO(carlosk): this code doesn't properly handle in-page navigation or 462 // TODO(carlosk): this code doesn't properly handle in-page navigation or
438 // interwoven navigation requests. 463 // interwoven navigation requests.
439 DCHECK(!speculative_render_frame_host_); 464 DCHECK(!speculative_render_frame_host_);
440 } else { 465 } else {
441 // No one else should be sending us a DidNavigate in this state. 466 // No one else should be sending us a DidNavigate in this state.
(...skipping 1511 matching lines...) Expand 10 before | Expand all | Expand 10 after
1953 void RenderFrameHostManager::DeleteRenderFrameProxyHost( 1978 void RenderFrameHostManager::DeleteRenderFrameProxyHost(
1954 SiteInstance* instance) { 1979 SiteInstance* instance) {
1955 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); 1980 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId());
1956 if (iter != proxy_hosts_.end()) { 1981 if (iter != proxy_hosts_.end()) {
1957 delete iter->second; 1982 delete iter->second;
1958 proxy_hosts_.erase(iter); 1983 proxy_hosts_.erase(iter);
1959 } 1984 }
1960 } 1985 }
1961 1986
1962 } // namespace content 1987 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698