Chromium Code Reviews| 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 #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 "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 24 class CrossProcessFrameConnector; | 24 class CrossProcessFrameConnector; |
| 25 class CrossSiteTransferringRequest; | 25 class CrossSiteTransferringRequest; |
| 26 class InterstitialPageImpl; | 26 class InterstitialPageImpl; |
| 27 class FrameTreeNode; | 27 class FrameTreeNode; |
| 28 class NavigationControllerImpl; | 28 class NavigationControllerImpl; |
| 29 class NavigationEntry; | 29 class NavigationEntry; |
| 30 class NavigationEntryImpl; | 30 class NavigationEntryImpl; |
| 31 class NavigationRequest; | 31 class NavigationRequest; |
| 32 class RenderFrameHost; | 32 class RenderFrameHost; |
| 33 class RenderFrameHostDelegate; | 33 class RenderFrameHostDelegate; |
| 34 class RenderFrameHost; | |
| 34 class RenderFrameHostImpl; | 35 class RenderFrameHostImpl; |
| 35 class RenderFrameHostManagerTest; | 36 class RenderFrameHostManagerTest; |
| 36 class RenderFrameProxyHost; | 37 class RenderFrameProxyHost; |
| 37 class RenderViewHost; | 38 class RenderViewHost; |
| 38 class RenderViewHostImpl; | 39 class RenderViewHostImpl; |
| 39 class RenderWidgetHostDelegate; | 40 class RenderWidgetHostDelegate; |
| 40 class RenderWidgetHostView; | 41 class RenderWidgetHostView; |
| 41 class TestWebContents; | 42 class TestWebContents; |
| 42 class WebUIImpl; | 43 class WebUIImpl; |
| 43 | 44 |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 61 // process is not shared, then the WebContentsImpl will act as though the | 62 // process is not shared, then the WebContentsImpl will act as though the |
| 62 // renderer is not running (i.e., it will render "sad tab"). This method is | 63 // renderer is not running (i.e., it will render "sad tab"). This method is |
| 63 // automatically called from LoadURL. |for_main_frame| indicates whether | 64 // automatically called from LoadURL. |for_main_frame| indicates whether |
| 64 // this RenderViewHost is used to render a top-level frame, so the | 65 // this RenderViewHost is used to render a top-level frame, so the |
| 65 // appropriate RenderWidgetHostView type is used. | 66 // appropriate RenderWidgetHostView type is used. |
| 66 virtual bool CreateRenderViewForRenderManager( | 67 virtual bool CreateRenderViewForRenderManager( |
| 67 RenderViewHost* render_view_host, | 68 RenderViewHost* render_view_host, |
| 68 int opener_route_id, | 69 int opener_route_id, |
| 69 int proxy_routing_id, | 70 int proxy_routing_id, |
| 70 bool for_main_frame) = 0; | 71 bool for_main_frame) = 0; |
| 72 virtual bool CreateRenderFrameForRenderManager( | |
| 73 RenderFrameHost* render_frame_host, | |
| 74 int parent_routing_id) = 0; | |
| 71 virtual void BeforeUnloadFiredFromRenderManager( | 75 virtual void BeforeUnloadFiredFromRenderManager( |
| 72 bool proceed, const base::TimeTicks& proceed_time, | 76 bool proceed, const base::TimeTicks& proceed_time, |
| 73 bool* proceed_to_fire_unload) = 0; | 77 bool* proceed_to_fire_unload) = 0; |
| 74 virtual void RenderProcessGoneFromRenderManager( | 78 virtual void RenderProcessGoneFromRenderManager( |
| 75 RenderViewHost* render_view_host) = 0; | 79 RenderViewHost* render_view_host) = 0; |
| 76 virtual void UpdateRenderViewSizeForRenderManager() = 0; | 80 virtual void UpdateRenderViewSizeForRenderManager() = 0; |
| 77 virtual void CancelModalDialogsForRenderManager() = 0; | 81 virtual void CancelModalDialogsForRenderManager() = 0; |
| 78 virtual void NotifySwappedFromRenderManager(RenderFrameHost* old_host, | 82 virtual void NotifySwappedFromRenderManager(RenderFrameHost* old_host, |
| 79 RenderFrameHost* new_host, | 83 RenderFrameHost* new_host, |
| 80 bool is_main_frame) = 0; | 84 bool is_main_frame) = 0; |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 244 // Called when a renderer sets its opener to null. | 248 // Called when a renderer sets its opener to null. |
| 245 void DidDisownOpener(RenderViewHost* render_view_host); | 249 void DidDisownOpener(RenderViewHost* render_view_host); |
| 246 | 250 |
| 247 // Helper method to create and initialize a RenderFrameHost. If |swapped_out| | 251 // Helper method to create and initialize a RenderFrameHost. If |swapped_out| |
| 248 // is true, it will be initially placed on the swapped out hosts list. | 252 // is true, it will be initially placed on the swapped out hosts list. |
| 249 // Otherwise, it will be used for a pending cross-site navigation. | 253 // Otherwise, it will be used for a pending cross-site navigation. |
| 250 // Returns the routing id of the *view* associated with the frame. | 254 // Returns the routing id of the *view* associated with the frame. |
| 251 int CreateRenderFrame(SiteInstance* instance, | 255 int CreateRenderFrame(SiteInstance* instance, |
| 252 int opener_route_id, | 256 int opener_route_id, |
| 253 bool swapped_out, | 257 bool swapped_out, |
| 258 bool for_main_frame, | |
| 254 bool hidden); | 259 bool hidden); |
| 255 | 260 |
| 261 // Helper method to create and initialize a RenderFrameProxyHost. | |
|
Charlie Reis
2014/07/24 22:36:30
Please say what this returns.
kenrb
2014/07/25 23:42:05
Done.
| |
| 262 int CreateRenderFrameProxy(SiteInstance* instance); | |
| 263 | |
| 256 // Sets the passed passed interstitial as the currently showing interstitial. | 264 // Sets the passed passed interstitial as the currently showing interstitial. |
| 257 // |interstitial_page| should be non NULL (use the remove_interstitial_page | 265 // |interstitial_page| should be non NULL (use the remove_interstitial_page |
| 258 // method to unset the interstitial) and no interstitial page should be set | 266 // method to unset the interstitial) and no interstitial page should be set |
| 259 // when there is already a non NULL interstitial page set. | 267 // when there is already a non NULL interstitial page set. |
| 260 void set_interstitial_page(InterstitialPageImpl* interstitial_page) { | 268 void set_interstitial_page(InterstitialPageImpl* interstitial_page) { |
| 261 DCHECK(!interstitial_page_ && interstitial_page); | 269 DCHECK(!interstitial_page_ && interstitial_page); |
| 262 interstitial_page_ = interstitial_page; | 270 interstitial_page_ = interstitial_page; |
| 263 } | 271 } |
| 264 | 272 |
| 265 // Unsets the currently showing interstitial. | 273 // Unsets the currently showing interstitial. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 298 void ClearPendingShutdownRFHForSiteInstance(int32 site_instance_id, | 306 void ClearPendingShutdownRFHForSiteInstance(int32 site_instance_id, |
| 299 RenderFrameHostImpl* rfh); | 307 RenderFrameHostImpl* rfh); |
| 300 | 308 |
| 301 // Deletes any proxy hosts associated with this node. Used during destruction | 309 // Deletes any proxy hosts associated with this node. Used during destruction |
| 302 // of WebContentsImpl. | 310 // of WebContentsImpl. |
| 303 void ResetProxyHosts(); | 311 void ResetProxyHosts(); |
| 304 | 312 |
| 305 // Used to start a navigation, part of browser-side navigation project. | 313 // Used to start a navigation, part of browser-side navigation project. |
| 306 void OnBeginNavigation(const FrameHostMsg_BeginNavigation_Params& params); | 314 void OnBeginNavigation(const FrameHostMsg_BeginNavigation_Params& params); |
| 307 | 315 |
| 316 int GetRoutingIdForSiteInstance(SiteInstance* site_instance); | |
|
Charlie Reis
2014/07/24 22:36:30
This name is confusing, since routing IDs are used
nasko
2014/07/25 07:13:20
It is scoped to RFHM and is supposed to return the
kenrb
2014/07/25 23:42:05
I have added a comment but left the name the same.
Charlie Reis
2014/07/28 19:24:28
Acknowledged.
| |
| 317 | |
| 308 private: | 318 private: |
| 309 friend class RenderFrameHostManagerTest; | 319 friend class RenderFrameHostManagerTest; |
| 310 friend class TestWebContents; | 320 friend class TestWebContents; |
| 311 | 321 |
| 322 FRIEND_TEST_ALL_PREFIXES(CrossProcessFrameTreeBrowserTest, | |
| 323 VerifyProxyCreation); | |
| 324 | |
| 312 // Tracks information about a navigation while a cross-process transition is | 325 // Tracks information about a navigation while a cross-process transition is |
| 313 // in progress, in case we need to transfer it to a new RenderFrameHost. | 326 // in progress, in case we need to transfer it to a new RenderFrameHost. |
| 314 // When a request is being transferred, deleting the PendingNavigationParams, | 327 // When a request is being transferred, deleting the PendingNavigationParams, |
| 315 // and thus |cross_site_transferring_request|, will cancel the request being | 328 // and thus |cross_site_transferring_request|, will cancel the request being |
| 316 // transferred, unless its ReleaseRequest method has been called. | 329 // transferred, unless its ReleaseRequest method has been called. |
| 317 struct PendingNavigationParams { | 330 struct PendingNavigationParams { |
| 318 PendingNavigationParams( | 331 PendingNavigationParams( |
| 319 const GlobalRequestID& global_request_id, | 332 const GlobalRequestID& global_request_id, |
| 320 scoped_ptr<CrossSiteTransferringRequest> | 333 scoped_ptr<CrossSiteTransferringRequest> |
| 321 cross_site_transferring_request, | 334 cross_site_transferring_request, |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 406 // with the given |proxy_routing_id|, which is used to route IPC messages when | 419 // with the given |proxy_routing_id|, which is used to route IPC messages when |
| 407 // in swapped out state. Returns early if the RenderViewHost has already been | 420 // in swapped out state. Returns early if the RenderViewHost has already been |
| 408 // initialized for another RenderFrameHost. | 421 // initialized for another RenderFrameHost. |
| 409 // TODO(creis): opener_route_id is currently for the RenderViewHost but should | 422 // TODO(creis): opener_route_id is currently for the RenderViewHost but should |
| 410 // be for the RenderFrame, since frames can have openers. | 423 // be for the RenderFrame, since frames can have openers. |
| 411 bool InitRenderView(RenderViewHost* render_view_host, | 424 bool InitRenderView(RenderViewHost* render_view_host, |
| 412 int opener_route_id, | 425 int opener_route_id, |
| 413 int proxy_routing_id, | 426 int proxy_routing_id, |
| 414 bool for_main_frame); | 427 bool for_main_frame); |
| 415 | 428 |
| 429 bool InitRenderFrame(RenderFrameHost* render_frame_host); | |
|
Charlie Reis
2014/07/24 22:36:30
This needs a comment. Is the behavior similar to
nasko
2014/07/25 07:13:20
Yes, it is. In general, I've made RFH/RFPH creatio
kenrb
2014/07/25 23:42:05
I have added a short comment. Let me know if you w
| |
| 430 | |
| 416 // Sets the pending RenderFrameHost/WebUI to be the active one. Note that this | 431 // Sets the pending RenderFrameHost/WebUI to be the active one. Note that this |
| 417 // doesn't require the pending render_frame_host_ pointer to be non-NULL, | 432 // doesn't require the pending render_frame_host_ pointer to be non-NULL, |
| 418 // since there could be Web UI switching as well. Call this for every commit. | 433 // since there could be Web UI switching as well. Call this for every commit. |
| 419 void CommitPending(); | 434 void CommitPending(); |
| 420 | 435 |
| 421 // Shutdown all RenderFrameHosts in a SiteInstance. This is called to shutdown | 436 // Shutdown all RenderFrameProxyHosts in a SiteInstance. This is called to |
| 422 // frames when all the frames in a SiteInstance are confirmed to be swapped | 437 // shutdown frames when all the frames in a SiteInstance are confirmed to be |
| 423 // out. | 438 // swapped out. |
|
Charlie Reis
2014/07/24 22:36:30
Nice! We're getting closer to where we won't have
| |
| 424 void ShutdownRenderFrameHostsInSiteInstance(int32 site_instance_id); | 439 void ShutdownRenderFrameProxyHostsInSiteInstance(int32 site_instance_id); |
| 425 | 440 |
| 426 // Helper method to terminate the pending RenderViewHost. | 441 // Helper method to terminate the pending RenderViewHost. |
| 427 void CancelPending(); | 442 void CancelPending(); |
| 428 | 443 |
| 429 // Helper method to set the active RenderFrameHost. Returns the old | 444 // Helper method to set the active RenderFrameHost. Returns the old |
| 430 // RenderFrameHost and updates counts. | 445 // RenderFrameHost and updates counts. |
| 431 scoped_ptr<RenderFrameHostImpl> SetRenderFrameHost( | 446 scoped_ptr<RenderFrameHostImpl> SetRenderFrameHost( |
| 432 scoped_ptr<RenderFrameHostImpl> render_frame_host); | 447 scoped_ptr<RenderFrameHostImpl> render_frame_host); |
| 433 | 448 |
| 434 RenderFrameHostImpl* UpdateStateForNavigate( | 449 RenderFrameHostImpl* UpdateStateForNavigate( |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 508 scoped_ptr<NavigationRequest> navigation_request_; | 523 scoped_ptr<NavigationRequest> navigation_request_; |
| 509 | 524 |
| 510 base::WeakPtrFactory<RenderFrameHostManager> weak_factory_; | 525 base::WeakPtrFactory<RenderFrameHostManager> weak_factory_; |
| 511 | 526 |
| 512 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager); | 527 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager); |
| 513 }; | 528 }; |
| 514 | 529 |
| 515 } // namespace content | 530 } // namespace content |
| 516 | 531 |
| 517 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ | 532 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ |
| OLD | NEW |