diff options
author | nkostylev@google.com <nkostylev@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-31 10:37:56 +0000 |
---|---|---|
committer | nkostylev@google.com <nkostylev@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-31 10:37:56 +0000 |
commit | cc226f1b5bfb08121dbfdc8a29fc51258df76976 (patch) | |
tree | ab47964c7377c092a091ecf65008060f3975fdaf /chrome | |
parent | e231e02b17da6281d4439cf728cf9c2145deae19 (diff) | |
download | chromium_src-cc226f1b5bfb08121dbfdc8a29fc51258df76976.zip chromium_src-cc226f1b5bfb08121dbfdc8a29fc51258df76976.tar.gz chromium_src-cc226f1b5bfb08121dbfdc8a29fc51258df76976.tar.bz2 |
Add exit test cases for Network selection screen (Ethernet & Wifi).
BUG=crosbug.com/2037
TEST=out/Debug/browser_tests --gtest_filter=NetworkScreenTest*
Review URL: http://codereview.chromium.org/1545002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43202 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
4 files changed, 168 insertions, 18 deletions
diff --git a/chrome/browser/chromeos/login/network_screen_browsertest.cc b/chrome/browser/chromeos/login/network_screen_browsertest.cc index 01dbdca..706245a 100644 --- a/chrome/browser/chromeos/login/network_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/network_screen_browsertest.cc @@ -4,21 +4,26 @@ #include <string> +#include "app/combobox_model.h" #include "app/l10n_util.h" #include "base/message_loop.h" +#include "base/scoped_ptr.h" #include "base/string_util.h" -#include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h" #include "chrome/browser/chromeos/cros/cros_library.h" #include "chrome/browser/chromeos/cros/mock_login_library.h" #include "chrome/browser/chromeos/cros/mock_network_library.h" #include "chrome/browser/chromeos/cros/network_library.h" #include "chrome/browser/chromeos/login/network_selection_view.h" #include "chrome/browser/chromeos/login/network_screen.h" +#include "chrome/browser/chromeos/login/mock_screen_observer.h" +#include "chrome/browser/chromeos/login/view_screen.h" #include "chrome/browser/chromeos/login/wizard_controller.h" +#include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h" #include "chrome/browser/chromeos/login/wizard_screen.h" #include "grit/generated_resources.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/gmock/include/gmock/gmock.h" +#include "views/controls/combobox/combobox.h" namespace chromeos { using ::testing::AnyNumber; @@ -26,6 +31,7 @@ using ::testing::InvokeWithoutArgs; using ::testing::Return; using ::testing::ReturnRef; using ::testing::_; +using ::testing::A; class NetworkScreenTest : public WizardInProcessBrowserTest { public: @@ -81,10 +87,19 @@ class NetworkScreenTest : public WizardInProcessBrowserTest { void WifiExpectations(bool connected, bool connecting) { EXPECT_CALL(*mock_network_library_, wifi_connected()) .Times(1) - .WillRepeatedly((Return(connected))); + .WillOnce((Return(connected))); EXPECT_CALL(*mock_network_library_, wifi_connecting()) .Times(1) - .WillRepeatedly((Return(connecting))); + .WillOnce((Return(connecting))); + } + + 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() { @@ -96,6 +111,18 @@ class NetworkScreenTest : public WizardInProcessBrowserTest { .WillOnce((ReturnRef(cellular_networks_))); } + void WifiSsidExpectation(const std::string& ssid) { + EXPECT_CALL(*mock_network_library_, wifi_ssid()) + .Times(1) + .WillOnce((ReturnRef(ssid))); + } + + void CellularNameExpectation(const std::string& name) { + EXPECT_CALL(*mock_network_library_, cellular_name()) + .Times(1) + .WillOnce((ReturnRef(name))); + } + MockLoginLibrary* mock_login_library_; CellularNetworkVector cellular_networks_; @@ -105,8 +132,17 @@ class NetworkScreenTest : public WizardInProcessBrowserTest { DISALLOW_COPY_AND_ASSIGN(NetworkScreenTest); }; -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, TestBasic) { - ASSERT_TRUE(controller() != NULL); +class DummyComboboxModel : public ComboboxModel { + public: + virtual int GetItemCount() { return 2; } + + virtual std::wstring GetItemAt(int index) { + return L"Item " + IntToWString(index); + } +}; + +IN_PROC_BROWSER_TEST_F(NetworkScreenTest, Basic) { + ASSERT_TRUE(controller()); NetworkScreen* network_screen = controller()->GetNetworkScreen(); ASSERT_TRUE(network_screen != NULL); ASSERT_EQ(network_screen, controller()->current_screen()); @@ -118,7 +154,8 @@ IN_PROC_BROWSER_TEST_F(NetworkScreenTest, TestBasic) { network_screen->GetItemAt(0)); } -IN_PROC_BROWSER_TEST_F(NetworkScreenTest, TestOobeNetworksConnected) { +IN_PROC_BROWSER_TEST_F(NetworkScreenTest, NetworksConnectedNotSelected) { + ASSERT_TRUE(controller()); NetworkLibrary* network_library = chromeos::CrosLibrary::Get()->GetNetworkLibrary(); NetworkScreen* network_screen = controller()->GetNetworkScreen(); @@ -136,36 +173,142 @@ IN_PROC_BROWSER_TEST_F(NetworkScreenTest, TestOobeNetworksConnected) { EXPECT_EQ(l10n_util::GetString(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET), network_screen->GetItemAt(1)); - std::string ip_address; std::string wifi_ssid("WiFi network"); WifiNetwork wifi; wifi.connected = true; wifi.ssid = wifi_ssid; wifi_networks_.push_back(wifi); + std::string cellular_name("Cellular network"); + CellularNetwork cellular; + cellular.connected = true; + cellular.name = cellular_name; + cellular_networks_.push_back(cellular); + // Ethernet - disconnected, WiFi & Cellular - connected. EthernetExpectations(false, false); WifiExpectations(true, false); + CellularExpectations(true, false); WifiCellularNetworksExpectations(); - EXPECT_CALL(*mock_network_library_, wifi_ssid()) - .Times(1) - .WillOnce((ReturnRef(wifi_ssid))); + WifiSsidExpectation(wifi_ssid); + CellularNameExpectation(cellular_name); network_screen->NetworkChanged(network_library); ASSERT_EQ(network_screen, controller()->current_screen()); - ASSERT_EQ(2, network_screen->GetItemCount()); + ASSERT_EQ(3, network_screen->GetItemCount()); EXPECT_EQ(ASCIIToWide(wifi_ssid), network_screen->GetItemAt(1)); + EXPECT_EQ(ASCIIToWide(cellular_name), network_screen->GetItemAt(2)); + // Ethernet, WiFi & Cellular - connected. EthernetExpectations(true, false); WifiExpectations(true, false); + CellularExpectations(true, false); WifiCellularNetworksExpectations(); - EXPECT_CALL(*mock_network_library_, wifi_ssid()) - .Times(1) - .WillOnce((ReturnRef(wifi_ssid))); + WifiSsidExpectation(wifi_ssid); + CellularNameExpectation(cellular_name); network_screen->NetworkChanged(network_library); ASSERT_EQ(network_screen, controller()->current_screen()); - ASSERT_EQ(3, network_screen->GetItemCount()); + ASSERT_EQ(4, network_screen->GetItemCount()); EXPECT_EQ(l10n_util::GetString(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET), network_screen->GetItemAt(1)); EXPECT_EQ(ASCIIToWide(wifi_ssid), network_screen->GetItemAt(2)); + EXPECT_EQ(ASCIIToWide(cellular_name), network_screen->GetItemAt(3)); +} + +IN_PROC_BROWSER_TEST_F(NetworkScreenTest, 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); + + EthernetExpectations(true, false); + WifiCellularNetworksExpectations(); + network_screen->NetworkChanged(network_library); + ASSERT_EQ(2, network_screen->GetItemCount()); + + DummyComboboxModel combobox_model; + views::Combobox combobox(&combobox_model); + 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()); + + // Emulate combobox selection. + EthernetExpectations(true, false); + WifiCellularNetworksExpectations(); + network_screen->ItemChanged(&combobox, 0, 1); + network_view->SetSelectedNetworkItem(1); + RunAllPendingEvents(); + controller()->set_observer(NULL); +} + +IN_PROC_BROWSER_TEST_F(NetworkScreenTest, WifiSelected) { + 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); + + std::string empty_string; + std::string wifi_ssid("WiFi network"); + WifiNetwork wifi; + wifi.ssid = wifi_ssid; + wifi_networks_.push_back(wifi); + EthernetExpectations(false, false); + WifiCellularNetworksExpectations(); + WifiSsidExpectation(empty_string); + network_screen->NetworkChanged(network_library); + ASSERT_EQ(2, network_screen->GetItemCount()); + EXPECT_EQ(ASCIIToWide(wifi_ssid), network_screen->GetItemAt(1)); + + DummyComboboxModel combobox_model; + views::Combobox combobox(&combobox_model); + + // Emulate combobox selection. + EthernetExpectations(false, false); + WifiCellularNetworksExpectations(); + WifiSsidExpectation(empty_string); + network_screen->ItemChanged(&combobox, 0, 1); + network_view->SetSelectedNetworkItem(1); + EXPECT_CALL(*mock_network_library_, + ConnectToWifiNetwork(A<WifiNetwork>(), string16())) + .Times(1); + RunAllPendingEvents(); + ASSERT_EQ(2, network_screen->GetItemCount()); + + // Emulate connecting WiFi network. + wifi_networks_.clear(); + wifi.connecting = true; + wifi_networks_.push_back(wifi); + EthernetExpectations(false, false); + WifiExpectations(false, true); + WifiCellularNetworksExpectations(); + WifiSsidExpectation(wifi_ssid); + network_screen->NetworkChanged(network_library); + ASSERT_EQ(network_screen, controller()->current_screen()); + + 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()); + + // Emulate connected WiFi network. + wifi_networks_.clear(); + wifi.connecting = false; + wifi.connected = true; + wifi_networks_.push_back(wifi); + EthernetExpectations(false, false); + WifiExpectations(true, false); + WifiCellularNetworksExpectations(); + WifiSsidExpectation(wifi_ssid); + network_screen->NetworkChanged(network_library); + RunAllPendingEvents(); + controller()->set_observer(NULL); } } // namespace chromeos diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index 58968e6..5afc336 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc @@ -136,7 +136,8 @@ WizardController::WizardController() background_view_(NULL), contents_(NULL), current_screen_(NULL), - is_out_of_box_(false) { + is_out_of_box_(false), + observer_(NULL) { DCHECK(default_controller_ == NULL); default_controller_ = this; } @@ -413,7 +414,7 @@ views::View* WizardController::GetWizardView() { } chromeos::ScreenObserver* WizardController::GetObserver(WizardScreen* screen) { - return this; + return observer_ ? observer_ : this; } namespace browser { diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h index 5104b1a..3c6e43c 100644 --- a/chrome/browser/chromeos/login/wizard_controller.h +++ b/chrome/browser/chromeos/login/wizard_controller.h @@ -77,6 +77,9 @@ class WizardController : public chromeos::ScreenObserver, // Switches from one screen to another. void SetCurrentScreen(WizardScreen* screen); + // Overrides observer for testing. + void set_observer(ScreenObserver* observer) { observer_ = observer; } + static const char kNetworkScreenName[]; static const char kLoginScreenName[]; static const char kAccountScreenName[]; @@ -135,6 +138,9 @@ class WizardController : public chromeos::ScreenObserver, // True if full OOBE flow should be shown. bool is_out_of_box_; + // NULL by default - controller itself is observer. Mock could be assigned. + ScreenObserver* observer_; + // Default WizardController. static WizardController* default_controller_; diff --git a/chrome/browser/chromeos/network_list.cc b/chrome/browser/chromeos/network_list.cc index f304bb5..0d8b0d9 100644 --- a/chrome/browser/chromeos/network_list.cc +++ b/chrome/browser/chromeos/network_list.cc @@ -121,7 +121,7 @@ void NetworkList::NetworkChanged(chromeos::NetworkLibrary* network_lib) { if (network_lib->cellular_name() == it->name) { SetNetworksIndices(index, network_lib->cellular_connected(), - network_lib->cellular_connected()); + network_lib->cellular_connecting()); } } } |