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

Unified Diff: chrome/browser/chromeos/login/network_screen.cc

Issue 10832009: Additional checks/calls for cases when WebUI may be already gone but OOBE screen instance is not (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fix tests Created 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/network_screen.cc
diff --git a/chrome/browser/chromeos/login/network_screen.cc b/chrome/browser/chromeos/login/network_screen.cc
index 909d4bf04401a9ee7611ebbf5a43a258a425ad0d..f2bf26b854cd2b29b7f7400d93b9435fe35d85b3 100644
--- a/chrome/browser/chromeos/login/network_screen.cc
+++ b/chrome/browser/chromeos/login/network_screen.cc
@@ -37,10 +37,14 @@ NetworkScreen::NetworkScreen(ScreenObserver* screen_observer,
is_network_subscribed_(false),
continue_pressed_(false),
actor_(actor) {
- actor_->SetDelegate(this);
+ DCHECK(actor_);
+ if (actor_)
+ actor_->SetDelegate(this);
}
NetworkScreen::~NetworkScreen() {
+ if (actor_)
+ actor_->SetDelegate(NULL);
connection_timer_.Stop();
UnsubscribeNetworkNotification();
}
@@ -49,16 +53,19 @@ NetworkScreen::~NetworkScreen() {
// NetworkScreen, WizardScreen implementation:
void NetworkScreen::PrepareToShow() {
- actor_->PrepareToShow();
+ if (actor_)
+ actor_->PrepareToShow();
}
void NetworkScreen::Show() {
- actor_->Show();
+ if (actor_)
+ actor_->Show();
Refresh();
}
void NetworkScreen::Hide() {
- actor_->Hide();
+ if (actor_)
+ actor_->Hide();
}
std::string NetworkScreen::GetName() const {
@@ -83,6 +90,11 @@ void NetworkScreen::Refresh() {
///////////////////////////////////////////////////////////////////////////////
// NetworkScreen, NetworkScreenActor::Delegate implementation:
+void NetworkScreen::OnActorDestroyed(NetworkScreenActor* actor) {
+ if (actor_ == actor)
+ actor_ = NULL;
+}
+
void NetworkScreen::OnContinuePressed() {
NetworkLibrary* network = CrosLibrary::Get()->GetNetworkLibrary();
if (network && network->Connected()) {
@@ -124,7 +136,7 @@ void NetworkScreen::OnConnectionTimeout() {
NetworkLibrary* network = CrosLibrary::Get()->GetNetworkLibrary();
bool is_connected = network && network->Connected();
- if (!is_connected) {
+ if (!is_connected && actor_) {
// Show error bubble.
actor_->ShowError(
l10n_util::GetStringFUTF16(
@@ -163,8 +175,10 @@ void NetworkScreen::StopWaitingForConnection(const string16& network_id) {
connection_timer_.Stop();
network_id_ = network_id;
- actor_->ShowConnectingStatus(false, network_id_);
- actor_->EnableContinue(is_connected);
+ if (actor_) {
+ actor_->ShowConnectingStatus(false, network_id_);
+ actor_->EnableContinue(is_connected);
+ }
}
void NetworkScreen::WaitForConnection(const string16& network_id) {
@@ -177,9 +191,10 @@ void NetworkScreen::WaitForConnection(const string16& network_id) {
}
network_id_ = network_id;
- actor_->ShowConnectingStatus(continue_pressed_, network_id_);
-
- actor_->EnableContinue(false);
+ if (actor_) {
+ actor_->ShowConnectingStatus(continue_pressed_, network_id_);
+ actor_->EnableContinue(false);
+ }
}
} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/login/network_screen.h ('k') | chrome/browser/chromeos/login/network_screen_actor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698