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

Side by Side Diff: chrome/browser/render_view_host_manager.cc

Issue 16554: WaitableEvent (Closed)
Patch Set: Addresssing darin's comments (round 2) Created 11 years, 11 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
« no previous file with comments | « chrome/browser/render_view_host_manager.h ('k') | chrome/browser/web_contents.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 #include "chrome/browser/render_view_host_manager.h" 5 #include "chrome/browser/render_view_host_manager.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "chrome/browser/navigation_controller.h" 9 #include "chrome/browser/navigation_controller.h"
10 #include "chrome/browser/navigation_entry.h" 10 #include "chrome/browser/navigation_entry.h"
11 #include "chrome/browser/render_widget_host_view.h" 11 #include "chrome/browser/render_widget_host_view.h"
12 #include "chrome/browser/render_view_host.h" 12 #include "chrome/browser/render_view_host.h"
13 #include "chrome/browser/render_view_host_delegate.h" 13 #include "chrome/browser/render_view_host_delegate.h"
14 #include "chrome/browser/site_instance.h" 14 #include "chrome/browser/site_instance.h"
15 #include "chrome/common/chrome_switches.h" 15 #include "chrome/common/chrome_switches.h"
16 #include "chrome/common/notification_service.h" 16 #include "chrome/common/notification_service.h"
17 17
18 namespace base {
19 class WaitableEvent;
20 }
21
18 RenderViewHostManager::RenderViewHostManager( 22 RenderViewHostManager::RenderViewHostManager(
19 RenderViewHostFactory* render_view_factory, 23 RenderViewHostFactory* render_view_factory,
20 RenderViewHostDelegate* render_view_delegate, 24 RenderViewHostDelegate* render_view_delegate,
21 Delegate* delegate) 25 Delegate* delegate)
22 : delegate_(delegate), 26 : delegate_(delegate),
23 cross_navigation_pending_(false), 27 cross_navigation_pending_(false),
24 render_view_factory_(render_view_factory), 28 render_view_factory_(render_view_factory),
25 render_view_delegate_(render_view_delegate), 29 render_view_delegate_(render_view_delegate),
26 render_view_host_(NULL), 30 render_view_host_(NULL),
27 pending_render_view_host_(NULL), 31 pending_render_view_host_(NULL),
28 interstitial_page_(NULL) { 32 interstitial_page_(NULL) {
29 } 33 }
30 34
31 RenderViewHostManager::~RenderViewHostManager() { 35 RenderViewHostManager::~RenderViewHostManager() {
32 // Shutdown should have been called which should have cleaned these up. 36 // Shutdown should have been called which should have cleaned these up.
33 DCHECK(!render_view_host_); 37 DCHECK(!render_view_host_);
34 DCHECK(!pending_render_view_host_); 38 DCHECK(!pending_render_view_host_);
35 } 39 }
36 40
37 void RenderViewHostManager::Init(Profile* profile, 41 void RenderViewHostManager::Init(Profile* profile,
38 SiteInstance* site_instance, 42 SiteInstance* site_instance,
39 int routing_id, 43 int routing_id,
40 HANDLE modal_dialog_event) { 44 base::WaitableEvent* modal_dialog_event) {
41 // Create a RenderViewHost, once we have an instance. It is important to 45 // Create a RenderViewHost, once we have an instance. It is important to
42 // immediately give this SiteInstance to a RenderViewHost so that it is 46 // immediately give this SiteInstance to a RenderViewHost so that it is
43 // ref counted. 47 // ref counted.
44 if (!site_instance) 48 if (!site_instance)
45 site_instance = SiteInstance::CreateSiteInstance(profile); 49 site_instance = SiteInstance::CreateSiteInstance(profile);
46 render_view_host_ = CreateRenderViewHost( 50 render_view_host_ = CreateRenderViewHost(
47 site_instance, routing_id, modal_dialog_event); 51 site_instance, routing_id, modal_dialog_event);
48 } 52 }
49 53
50 void RenderViewHostManager::Shutdown() { 54 void RenderViewHostManager::Shutdown() {
51 if (pending_render_view_host_) 55 if (pending_render_view_host_)
52 CancelPendingRenderView(); 56 CancelPendingRenderView();
53 57
54 // We should always have a main RenderViewHost. 58 // We should always have a main RenderViewHost.
55 render_view_host_->Shutdown(); 59 render_view_host_->Shutdown();
56 render_view_host_ = NULL; 60 render_view_host_ = NULL;
57 } 61 }
58 62
59 RenderViewHost* RenderViewHostManager::Navigate(const NavigationEntry& entry) { 63 RenderViewHost* RenderViewHostManager::Navigate(const NavigationEntry& entry) {
60 RenderViewHost* dest_render_view_host = UpdateRendererStateNavigate(entry); 64 RenderViewHost* dest_render_view_host = UpdateRendererStateNavigate(entry);
61 if (!dest_render_view_host) 65 if (!dest_render_view_host)
62 return NULL; // We weren't able to create a pending render view host. 66 return NULL; // We weren't able to create a pending render view host.
63 67
64 // If the current render_view_host_ isn't live, we should create it so 68 // If the current render_view_host_ isn't live, we should create it so
65 // that we don't show a sad tab while the dest_render_view_host fetches 69 // that we don't show a sad tab while the dest_render_view_host fetches
66 // its first page. (Bug 1145340) 70 // its first page. (Bug 1145340)
67 if (dest_render_view_host != render_view_host_ && 71 if (dest_render_view_host != render_view_host_ &&
68 !render_view_host_->IsRenderViewLive()) { 72 !render_view_host_->IsRenderViewLive()) {
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 pending_render_view_host_->view()->Hide(); 344 pending_render_view_host_->view()->Hide();
341 } else { 345 } else {
342 CancelPendingRenderView(); 346 CancelPendingRenderView();
343 } 347 }
344 return success; 348 return success;
345 } 349 }
346 350
347 RenderViewHost* RenderViewHostManager::CreateRenderViewHost( 351 RenderViewHost* RenderViewHostManager::CreateRenderViewHost(
348 SiteInstance* instance, 352 SiteInstance* instance,
349 int routing_id, 353 int routing_id,
350 HANDLE modal_dialog_event) { 354 base::WaitableEvent* modal_dialog_event) {
351 if (render_view_factory_) { 355 if (render_view_factory_) {
352 return render_view_factory_->CreateRenderViewHost( 356 return render_view_factory_->CreateRenderViewHost(
353 instance, render_view_delegate_, routing_id, modal_dialog_event); 357 instance, render_view_delegate_, routing_id, modal_dialog_event);
354 } else { 358 } else {
355 return new RenderViewHost(instance, render_view_delegate_, routing_id, 359 return new RenderViewHost(instance, render_view_delegate_, routing_id,
356 modal_dialog_event); 360 modal_dialog_event);
357 } 361 }
358 } 362 }
359 363
360 void RenderViewHostManager::SwapToRenderView( 364 void RenderViewHostManager::SwapToRenderView(
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 pending_render_view_host_ = NULL; 494 pending_render_view_host_ = NULL;
491 } 495 }
492 496
493 void RenderViewHostManager::CrossSiteNavigationCanceled() { 497 void RenderViewHostManager::CrossSiteNavigationCanceled() {
494 DCHECK(cross_navigation_pending_); 498 DCHECK(cross_navigation_pending_);
495 cross_navigation_pending_ = false; 499 cross_navigation_pending_ = false;
496 if (pending_render_view_host_) 500 if (pending_render_view_host_)
497 CancelPendingRenderView(); 501 CancelPendingRenderView();
498 } 502 }
499 503
OLDNEW
« no previous file with comments | « chrome/browser/render_view_host_manager.h ('k') | chrome/browser/web_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698