summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-01 21:02:09 +0000
committerstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-01 21:02:09 +0000
commit042c829ef76187dfdcd09a19b531fa2cbfa2f961 (patch)
treea67c54fc055237d81f28ec7984572cba33823a24
parent1d68d35c7c4cc22a16d4fb790161b0d65a820890 (diff)
downloadchromium_src-042c829ef76187dfdcd09a19b531fa2cbfa2f961.zip
chromium_src-042c829ef76187dfdcd09a19b531fa2cbfa2f961.tar.gz
chromium_src-042c829ef76187dfdcd09a19b531fa2cbfa2f961.tar.bz2
Merge 91149 - Allow non TLS 802.1x networks to be connectable
BUG=chromium-os:16284 TEST=See issue Review URL: http://codereview.chromium.org/7273057 TBR=stevenjb@google.com Review URL: http://codereview.chromium.org/7302008 git-svn-id: svn://svn.chromium.org/chrome/branches/782/src@91362 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/cros/mock_network_library.h3
-rw-r--r--chrome/browser/chromeos/cros/network_library.cc20
-rw-r--r--chrome/browser/chromeos/cros/network_library.h8
-rw-r--r--chrome/browser/chromeos/status/network_menu.cc8
-rw-r--r--chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc7
5 files changed, 32 insertions, 14 deletions
diff --git a/chrome/browser/chromeos/cros/mock_network_library.h b/chrome/browser/chromeos/cros/mock_network_library.h
index 922e2c5..579ac11 100644
--- a/chrome/browser/chromeos/cros/mock_network_library.h
+++ b/chrome/browser/chromeos/cros/mock_network_library.h
@@ -92,8 +92,9 @@ class MockNetworkLibrary : public NetworkLibrary {
MOCK_METHOD1(SetCellularDataRoamingAllowed, void(bool));
MOCK_METHOD0(RequestNetworkScan, void(void));
- MOCK_METHOD0(HasMultipleProfiles, bool(void));
+ MOCK_CONST_METHOD1(HasProfileType, bool(NetworkProfileType));
MOCK_METHOD1(GetWifiAccessPoints, bool(WifiAccessPointVector*));
+ MOCK_CONST_METHOD1(CanConnectToNetwork, bool(const Network*));
MOCK_METHOD1(ConnectToWifiNetwork, void(WifiNetwork*));
MOCK_METHOD1(ConnectToWifiNetwork, void(const std::string&));
MOCK_METHOD3(ConnectToWifiNetwork, void(const std::string&,
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index 65e84fd..4952b04 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -2871,8 +2871,13 @@ class NetworkLibraryImpl : public NetworkLibrary {
}
}
- virtual bool HasMultipleProfiles() {
- return profile_list_.size() > 1;
+ virtual bool HasProfileType(NetworkProfileType type) const {
+ for (NetworkProfileList::const_iterator iter = profile_list_.begin();
+ iter != profile_list_.end(); ++iter) {
+ if ((*iter).type == type)
+ return true;
+ }
+ return false;
}
virtual bool GetWifiAccessPoints(WifiAccessPointVector* result) {
@@ -2977,6 +2982,12 @@ class NetworkLibraryImpl : public NetworkLibrary {
NetworkConnectCallback, this);
}
+ virtual bool CanConnectToNetwork(const Network* network) const {
+ if (!HasProfileType(PROFILE_USER) && network->RequiresUserProfile())
+ return false;
+ return true;
+ }
+
virtual void ConnectToWifiNetwork(WifiNetwork* wifi) {
// This will happen if a network resets, gets out of range or is forgotten.
if (wifi->user_passphrase_ != wifi->passphrase_ ||
@@ -5110,11 +5121,14 @@ class NetworkLibraryStubImpl : public NetworkLibrary {
virtual void SetCellularDataRoamingAllowed(bool new_value) {}
virtual void RequestNetworkScan() {}
- virtual bool HasMultipleProfiles() { return false; }
+ virtual bool HasProfileType(NetworkProfileType type) const { return false; }
virtual bool GetWifiAccessPoints(WifiAccessPointVector* result) {
return false;
}
+ virtual bool CanConnectToNetwork(const Network* network) const {
+ return false;
+ }
virtual void ConnectToWifiNetwork(WifiNetwork* network) {}
virtual void ConnectToWifiNetwork(const std::string& service_path) {}
virtual void ConnectToWifiNetwork(const std::string& ssid,
diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h
index 3efd5db..39c6acd 100644
--- a/chrome/browser/chromeos/cros/network_library.h
+++ b/chrome/browser/chromeos/cros/network_library.h
@@ -1097,8 +1097,8 @@ class NetworkLibrary {
// Request a scan for new wifi networks.
virtual void RequestNetworkScan() = 0;
- // Return true if more than one Profile exists.
- virtual bool HasMultipleProfiles() = 0;
+ // Return true if a profile matching |type| is loaded.
+ virtual bool HasProfileType(NetworkProfileType type) const = 0;
// Reads out the results of the last wifi scan. These results are not
// pre-cached in the library, so the call may block whilst the results are
@@ -1110,6 +1110,10 @@ class NetworkLibrary {
// TODO(joth): Add GetCellTowers to retrieve a CellTowerVector.
+ // Returns false if there is no way to connect to this network, even with
+ // user input (e.g. it requires a user profile but none is available).
+ virtual bool CanConnectToNetwork(const Network* network) const = 0;
+
// Connect to the specified wireless network.
virtual void ConnectToWifiNetwork(WifiNetwork* network) = 0;
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc
index 5f66e53..192ee57 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -623,9 +623,9 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode,
const SkBitmap* badge = wifi_networks[i]->encrypted() ?
rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : NULL;
int flag = FLAG_WIFI;
- // If a network is not connectable from login/oobe, we disable it.
- // We do not allow configuring a network (e.g. 802.1x) from login/oobe.
- if (!owner_->IsBrowserMode() && !wifi_networks[i]->connectable())
+ // If a network is not connectable (e.g. it requires certificates and
+ // the user is not logged in), we disable it.
+ if (!cros->CanConnectToNetwork(wifi_networks[i]))
flag |= FLAG_DISABLED;
if (active_wifi
&& wifi_networks[i]->service_path() == active_wifi->service_path())
@@ -979,7 +979,7 @@ void VPNMenuModel::InitMenuItems(bool is_browser_mode,
}
int flag = FLAG_VPN;
- if (!vpn->connectable())
+ if (!cros->CanConnectToNetwork(vpn))
flag |= FLAG_DISABLED;
if (active_vpn && vpn->service_path() == active_vpn->service_path())
flag |= FLAG_ASSOCIATED;
diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
index 2f8a293..7a7c8bd 100644
--- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
+++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
@@ -599,7 +599,7 @@ void InternetOptionsHandler::SetSharedCallback(const ListValue* args) {
if (!network)
return;
- if (cros_->HasMultipleProfiles()) {
+ if (cros_->HasProfileType(chromeos::PROFILE_USER)) {
bool shared = shared_str == "true";
if (network->profile_type() == chromeos::PROFILE_SHARED && !shared)
cros_->SetNetworkProfile(service_path, chromeos::PROFILE_USER);
@@ -721,7 +721,8 @@ void InternetOptionsHandler::PopulateWifiDetails(
bool shared = wifi->profile_type() == chromeos::PROFILE_SHARED;
dictionary->SetBoolean("shared", shared);
bool shareable =
- cros_->HasMultipleProfiles() && !wifi->RequiresUserProfile();
+ cros_->HasProfileType(chromeos::PROFILE_USER) &&
+ !wifi->RequiresUserProfile();
dictionary->SetBoolean("shareable", shareable);
}
@@ -1156,7 +1157,6 @@ ListValue* InternetOptionsHandler::GetRememberedList() {
// Set in_active_profile.
bool shared =
- cros_->HasMultipleProfiles() &&
remembered->profile_type() == chromeos::PROFILE_SHARED;
list->Append(GetNetwork(
remembered->service_path(),
@@ -1181,7 +1181,6 @@ ListValue* InternetOptionsHandler::GetRememberedList() {
// Set in_active_profile.
bool shared =
- cros_->HasMultipleProfiles() &&
remembered->profile_type() == chromeos::PROFILE_SHARED;
list->Append(GetNetwork(
remembered->service_path(),