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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 1086283002: Track frame openers in FrameTreeNodes instead of WebContents (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address Charlie's comments Created 5 years, 6 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 (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 <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 } 197 }
198 198
199 void SetAccessibilityModeOnFrame(AccessibilityMode mode, 199 void SetAccessibilityModeOnFrame(AccessibilityMode mode,
200 RenderFrameHost* frame_host) { 200 RenderFrameHost* frame_host) {
201 static_cast<RenderFrameHostImpl*>(frame_host)->SetAccessibilityMode(mode); 201 static_cast<RenderFrameHostImpl*>(frame_host)->SetAccessibilityMode(mode);
202 } 202 }
203 203
204 } // namespace 204 } // namespace
205 205
206 WebContents* WebContents::Create(const WebContents::CreateParams& params) { 206 WebContents* WebContents::Create(const WebContents::CreateParams& params) {
207 return WebContentsImpl::CreateWithOpener( 207 FrameTreeNode* opener_node = nullptr;
208 params, static_cast<WebContentsImpl*>(params.opener)); 208 if (params.opener_render_frame_id != MSG_ROUTING_NONE) {
209 RenderFrameHostImpl* opener_rfh = RenderFrameHostImpl::FromID(
210 params.opener_render_process_id, params.opener_render_frame_id);
211 if (opener_rfh)
212 opener_node = opener_rfh->frame_tree_node();
213 }
214 return WebContentsImpl::CreateWithOpener(params, opener_node);
209 } 215 }
210 216
211 WebContents* WebContents::CreateWithSessionStorage( 217 WebContents* WebContents::CreateWithSessionStorage(
212 const WebContents::CreateParams& params, 218 const WebContents::CreateParams& params,
213 const SessionStorageNamespaceMap& session_storage_namespace_map) { 219 const SessionStorageNamespaceMap& session_storage_namespace_map) {
214 WebContentsImpl* new_contents = new WebContentsImpl( 220 WebContentsImpl* new_contents = new WebContentsImpl(params.browser_context);
215 params.browser_context, NULL);
216 221
217 for (SessionStorageNamespaceMap::const_iterator it = 222 for (SessionStorageNamespaceMap::const_iterator it =
218 session_storage_namespace_map.begin(); 223 session_storage_namespace_map.begin();
219 it != session_storage_namespace_map.end(); 224 it != session_storage_namespace_map.end();
220 ++it) { 225 ++it) {
221 new_contents->GetController() 226 new_contents->GetController()
222 .SetSessionStorageNamespace(it->first, it->second.get()); 227 .SetSessionStorageNamespace(it->first, it->second.get());
223 } 228 }
224 229
225 new_contents->Init(params); 230 new_contents->Init(params);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 render_frame_id(render_frame_id), 286 render_frame_id(render_frame_id),
282 chooser(chooser), 287 chooser(chooser),
283 identifier(identifier) { 288 identifier(identifier) {
284 } 289 }
285 290
286 WebContentsImpl::ColorChooserInfo::~ColorChooserInfo() { 291 WebContentsImpl::ColorChooserInfo::~ColorChooserInfo() {
287 } 292 }
288 293
289 // WebContentsImpl ------------------------------------------------------------- 294 // WebContentsImpl -------------------------------------------------------------
290 295
291 WebContentsImpl::WebContentsImpl(BrowserContext* browser_context, 296 WebContentsImpl::WebContentsImpl(BrowserContext* browser_context)
292 WebContentsImpl* opener)
293 : delegate_(NULL), 297 : delegate_(NULL),
294 controller_(this, browser_context), 298 controller_(this, browser_context),
295 render_view_host_delegate_view_(NULL), 299 render_view_host_delegate_view_(NULL),
296 opener_(opener), 300 created_with_opener_(false),
297 created_with_opener_(!!opener),
298 #if defined(OS_WIN) 301 #if defined(OS_WIN)
299 accessible_parent_(NULL), 302 accessible_parent_(NULL),
300 #endif 303 #endif
301 frame_tree_(new NavigatorImpl(&controller_, this), 304 frame_tree_(new NavigatorImpl(&controller_, this),
302 this, 305 this,
303 this, 306 this,
304 this, 307 this,
305 this), 308 this),
306 is_loading_(false), 309 is_loading_(false),
307 is_load_to_different_document_(false), 310 is_load_to_different_document_(false),
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 ResetWebContents()); 419 ResetWebContents());
417 420
418 SetDelegate(NULL); 421 SetDelegate(NULL);
419 422
420 STLDeleteContainerPairSecondPointers(destruction_observers_.begin(), 423 STLDeleteContainerPairSecondPointers(destruction_observers_.begin(),
421 destruction_observers_.end()); 424 destruction_observers_.end());
422 } 425 }
423 426
424 WebContentsImpl* WebContentsImpl::CreateWithOpener( 427 WebContentsImpl* WebContentsImpl::CreateWithOpener(
425 const WebContents::CreateParams& params, 428 const WebContents::CreateParams& params,
426 WebContentsImpl* opener) { 429 FrameTreeNode* opener) {
427 TRACE_EVENT0("browser", "WebContentsImpl::CreateWithOpener"); 430 TRACE_EVENT0("browser", "WebContentsImpl::CreateWithOpener");
428 WebContentsImpl* new_contents = new WebContentsImpl( 431 WebContentsImpl* new_contents = new WebContentsImpl(params.browser_context);
429 params.browser_context, params.opener_suppressed ? NULL : opener);
430 432
433 if (!params.opener_suppressed && opener) {
434 new_contents->GetFrameTree()->root()->SetOpener(opener);
435 new_contents->created_with_opener_ = true;
436 }
437
438 // This may be true even when opener is null, such as when opening blocked
439 // popups.
431 if (params.created_with_opener) 440 if (params.created_with_opener)
432 new_contents->created_with_opener_ = true; 441 new_contents->created_with_opener_ = true;
433 442
434 if (params.guest_delegate) { 443 if (params.guest_delegate) {
435 // This makes |new_contents| act as a guest. 444 // This makes |new_contents| act as a guest.
436 // For more info, see comment above class BrowserPluginGuest. 445 // For more info, see comment above class BrowserPluginGuest.
437 BrowserPluginGuest::Create(new_contents, params.guest_delegate); 446 BrowserPluginGuest::Create(new_contents, params.guest_delegate);
438 // We are instantiating a WebContents for browser plugin. Set its subframe 447 // We are instantiating a WebContents for browser plugin. Set its subframe
439 // bit to true. 448 // bit to true.
440 new_contents->is_subframe_ = true; 449 new_contents->is_subframe_ = true;
(...skipping 26 matching lines...) Expand all
467 return result; 476 return result;
468 } 477 }
469 478
470 // static 479 // static
471 WebContentsImpl* WebContentsImpl::FromFrameTreeNode( 480 WebContentsImpl* WebContentsImpl::FromFrameTreeNode(
472 FrameTreeNode* frame_tree_node) { 481 FrameTreeNode* frame_tree_node) {
473 return static_cast<WebContentsImpl*>( 482 return static_cast<WebContentsImpl*>(
474 WebContents::FromRenderFrameHost(frame_tree_node->current_frame_host())); 483 WebContents::FromRenderFrameHost(frame_tree_node->current_frame_host()));
475 } 484 }
476 485
486 WebContentsImpl* WebContentsImpl::GetOpenerWebContents() const {
487 FrameTreeNode* opener_ftn = frame_tree_.root()->opener();
488 return opener_ftn ? FromFrameTreeNode(opener_ftn) : nullptr;
489 }
490
477 RenderFrameHostManager* WebContentsImpl::GetRenderManagerForTesting() { 491 RenderFrameHostManager* WebContentsImpl::GetRenderManagerForTesting() {
478 return GetRenderManager(); 492 return GetRenderManager();
479 } 493 }
480 494
481 bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host, 495 bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host,
482 const IPC::Message& message) { 496 const IPC::Message& message) {
483 return OnMessageReceived(render_view_host, NULL, message); 497 return OnMessageReceived(render_view_host, NULL, message);
484 } 498 }
485 499
486 bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host, 500 bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host,
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after
1163 GetMainFrame()->DispatchBeforeUnload(for_cross_site_transition); 1177 GetMainFrame()->DispatchBeforeUnload(for_cross_site_transition);
1164 } 1178 }
1165 1179
1166 void WebContentsImpl::Stop() { 1180 void WebContentsImpl::Stop() {
1167 GetRenderManager()->Stop(); 1181 GetRenderManager()->Stop();
1168 FOR_EACH_OBSERVER(WebContentsObserver, observers_, NavigationStopped()); 1182 FOR_EACH_OBSERVER(WebContentsObserver, observers_, NavigationStopped());
1169 } 1183 }
1170 1184
1171 WebContents* WebContentsImpl::Clone() { 1185 WebContents* WebContentsImpl::Clone() {
1172 // We use our current SiteInstance since the cloned entry will use it anyway. 1186 // We use our current SiteInstance since the cloned entry will use it anyway.
1173 // We pass our own opener so that the cloned page can access it if it was 1187 // We pass our own opener so that the cloned page can access it if it was set
1174 // before. 1188 // before.
1175 CreateParams create_params(GetBrowserContext(), GetSiteInstance()); 1189 CreateParams create_params(GetBrowserContext(), GetSiteInstance());
1176 create_params.initial_size = GetContainerBounds().size(); 1190 create_params.initial_size = GetContainerBounds().size();
1177 WebContentsImpl* tc = CreateWithOpener(create_params, opener_); 1191 WebContentsImpl* tc =
1192 CreateWithOpener(create_params, frame_tree_.root()->opener());
1178 tc->GetController().CopyStateFrom(controller_); 1193 tc->GetController().CopyStateFrom(controller_);
1179 FOR_EACH_OBSERVER(WebContentsObserver, 1194 FOR_EACH_OBSERVER(WebContentsObserver,
1180 observers_, 1195 observers_,
1181 DidCloneToNewWebContents(this, tc)); 1196 DidCloneToNewWebContents(this, tc));
1182 return tc; 1197 return tc;
1183 } 1198 }
1184 1199
1185 void WebContentsImpl::Observe(int type, 1200 void WebContentsImpl::Observe(int type,
1186 const NotificationSource& source, 1201 const NotificationSource& source,
1187 const NotificationDetails& details) { 1202 const NotificationDetails& details) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 // Regular WebContentsView. 1263 // Regular WebContentsView.
1249 view_.reset(CreateWebContentsView( 1264 view_.reset(CreateWebContentsView(
1250 this, delegate, &render_view_host_delegate_view_)); 1265 this, delegate, &render_view_host_delegate_view_));
1251 } 1266 }
1252 CHECK(render_view_host_delegate_view_); 1267 CHECK(render_view_host_delegate_view_);
1253 CHECK(view_.get()); 1268 CHECK(view_.get());
1254 1269
1255 gfx::Size initial_size = params.initial_size; 1270 gfx::Size initial_size = params.initial_size;
1256 view_->CreateView(initial_size, params.context); 1271 view_->CreateView(initial_size, params.context);
1257 1272
1258 // Listen for whether our opener gets destroyed.
1259 if (opener_)
1260 AddDestructionObserver(opener_);
1261
1262 #if defined(ENABLE_PLUGINS) 1273 #if defined(ENABLE_PLUGINS)
1263 plugin_content_origin_whitelist_.reset( 1274 plugin_content_origin_whitelist_.reset(
1264 new PluginContentOriginWhitelist(this)); 1275 new PluginContentOriginWhitelist(this));
1265 #endif 1276 #endif
1266 1277
1267 registrar_.Add(this, 1278 registrar_.Add(this,
1268 NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, 1279 NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED,
1269 NotificationService::AllBrowserContextsAndSources()); 1280 NotificationService::AllBrowserContextsAndSources());
1270 1281
1271 screen_orientation_dispatcher_host_.reset( 1282 screen_orientation_dispatcher_host_.reset(
(...skipping 25 matching lines...) Expand all
1297 // main RenderFrameHost. It must be done here for main frames, since the 1308 // main RenderFrameHost. It must be done here for main frames, since the
1298 // NotifySwappedFromRenderManager expects view_ to already be created and that 1309 // NotifySwappedFromRenderManager expects view_ to already be created and that
1299 // happens after RenderFrameHostManager::Init. 1310 // happens after RenderFrameHostManager::Init.
1300 NotifySwappedFromRenderManager( 1311 NotifySwappedFromRenderManager(
1301 nullptr, GetRenderManager()->current_frame_host(), true); 1312 nullptr, GetRenderManager()->current_frame_host(), true);
1302 } 1313 }
1303 1314
1304 void WebContentsImpl::OnWebContentsDestroyed(WebContentsImpl* web_contents) { 1315 void WebContentsImpl::OnWebContentsDestroyed(WebContentsImpl* web_contents) {
1305 RemoveDestructionObserver(web_contents); 1316 RemoveDestructionObserver(web_contents);
1306 1317
1307 // Clear the opener if it has been closed.
1308 if (web_contents == opener_) {
1309 opener_ = NULL;
1310 return;
1311 }
1312 // Clear a pending contents that has been closed before being shown. 1318 // Clear a pending contents that has been closed before being shown.
1313 for (PendingContents::iterator iter = pending_contents_.begin(); 1319 for (PendingContents::iterator iter = pending_contents_.begin();
1314 iter != pending_contents_.end(); 1320 iter != pending_contents_.end();
1315 ++iter) { 1321 ++iter) {
1316 if (iter->second != web_contents) 1322 if (iter->second != web_contents)
1317 continue; 1323 continue;
1318 pending_contents_.erase(iter); 1324 pending_contents_.erase(iter);
1319 return; 1325 return;
1320 } 1326 }
1321 NOTREACHED(); 1327 NOTREACHED();
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
1603 main_frame_route_id); 1609 main_frame_route_id);
1604 return; 1610 return;
1605 } 1611 }
1606 1612
1607 // Create the new web contents. This will automatically create the new 1613 // Create the new web contents. This will automatically create the new
1608 // WebContentsView. In the future, we may want to create the view separately. 1614 // WebContentsView. In the future, we may want to create the view separately.
1609 CreateParams create_params(GetBrowserContext(), site_instance.get()); 1615 CreateParams create_params(GetBrowserContext(), site_instance.get());
1610 create_params.routing_id = route_id; 1616 create_params.routing_id = route_id;
1611 create_params.main_frame_routing_id = main_frame_route_id; 1617 create_params.main_frame_routing_id = main_frame_route_id;
1612 create_params.main_frame_name = base::UTF16ToUTF8(params.frame_name); 1618 create_params.main_frame_name = base::UTF16ToUTF8(params.frame_name);
1613 create_params.opener = this; 1619 create_params.opener_render_process_id = GetRenderProcessHost()->GetID();
1620 create_params.opener_render_frame_id = params.opener_render_frame_id;
1614 create_params.opener_suppressed = params.opener_suppressed; 1621 create_params.opener_suppressed = params.opener_suppressed;
1615 if (params.disposition == NEW_BACKGROUND_TAB) 1622 if (params.disposition == NEW_BACKGROUND_TAB)
1616 create_params.initially_hidden = true; 1623 create_params.initially_hidden = true;
1617 create_params.renderer_initiated_creation = true; 1624 create_params.renderer_initiated_creation = true;
1618 1625
1619 WebContentsImpl* new_contents = NULL; 1626 WebContentsImpl* new_contents = NULL;
1620 if (!is_guest) { 1627 if (!is_guest) {
1621 create_params.context = view_->GetNativeView(); 1628 create_params.context = view_->GetNativeView();
1622 create_params.initial_size = GetContainerBounds().size(); 1629 create_params.initial_size = GetContainerBounds().size();
1623 new_contents = static_cast<WebContentsImpl*>( 1630 new_contents = static_cast<WebContentsImpl*>(
(...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after
2472 bool WebContentsImpl::GotResponseToLockMouseRequest(bool allowed) { 2479 bool WebContentsImpl::GotResponseToLockMouseRequest(bool allowed) {
2473 if (GetBrowserPluginGuest()) 2480 if (GetBrowserPluginGuest())
2474 return GetBrowserPluginGuest()->LockMouse(allowed); 2481 return GetBrowserPluginGuest()->LockMouse(allowed);
2475 2482
2476 return GetRenderViewHost() 2483 return GetRenderViewHost()
2477 ? GetRenderViewHost()->GotResponseToLockMouseRequest(allowed) 2484 ? GetRenderViewHost()->GotResponseToLockMouseRequest(allowed)
2478 : false; 2485 : false;
2479 } 2486 }
2480 2487
2481 bool WebContentsImpl::HasOpener() const { 2488 bool WebContentsImpl::HasOpener() const {
2482 return opener_ != NULL; 2489 return GetOpenerWebContents() != NULL;
2483 } 2490 }
2484 2491
2485 WebContents* WebContentsImpl::GetOpener() const { 2492 WebContents* WebContentsImpl::GetOpener() const {
2486 return static_cast<WebContents*>(opener_); 2493 return static_cast<WebContents*>(GetOpenerWebContents());
Charlie Reis 2015/06/09 04:38:38 Yeah, just put the new GetOpenerWebContents logic
alexmos 2015/06/09 20:13:05 Done.
2487 } 2494 }
2488 2495
2489 void WebContentsImpl::DidChooseColorInColorChooser(SkColor color) { 2496 void WebContentsImpl::DidChooseColorInColorChooser(SkColor color) {
2490 if (!color_chooser_info_.get()) 2497 if (!color_chooser_info_.get())
2491 return; 2498 return;
2492 RenderFrameHost* rfh = RenderFrameHost::FromID( 2499 RenderFrameHost* rfh = RenderFrameHost::FromID(
2493 color_chooser_info_->render_process_id, 2500 color_chooser_info_->render_process_id,
2494 color_chooser_info_->render_frame_id); 2501 color_chooser_info_->render_frame_id);
2495 if (!rfh) 2502 if (!rfh)
2496 return; 2503 return;
(...skipping 1333 matching lines...) Expand 10 before | Expand all | Expand 10 after
3830 // Update the URL display. 3837 // Update the URL display.
3831 NotifyNavigationStateChanged(INVALIDATE_TYPE_URL); 3838 NotifyNavigationStateChanged(INVALIDATE_TYPE_URL);
3832 } 3839 }
3833 3840
3834 void WebContentsImpl::DidChangeName(RenderFrameHost* render_frame_host, 3841 void WebContentsImpl::DidChangeName(RenderFrameHost* render_frame_host,
3835 const std::string& name) { 3842 const std::string& name) {
3836 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 3843 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
3837 FrameNameChanged(render_frame_host, name)); 3844 FrameNameChanged(render_frame_host, name));
3838 } 3845 }
3839 3846
3840 void WebContentsImpl::DidDisownOpener(RenderFrameHost* render_frame_host) {
3841 // No action is necessary if the opener has already been cleared.
3842 if (!opener_)
3843 return;
3844
3845 // Clear our opener so that future cross-process navigations don't have an
3846 // opener assigned.
3847 RemoveDestructionObserver(opener_);
3848 opener_ = NULL;
3849
3850 // Notify all swapped out RenderViewHosts for this tab. This is important
3851 // in case we go back to them, or if another window in those processes tries
3852 // to access window.opener.
3853 GetRenderManager()->DidDisownOpener(render_frame_host);
3854 }
3855
3856 void WebContentsImpl::DocumentOnLoadCompleted( 3847 void WebContentsImpl::DocumentOnLoadCompleted(
3857 RenderFrameHost* render_frame_host) { 3848 RenderFrameHost* render_frame_host) {
3858 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 3849 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
3859 DocumentOnLoadCompletedInMainFrame()); 3850 DocumentOnLoadCompletedInMainFrame());
3860 3851
3861 // TODO(avi): Remove. http://crbug.com/170921 3852 // TODO(avi): Remove. http://crbug.com/170921
3862 NotificationService::current()->Notify( 3853 NotificationService::current()->Notify(
3863 NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, 3854 NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME,
3864 Source<WebContents>(this), 3855 Source<WebContents>(this),
3865 NotificationService::NoDetails()); 3856 NotificationService::NoDetails());
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
4117 } 4108 }
4118 4109
4119 void WebContentsImpl::NotifyMainFrameSwappedFromRenderManager( 4110 void WebContentsImpl::NotifyMainFrameSwappedFromRenderManager(
4120 RenderViewHost* old_host, 4111 RenderViewHost* old_host,
4121 RenderViewHost* new_host) { 4112 RenderViewHost* new_host) {
4122 NotifyViewSwapped(old_host, new_host); 4113 NotifyViewSwapped(old_host, new_host);
4123 } 4114 }
4124 4115
4125 int WebContentsImpl::CreateOpenerRenderViewsForRenderManager( 4116 int WebContentsImpl::CreateOpenerRenderViewsForRenderManager(
4126 SiteInstance* instance) { 4117 SiteInstance* instance) {
4127 if (!opener_) 4118 WebContentsImpl* opener = GetOpenerWebContents();
4119 if (!opener)
4128 return MSG_ROUTING_NONE; 4120 return MSG_ROUTING_NONE;
4129 4121
4130 // Recursively create RenderViews for anything else in the opener chain. 4122 // Recursively create RenderViews for anything else in the opener chain.
4131 return opener_->CreateOpenerRenderViews(instance); 4123 return opener->CreateOpenerRenderViews(instance);
4132 } 4124 }
4133 4125
4134 int WebContentsImpl::CreateOpenerRenderViews(SiteInstance* instance) { 4126 int WebContentsImpl::CreateOpenerRenderViews(SiteInstance* instance) {
4135 int opener_route_id = MSG_ROUTING_NONE; 4127 int opener_route_id = MSG_ROUTING_NONE;
4136 4128
4137 // If this tab has an opener, ensure it has a RenderView in the given 4129 // If this tab has an opener, ensure it has a RenderView in the given
4138 // SiteInstance as well. 4130 // SiteInstance as well.
4139 if (opener_) 4131 WebContentsImpl* opener = GetOpenerWebContents();
4140 opener_route_id = opener_->CreateOpenerRenderViews(instance); 4132 if (opener)
4133 opener_route_id = opener->CreateOpenerRenderViews(instance);
4141 4134
4142 // If any of the renderers (current, pending, or swapped out) for this 4135 // If any of the renderers (current, pending, or swapped out) for this
4143 // WebContents has the same SiteInstance, use it. 4136 // WebContents has the same SiteInstance, use it.
4144 if (GetRenderManager()->current_host()->GetSiteInstance() == instance) 4137 if (GetRenderManager()->current_host()->GetSiteInstance() == instance)
4145 return GetRenderManager()->current_host()->GetRoutingID(); 4138 return GetRenderManager()->current_host()->GetRoutingID();
4146 4139
4147 if (GetRenderManager()->pending_render_view_host() && 4140 if (GetRenderManager()->pending_render_view_host() &&
4148 GetRenderManager()->pending_render_view_host()->GetSiteInstance() == 4141 GetRenderManager()->pending_render_view_host()->GetSiteInstance() ==
4149 instance) 4142 instance)
4150 return GetRenderManager()->pending_render_view_host()->GetRoutingID(); 4143 return GetRenderManager()->pending_render_view_host()->GetRoutingID();
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
4440 player_map->erase(it); 4433 player_map->erase(it);
4441 } 4434 }
4442 4435
4443 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { 4436 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) {
4444 force_disable_overscroll_content_ = force_disable; 4437 force_disable_overscroll_content_ = force_disable;
4445 if (view_) 4438 if (view_)
4446 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); 4439 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
4447 } 4440 }
4448 4441
4449 } // namespace content 4442 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698