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

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

Issue 1874543002: Inside of content, prefer SiteInstanceImpl to SiteInstance. Base URL: https://chromium.googlesource.com/chromium/src.git@site_instance_unittest
Patch Set: Created 4 years, 8 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 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ 5 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_
6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ 6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <list> 10 #include <list>
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 // You must call Init() before using this class. 187 // You must call Init() before using this class.
188 RenderFrameHostManager( 188 RenderFrameHostManager(
189 FrameTreeNode* frame_tree_node, 189 FrameTreeNode* frame_tree_node,
190 RenderFrameHostDelegate* render_frame_delegate, 190 RenderFrameHostDelegate* render_frame_delegate,
191 RenderViewHostDelegate* render_view_delegate, 191 RenderViewHostDelegate* render_view_delegate,
192 RenderWidgetHostDelegate* render_widget_delegate, 192 RenderWidgetHostDelegate* render_widget_delegate,
193 Delegate* delegate); 193 Delegate* delegate);
194 ~RenderFrameHostManager(); 194 ~RenderFrameHostManager();
195 195
196 // For arguments, see WebContentsImpl constructor. 196 // For arguments, see WebContentsImpl constructor.
197 void Init(SiteInstance* site_instance, 197 void Init(SiteInstanceImpl* site_instance,
198 int32_t view_routing_id, 198 int32_t view_routing_id,
199 int32_t frame_routing_id, 199 int32_t frame_routing_id,
200 int32_t widget_routing_id); 200 int32_t widget_routing_id);
201 201
202 // Returns the currently active RenderFrameHost. 202 // Returns the currently active RenderFrameHost.
203 // 203 //
204 // This will be non-NULL between Init() and Shutdown(). You may want to NULL 204 // This will be non-NULL between Init() and Shutdown(). You may want to NULL
205 // check it in many cases, however. Windows can send us messages during the 205 // check it in many cases, however. Windows can send us messages during the
206 // destruction process after it has been shut down. 206 // destruction process after it has been shut down.
207 RenderFrameHostImpl* current_frame_host() const { 207 RenderFrameHostImpl* current_frame_host() const {
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 void DidNavigateFrame(RenderFrameHostImpl* render_frame_host, 326 void DidNavigateFrame(RenderFrameHostImpl* render_frame_host,
327 bool was_caused_by_user_gesture); 327 bool was_caused_by_user_gesture);
328 328
329 // Called when this frame's opener is changed to the frame specified by 329 // Called when this frame's opener is changed to the frame specified by
330 // |opener_routing_id| in |source_site_instance|'s process. This change 330 // |opener_routing_id| in |source_site_instance|'s process. This change
331 // could come from either the current RenderFrameHost or one of the 331 // could come from either the current RenderFrameHost or one of the
332 // proxies (e.g., window.open that targets a RemoteFrame by name). The 332 // proxies (e.g., window.open that targets a RemoteFrame by name). The
333 // updated opener will be forwarded to any other RenderFrameProxies and 333 // updated opener will be forwarded to any other RenderFrameProxies and
334 // RenderFrames for this FrameTreeNode. 334 // RenderFrames for this FrameTreeNode.
335 void DidChangeOpener(int opener_routing_id, 335 void DidChangeOpener(int opener_routing_id,
336 SiteInstance* source_site_instance); 336 SiteInstanceImpl* source_site_instance);
337 337
338 // Creates and initializes a RenderFrameHost. If |view_routing_id_ptr| 338 // Creates and initializes a RenderFrameHost. If |view_routing_id_ptr|
339 // is not nullptr it will be set to the routing id of the view associated with 339 // is not nullptr it will be set to the routing id of the view associated with
340 // the frame. 340 // the frame.
341 scoped_ptr<RenderFrameHostImpl> CreateRenderFrame(SiteInstance* instance, 341 scoped_ptr<RenderFrameHostImpl> CreateRenderFrame(SiteInstanceImpl* instance,
342 bool hidden, 342 bool hidden,
343 int* view_routing_id_ptr); 343 int* view_routing_id_ptr);
344 344
345 // Helper method to create and initialize a RenderFrameProxyHost and return 345 // Helper method to create and initialize a RenderFrameProxyHost and return
346 // its routing id. 346 // its routing id.
347 int CreateRenderFrameProxy(SiteInstance* instance); 347 int CreateRenderFrameProxy(SiteInstanceImpl* instance);
348 348
349 // Creates proxies for a new child frame at FrameTreeNode |child| in all 349 // Creates proxies for a new child frame at FrameTreeNode |child| in all
350 // SiteInstances for which the current frame has proxies. This method is 350 // SiteInstances for which the current frame has proxies. This method is
351 // called on the parent of a new child frame before the child leaves the 351 // called on the parent of a new child frame before the child leaves the
352 // SiteInstance. 352 // SiteInstance.
353 void CreateProxiesForChildFrame(FrameTreeNode* child); 353 void CreateProxiesForChildFrame(FrameTreeNode* child);
354 354
355 // Sets the passed passed interstitial as the currently showing interstitial. 355 // Sets the passed passed interstitial as the currently showing interstitial.
356 // |interstitial_page| should be non NULL (use the remove_interstitial_page 356 // |interstitial_page| should be non NULL (use the remove_interstitial_page
357 // method to unset the interstitial) and no interstitial page should be set 357 // method to unset the interstitial) and no interstitial page should be set
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 // Deletes any proxy hosts associated with this node. Used during destruction 398 // Deletes any proxy hosts associated with this node. Used during destruction
399 // of WebContentsImpl. 399 // of WebContentsImpl.
400 void ResetProxyHosts(); 400 void ResetProxyHosts();
401 401
402 void ClearRFHsPendingShutdown(); 402 void ClearRFHsPendingShutdown();
403 void ClearWebUIInstances(); 403 void ClearWebUIInstances();
404 404
405 // Returns the routing id for a RenderFrameHost or RenderFrameProxyHost 405 // Returns the routing id for a RenderFrameHost or RenderFrameProxyHost
406 // that has the given SiteInstance and is associated with this 406 // that has the given SiteInstance and is associated with this
407 // RenderFrameHostManager. Returns MSG_ROUTING_NONE if none is found. 407 // RenderFrameHostManager. Returns MSG_ROUTING_NONE if none is found.
408 int GetRoutingIdForSiteInstance(SiteInstance* site_instance); 408 int GetRoutingIdForSiteInstance(SiteInstanceImpl* site_instance);
409 409
410 // PlzNavigate 410 // PlzNavigate
411 // Notifies the RenderFrameHostManager that a new NavigationRequest has been 411 // Notifies the RenderFrameHostManager that a new NavigationRequest has been
412 // created and set in the FrameTreeNode so that it can speculatively create a 412 // created and set in the FrameTreeNode so that it can speculatively create a
413 // new RenderFrameHost (and potentially a new process) if needed. 413 // new RenderFrameHost (and potentially a new process) if needed.
414 void DidCreateNavigationRequest(const NavigationRequest& request); 414 void DidCreateNavigationRequest(const NavigationRequest& request);
415 415
416 // PlzNavigate 416 // PlzNavigate
417 // Called (possibly several times) during a navigation to select or create an 417 // Called (possibly several times) during a navigation to select or create an
418 // appropriate RenderFrameHost for the provided URL. The returned pointer will 418 // appropriate RenderFrameHost for the provided URL. The returned pointer will
(...skipping 24 matching lines...) Expand all
443 // Sends updated enforcement of strict mixed content checking to all 443 // Sends updated enforcement of strict mixed content checking to all
444 // frame proxies when the frame changes its setting. 444 // frame proxies when the frame changes its setting.
445 void OnEnforceStrictMixedContentChecking(bool should_enforce); 445 void OnEnforceStrictMixedContentChecking(bool should_enforce);
446 446
447 // Send updated origin to all frame proxies when the frame navigates to a new 447 // Send updated origin to all frame proxies when the frame navigates to a new
448 // origin. 448 // origin.
449 void OnDidUpdateOrigin(const url::Origin& origin, 449 void OnDidUpdateOrigin(const url::Origin& origin,
450 bool is_potentially_trustworthy_unique_origin); 450 bool is_potentially_trustworthy_unique_origin);
451 451
452 void EnsureRenderViewInitialized(RenderViewHostImpl* render_view_host, 452 void EnsureRenderViewInitialized(RenderViewHostImpl* render_view_host,
453 SiteInstance* instance); 453 SiteInstanceImpl* instance);
454 454
455 // Creates swapped out RenderViews and RenderFrameProxies for this frame's 455 // Creates swapped out RenderViews and RenderFrameProxies for this frame's
456 // FrameTree and for its opener chain in the given SiteInstance. This allows 456 // FrameTree and for its opener chain in the given SiteInstance. This allows
457 // other tabs to send cross-process JavaScript calls to their opener(s) and 457 // other tabs to send cross-process JavaScript calls to their opener(s) and
458 // to any other frames in the opener's FrameTree (e.g., supporting calls like 458 // to any other frames in the opener's FrameTree (e.g., supporting calls like
459 // window.opener.opener.frames[x][y]). Does not create proxies for the 459 // window.opener.opener.frames[x][y]). Does not create proxies for the
460 // subtree rooted at |skip_this_node| (e.g., if a node is being navigated, it 460 // subtree rooted at |skip_this_node| (e.g., if a node is being navigated, it
461 // can be passed here to prevent proxies from being created for it, in 461 // can be passed here to prevent proxies from being created for it, in
462 // case it is in the same FrameTree as another node on its opener chain). 462 // case it is in the same FrameTree as another node on its opener chain).
463 void CreateOpenerProxies(SiteInstance* instance, 463 void CreateOpenerProxies(SiteInstanceImpl* instance,
464 FrameTreeNode* skip_this_node); 464 FrameTreeNode* skip_this_node);
465 465
466 // Ensure that this frame has proxies in all SiteInstances that can discover 466 // Ensure that this frame has proxies in all SiteInstances that can discover
467 // this frame by name (e.g., via window.open("", "frame_name")). See 467 // this frame by name (e.g., via window.open("", "frame_name")). See
468 // https://crbug.com/511474. 468 // https://crbug.com/511474.
469 void CreateProxiesForNewNamedFrame(); 469 void CreateProxiesForNewNamedFrame();
470 470
471 // Returns a routing ID for the current FrameTreeNode's opener node in the 471 // Returns a routing ID for the current FrameTreeNode's opener node in the
472 // given SiteInstance. May return a routing ID of either a RenderFrameHost 472 // given SiteInstance. May return a routing ID of either a RenderFrameHost
473 // (if opener's current or pending RFH has SiteInstance |instance|) or a 473 // (if opener's current or pending RFH has SiteInstance |instance|) or a
474 // RenderFrameProxyHost. Returns MSG_ROUTING_NONE if there is no opener, or 474 // RenderFrameProxyHost. Returns MSG_ROUTING_NONE if there is no opener, or
475 // if the opener node doesn't have a proxy for |instance|. 475 // if the opener node doesn't have a proxy for |instance|.
476 int GetOpenerRoutingID(SiteInstance* instance); 476 int GetOpenerRoutingID(SiteInstanceImpl* instance);
477 477
478 // Called on the RFHM of the inner WebContents to create a 478 // Called on the RFHM of the inner WebContents to create a
479 // RenderFrameProxyHost in its outer WebContents's SiteInstance, 479 // RenderFrameProxyHost in its outer WebContents's SiteInstance,
480 // |outer_contents_site_instance|. The frame in outer WebContents that is 480 // |outer_contents_site_instance|. The frame in outer WebContents that is
481 // hosting the inner WebContents is |render_frame_host|, and the frame will 481 // hosting the inner WebContents is |render_frame_host|, and the frame will
482 // be swapped out with the proxy. 482 // be swapped out with the proxy.
483 void CreateOuterDelegateProxy(SiteInstance* outer_contents_site_instance, 483 void CreateOuterDelegateProxy(SiteInstanceImpl* outer_contents_site_instance,
484 RenderFrameHostImpl* render_frame_host); 484 RenderFrameHostImpl* render_frame_host);
485 485
486 // Sets the child RenderWidgetHostView for this frame, which must be part of 486 // Sets the child RenderWidgetHostView for this frame, which must be part of
487 // an inner WebContents. 487 // an inner WebContents.
488 void SetRWHViewForInnerContents(RenderWidgetHostView* child_rwhv); 488 void SetRWHViewForInnerContents(RenderWidgetHostView* child_rwhv);
489 489
490 // Returns the number of RenderFrameProxyHosts for this frame. 490 // Returns the number of RenderFrameProxyHosts for this frame.
491 int GetProxyCount(); 491 int GetProxyCount();
492 492
493 // Sends an IPC message to every process in the FrameTree. This should only be 493 // Sends an IPC message to every process in the FrameTree. This should only be
(...skipping 30 matching lines...) Expand all
524 RELATED, 524 RELATED,
525 // The default subframe SiteInstance for the current browsing instance. 525 // The default subframe SiteInstance for the current browsing instance.
526 RELATED_DEFAULT_SUBFRAME, 526 RELATED_DEFAULT_SUBFRAME,
527 }; 527 };
528 528
529 // Stores information regarding a SiteInstance targeted at a specific URL to 529 // Stores information regarding a SiteInstance targeted at a specific URL to
530 // allow for comparisons without having to actually create new instances. It 530 // allow for comparisons without having to actually create new instances. It
531 // can point to an existing one or store the details needed to create a new 531 // can point to an existing one or store the details needed to create a new
532 // one. 532 // one.
533 struct CONTENT_EXPORT SiteInstanceDescriptor { 533 struct CONTENT_EXPORT SiteInstanceDescriptor {
534 explicit SiteInstanceDescriptor(content::SiteInstance* site_instance) 534 explicit SiteInstanceDescriptor(content::SiteInstanceImpl* site_instance)
535 : existing_site_instance(site_instance), 535 : existing_site_instance(site_instance),
536 relation(SiteInstanceRelation::UNRELATED) {} 536 relation(SiteInstanceRelation::UNRELATED) {}
537 537
538 SiteInstanceDescriptor(BrowserContext* browser_context, 538 SiteInstanceDescriptor(BrowserContext* browser_context,
539 GURL dest_url, 539 GURL dest_url,
540 SiteInstanceRelation relation_to_current); 540 SiteInstanceRelation relation_to_current);
541 541
542 // Set with an existing SiteInstance to be reused. 542 // Set with an existing SiteInstance to be reused.
543 content::SiteInstance* existing_site_instance; 543 content::SiteInstanceImpl* existing_site_instance;
544 544
545 // In case |existing_site_instance| is null, specify a new site URL. 545 // In case |existing_site_instance| is null, specify a new site URL.
546 GURL new_site_url; 546 GURL new_site_url;
547 547
548 // In case |existing_site_instance| is null, specify how the new site is 548 // In case |existing_site_instance| is null, specify how the new site is
549 // related to the current BrowsingInstance. 549 // related to the current BrowsingInstance.
550 SiteInstanceRelation relation; 550 SiteInstanceRelation relation;
551 }; 551 };
552 552
553 // Create a RenderFrameProxyHost owned by this object. 553 // Create a RenderFrameProxyHost owned by this object.
554 RenderFrameProxyHost* CreateRenderFrameProxyHost(SiteInstance* site_instance, 554 RenderFrameProxyHost* CreateRenderFrameProxyHost(
555 RenderViewHostImpl* rvh); 555 SiteInstanceImpl* site_instance,
556 RenderViewHostImpl* rvh);
556 // Delete a RenderFrameProxyHost owned by this object. 557 // Delete a RenderFrameProxyHost owned by this object.
557 void DeleteRenderFrameProxyHost(SiteInstance* site_instance); 558 void DeleteRenderFrameProxyHost(SiteInstanceImpl* site_instance);
558 559
559 // Returns whether this tab should transition to a new renderer for 560 // Returns whether this tab should transition to a new renderer for
560 // cross-site URLs. Enabled unless we see the --process-per-tab command line 561 // cross-site URLs. Enabled unless we see the --process-per-tab command line
561 // switch. Can be overridden in unit tests. 562 // switch. Can be overridden in unit tests.
562 bool ShouldTransitionCrossSite(); 563 bool ShouldTransitionCrossSite();
563 564
564 // Returns true if for the navigation from |current_effective_url| to 565 // Returns true if for the navigation from |current_effective_url| to
565 // |new_effective_url|, a new SiteInstance and BrowsingInstance should be 566 // |new_effective_url|, a new SiteInstance and BrowsingInstance should be
566 // created (even if we are in a process model that doesn't usually swap). 567 // created (even if we are in a process model that doesn't usually swap).
567 // This forces a process swap and severs script connections with existing 568 // This forces a process swap and severs script connections with existing
568 // tabs. Cases where this can happen include transitions between WebUI and 569 // tabs. Cases where this can happen include transitions between WebUI and
569 // regular web pages. |new_site_instance| may be null. 570 // regular web pages. |new_site_instance| may be null.
570 // If there is no current NavigationEntry, then |current_is_view_source_mode| 571 // If there is no current NavigationEntry, then |current_is_view_source_mode|
571 // should be the same as |new_is_view_source_mode|. 572 // should be the same as |new_is_view_source_mode|.
572 // 573 //
573 // We use the effective URL here, since that's what is used in the 574 // We use the effective URL here, since that's what is used in the
574 // SiteInstance's site and when we later call IsSameWebSite. If there is no 575 // SiteInstance's site and when we later call IsSameWebSite. If there is no
575 // current NavigationEntry, check the current SiteInstance's site, which might 576 // current NavigationEntry, check the current SiteInstance's site, which might
576 // already be committed to a Web UI URL (such as the NTP). 577 // already be committed to a Web UI URL (such as the NTP).
577 bool ShouldSwapBrowsingInstancesForNavigation( 578 bool ShouldSwapBrowsingInstancesForNavigation(
578 const GURL& current_effective_url, 579 const GURL& current_effective_url,
579 bool current_is_view_source_mode, 580 bool current_is_view_source_mode,
580 SiteInstance* new_site_instance, 581 SiteInstanceImpl* new_site_instance,
581 const GURL& new_effective_url, 582 const GURL& new_effective_url,
582 bool new_is_view_source_mode) const; 583 bool new_is_view_source_mode) const;
583 584
584 // Returns the SiteInstance to use for the navigation. 585 // Returns the SiteInstance to use for the navigation.
585 scoped_refptr<SiteInstance> GetSiteInstanceForNavigation( 586 scoped_refptr<SiteInstanceImpl> GetSiteInstanceForNavigation(
586 const GURL& dest_url, 587 const GURL& dest_url,
587 SiteInstance* source_instance, 588 SiteInstanceImpl* source_instance,
588 SiteInstance* dest_instance, 589 SiteInstanceImpl* dest_instance,
589 SiteInstance* candidate_instance, 590 SiteInstanceImpl* candidate_instance,
590 ui::PageTransition transition, 591 ui::PageTransition transition,
591 bool dest_is_restore, 592 bool dest_is_restore,
592 bool dest_is_view_source_mode); 593 bool dest_is_view_source_mode);
593 594
594 // Returns a descriptor of the appropriate SiteInstance object for the given 595 // Returns a descriptor of the appropriate SiteInstance object for the given
595 // |dest_url|, possibly reusing the current, source or destination 596 // |dest_url|, possibly reusing the current, source or destination
596 // SiteInstance. The actual SiteInstance can then be obtained calling 597 // SiteInstance. The actual SiteInstance can then be obtained calling
597 // ConvertToSiteInstance with the descriptor. 598 // ConvertToSiteInstance with the descriptor.
598 // 599 //
599 // |source_instance| is the SiteInstance of the frame that initiated the 600 // |source_instance| is the SiteInstance of the frame that initiated the
600 // navigation. |current_instance| is the SiteInstance of the frame that is 601 // navigation. |current_instance| is the SiteInstance of the frame that is
601 // currently navigating. |dest_instance| is a predetermined SiteInstance that 602 // currently navigating. |dest_instance| is a predetermined SiteInstance that
602 // will be used if not null. 603 // will be used if not null.
603 // For example, if you have a parent frame A, which has a child frame B, and 604 // For example, if you have a parent frame A, which has a child frame B, and
604 // A is trying to change the src attribute of B, this will cause a navigation 605 // A is trying to change the src attribute of B, this will cause a navigation
605 // where the source SiteInstance is A and B is the current SiteInstance. 606 // where the source SiteInstance is A and B is the current SiteInstance.
606 // 607 //
607 // This is a helper function for GetSiteInstanceForNavigation. 608 // This is a helper function for GetSiteInstanceForNavigation.
608 SiteInstanceDescriptor DetermineSiteInstanceForURL( 609 SiteInstanceDescriptor DetermineSiteInstanceForURL(
609 const GURL& dest_url, 610 const GURL& dest_url,
610 SiteInstance* source_instance, 611 SiteInstanceImpl* source_instance,
611 SiteInstance* current_instance, 612 SiteInstanceImpl* current_instance,
612 SiteInstance* dest_instance, 613 SiteInstanceImpl* dest_instance,
613 ui::PageTransition transition, 614 ui::PageTransition transition,
614 bool dest_is_restore, 615 bool dest_is_restore,
615 bool dest_is_view_source_mode, 616 bool dest_is_view_source_mode,
616 bool force_browsing_instance_swap); 617 bool force_browsing_instance_swap);
617 618
618 // Converts a SiteInstanceDescriptor to the actual SiteInstance it describes. 619 // Converts a SiteInstanceDescriptor to the actual SiteInstance it describes.
619 // If a |candidate_instance| is provided (is not nullptr) and it matches the 620 // If a |candidate_instance| is provided (is not nullptr) and it matches the
620 // description, it is returned as is. 621 // description, it is returned as is.
621 scoped_refptr<SiteInstance> ConvertToSiteInstance( 622 scoped_refptr<SiteInstanceImpl> ConvertToSiteInstance(
622 const SiteInstanceDescriptor& descriptor, 623 const SiteInstanceDescriptor& descriptor,
623 SiteInstance* candidate_instance); 624 SiteInstanceImpl* candidate_instance);
624 625
625 // Returns true if |candidate| is currently on the same web site as dest_url. 626 // Returns true if |candidate| is currently on the same web site as dest_url.
626 bool IsCurrentlySameSite(RenderFrameHostImpl* candidate, 627 bool IsCurrentlySameSite(RenderFrameHostImpl* candidate,
627 const GURL& dest_url); 628 const GURL& dest_url);
628 629
629 // Creates a new RenderFrameHostImpl for the |new_instance| and assign it to 630 // Creates a new RenderFrameHostImpl for the |new_instance| and assign it to
630 // |pending_render_frame_host_| while respecting the opener route if needed 631 // |pending_render_frame_host_| while respecting the opener route if needed
631 // and stores it in pending_render_frame_host_. 632 // and stores it in pending_render_frame_host_.
632 void CreatePendingRenderFrameHost(SiteInstance* old_instance, 633 void CreatePendingRenderFrameHost(SiteInstanceImpl* old_instance,
633 SiteInstance* new_instance); 634 SiteInstanceImpl* new_instance);
634 635
635 // Ensure that we have created all needed proxies for a new RFH with 636 // Ensure that we have created all needed proxies for a new RFH with
636 // SiteInstance |new_instance|: (1) create swapped-out RVHs and proxies for 637 // SiteInstance |new_instance|: (1) create swapped-out RVHs and proxies for
637 // the new RFH's opener chain if we are staying in the same BrowsingInstance; 638 // the new RFH's opener chain if we are staying in the same BrowsingInstance;
638 // (2) Create proxies for the new RFH's SiteInstance in its own frame tree. 639 // (2) Create proxies for the new RFH's SiteInstance in its own frame tree.
639 void CreateProxiesForNewRenderFrameHost(SiteInstance* old_instance, 640 void CreateProxiesForNewRenderFrameHost(SiteInstanceImpl* old_instance,
640 SiteInstance* new_instance); 641 SiteInstanceImpl* new_instance);
641 642
642 // Traverse the opener chain and populate |opener_frame_trees| with 643 // Traverse the opener chain and populate |opener_frame_trees| with
643 // all FrameTrees accessible by following frame openers of nodes in the 644 // all FrameTrees accessible by following frame openers of nodes in the
644 // given node's FrameTree. |opener_frame_trees| is ordered so that openers 645 // given node's FrameTree. |opener_frame_trees| is ordered so that openers
645 // of smaller-indexed entries point to larger-indexed entries (i.e., this 646 // of smaller-indexed entries point to larger-indexed entries (i.e., this
646 // node's FrameTree is at index 0, its opener's FrameTree is at index 1, 647 // node's FrameTree is at index 0, its opener's FrameTree is at index 1,
647 // etc). If the traversal encounters a node with an opener pointing to a 648 // etc). If the traversal encounters a node with an opener pointing to a
648 // FrameTree that has already been traversed (such as when there's a cycle), 649 // FrameTree that has already been traversed (such as when there's a cycle),
649 // the node is added to |nodes_with_back_links|. 650 // the node is added to |nodes_with_back_links|.
650 void CollectOpenerFrameTrees( 651 void CollectOpenerFrameTrees(
651 std::vector<FrameTree*>* opener_frame_trees, 652 std::vector<FrameTree*>* opener_frame_trees,
652 base::hash_set<FrameTreeNode*>* nodes_with_back_links); 653 base::hash_set<FrameTreeNode*>* nodes_with_back_links);
653 654
654 // Create swapped out RenderViews and RenderFrameProxies in the given 655 // Create swapped out RenderViews and RenderFrameProxies in the given
655 // SiteInstance for the current node's FrameTree. Used as a helper function 656 // SiteInstance for the current node's FrameTree. Used as a helper function
656 // in CreateOpenerProxies for creating proxies in each FrameTree on the 657 // in CreateOpenerProxies for creating proxies in each FrameTree on the
657 // opener chain. Don't create proxies for the subtree rooted at 658 // opener chain. Don't create proxies for the subtree rooted at
658 // |skip_this_node|. 659 // |skip_this_node|.
659 void CreateOpenerProxiesForFrameTree(SiteInstance* instance, 660 void CreateOpenerProxiesForFrameTree(SiteInstanceImpl* instance,
660 FrameTreeNode* skip_this_node); 661 FrameTreeNode* skip_this_node);
661 662
662 // Creates a RenderFrameHost and corresponding RenderViewHost if necessary. 663 // Creates a RenderFrameHost and corresponding RenderViewHost if necessary.
663 scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost( 664 scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
664 SiteInstance* instance, 665 SiteInstanceImpl* instance,
665 int32_t view_routing_id, 666 int32_t view_routing_id,
666 int32_t frame_routing_id, 667 int32_t frame_routing_id,
667 int32_t widget_routing_id, 668 int32_t widget_routing_id,
668 bool hidden); 669 bool hidden);
669 670
670 // PlzNavigate 671 // PlzNavigate
671 // Create and initialize a speculative RenderFrameHost for an ongoing 672 // Create and initialize a speculative RenderFrameHost for an ongoing
672 // navigation. It might be destroyed and re-created later if the navigation 673 // navigation. It might be destroyed and re-created later if the navigation
673 // is redirected to a different SiteInstance. 674 // is redirected to a different SiteInstance.
674 bool CreateSpeculativeRenderFrameHost(SiteInstance* old_instance, 675 bool CreateSpeculativeRenderFrameHost(SiteInstanceImpl* old_instance,
675 SiteInstance* new_instance); 676 SiteInstanceImpl* new_instance);
676 677
677 // Initialization for RenderFrameHost uses the same sequence as InitRenderView 678 // Initialization for RenderFrameHost uses the same sequence as InitRenderView
678 // above. 679 // above.
679 bool InitRenderFrame(RenderFrameHostImpl* render_frame_host); 680 bool InitRenderFrame(RenderFrameHostImpl* render_frame_host);
680 681
681 // Makes the pending WebUI on the current RenderFrameHost active. Call this 682 // Makes the pending WebUI on the current RenderFrameHost active. Call this
682 // when the current RenderFrameHost commits and it has a pending WebUI. 683 // when the current RenderFrameHost commits and it has a pending WebUI.
683 void CommitPendingWebUI(); 684 void CommitPendingWebUI();
684 685
685 // Sets the pending RenderFrameHost to be the active one. Call when the 686 // Sets the pending RenderFrameHost to be the active one. Call when the
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 // Clears pending_render_frame_host_, returning it to the caller for disposal. 718 // Clears pending_render_frame_host_, returning it to the caller for disposal.
718 scoped_ptr<RenderFrameHostImpl> UnsetPendingRenderFrameHost(); 719 scoped_ptr<RenderFrameHostImpl> UnsetPendingRenderFrameHost();
719 720
720 // Helper method to set the active RenderFrameHost. Returns the old 721 // Helper method to set the active RenderFrameHost. Returns the old
721 // RenderFrameHost and updates counts. 722 // RenderFrameHost and updates counts.
722 scoped_ptr<RenderFrameHostImpl> SetRenderFrameHost( 723 scoped_ptr<RenderFrameHostImpl> SetRenderFrameHost(
723 scoped_ptr<RenderFrameHostImpl> render_frame_host); 724 scoped_ptr<RenderFrameHostImpl> render_frame_host);
724 725
725 RenderFrameHostImpl* UpdateStateForNavigate( 726 RenderFrameHostImpl* UpdateStateForNavigate(
726 const GURL& dest_url, 727 const GURL& dest_url,
727 SiteInstance* source_instance, 728 SiteInstanceImpl* source_instance,
728 SiteInstance* dest_instance, 729 SiteInstanceImpl* dest_instance,
729 ui::PageTransition transition, 730 ui::PageTransition transition,
730 bool dest_is_restore, 731 bool dest_is_restore,
731 bool dest_is_view_source_mode, 732 bool dest_is_view_source_mode,
732 const GlobalRequestID& transferred_request_id, 733 const GlobalRequestID& transferred_request_id,
733 int bindings); 734 int bindings);
734 735
735 // Updates the pending WebUI of the current RenderFrameHost for a same-site 736 // Updates the pending WebUI of the current RenderFrameHost for a same-site
736 // navigation. 737 // navigation.
737 void UpdatePendingWebUIOnCurrentFrameHost(const GURL& dest_url, 738 void UpdatePendingWebUIOnCurrentFrameHost(const GURL& dest_url,
738 int entry_bindings); 739 int entry_bindings);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 scoped_ptr<RenderFrameHostImpl> speculative_render_frame_host_; 797 scoped_ptr<RenderFrameHostImpl> speculative_render_frame_host_;
797 798
798 base::WeakPtrFactory<RenderFrameHostManager> weak_factory_; 799 base::WeakPtrFactory<RenderFrameHostManager> weak_factory_;
799 800
800 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager); 801 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager);
801 }; 802 };
802 803
803 } // namespace content 804 } // namespace content
804 805
805 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ 806 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | content/browser/frame_host/render_frame_host_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698