diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-03 12:45:52 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-03 12:45:52 +0000 |
commit | f4badfbe2f86552deb435f66b0167628c20e2e0d (patch) | |
tree | b8b333074d269eb4548156778804bf8d016a43e8 /chrome/browser/chromeos | |
parent | 263f8f7ec0a426c6bcd3e13fb030bed2ff43970a (diff) | |
download | chromium_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.cc | 7 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/network_selection_view.cc | 4 |
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() { |