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

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

Issue 241223002: Start using RenderFrameProxyHost objects. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moar fixes. Created 6 years, 5 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 | Annotate | Revision Log
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 "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 10 matching lines...) Expand all
21 namespace content { 21 namespace content {
22 class BrowserContext; 22 class BrowserContext;
23 class CrossProcessFrameConnector; 23 class CrossProcessFrameConnector;
24 class CrossSiteTransferringRequest; 24 class CrossSiteTransferringRequest;
25 class InterstitialPageImpl; 25 class InterstitialPageImpl;
26 class FrameTreeNode; 26 class FrameTreeNode;
27 class NavigationControllerImpl; 27 class NavigationControllerImpl;
28 class NavigationEntry; 28 class NavigationEntry;
29 class NavigationEntryImpl; 29 class NavigationEntryImpl;
30 class RenderFrameHostDelegate; 30 class RenderFrameHostDelegate;
31 class RenderFrameHost;
31 class RenderFrameHostImpl; 32 class RenderFrameHostImpl;
32 class RenderFrameHostManagerTest; 33 class RenderFrameHostManagerTest;
33 class RenderFrameProxyHost; 34 class RenderFrameProxyHost;
34 class RenderViewHost; 35 class RenderViewHost;
35 class RenderViewHostImpl; 36 class RenderViewHostImpl;
36 class RenderWidgetHostDelegate; 37 class RenderWidgetHostDelegate;
37 class RenderWidgetHostView; 38 class RenderWidgetHostView;
38 class TestWebContents; 39 class TestWebContents;
39 class WebUIImpl; 40 class WebUIImpl;
40 41
(...skipping 17 matching lines...) Expand all
58 // process is not shared, then the WebContentsImpl will act as though the 59 // process is not shared, then the WebContentsImpl will act as though the
59 // renderer is not running (i.e., it will render "sad tab"). This method is 60 // renderer is not running (i.e., it will render "sad tab"). This method is
60 // automatically called from LoadURL. |for_main_frame| indicates whether 61 // automatically called from LoadURL. |for_main_frame| indicates whether
61 // this RenderViewHost is used to render a top-level frame, so the 62 // this RenderViewHost is used to render a top-level frame, so the
62 // appropriate RenderWidgetHostView type is used. 63 // appropriate RenderWidgetHostView type is used.
63 virtual bool CreateRenderViewForRenderManager( 64 virtual bool CreateRenderViewForRenderManager(
64 RenderViewHost* render_view_host, 65 RenderViewHost* render_view_host,
65 int opener_route_id, 66 int opener_route_id,
66 int proxy_routing_id, 67 int proxy_routing_id,
67 bool for_main_frame) = 0; 68 bool for_main_frame) = 0;
69 virtual bool CreateRenderFrameForRenderManager(
70 RenderFrameHost* render_frame_host,
71 int parent_routing_id) = 0;
68 virtual void BeforeUnloadFiredFromRenderManager( 72 virtual void BeforeUnloadFiredFromRenderManager(
69 bool proceed, const base::TimeTicks& proceed_time, 73 bool proceed, const base::TimeTicks& proceed_time,
70 bool* proceed_to_fire_unload) = 0; 74 bool* proceed_to_fire_unload) = 0;
71 virtual void RenderProcessGoneFromRenderManager( 75 virtual void RenderProcessGoneFromRenderManager(
72 RenderViewHost* render_view_host) = 0; 76 RenderViewHost* render_view_host) = 0;
73 virtual void UpdateRenderViewSizeForRenderManager() = 0; 77 virtual void UpdateRenderViewSizeForRenderManager() = 0;
74 virtual void CancelModalDialogsForRenderManager() = 0; 78 virtual void CancelModalDialogsForRenderManager() = 0;
75 virtual void NotifySwappedFromRenderManager( 79 virtual void NotifySwappedFromRenderManager(
76 RenderViewHost* old_host, RenderViewHost* new_host) = 0; 80 RenderViewHost* old_host, RenderViewHost* new_host) = 0;
77 virtual NavigationControllerImpl& 81 virtual NavigationControllerImpl&
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 // Called when a renderer sets its opener to null. 244 // Called when a renderer sets its opener to null.
241 void DidDisownOpener(RenderViewHost* render_view_host); 245 void DidDisownOpener(RenderViewHost* render_view_host);
242 246
243 // Helper method to create and initialize a RenderFrameHost. If |swapped_out| 247 // Helper method to create and initialize a RenderFrameHost. If |swapped_out|
244 // is true, it will be initially placed on the swapped out hosts list. 248 // is true, it will be initially placed on the swapped out hosts list.
245 // Otherwise, it will be used for a pending cross-site navigation. 249 // Otherwise, it will be used for a pending cross-site navigation.
246 // Returns the routing id of the *view* associated with the frame. 250 // Returns the routing id of the *view* associated with the frame.
247 int CreateRenderFrame(SiteInstance* instance, 251 int CreateRenderFrame(SiteInstance* instance,
248 int opener_route_id, 252 int opener_route_id,
249 bool swapped_out, 253 bool swapped_out,
254 bool for_main_frame,
250 bool hidden); 255 bool hidden);
251 256
257 // Helper method to create and initialize a RenderFrameProxyHost.
258 int CreateRenderFrameProxy(SiteInstance* instance, int opener_route_id);
259
252 // Sets the passed passed interstitial as the currently showing interstitial. 260 // Sets the passed passed interstitial as the currently showing interstitial.
253 // |interstitial_page| should be non NULL (use the remove_interstitial_page 261 // |interstitial_page| should be non NULL (use the remove_interstitial_page
254 // method to unset the interstitial) and no interstitial page should be set 262 // method to unset the interstitial) and no interstitial page should be set
255 // when there is already a non NULL interstitial page set. 263 // when there is already a non NULL interstitial page set.
256 void set_interstitial_page(InterstitialPageImpl* interstitial_page) { 264 void set_interstitial_page(InterstitialPageImpl* interstitial_page) {
257 DCHECK(!interstitial_page_ && interstitial_page); 265 DCHECK(!interstitial_page_ && interstitial_page);
258 interstitial_page_ = interstitial_page; 266 interstitial_page_ = interstitial_page;
259 } 267 }
260 268
261 // Unsets the currently showing interstitial. 269 // Unsets the currently showing interstitial.
(...skipping 29 matching lines...) Expand all
291 void SwapOutOldPage(); 299 void SwapOutOldPage();
292 300
293 // Deletes a RenderFrameHost that was pending shutdown. 301 // Deletes a RenderFrameHost that was pending shutdown.
294 void ClearPendingShutdownRFHForSiteInstance(int32 site_instance_id, 302 void ClearPendingShutdownRFHForSiteInstance(int32 site_instance_id,
295 RenderFrameHostImpl* rfh); 303 RenderFrameHostImpl* rfh);
296 304
297 // Deletes any proxy hosts associated with this node. Used during destruction 305 // Deletes any proxy hosts associated with this node. Used during destruction
298 // of WebContentsImpl. 306 // of WebContentsImpl.
299 void ResetProxyHosts(); 307 void ResetProxyHosts();
300 308
309 int GetRoutingIdForSiteInstance(SiteInstance* site_instance);
310
301 private: 311 private:
302 friend class RenderFrameHostManagerTest; 312 friend class RenderFrameHostManagerTest;
303 friend class TestWebContents; 313 friend class TestWebContents;
304 314
315 FRIEND_TEST_ALL_PREFIXES(CrossProcessFrameTreeBrowserTest,
316 VerifyProxyCreation);
317
305 // Tracks information about a navigation while a cross-process transition is 318 // Tracks information about a navigation while a cross-process transition is
306 // in progress, in case we need to transfer it to a new RenderFrameHost. 319 // in progress, in case we need to transfer it to a new RenderFrameHost.
307 // When a request is being transferred, deleting the PendingNavigationParams, 320 // When a request is being transferred, deleting the PendingNavigationParams,
308 // and thus |cross_site_transferring_request|, will cancel the request being 321 // and thus |cross_site_transferring_request|, will cancel the request being
309 // transferred, unless its ReleaseRequest method has been called. 322 // transferred, unless its ReleaseRequest method has been called.
310 struct PendingNavigationParams { 323 struct PendingNavigationParams {
311 PendingNavigationParams( 324 PendingNavigationParams(
312 const GlobalRequestID& global_request_id, 325 const GlobalRequestID& global_request_id,
313 scoped_ptr<CrossSiteTransferringRequest> 326 scoped_ptr<CrossSiteTransferringRequest>
314 cross_site_transferring_request, 327 cross_site_transferring_request,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 // with the given |proxy_routing_id|, which is used to route IPC messages when 407 // with the given |proxy_routing_id|, which is used to route IPC messages when
395 // in swapped out state. Returns early if the RenderViewHost has already been 408 // in swapped out state. Returns early if the RenderViewHost has already been
396 // initialized for another RenderFrameHost. 409 // initialized for another RenderFrameHost.
397 // TODO(creis): opener_route_id is currently for the RenderViewHost but should 410 // TODO(creis): opener_route_id is currently for the RenderViewHost but should
398 // be for the RenderFrame, since frames can have openers. 411 // be for the RenderFrame, since frames can have openers.
399 bool InitRenderView(RenderViewHost* render_view_host, 412 bool InitRenderView(RenderViewHost* render_view_host,
400 int opener_route_id, 413 int opener_route_id,
401 int proxy_routing_id, 414 int proxy_routing_id,
402 bool for_main_frame); 415 bool for_main_frame);
403 416
417 bool InitRenderFrame(RenderFrameHost* render_frame_host);
418
404 // 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
405 // 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,
406 // 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.
407 void CommitPending(); 422 void CommitPending();
408 423
409 // Shutdown all RenderFrameHosts in a SiteInstance. This is called to shutdown 424 // Shutdown all RenderFrameHosts in a SiteInstance. This is called to shutdown
410 // frames when all the frames in a SiteInstance are confirmed to be swapped 425 // frames when all the frames in a SiteInstance are confirmed to be swapped
411 // out. 426 // out.
412 void ShutdownRenderFrameHostsInSiteInstance(int32 site_instance_id); 427 void ShutdownRenderFrameHostsInSiteInstance(int32 site_instance_id);
413 428
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 NotificationRegistrar registrar_; 508 NotificationRegistrar registrar_;
494 509
495 base::WeakPtrFactory<RenderFrameHostManager> weak_factory_; 510 base::WeakPtrFactory<RenderFrameHostManager> weak_factory_;
496 511
497 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager); 512 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager);
498 }; 513 };
499 514
500 } // namespace content 515 } // namespace content
501 516
502 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ 517 #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