From f4badfbe2f86552deb435f66b0167628c20e2e0d Mon Sep 17 00:00:00 2001 From: "dpolukhin@chromium.org" Date: Thu, 3 Jun 2010 12:45:52 +0000 Subject: 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 --- chrome/browser/chromeos/login/network_screen.cc | 7 +++++++ chrome/browser/chromeos/login/network_selection_view.cc | 4 ++++ 2 files changed, 11 insertions(+) (limited to 'chrome/browser/chromeos') 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() { -- cgit v1.1