diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-17 07:54:33 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-17 07:54:33 +0000 |
commit | fe7d3538c5d10da514d8d8419e710b0833cda353 (patch) | |
tree | 94546ef7f308bd93d54e7b95657ae036e44e7682 /chrome | |
parent | 99cc9a069017071385053327ebc74f6e96c556e6 (diff) | |
download | chromium_src-fe7d3538c5d10da514d8d8419e710b0833cda353.zip chromium_src-fe7d3538c5d10da514d8d8419e710b0833cda353.tar.gz chromium_src-fe7d3538c5d10da514d8d8419e710b0833cda353.tar.bz2 |
Added tests for OOBE network screen
Add new tests instead of tests disabled in http://codereview.chromium.org/3166028
BUG=chromium-os:6672
TEST=browser_tests --gtest_filter=NetworkScreenTest.*
Review URL: http://codereview.chromium.org/3441008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59774 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
4 files changed, 154 insertions, 400 deletions
diff --git a/chrome/browser/chromeos/login/network_screen.h b/chrome/browser/chromeos/login/network_screen.h index 0645597..0cccc8e 100644 --- a/chrome/browser/chromeos/login/network_screen.h +++ b/chrome/browser/chromeos/login/network_screen.h @@ -51,6 +51,8 @@ class NetworkScreen : public ViewScreen<NetworkSelectionView>, void Refresh(); private: + FRIEND_TEST(NetworkScreenTest, Timeout); + // ViewScreen implementation: virtual void CreateView(); virtual NetworkSelectionView* AllocateView(); diff --git a/chrome/browser/chromeos/login/network_screen_browsertest.cc b/chrome/browser/chromeos/login/network_screen_browsertest.cc index b90ce75..429041d 100644 --- a/chrome/browser/chromeos/login/network_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/network_screen_browsertest.cc @@ -44,22 +44,11 @@ class DummyButtonListener : public views::ButtonListener { const views::Event& event) {} }; -class DummyComboboxModel : public ComboboxModel { - public: - virtual int GetItemCount() { return 2; } - - virtual string16 GetItemAt(int index) { - return ASCIIToUTF16("Item ") + base::IntToString16(index); - } -}; - class NetworkScreenTest : public WizardInProcessBrowserTest { public: NetworkScreenTest(): WizardInProcessBrowserTest("network"), mock_login_library_(NULL), mock_network_library_(NULL) { - cellular_.set_name("Cellular network"); - wifi_.set_name("WiFi network"); } protected: @@ -75,24 +64,33 @@ class NetworkScreenTest : public WizardInProcessBrowserTest { // Status bar expectations are defined with RetiresOnSaturation() so // these mocks will be active once status bar is initialized. EXPECT_CALL(*mock_network_library_, ethernet_connected()) - .Times(1) - .WillOnce((Return(false))); + .Times(2) + .WillRepeatedly(Return(false)); EXPECT_CALL(*mock_network_library_, ethernet_connecting()) .Times(1) - .WillOnce((Return(false))); - EXPECT_CALL(*mock_network_library_, wifi_enabled()) - .Times(1) - .WillOnce((Return(true))); - EXPECT_CALL(*mock_network_library_, wifi_networks()) - .Times(1) - .WillOnce((ReturnRef(wifi_networks_))); - EXPECT_CALL(*mock_network_library_, cellular_networks()) + .WillRepeatedly(Return(false)); + EXPECT_CALL(*mock_network_library_, wifi_connected()) + .Times(2) + .WillRepeatedly(Return(false)); + EXPECT_CALL(*mock_network_library_, wifi_connecting()) + .Times(2) + .WillRepeatedly(Return(false)); + EXPECT_CALL(*mock_network_library_, cellular_connected()) + .Times(2) + .WillRepeatedly(Return(false)); + EXPECT_CALL(*mock_network_library_, cellular_connecting()) + .Times(2) + .WillRepeatedly(Return(false)); + EXPECT_CALL(*mock_network_library_, Connected()) + .Times(2) + .WillRepeatedly(Return(false)); + EXPECT_CALL(*mock_network_library_, Connecting()) .Times(1) - .WillOnce((ReturnRef(cellular_networks_))); + .WillRepeatedly(Return(false)); EXPECT_CALL(*mock_network_library_, AddObserver(_)) - .Times(1); + .Times(2); EXPECT_CALL(*mock_network_library_, RemoveObserver(_)) - .Times(1); + .Times(2); cros_mock_->SetStatusAreaMocksExpectations(); } @@ -102,80 +100,14 @@ class NetworkScreenTest : public WizardInProcessBrowserTest { cros_mock_->test_api()->SetLoginLibrary(NULL, false); } - void NetworkChangedExpectations(bool wifi_enabled) { - EXPECT_CALL(*mock_network_library_, wifi_enabled()) - .Times(1) - .WillOnce((Return(wifi_enabled))); - } - - void EthernetExpectations(bool connected, bool connecting) { - EXPECT_CALL(*mock_network_library_, ethernet_connected()) - .Times(1) - .WillRepeatedly((Return(connected))); - EXPECT_CALL(*mock_network_library_, ethernet_connecting()) - .Times(1) - .WillRepeatedly((Return(connecting))); - } - - void WifiExpectations(bool connected, bool connecting) { - EXPECT_CALL(*mock_network_library_, wifi_connected()) - .Times(1) - .WillOnce((Return(connected))); - EXPECT_CALL(*mock_network_library_, wifi_connecting()) - .Times(1) - .WillOnce((Return(connecting))); - } - - void SetupWifiNetwork(bool connected, bool connecting) { - wifi_networks_.clear(); - wifi_.set_connected(connected); - wifi_.set_connecting(connecting); - wifi_networks_.push_back(wifi_); - } - - void SetupCellularNetwork(bool connected, bool connecting) { - cellular_networks_.clear(); - cellular_.set_connected(connected); - cellular_.set_connecting(connecting); - cellular_networks_.push_back(cellular_); - } - - void CellularExpectations(bool connected, bool connecting) { - EXPECT_CALL(*mock_network_library_, cellular_connected()) - .Times(1) - .WillOnce((Return(connected))); - EXPECT_CALL(*mock_network_library_, cellular_connecting()) - .Times(1) - .WillOnce((Return(connecting))); - } - - void WifiCellularNetworksExpectations() { - EXPECT_CALL(*mock_network_library_, wifi_networks()) - .Times(1) - .WillOnce((ReturnRef(wifi_networks_))); - EXPECT_CALL(*mock_network_library_, cellular_networks()) - .Times(1) - .WillOnce((ReturnRef(cellular_networks_))); - } - - void WifiSsidExpectation(const std::string& ssid) { - EXPECT_CALL(*mock_network_library_, wifi_name()) - .Times(1) - .WillOnce((ReturnRef(ssid))); - } - - void CellularNameExpectation(const std::string& name) { - EXPECT_CALL(*mock_network_library_, cellular_name()) - .Times(1) - .WillOnce((ReturnRef(name))); - } - void EmulateContinueButtonExit(NetworkScreen* network_screen) { scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver()); EXPECT_CALL(*mock_screen_observer, OnExit(ScreenObserver::NETWORK_CONNECTED)) .Times(1); + EXPECT_CALL(*mock_network_library_, Connected()) + .WillOnce(Return(true)); controller()->set_observer(mock_screen_observer.get()); DummyButtonListener button_listener; views::TextButton button(&button_listener, L"Button"); @@ -190,350 +122,160 @@ class NetworkScreenTest : public WizardInProcessBrowserTest { MockLoginLibrary* mock_login_library_; MockNetworkLibrary* mock_network_library_; - CellularNetworkVector cellular_networks_; - WifiNetworkVector wifi_networks_; - - CellularNetwork cellular_; - WifiNetwork wifi_; - private: DISALLOW_COPY_AND_ASSIGN(NetworkScreenTest); }; -#if 0 - -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, FAILS_Basic) { - ASSERT_TRUE(controller()); - NetworkScreen* network_screen = controller()->GetNetworkScreen(); - ASSERT_TRUE(network_screen != NULL); - ASSERT_EQ(network_screen, controller()->current_screen()); - - NetworkSelectionView* network_view = network_screen->view(); - ASSERT_TRUE(network_view != NULL); - ASSERT_EQ(1, network_screen->GetItemCount()); - EXPECT_EQ(l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE), - network_screen->GetItemAt(0)); -} - -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, FAILS_EnableWifi) { +IN_PROC_BROWSER_TEST_F(NetworkScreenTest, Ethernet) { ASSERT_TRUE(controller()); NetworkScreen* network_screen = controller()->GetNetworkScreen(); ASSERT_TRUE(network_screen != NULL); ASSERT_EQ(network_screen, controller()->current_screen()); - NetworkSelectionView* network_view = network_screen->view(); - ASSERT_TRUE(network_view != NULL); - NetworkLibrary* network_library = - chromeos::CrosLibrary::Get()->GetNetworkLibrary(); - - // WiFi is disabled. - NetworkChangedExpectations(false); - EthernetExpectations(false, false); - WifiCellularNetworksExpectations(); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(2, network_screen->GetItemCount()); - EXPECT_EQ(l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE), - network_screen->GetItemAt(0)); - EXPECT_EQ(l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ENABLE, - l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)), - network_screen->GetItemAt(1)); - - // Emulate "Enable Wifi" item press. - EXPECT_CALL(*mock_network_library_, EnableWifiNetworkDevice(true)) - .Times(1); - DummyComboboxModel combobox_model; - views::Combobox combobox(&combobox_model); - network_screen->ItemChanged(&combobox, 0, 1); - network_view->SetSelectedNetworkItem(1); - ui_test_utils::RunAllPendingInMessageLoop(); - ASSERT_EQ(network_screen, controller()->current_screen()); -} -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, FAILS_NetworksConnectedNotSelected) { - ASSERT_TRUE(controller()); - NetworkLibrary* network_library = - chromeos::CrosLibrary::Get()->GetNetworkLibrary(); - NetworkScreen* network_screen = controller()->GetNetworkScreen(); - ASSERT_TRUE(network_screen != NULL); NetworkSelectionView* network_view = network_screen->view(); ASSERT_TRUE(network_view != NULL); + EXPECT_FALSE(network_view->IsContinueEnabled()); - EthernetExpectations(true, false); - WifiCellularNetworksExpectations(); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - // Ethernet is preselected once. - EXPECT_EQ(1, network_view->GetSelectedNetworkItem()); - ASSERT_EQ(network_screen, controller()->current_screen()); - ASSERT_EQ(2, network_screen->GetItemCount()); - EXPECT_EQ(l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET), - network_screen->GetItemAt(1)); - - // Ethernet - disconnected, WiFi & Cellular - connected. - EthernetExpectations(false, false); - SetupWifiNetwork(true, false); - WifiExpectations(true, false); - SetupCellularNetwork(true, false); - CellularExpectations(true, false); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(wifi_.name()); - CellularNameExpectation(cellular_.name()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(network_screen, controller()->current_screen()); - ASSERT_EQ(3, network_screen->GetItemCount()); - EXPECT_EQ(ASCIIToUTF16(wifi_.name()), network_screen->GetItemAt(1)); - EXPECT_EQ(ASCIIToUTF16(cellular_.name()), network_screen->GetItemAt(2)); - - // Ethernet, WiFi & Cellular - connected. - EthernetExpectations(true, false); - WifiExpectations(true, false); - CellularExpectations(true, false); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(wifi_.name()); - CellularNameExpectation(cellular_.name()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(network_screen, controller()->current_screen()); - ASSERT_EQ(4, network_screen->GetItemCount()); - EXPECT_EQ(l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET), - network_screen->GetItemAt(1)); - EXPECT_EQ(ASCIIToUTF16(wifi_.name()), network_screen->GetItemAt(2)); - EXPECT_EQ(ASCIIToUTF16(cellular_.name()), network_screen->GetItemAt(3)); - // Ethernet is only preselected once. - EXPECT_EQ(0, network_view->GetSelectedNetworkItem()); -} - -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, FAILS_EthernetSelected) { - ASSERT_TRUE(controller()); - NetworkLibrary* network_library = - chromeos::CrosLibrary::Get()->GetNetworkLibrary(); - NetworkScreen* network_screen = controller()->GetNetworkScreen(); - ASSERT_TRUE(network_screen != NULL); - NetworkSelectionView* network_view = network_screen->view(); - ASSERT_TRUE(network_view != NULL); + EXPECT_CALL(*mock_network_library_, ethernet_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, wifi_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, cellular_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, ethernet_connecting()) + .WillOnce((Return(true))); - // Emulate connecting to Ethernet. - EthernetExpectations(false, true); - WifiCellularNetworksExpectations(); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(2, network_screen->GetItemCount()); - EXPECT_EQ(l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET), - network_screen->GetItemAt(1)); - ASSERT_EQ(network_screen, controller()->current_screen()); + network_screen->NetworkChanged(mock_network_library_); + EXPECT_FALSE(network_view->IsContinueEnabled()); + EXPECT_TRUE(network_view->IsConnecting()); - // Emulate combobox selection - nothing happens. - DummyComboboxModel combobox_model; - views::Combobox combobox(&combobox_model); - network_screen->ItemChanged(&combobox, 0, 1); - network_view->SetSelectedNetworkItem(1); - ui_test_utils::RunAllPendingInMessageLoop(); - ASSERT_EQ(network_screen, controller()->current_screen()); + EXPECT_CALL(*mock_network_library_, ethernet_connected()) + .WillOnce(Return(true)); + EXPECT_CALL(*mock_network_library_, Connected()) + .WillOnce(Return(true)); - // Emulate connected Ethernet - it should be preselected. - EthernetExpectations(true, false); - WifiCellularNetworksExpectations(); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(2, network_screen->GetItemCount()); - EXPECT_EQ(1, network_view->GetSelectedNetworkItem()); - ASSERT_EQ(network_screen, controller()->current_screen()); + network_screen->NetworkChanged(mock_network_library_); + EXPECT_TRUE(network_view->IsContinueEnabled()); - // "Continue" button with connected network should proceed to next screen. EmulateContinueButtonExit(network_screen); } -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, FAILS_WifiSelected) { +IN_PROC_BROWSER_TEST_F(NetworkScreenTest, Wifi) { ASSERT_TRUE(controller()); - NetworkLibrary* network_library = - chromeos::CrosLibrary::Get()->GetNetworkLibrary(); NetworkScreen* network_screen = controller()->GetNetworkScreen(); ASSERT_TRUE(network_screen != NULL); - NetworkSelectionView* network_view = network_screen->view(); - ASSERT_TRUE(network_view != NULL); - - EthernetExpectations(false, false); - SetupWifiNetwork(false, false); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(std::string()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(2, network_screen->GetItemCount()); - EXPECT_EQ(ASCIIToUTF16(wifi_.name()), network_screen->GetItemAt(1)); - - DummyComboboxModel combobox_model; - views::Combobox combobox(&combobox_model); - - // Emulate combobox selection. - EthernetExpectations(false, false); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(std::string()); - network_screen->ItemChanged(&combobox, 0, 1); - network_view->SetSelectedNetworkItem(1); - EXPECT_CALL(*mock_network_library_, - ConnectToWifiNetwork(A<WifiNetwork>(), std::string(), - std::string(), std::string())) - .Times(1); - ui_test_utils::RunAllPendingInMessageLoop(); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(2, network_screen->GetItemCount()); - - // Emulate connecting to WiFi network. - EthernetExpectations(false, false); - SetupWifiNetwork(false, true); - WifiExpectations(false, true); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(wifi_.name()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); ASSERT_EQ(network_screen, controller()->current_screen()); - // Emulate connected WiFi network. - EthernetExpectations(false, false); - SetupWifiNetwork(true, false); - WifiExpectations(true, false); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(wifi_.name()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ui_test_utils::RunAllPendingInMessageLoop(); - ASSERT_EQ(network_screen, controller()->current_screen()); + NetworkSelectionView* network_view = network_screen->view(); + ASSERT_TRUE(network_view != NULL); + EXPECT_FALSE(network_view->IsContinueEnabled()); + + EXPECT_CALL(*mock_network_library_, ethernet_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, wifi_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, cellular_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, ethernet_connecting()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, wifi_connecting()) + .WillOnce((Return(true))); + std::string wifi_name = "wifi"; + EXPECT_CALL(*mock_network_library_, wifi_name()) + .WillOnce(ReturnRef(wifi_name)); + + network_screen->NetworkChanged(mock_network_library_); + EXPECT_FALSE(network_view->IsContinueEnabled()); + EXPECT_TRUE(network_view->IsConnecting()); + + EXPECT_CALL(*mock_network_library_, ethernet_connected()) + .WillOnce(Return(true)); + EXPECT_CALL(*mock_network_library_, Connected()) + .WillOnce(Return(true)); + + network_screen->NetworkChanged(mock_network_library_); + EXPECT_TRUE(network_view->IsContinueEnabled()); - // "Continue" button with connected network should proceed to next screen. EmulateContinueButtonExit(network_screen); } -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, FAILS_CellularSelected) { +IN_PROC_BROWSER_TEST_F(NetworkScreenTest, Cellular) { ASSERT_TRUE(controller()); - NetworkLibrary* network_library = - chromeos::CrosLibrary::Get()->GetNetworkLibrary(); NetworkScreen* network_screen = controller()->GetNetworkScreen(); ASSERT_TRUE(network_screen != NULL); - NetworkSelectionView* network_view = network_screen->view(); - ASSERT_TRUE(network_view != NULL); - - EthernetExpectations(false, false); - SetupCellularNetwork(false, false); - WifiCellularNetworksExpectations(); - CellularNameExpectation(std::string()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(2, network_screen->GetItemCount()); - EXPECT_EQ(ASCIIToUTF16(cellular_.name()), network_screen->GetItemAt(1)); - - DummyComboboxModel combobox_model; - views::Combobox combobox(&combobox_model); - - // Emulate combobox selection. - EthernetExpectations(false, false); - WifiCellularNetworksExpectations(); - CellularNameExpectation(std::string()); - network_screen->ItemChanged(&combobox, 0, 1); - network_view->SetSelectedNetworkItem(1); - EXPECT_CALL(*mock_network_library_, ConnectToCellularNetwork(_)) - .Times(1); - ui_test_utils::RunAllPendingInMessageLoop(); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(2, network_screen->GetItemCount()); - - // Emulate connecting to cellular network. - EthernetExpectations(false, false); - SetupCellularNetwork(false, true); - CellularExpectations(false, true); - WifiCellularNetworksExpectations(); - CellularNameExpectation(cellular_.name()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); ASSERT_EQ(network_screen, controller()->current_screen()); - // Emulate connected cellular network. - EthernetExpectations(false, false); - SetupCellularNetwork(true, false); - CellularExpectations(true, false); - WifiCellularNetworksExpectations(); - CellularNameExpectation(cellular_.name()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ui_test_utils::RunAllPendingInMessageLoop(); - ASSERT_EQ(network_screen, controller()->current_screen()); + NetworkSelectionView* network_view = network_screen->view(); + ASSERT_TRUE(network_view != NULL); + EXPECT_FALSE(network_view->IsContinueEnabled()); + + EXPECT_CALL(*mock_network_library_, ethernet_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, wifi_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, cellular_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, ethernet_connecting()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, wifi_connecting()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, cellular_connecting()) + .WillOnce((Return(true))); + std::string cellular_name = "3G"; + EXPECT_CALL(*mock_network_library_, cellular_name()) + .WillOnce(ReturnRef(cellular_name)); + + network_screen->NetworkChanged(mock_network_library_); + EXPECT_FALSE(network_view->IsContinueEnabled()); + EXPECT_TRUE(network_view->IsConnecting()); + + EXPECT_CALL(*mock_network_library_, ethernet_connected()) + .WillOnce(Return(true)); + EXPECT_CALL(*mock_network_library_, Connected()) + .WillOnce(Return(true)); + + network_screen->NetworkChanged(mock_network_library_); + EXPECT_TRUE(network_view->IsContinueEnabled()); - // "Continue" button with connected network should proceed to next screen. EmulateContinueButtonExit(network_screen); } -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, FAILS_WifiWaiting) { +IN_PROC_BROWSER_TEST_F(NetworkScreenTest, Timeout) { ASSERT_TRUE(controller()); - NetworkLibrary* network_library = - chromeos::CrosLibrary::Get()->GetNetworkLibrary(); NetworkScreen* network_screen = controller()->GetNetworkScreen(); ASSERT_TRUE(network_screen != NULL); - NetworkSelectionView* network_view = network_screen->view(); - ASSERT_TRUE(network_view != NULL); - - EthernetExpectations(false, false); - SetupWifiNetwork(false, false); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(std::string()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - - DummyComboboxModel combobox_model; - views::Combobox combobox(&combobox_model); - - // Emulate combobox selection. - EthernetExpectations(false, false); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(std::string()); - network_screen->ItemChanged(&combobox, 0, 1); - network_view->SetSelectedNetworkItem(1); - EXPECT_CALL(*mock_network_library_, - ConnectToWifiNetwork(A<WifiNetwork>(), std::string(), - std::string(), std::string())) - .Times(1); - ui_test_utils::RunAllPendingInMessageLoop(); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ASSERT_EQ(2, network_screen->GetItemCount()); - - // Emulate connecting to WiFi network. - EthernetExpectations(false, false); - SetupWifiNetwork(false, true); - WifiExpectations(false, true); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(wifi_.name()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - - // Continue but wait for connection. - scoped_ptr<MockScreenObserver> - mock_screen_observer(new MockScreenObserver()); - EXPECT_CALL(*mock_screen_observer, - OnExit(ScreenObserver::NETWORK_CONNECTED)) - .Times(1); - controller()->set_observer(mock_screen_observer.get()); - DummyButtonListener button_listener; - views::TextButton button(&button_listener, L"Button"); - views::MouseEvent event(views::Event::ET_MOUSE_RELEASED, - 0, 0, - views::Event::EF_LEFT_BUTTON_DOWN); - network_screen->ButtonPressed(&button, event); - ui_test_utils::RunAllPendingInMessageLoop(); ASSERT_EQ(network_screen, controller()->current_screen()); - // Emulate connected WiFi network. - EthernetExpectations(false, false); - SetupWifiNetwork(true, false); - WifiExpectations(true, false); - WifiCellularNetworksExpectations(); - WifiSsidExpectation(wifi_.name()); - NetworkChangedExpectations(true); - network_screen->NetworkChanged(network_library); - ui_test_utils::RunAllPendingInMessageLoop(); - controller()->set_observer(NULL); + NetworkSelectionView* network_view = network_screen->view(); + ASSERT_TRUE(network_view != NULL); + EXPECT_FALSE(network_view->IsContinueEnabled()); + + EXPECT_CALL(*mock_network_library_, ethernet_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, wifi_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, cellular_connected()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, ethernet_connecting()) + .WillOnce((Return(false))); + EXPECT_CALL(*mock_network_library_, wifi_connecting()) + .WillOnce((Return(true))); + std::string wifi_name = "wifi"; + EXPECT_CALL(*mock_network_library_, wifi_name()) + .WillOnce(ReturnRef(wifi_name)); + EXPECT_CALL(*mock_network_library_, Connected()) + .WillOnce(Return(false)); + + network_screen->NetworkChanged(mock_network_library_); + EXPECT_FALSE(network_view->IsContinueEnabled()); + EXPECT_TRUE(network_view->IsConnecting()); + + network_screen->OnConnectionTimeout(); + EXPECT_FALSE(network_view->IsContinueEnabled()); + EXPECT_FALSE(network_view->IsConnecting()); + + // Close infobubble with error message - it makes test stable. + network_screen->ClearErrors(); } -#endif // #if 0 - } // namespace chromeos diff --git a/chrome/browser/chromeos/login/network_selection_view.cc b/chrome/browser/chromeos/login/network_selection_view.cc index fb8c8e11..7e8525e 100644 --- a/chrome/browser/chromeos/login/network_selection_view.cc +++ b/chrome/browser/chromeos/login/network_selection_view.cc @@ -133,7 +133,6 @@ NetworkSelectionView::NetworkSelectionView(NetworkScreenDelegate* delegate) throbber_(CreateDefaultSmoothedThrobber()), proxy_settings_link_(NULL), continue_button_order_index_(-1), - continue_button_enabled_(false), delegate_(delegate) { } @@ -349,12 +348,19 @@ void NetworkSelectionView::ShowConnectingStatus(bool connecting, } } +bool NetworkSelectionView::IsConnecting() const { + return connecting_network_label_->IsVisible(); +} + void NetworkSelectionView::EnableContinue(bool enabled) { - continue_button_enabled_ = enabled; if (continue_button_) continue_button_->SetEnabled(enabled); } +bool NetworkSelectionView::IsContinueEnabled() const { + return continue_button_ && continue_button_->IsEnabled(); +} + //////////////////////////////////////////////////////////////////////////////// // views::LinkController implementation: @@ -378,11 +384,12 @@ void NetworkSelectionView::LinkActivated(views::Link* source, int) { void NetworkSelectionView::RecreateNativeControls() { // There is no way to get native button preferred size after the button was // sized so delete and recreate the button on text update. + bool is_continue_enabled = IsContinueEnabled(); delete continue_button_; continue_button_ = new views::NativeButton( delegate_, l10n_util::GetString(IDS_NETWORK_SELECTION_CONTINUE_BUTTON)); - continue_button_->SetEnabled(continue_button_enabled_); + continue_button_->SetEnabled(is_continue_enabled); if (continue_button_order_index_ < 0) { continue_button_order_index_ = GetChildViewCount(); } diff --git a/chrome/browser/chromeos/login/network_selection_view.h b/chrome/browser/chromeos/login/network_selection_view.h index 5fc00bf..1cc5a96 100644 --- a/chrome/browser/chromeos/login/network_selection_view.h +++ b/chrome/browser/chromeos/login/network_selection_view.h @@ -55,9 +55,15 @@ class NetworkSelectionView : public views::View, // Shows network connecting status or network selection otherwise. void ShowConnectingStatus(bool connecting, const string16& network_id); + // Returns true if only throbber is visible, the view is in waiting status. + bool IsConnecting() const; + // Sets whether continue control is enabled. void EnableContinue(bool enabled); + // Returns whether continue button is enabled. + bool IsContinueEnabled() const; + // views::LinkController implementation. virtual void LinkActivated(views::Link* source, int); @@ -91,9 +97,6 @@ class NetworkSelectionView : public views::View, // Tab index of continue button. int continue_button_order_index_; - // Whether continue_button is enabled. - bool continue_button_enabled_; - // NetworkScreen delegate. NetworkScreenDelegate* delegate_; |