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" |
11 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
12 #include "content/browser/renderer_host/render_view_host_delegate.h" | 12 #include "content/browser/renderer_host/render_view_host_delegate.h" |
13 #include "content/browser/site_instance_impl.h" | 13 #include "content/browser/site_instance_impl.h" |
14 #include "content/common/content_export.h" | 14 #include "content/common/content_export.h" |
15 #include "content/public/browser/notification_observer.h" | 15 #include "content/public/browser/notification_observer.h" |
16 #include "content/public/browser/notification_registrar.h" | 16 #include "content/public/browser/notification_registrar.h" |
17 #include "content/public/common/referrer.h" | 17 #include "content/public/common/referrer.h" |
18 | 18 |
19 | 19 |
20 namespace content { | 20 namespace content { |
21 class BrowserContext; | 21 class BrowserContext; |
22 class InterstitialPageImpl; | 22 class InterstitialPageImpl; |
| 23 class FrameTreeNode; |
23 class NavigationControllerImpl; | 24 class NavigationControllerImpl; |
24 class NavigationEntry; | 25 class NavigationEntry; |
25 class NavigationEntryImpl; | 26 class NavigationEntryImpl; |
26 class RenderFrameHostDelegate; | 27 class RenderFrameHostDelegate; |
| 28 class RenderFrameHostImpl; |
27 class RenderFrameHostManagerTest; | 29 class RenderFrameHostManagerTest; |
28 class RenderViewHost; | 30 class RenderViewHost; |
29 class RenderViewHostImpl; | 31 class RenderViewHostImpl; |
30 class RenderWidgetHostDelegate; | 32 class RenderWidgetHostDelegate; |
31 class RenderWidgetHostView; | 33 class RenderWidgetHostView; |
32 class TestWebContents; | 34 class TestWebContents; |
33 class WebUIImpl; | 35 class WebUIImpl; |
34 | 36 |
35 // Manages RenderFrameHosts for a FrameTreeNode. This class acts as a state | 37 // Manages RenderFrameHosts for a FrameTreeNode. This class acts as a state |
36 // machine to make cross-process navigations in a frame possible. | 38 // machine to make cross-process navigations in a frame possible. |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 virtual ~Delegate() {} | 109 virtual ~Delegate() {} |
108 }; | 110 }; |
109 | 111 |
110 // All three delegate pointers must be non-NULL and are not owned by this | 112 // All three delegate pointers must be non-NULL and are not owned by this |
111 // class. They must outlive this class. The RenderViewHostDelegate and | 113 // class. They must outlive this class. The RenderViewHostDelegate and |
112 // RenderWidgetHostDelegate are what will be installed into all | 114 // RenderWidgetHostDelegate are what will be installed into all |
113 // RenderViewHosts that are created. | 115 // RenderViewHosts that are created. |
114 // | 116 // |
115 // You must call Init() before using this class. | 117 // You must call Init() before using this class. |
116 RenderFrameHostManager( | 118 RenderFrameHostManager( |
| 119 FrameTreeNode* frame_tree_node, |
117 RenderFrameHostDelegate* render_frame_delegate, | 120 RenderFrameHostDelegate* render_frame_delegate, |
118 RenderViewHostDelegate* render_view_delegate, | 121 RenderViewHostDelegate* render_view_delegate, |
119 RenderWidgetHostDelegate* render_widget_delegate, | 122 RenderWidgetHostDelegate* render_widget_delegate, |
120 Delegate* delegate); | 123 Delegate* delegate); |
121 virtual ~RenderFrameHostManager(); | 124 virtual ~RenderFrameHostManager(); |
122 | 125 |
123 // For arguments, see WebContentsImpl constructor. | 126 // For arguments, see WebContentsImpl constructor. |
124 void Init(BrowserContext* browser_context, | 127 void Init(BrowserContext* browser_context, |
125 SiteInstance* site_instance, | 128 SiteInstance* site_instance, |
126 int routing_id, | 129 int view_routing_id, |
127 int main_frame_routing_id); | 130 int frame_routing_id); |
128 | 131 |
129 // Returns the currently active RenderViewHost. | 132 // Returns the currently active RenderFrameHost. |
130 // | 133 // |
131 // This will be non-NULL between Init() and Shutdown(). You may want to NULL | 134 // This will be non-NULL between Init() and Shutdown(). You may want to NULL |
132 // check it in many cases, however. Windows can send us messages during the | 135 // check it in many cases, however. Windows can send us messages during the |
133 // destruction process after it has been shut down. | 136 // destruction process after it has been shut down. |
| 137 RenderFrameHostImpl* current_frame_host() const { |
| 138 return render_frame_host_; |
| 139 } |
| 140 |
| 141 // TODO(creis): Remove this when we no longer use RVH for navigation. |
134 RenderViewHostImpl* current_host() const; | 142 RenderViewHostImpl* current_host() const; |
135 | 143 |
136 // Returns the view associated with the current RenderViewHost, or NULL if | 144 // Returns the view associated with the current RenderViewHost, or NULL if |
137 // there is no current one. | 145 // there is no current one. |
138 RenderWidgetHostView* GetRenderWidgetHostView() const; | 146 RenderWidgetHostView* GetRenderWidgetHostView() const; |
139 | 147 |
140 // Returns the pending render view host, or NULL if there is no pending one. | 148 // Returns the pending RenderFrameHost, or NULL if there is no pending one. |
| 149 RenderFrameHostImpl* pending_frame_host() const { |
| 150 return pending_render_frame_host_; |
| 151 } |
| 152 |
| 153 // TODO(creis): Remove this when we no longer use RVH for navigation. |
141 RenderViewHostImpl* pending_render_view_host() const; | 154 RenderViewHostImpl* pending_render_view_host() const; |
142 | 155 |
143 // Returns the current committed Web UI or NULL if none applies. | 156 // Returns the current committed Web UI or NULL if none applies. |
144 WebUIImpl* web_ui() const { return web_ui_.get(); } | 157 WebUIImpl* web_ui() const { return web_ui_.get(); } |
145 | 158 |
146 // Returns the Web UI for the pending navigation, or NULL of none applies. | 159 // Returns the Web UI for the pending navigation, or NULL of none applies. |
147 WebUIImpl* pending_web_ui() const { | 160 WebUIImpl* pending_web_ui() const { |
148 return pending_web_ui_.get() ? pending_web_ui_.get() : | 161 return pending_web_ui_.get() ? pending_web_ui_.get() : |
149 pending_and_current_web_ui_.get(); | 162 pending_and_current_web_ui_.get(); |
150 } | 163 } |
(...skipping 25 matching lines...) Expand all Loading... |
176 // The RenderViewHost has been swapped out, so we should resume the pending | 189 // The RenderViewHost has been swapped out, so we should resume the pending |
177 // network response and allow the pending RenderViewHost to commit. | 190 // network response and allow the pending RenderViewHost to commit. |
178 void SwappedOut(RenderViewHost* render_view_host); | 191 void SwappedOut(RenderViewHost* render_view_host); |
179 | 192 |
180 // Called when a renderer's main frame navigates. | 193 // Called when a renderer's main frame navigates. |
181 void DidNavigateMainFrame(RenderViewHost* render_view_host); | 194 void DidNavigateMainFrame(RenderViewHost* render_view_host); |
182 | 195 |
183 // Called when a renderer sets its opener to null. | 196 // Called when a renderer sets its opener to null. |
184 void DidDisownOpener(RenderViewHost* render_view_host); | 197 void DidDisownOpener(RenderViewHost* render_view_host); |
185 | 198 |
186 // Helper method to create a RenderViewHost. If |swapped_out| is true, it | 199 // Helper method to create and initialize a RenderFrameHost. If |swapped_out| |
187 // will be initially placed on the swapped out hosts list. Otherwise, it | 200 // is true, it will be initially placed on the swapped out hosts list. |
188 // will be used for a pending cross-site navigation. | 201 // Otherwise, it will be used for a pending cross-site navigation. |
189 int CreateRenderView(SiteInstance* instance, | 202 int CreateRenderFrame(SiteInstance* instance, |
190 int opener_route_id, | 203 int opener_route_id, |
191 bool swapped_out, | 204 bool swapped_out, |
192 bool hidden); | 205 bool hidden); |
193 | 206 |
194 // Called when a provisional load on the given renderer is aborted. | 207 // Called when a provisional load on the given renderer is aborted. |
195 void RendererAbortedProvisionalLoad(RenderViewHost* render_view_host); | 208 void RendererAbortedProvisionalLoad(RenderViewHost* render_view_host); |
196 | 209 |
197 // Sets the passed passed interstitial as the currently showing interstitial. | 210 // Sets the passed passed interstitial as the currently showing interstitial. |
198 // |interstitial_page| should be non NULL (use the remove_interstitial_page | 211 // |interstitial_page| should be non NULL (use the remove_interstitial_page |
199 // method to unset the interstitial) and no interstitial page should be set | 212 // method to unset the interstitial) and no interstitial page should be set |
200 // when there is already a non NULL interstitial page set. | 213 // when there is already a non NULL interstitial page set. |
201 void set_interstitial_page(InterstitialPageImpl* interstitial_page) { | 214 void set_interstitial_page(InterstitialPageImpl* interstitial_page) { |
202 DCHECK(!interstitial_page_ && interstitial_page); | 215 DCHECK(!interstitial_page_ && interstitial_page); |
(...skipping 26 matching lines...) Expand all Loading... |
229 bool should_replace_current_entry) OVERRIDE; | 242 bool should_replace_current_entry) OVERRIDE; |
230 | 243 |
231 // NotificationObserver implementation. | 244 // NotificationObserver implementation. |
232 virtual void Observe(int type, | 245 virtual void Observe(int type, |
233 const NotificationSource& source, | 246 const NotificationSource& source, |
234 const NotificationDetails& details) OVERRIDE; | 247 const NotificationDetails& details) OVERRIDE; |
235 | 248 |
236 // Called when a RenderViewHost is about to be deleted. | 249 // Called when a RenderViewHost is about to be deleted. |
237 void RenderViewDeleted(RenderViewHost* rvh); | 250 void RenderViewDeleted(RenderViewHost* rvh); |
238 | 251 |
239 // Returns whether the given RenderViewHost is on the list of swapped out | 252 // Returns whether the given RenderFrameHost (or its associated |
240 // RenderViewHosts. | 253 // RenderViewHost) is on the list of swapped out RenderFrameHosts. |
241 bool IsOnSwappedOutList(RenderViewHost* rvh) const; | 254 bool IsRVHOnSwappedOutList(RenderViewHostImpl* rvh) const; |
| 255 bool IsOnSwappedOutList(RenderFrameHostImpl* rfh) const; |
242 | 256 |
243 // Returns the swapped out RenderViewHost for the given SiteInstance, if any. | 257 // Returns the swapped out RenderViewHost or RenderFrameHost for the given |
244 RenderViewHostImpl* GetSwappedOutRenderViewHost(SiteInstance* instance); | 258 // SiteInstance, if any. |
| 259 RenderViewHostImpl* GetSwappedOutRenderViewHost(SiteInstance* instance) const; |
| 260 RenderFrameHostImpl* GetSwappedOutRenderFrameHost( |
| 261 SiteInstance* instance) const; |
245 | 262 |
246 // Runs the unload handler in the current page, when we know that a pending | 263 // Runs the unload handler in the current page, when we know that a pending |
247 // cross-process navigation is going to commit. We may initiate a transfer | 264 // cross-process navigation is going to commit. We may initiate a transfer |
248 // to a new process after this completes or times out. | 265 // to a new process after this completes or times out. |
249 void SwapOutOldPage(); | 266 void SwapOutOldPage(); |
250 | 267 |
251 private: | 268 private: |
252 friend class RenderFrameHostManagerTest; | 269 friend class RenderFrameHostManagerTest; |
253 friend class TestWebContents; | 270 friend class TestWebContents; |
254 | 271 |
255 // Tracks information about a navigation while a cross-process transition is | 272 // Tracks information about a navigation while a cross-process transition is |
256 // in progress, in case we need to transfer it to a new RenderViewHost. | 273 // in progress, in case we need to transfer it to a new RenderFrameHost. |
257 struct PendingNavigationParams { | 274 struct PendingNavigationParams { |
258 PendingNavigationParams(); | 275 PendingNavigationParams(); |
259 PendingNavigationParams(const GlobalRequestID& global_request_id, | 276 PendingNavigationParams(const GlobalRequestID& global_request_id, |
260 bool is_transfer, | 277 bool is_transfer, |
261 const std::vector<GURL>& transfer_url, | 278 const std::vector<GURL>& transfer_url, |
262 Referrer referrer, | 279 Referrer referrer, |
263 PageTransition page_transition, | 280 PageTransition page_transition, |
264 int64 frame_id, | 281 int64 frame_id, |
265 bool should_replace_current_entry); | 282 bool should_replace_current_entry); |
266 ~PendingNavigationParams(); | 283 ~PendingNavigationParams(); |
(...skipping 21 matching lines...) Expand all Loading... |
288 PageTransition page_transition; | 305 PageTransition page_transition; |
289 | 306 |
290 // If |is_transfer|, this is the frame ID to use in RequestTransferURL. | 307 // If |is_transfer|, this is the frame ID to use in RequestTransferURL. |
291 int64 frame_id; | 308 int64 frame_id; |
292 | 309 |
293 // If |is_transfer|, this is whether the navigation should replace the | 310 // If |is_transfer|, this is whether the navigation should replace the |
294 // current history entry. | 311 // current history entry. |
295 bool should_replace_current_entry; | 312 bool should_replace_current_entry; |
296 }; | 313 }; |
297 | 314 |
| 315 // Used with FrameTree::ForEach to erase inactive RenderFrameHosts from a |
| 316 // FrameTreeNode's RenderFrameHostManager. |
| 317 static bool ClearSwappedOutRFHsInSiteInstance(int32 site_instance_id, |
| 318 FrameTreeNode* node); |
| 319 |
298 // Returns whether this tab should transition to a new renderer for | 320 // Returns whether this tab should transition to a new renderer for |
299 // cross-site URLs. Enabled unless we see the --process-per-tab command line | 321 // cross-site URLs. Enabled unless we see the --process-per-tab command line |
300 // switch. Can be overridden in unit tests. | 322 // switch. Can be overridden in unit tests. |
301 bool ShouldTransitionCrossSite(); | 323 bool ShouldTransitionCrossSite(); |
302 | 324 |
303 // Returns true if for the navigation from |current_entry| to |new_entry|, | 325 // Returns true if for the navigation from |current_entry| to |new_entry|, |
304 // a new SiteInstance and BrowsingInstance should be created (even if we are | 326 // a new SiteInstance and BrowsingInstance should be created (even if we are |
305 // in a process model that doesn't usually swap). This forces a process swap | 327 // in a process model that doesn't usually swap). This forces a process swap |
306 // and severs script connections with existing tabs. Cases where this can | 328 // and severs script connections with existing tabs. Cases where this can |
307 // happen include transitions between WebUI and regular web pages. | 329 // happen include transitions between WebUI and regular web pages. |
(...skipping 10 matching lines...) Expand all Loading... |
318 | 340 |
319 // Returns an appropriate SiteInstance object for the given NavigationEntry, | 341 // Returns an appropriate SiteInstance object for the given NavigationEntry, |
320 // possibly reusing the current SiteInstance. If --process-per-tab is used, | 342 // possibly reusing the current SiteInstance. If --process-per-tab is used, |
321 // this is only called when ShouldSwapBrowsingInstancesForNavigation returns | 343 // this is only called when ShouldSwapBrowsingInstancesForNavigation returns |
322 // true. | 344 // true. |
323 SiteInstance* GetSiteInstanceForEntry( | 345 SiteInstance* GetSiteInstanceForEntry( |
324 const NavigationEntryImpl& entry, | 346 const NavigationEntryImpl& entry, |
325 SiteInstance* current_instance, | 347 SiteInstance* current_instance, |
326 bool force_browsing_instance_swap); | 348 bool force_browsing_instance_swap); |
327 | 349 |
328 // Sets up the necessary state for a new RenderViewHost with the given opener. | 350 // Creates a RenderFrameHost and corresponding RenderViewHost if necessary. |
| 351 RenderFrameHostImpl* CreateRenderFrameHost(SiteInstance* instance, |
| 352 int view_routing_id, |
| 353 int frame_routing_id, |
| 354 bool swapped_out, |
| 355 bool hidden); |
| 356 |
| 357 // Sets up the necessary state for a new RenderViewHost with the given opener, |
| 358 // if necessary. Returns early if the RenderViewHost has already been |
| 359 // initialized for another RenderFrameHost. |
| 360 // TODO(creis): opener_route_id is currently for the RenderViewHost but should |
| 361 // be for the RenderFrame, since frames can have openers. |
329 bool InitRenderView(RenderViewHost* render_view_host, int opener_route_id); | 362 bool InitRenderView(RenderViewHost* render_view_host, int opener_route_id); |
330 | 363 |
331 // Sets the pending RenderViewHost/WebUI to be the active one. Note that this | 364 // Sets the pending RenderFrameHost/WebUI to be the active one. Note that this |
332 // doesn't require the pending render_view_host_ pointer to be non-NULL, since | 365 // doesn't require the pending render_frame_host_ pointer to be non-NULL, |
333 // there could be Web UI switching as well. Call this for every commit. | 366 // since there could be Web UI switching as well. Call this for every commit. |
334 void CommitPending(); | 367 void CommitPending(); |
335 | 368 |
336 // Shutdown all RenderViewHosts in a SiteInstance. This is called | 369 // Shutdown all RenderFrameHosts in a SiteInstance. This is called to shutdown |
337 // to shutdown views when all the views in a SiteInstance are | 370 // frames when all the frames in a SiteInstance are confirmed to be swapped |
338 // confirmed to be swapped out. | 371 // out. |
339 void ShutdownRenderViewHostsInSiteInstance(int32 site_instance_id); | 372 void ShutdownRenderFrameHostsInSiteInstance(int32 site_instance_id); |
340 | 373 |
341 // Helper method to terminate the pending RenderViewHost. | 374 // Helper method to terminate the pending RenderViewHost. |
342 void CancelPending(); | 375 void CancelPending(); |
343 | 376 |
344 RenderViewHostImpl* UpdateRendererStateForNavigate( | 377 RenderFrameHostImpl* UpdateRendererStateForNavigate( |
345 const NavigationEntryImpl& entry); | 378 const NavigationEntryImpl& entry); |
346 | 379 |
347 // Called when a renderer process is starting to close. We should not | 380 // Called when a renderer process is starting to close. We should not |
348 // schedule new navigations in its swapped out RenderViewHosts after this. | 381 // schedule new navigations in its swapped out RenderFrameHosts after this. |
349 void RendererProcessClosing(RenderProcessHost* render_process_host); | 382 void RendererProcessClosing(RenderProcessHost* render_process_host); |
350 | 383 |
| 384 // For use in creating RenderFrameHosts. |
| 385 FrameTreeNode* frame_tree_node_; |
| 386 |
351 // Our delegate, not owned by us. Guaranteed non-NULL. | 387 // Our delegate, not owned by us. Guaranteed non-NULL. |
352 Delegate* delegate_; | 388 Delegate* delegate_; |
353 | 389 |
354 // Whether a navigation requiring different RenderView's is pending. This is | 390 // Whether a navigation requiring different RenderFrameHosts is pending. This |
355 // either cross-site request is (in the new process model), or when required | 391 // is either for cross-site requests or when required for the process type |
356 // for the view type (like view source versus not). | 392 // (like WebUI). |
357 bool cross_navigation_pending_; | 393 bool cross_navigation_pending_; |
358 | 394 |
359 // Implemented by the owner of this class, these delegates are installed into | 395 // Implemented by the owner of this class. These delegates are installed into |
360 // all the RenderViewHosts that we create. | 396 // all the RenderFrameHosts that we create. |
361 RenderFrameHostDelegate* render_frame_delegate_; | 397 RenderFrameHostDelegate* render_frame_delegate_; |
362 RenderViewHostDelegate* render_view_delegate_; | 398 RenderViewHostDelegate* render_view_delegate_; |
363 RenderWidgetHostDelegate* render_widget_delegate_; | 399 RenderWidgetHostDelegate* render_widget_delegate_; |
364 | 400 |
365 // Our RenderView host and its associated Web UI (if any, will be NULL for | 401 // Our RenderFrameHost and its associated Web UI (if any, will be NULL for |
366 // non-DOM-UI pages). This object is responsible for all communication with | 402 // non-WebUI pages). This object is responsible for all communication with |
367 // a child RenderView instance. | 403 // a child RenderFrame instance. |
368 RenderViewHostImpl* render_view_host_; | 404 // For now, RenderFrameHost keeps a RenderViewHost in its SiteInstance alive. |
| 405 // Eventually, RenderViewHost will be replaced with a page context. |
| 406 RenderFrameHostImpl* render_frame_host_; |
369 scoped_ptr<WebUIImpl> web_ui_; | 407 scoped_ptr<WebUIImpl> web_ui_; |
370 | 408 |
371 // A RenderViewHost used to load a cross-site page. This remains hidden | 409 // A RenderFrameHost used to load a cross-site page. This remains hidden |
372 // while a cross-site request is pending until it calls DidNavigate. It may | 410 // while a cross-site request is pending until it calls DidNavigate. It may |
373 // have an associated Web UI, in which case the Web UI pointer will be non- | 411 // have an associated Web UI, in which case the Web UI pointer will be non- |
374 // NULL. | 412 // NULL. |
375 // | 413 // |
376 // The |pending_web_ui_| may be non-NULL even when the | 414 // The |pending_web_ui_| may be non-NULL even when the |
377 // |pending_render_view_host_| is NULL. This will happen when we're | 415 // |pending_render_frame_host_| is NULL. This will happen when we're |
378 // transitioning between two Web UI pages: the RVH won't be swapped, so the | 416 // transitioning between two Web UI pages: the RFH won't be swapped, so the |
379 // pending pointer will be unused, but there will be a pending Web UI | 417 // pending pointer will be unused, but there will be a pending Web UI |
380 // associated with the navigation. | 418 // associated with the navigation. |
381 RenderViewHostImpl* pending_render_view_host_; | 419 RenderFrameHostImpl* pending_render_frame_host_; |
382 | 420 |
383 // Tracks information about any current pending cross-process navigation. | 421 // Tracks information about any current pending cross-process navigation. |
384 scoped_ptr<PendingNavigationParams> pending_nav_params_; | 422 scoped_ptr<PendingNavigationParams> pending_nav_params_; |
385 | 423 |
386 // If either of these is non-NULL, the pending navigation is to a chrome: | 424 // If either of these is non-NULL, the pending navigation is to a chrome: |
387 // page. The scoped_ptr is used if pending_web_ui_ != web_ui_, the WeakPtr is | 425 // page. The scoped_ptr is used if pending_web_ui_ != web_ui_, the WeakPtr is |
388 // used for when they reference the same object. If either is non-NULL, the | 426 // used for when they reference the same object. If either is non-NULL, the |
389 // other should be NULL. | 427 // other should be NULL. |
390 scoped_ptr<WebUIImpl> pending_web_ui_; | 428 scoped_ptr<WebUIImpl> pending_web_ui_; |
391 base::WeakPtr<WebUIImpl> pending_and_current_web_ui_; | 429 base::WeakPtr<WebUIImpl> pending_and_current_web_ui_; |
392 | 430 |
393 // A map of site instance ID to swapped out RenderViewHosts. This may include | 431 // A map of site instance ID to swapped out RenderFrameHosts. This may |
394 // pending_render_view_host_ for navigations to existing entries. | 432 // include pending_render_frame_host_ for navigations to existing entries. |
395 typedef base::hash_map<int32, RenderViewHostImpl*> RenderViewHostMap; | 433 typedef base::hash_map<int32, RenderFrameHostImpl*> RenderFrameHostMap; |
396 RenderViewHostMap swapped_out_hosts_; | 434 RenderFrameHostMap swapped_out_hosts_; |
397 | 435 |
398 // The intersitial page currently shown if any, not own by this class | 436 // The intersitial page currently shown if any, not own by this class |
399 // (the InterstitialPage is self-owned, it deletes itself when hidden). | 437 // (the InterstitialPage is self-owned, it deletes itself when hidden). |
400 InterstitialPageImpl* interstitial_page_; | 438 InterstitialPageImpl* interstitial_page_; |
401 | 439 |
402 NotificationRegistrar registrar_; | 440 NotificationRegistrar registrar_; |
403 | 441 |
404 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager); | 442 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManager); |
405 }; | 443 }; |
406 | 444 |
407 } // namespace content | 445 } // namespace content |
408 | 446 |
409 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ | 447 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_MANAGER_H_ |
OLD | NEW |