| 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 <list> |
| 9 |
| 8 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 9 #include "base/logging.h" | 11 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/memory/weak_ptr.h" | 13 #include "base/memory/weak_ptr.h" |
| 12 #include "content/browser/renderer_host/render_view_host_delegate.h" | 14 #include "content/browser/renderer_host/render_view_host_delegate.h" |
| 13 #include "content/browser/site_instance_impl.h" | 15 #include "content/browser/site_instance_impl.h" |
| 14 #include "content/common/content_export.h" | 16 #include "content/common/content_export.h" |
| 15 #include "content/public/browser/global_request_id.h" | 17 #include "content/public/browser/global_request_id.h" |
| 16 #include "content/public/browser/notification_observer.h" | 18 #include "content/public/browser/notification_observer.h" |
| 17 #include "content/public/browser/notification_registrar.h" | 19 #include "content/public/browser/notification_registrar.h" |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 bool IsRVHOnSwappedOutList(RenderViewHostImpl* rvh) const; | 293 bool IsRVHOnSwappedOutList(RenderViewHostImpl* rvh) const; |
| 292 bool IsOnSwappedOutList(RenderFrameHostImpl* rfh) const; | 294 bool IsOnSwappedOutList(RenderFrameHostImpl* rfh) const; |
| 293 | 295 |
| 294 // Returns the swapped out RenderViewHost or RenderFrameHost for the given | 296 // Returns the swapped out RenderViewHost or RenderFrameHost for the given |
| 295 // SiteInstance, if any. This method is *deprecated* and | 297 // SiteInstance, if any. This method is *deprecated* and |
| 296 // GetRenderFrameProxyHost should be used. | 298 // GetRenderFrameProxyHost should be used. |
| 297 RenderViewHostImpl* GetSwappedOutRenderViewHost(SiteInstance* instance) const; | 299 RenderViewHostImpl* GetSwappedOutRenderViewHost(SiteInstance* instance) const; |
| 298 RenderFrameProxyHost* GetRenderFrameProxyHost( | 300 RenderFrameProxyHost* GetRenderFrameProxyHost( |
| 299 SiteInstance* instance) const; | 301 SiteInstance* instance) const; |
| 300 | 302 |
| 301 // Deletes a RenderFrameHost that was pending shutdown. | 303 // Returns whether |render_frame_host| is on the pending deletion list. |
| 302 void ClearPendingShutdownRFHForSiteInstance(int32 site_instance_id, | 304 bool IsPendingDeletion(RenderFrameHostImpl* render_frame_host); |
| 303 RenderFrameHostImpl* rfh); | 305 |
| 306 // If |render_frame_host| is on the pending deletion list, this deletes it. |
| 307 // Returns whether it was deleted. |
| 308 bool DeleteFromPendingList(RenderFrameHostImpl* render_frame_host); |
| 304 | 309 |
| 305 // Deletes any proxy hosts associated with this node. Used during destruction | 310 // Deletes any proxy hosts associated with this node. Used during destruction |
| 306 // of WebContentsImpl. | 311 // of WebContentsImpl. |
| 307 void ResetProxyHosts(); | 312 void ResetProxyHosts(); |
| 308 | 313 |
| 309 // Returns the routing id for a RenderFrameHost or RenderFrameHostProxy | 314 // Returns the routing id for a RenderFrameHost or RenderFrameHostProxy |
| 310 // that has the given SiteInstance and is associated with this | 315 // that has the given SiteInstance and is associated with this |
| 311 // RenderFrameHostManager. Returns MSG_ROUTING_NONE if none is found. | 316 // RenderFrameHostManager. Returns MSG_ROUTING_NONE if none is found. |
| 312 int GetRoutingIdForSiteInstance(SiteInstance* site_instance); | 317 int GetRoutingIdForSiteInstance(SiteInstance* site_instance); |
| 313 | 318 |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 | 414 |
| 410 // Initialization for RenderFrameHost uses the same sequence as InitRenderView | 415 // Initialization for RenderFrameHost uses the same sequence as InitRenderView |
| 411 // above. | 416 // above. |
| 412 bool InitRenderFrame(RenderFrameHostImpl* render_frame_host); | 417 bool InitRenderFrame(RenderFrameHostImpl* render_frame_host); |
| 413 | 418 |
| 414 // Sets the pending RenderFrameHost/WebUI to be the active one. Note that this | 419 // Sets the pending RenderFrameHost/WebUI to be the active one. Note that this |
| 415 // doesn't require the pending render_frame_host_ pointer to be non-NULL, | 420 // doesn't require the pending render_frame_host_ pointer to be non-NULL, |
| 416 // since there could be Web UI switching as well. Call this for every commit. | 421 // since there could be Web UI switching as well. Call this for every commit. |
| 417 void CommitPending(); | 422 void CommitPending(); |
| 418 | 423 |
| 419 // Runs the unload handler in the current page, after the new page has | 424 // Runs the unload handler in the old RenderFrameHost, after the new |
| 420 // committed. | 425 // RenderFrameHost has committed. |old_render_frame_host| will either be |
| 421 void SwapOutOldPage(RenderFrameHostImpl* old_render_frame_host); | 426 // deleted or put on the pending delete list during this call. |
| 427 void SwapOutOldFrame(scoped_ptr<RenderFrameHostImpl> old_render_frame_host); |
| 428 |
| 429 // Holds |render_frame_host| until it can be deleted when its swap out ACK |
| 430 // arrives. |
| 431 void MoveToPendingDeleteHosts( |
| 432 scoped_ptr<RenderFrameHostImpl> render_frame_host); |
| 422 | 433 |
| 423 // Shutdown all RenderFrameProxyHosts in a SiteInstance. This is called to | 434 // Shutdown all RenderFrameProxyHosts in a SiteInstance. This is called to |
| 424 // shutdown frames when all the frames in a SiteInstance are confirmed to be | 435 // shutdown frames when all the frames in a SiteInstance are confirmed to be |
| 425 // swapped out. | 436 // swapped out. |
| 426 void ShutdownRenderFrameProxyHostsInSiteInstance(int32 site_instance_id); | 437 void ShutdownRenderFrameProxyHostsInSiteInstance(int32 site_instance_id); |
| 427 | 438 |
| 428 // Helper method to terminate the pending RenderViewHost. | 439 // Helper method to terminate the pending RenderViewHost. |
| 429 void CancelPending(); | 440 void CancelPending(); |
| 430 | 441 |
| 431 // Helper method to set the active RenderFrameHost. Returns the old | 442 // Helper method to set the active RenderFrameHost. Returns the old |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 // page. The scoped_ptr is used if pending_web_ui_ != web_ui_, the WeakPtr is | 511 // page. The scoped_ptr is used if pending_web_ui_ != web_ui_, the WeakPtr is |
| 501 // used for when they reference the same object. If either is non-NULL, the | 512 // used for when they reference the same object. If either is non-NULL, the |
| 502 // other should be NULL. | 513 // other should be NULL. |
| 503 scoped_ptr<WebUIImpl> pending_web_ui_; | 514 scoped_ptr<WebUIImpl> pending_web_ui_; |
| 504 base::WeakPtr<WebUIImpl> pending_and_current_web_ui_; | 515 base::WeakPtr<WebUIImpl> pending_and_current_web_ui_; |
| 505 | 516 |
| 506 // A map of site instance ID to RenderFrameProxyHosts. | 517 // A map of site instance ID to RenderFrameProxyHosts. |
| 507 typedef base::hash_map<int32, RenderFrameProxyHost*> RenderFrameProxyHostMap; | 518 typedef base::hash_map<int32, RenderFrameProxyHost*> RenderFrameProxyHostMap; |
| 508 RenderFrameProxyHostMap proxy_hosts_; | 519 RenderFrameProxyHostMap proxy_hosts_; |
| 509 | 520 |
| 510 // A map of RenderFrameHosts pending shutdown. | 521 // A list of RenderFrameHosts waiting to shut down after swapping out. We use |
| 511 typedef base::hash_map<int32, linked_ptr<RenderFrameHostImpl> > | 522 // a linked list since we expect frequent deletes and no indexed access, and |
| 512 RFHPendingDeleteMap; | 523 // because sets don't appear to support linked_ptrs. |
| 513 RFHPendingDeleteMap pending_delete_hosts_; | 524 typedef std::list<linked_ptr<RenderFrameHostImpl> > RFHPendingDeleteList; |
| 525 RFHPendingDeleteList pending_delete_hosts_; |
| 514 | 526 |
| 515 // The intersitial page currently shown if any, not own by this class | 527 // The intersitial page currently shown if any, not own by this class |
| 516 // (the InterstitialPage is self-owned, it deletes itself when hidden). | 528 // (the InterstitialPage is self-owned, it deletes itself when hidden). |
| 517 InterstitialPageImpl* interstitial_page_; | 529 InterstitialPageImpl* interstitial_page_; |
| 518 | 530 |
| 519 NotificationRegistrar registrar_; | 531 NotificationRegistrar registrar_; |
| 520 | 532 |
| 521 base::WeakPtrFactory<RenderFrameHostManager> weak_factory_; | 533 base::WeakPtrFactory<RenderFrameHostManager> weak_factory_; |
| 522 | 534 |
| 523 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager); | 535 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager); |
| 524 }; | 536 }; |
| 525 | 537 |
| 526 } // namespace content | 538 } // namespace content |
| 527 | 539 |
| 528 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ | 540 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ |
| OLD | NEW |