summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-03 12:45:52 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-03 12:45:52 +0000
commitf4badfbe2f86552deb435f66b0167628c20e2e0d (patch)
treeb8b333074d269eb4548156778804bf8d016a43e8 /chrome/browser/chromeos
parent263f8f7ec0a426c6bcd3e13fb030bed2ff43970a (diff)
downloadchromium_src-f4badfbe2f86552deb435f66b0167628c20e2e0d.zip
chromium_src-f4badfbe2f86552deb435f66b0167628c20e2e0d.tar.gz
chromium_src-f4badfbe2f86552deb435f66b0167628c20e2e0d.tar.bz2
Fix crash on NetworkScreen when corresponding view was deleted.
BUG=crosbug.com/3757 TEST=none Review URL: http://codereview.chromium.org/2575001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48827 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r--chrome/browser/chromeos/login/network_screen.cc7
-rw-r--r--chrome/browser/chromeos/login/network_selection_view.cc4
2 files changed, 11 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/login/network_screen.cc b/chrome/browser/chromeos/login/network_screen.cc
index 6cde949..60cec2b 100644
--- a/chrome/browser/chromeos/login/network_screen.cc
+++ b/chrome/browser/chromeos/login/network_screen.cc
@@ -37,6 +37,7 @@ NetworkScreen::NetworkScreen(WizardScreenDelegate* delegate, bool is_out_of_box)
}
NetworkScreen::~NetworkScreen() {
+ connection_timer_.Stop();
UnsubscribeNetworkNotification();
}
@@ -109,6 +110,9 @@ void NetworkScreen::ButtonPressed(views::Button* sender,
// NetworkLibrary::Observer implementation:
void NetworkScreen::NetworkChanged(NetworkLibrary* network_lib) {
+ if (!view())
+ return;
+
// Save network selection in case it would be available after refresh.
NetworkList::NetworkType network_type = NetworkList::NETWORK_EMPTY;
string16 network_id;
@@ -205,6 +209,9 @@ void NetworkScreen::UnsubscribeNetworkNotification() {
}
NetworkList::NetworkItem* NetworkScreen::GetSelectedNetwork() {
+ if (!view())
+ return NULL;
+
return networks_.GetNetworkAt(view()->GetSelectedNetworkItem() - 1);
}
diff --git a/chrome/browser/chromeos/login/network_selection_view.cc b/chrome/browser/chromeos/login/network_selection_view.cc
index 27f2321..891612d 100644
--- a/chrome/browser/chromeos/login/network_selection_view.cc
+++ b/chrome/browser/chromeos/login/network_selection_view.cc
@@ -65,6 +65,10 @@ NetworkSelectionView::NetworkSelectionView(NetworkScreenDelegate* delegate)
}
NetworkSelectionView::~NetworkSelectionView() {
+ network_combobox_->set_listener(NULL);
+ network_combobox_ = NULL;
+ throbber_->Stop();
+ throbber_ = NULL;
}
void NetworkSelectionView::Init() {