summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authornkostylev@google.com <nkostylev@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-31 10:37:56 +0000
committernkostylev@google.com <nkostylev@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-31 10:37:56 +0000
commitcc226f1b5bfb08121dbfdc8a29fc51258df76976 (patch)
treeab47964c7377c092a091ecf65008060f3975fdaf /chrome
parente231e02b17da6281d4439cf728cf9c2145deae19 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/chromeos/login/network_screen_browsertest.cc173
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.cc5
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.h6
-rw-r--r--chrome/browser/chromeos/network_list.cc2
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());
}
}
}