Index: chrome/browser/chromeos/arc/arc_settings_service_browsertest.cc |
diff --git a/chrome/browser/chromeos/arc/arc_settings_service_browsertest.cc b/chrome/browser/chromeos/arc/arc_settings_service_browsertest.cc |
index d24a3bf08e254037eb8cd9d62e1be3f7251c4296..1b48302a517b608ca1fea0133f7dc5f4e63bde67 100644 |
--- a/chrome/browser/chromeos/arc/arc_settings_service_browsertest.cc |
+++ b/chrome/browser/chromeos/arc/arc_settings_service_browsertest.cc |
@@ -58,10 +58,121 @@ constexpr char kONCPolicy[] = |
" ]," |
" \"Type\": \"UnencryptedConfiguration\"" |
"}"; |
-constexpr char kONCPacUrl[] = "http://domain.com/x"; |
-constexpr char kDefaultServicePath[] = "stub_ethernet"; |
-constexpr char kWifiServicePath[] = "stub_wifi"; |
+ |
+constexpr char kDeviceONCPolicy[] = |
+ "{" |
+ " \"GlobalNetworkConfiguration\": {" |
+ " \"AllowOnlyPolicyNetworksToAutoconnect\": false," |
+ " \"AllowOnlyPolicyNetworksToConnect\": false" |
+ " }," |
+ " \"NetworkConfigurations\": [ {" |
+ " \"GUID\": \"{wifi1_guid}\"," |
+ " \"Name\": \"wifi1\"," |
+ " \"ProxySettings\": {" |
+ " \"Manual\": {" |
+ " \"FTPProxy\": {" |
+ " \"Host\": \"proxy\"," |
+ " \"Port\": 5000" |
+ " }," |
+ " \"HTTPProxy\": {" |
+ " \"Host\": \"proxy\"," |
+ " \"Port\": 5000" |
+ " }," |
+ " \"SOCKS\": {" |
+ " \"Host\": \"proxy\"," |
+ " \"Port\": 5000" |
+ " }," |
+ " \"SecureHTTPProxy\": {" |
+ " \"Host\": \"proxy\"," |
+ " \"Port\": 5000" |
+ " }" |
+ " }," |
+ " \"Type\": \"Manual\"" |
+ " }," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"AutoConnect\": false," |
+ " \"HiddenSSID\": false," |
+ " \"SSID\": \"wifi1\"," |
+ " \"Security\": \"None\"" |
+ " }" |
+ " } ]" |
+ "}"; |
+ |
+constexpr char kUserONCPolicy[] = |
+ "{" |
+ " \"NetworkConfigurations\": [ {" |
+ " \"GUID\": \"{direct_guid}\"," |
+ " \"Name\": \"EAP-TTLS\"," |
+ " \"ProxySettings\": {" |
+ " \"Type\": \"Direct\"" |
+ " }," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"AutoConnect\": false," |
+ " \"EAP\": {" |
+ " \"Identity\": \"CrOS\"," |
+ " \"Inner\": \"Automatic\"," |
+ " \"Outer\": \"EAP-TTLS\"," |
+ " \"Password\": \"********\"," |
+ " \"Recommended\": [" |
+ " \"AnonymousIdentity\"," |
+ " \"Identity\"," |
+ " \"Password\"" |
+ " ]," |
+ " \"SaveCredentials\": true," |
+ " \"UseSystemCAs\": false" |
+ " }," |
+ " \"HiddenSSID\": false," |
+ " \"SSID\": \"direct_ssid\"," |
+ " \"Security\": \"WPA-EAP\"" |
+ " }" |
+ " }, {" |
+ " \"GUID\": \"{wifi0_guid}\"," |
+ " \"Name\": \"wifi0\"," |
+ " \"ProxySettings\": {" |
+ " \"Manual\": {" |
+ " \"FTPProxy\": {" |
+ " \"Host\": \"proxy-n300\"," |
+ " \"Port\": 3000" |
+ " }," |
+ " \"HTTPProxy\": {" |
+ " \"Host\": \"proxy-n300\"," |
+ " \"Port\": 3000" |
+ " }," |
+ " \"SOCKS\": {" |
+ " \"Host\": \"proxy-n300\"," |
+ " \"Port\": 3000" |
+ " }," |
+ " \"SecureHTTPProxy\": {" |
+ " \"Host\": \"proxy-n300\"," |
+ " \"Port\": 3000" |
+ " }" |
+ " }," |
+ " \"Type\": \"Manual\"" |
+ " }," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"AutoConnect\": false," |
+ " \"HiddenSSID\": false," |
+ " \"SSID\": \"wifi0\"," |
+ " \"Security\": \"None\"" |
+ " }" |
+ " } ]" |
+ "}"; |
+ |
constexpr char kUserProfilePath[] = "user_profile"; |
+constexpr char kDefaultServicePath[] = "stub_ethernet"; |
+ |
+constexpr char kWifi0ServicePath[] = "stub_wifi0"; |
+constexpr char kWifi0Ssid[] = "wifi0"; |
+constexpr char kWifi0Guid[] = "{wifi0_guid}"; |
+ |
+constexpr char kWifi1ServicePath[] = "stub_wifi1"; |
+constexpr char kWifi1Ssid[] = "wifi1"; |
+constexpr char kWifi1Guid[] = "{wifi1_guid}"; |
+ |
+constexpr char kONCPacUrl[] = "http://domain.com/x"; |
// Returns an amount of |broadcasts| matched with |proxy_settings|. |
int CountProxyBroadcasts( |
@@ -129,6 +240,23 @@ class ArcSettingsServiceTest : public InProcessBrowserTest { |
base::StringValue value(shill::kStateIdle); |
service_test->SetServiceProperty(service_path, shill::kStateProperty, |
value); |
+ RunUntilIdle(); |
+ } |
+ |
+ void ConnectWifiNetworkService(const std::string& service_path, |
+ const std::string& guid, |
+ const std::string& ssid) { |
+ chromeos::ShillServiceClient::TestInterface* service_test = |
+ chromeos::DBusThreadManager::Get() |
+ ->GetShillServiceClient() |
+ ->GetTestInterface(); |
+ |
+ service_test->AddService(service_path, guid, ssid, shill::kTypeWifi, |
+ shill::kStateOnline, true /* add_to_visible */); |
+ |
+ service_test->SetServiceProperty(service_path, shill::kProfileProperty, |
+ base::StringValue(kUserProfilePath)); |
+ RunUntilIdle(); |
} |
void SetProxyConfigForNetworkService( |
@@ -166,12 +294,6 @@ class ArcSettingsServiceTest : public InProcessBrowserTest { |
service_test->SetServiceProperty(kDefaultServicePath, |
shill::kProfileProperty, |
base::StringValue(kUserProfilePath)); |
- |
- service_test->AddService(kWifiServicePath, "stub_wifi_guid", "wifi0", |
- shill::kTypeWifi, shill::kStateOnline, |
- true /* add_to_visible */); |
- service_test->SetServiceProperty(kWifiServicePath, shill::kProfileProperty, |
- base::StringValue(kUserProfilePath)); |
} |
policy::MockConfigurationPolicyProvider provider_; |
@@ -300,6 +422,7 @@ IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, DefaultNetworkProxyConfigTest) { |
} |
IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, DefaultNetworkDisconnectedTest) { |
+ ConnectWifiNetworkService(kWifi0ServicePath, kWifi0Guid, kWifi0Ssid); |
fake_intent_helper_instance_->clear_broadcasts(); |
// Set proxy confog for default network. |
std::unique_ptr<base::DictionaryValue> default_proxy_config( |
@@ -316,7 +439,7 @@ IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, DefaultNetworkDisconnectedTest) { |
base::MakeUnique<base::DictionaryValue>()); |
wifi_proxy_config->SetString("mode", ProxyPrefs::kFixedServersProxyModeName); |
wifi_proxy_config->SetString("server", "wifi/proxy:8080"); |
- SetProxyConfigForNetworkService(kWifiServicePath, wifi_proxy_config.get()); |
+ SetProxyConfigForNetworkService(kWifi0ServicePath, wifi_proxy_config.get()); |
RunUntilIdle(); |
// Observe default network proxy config broadcast. |
@@ -333,7 +456,6 @@ IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, DefaultNetworkDisconnectedTest) { |
// Disconnect default network. |
fake_intent_helper_instance_->clear_broadcasts(); |
DisconnectNetworkService(kDefaultServicePath); |
- RunUntilIdle(); |
// Observe WI-FI network proxy config broadcast. |
std::unique_ptr<base::DictionaryValue> expected_wifi_proxy_config( |
@@ -352,12 +474,57 @@ IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, NoNetworkConnectedTest) { |
// Disconnect all networks. |
fake_intent_helper_instance_->clear_broadcasts(); |
DisconnectNetworkService(kDefaultServicePath); |
- DisconnectNetworkService(kWifiServicePath); |
- RunUntilIdle(); |
EXPECT_EQ( |
CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(), nullptr), |
0); |
} |
+IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, TwoONCProxyPolicyTest) { |
+ // Connect to wifi1 with appliead device ONC policy. |
+ ConnectWifiNetworkService(kWifi1ServicePath, kWifi1Guid, kWifi1Ssid); |
+ |
+ // Disconnect default network. |
+ DisconnectNetworkService(kDefaultServicePath); |
+ |
+ fake_intent_helper_instance_->clear_broadcasts(); |
+ |
+ policy::PolicyMap policy; |
+ policy.Set(policy::key::kOpenNetworkConfiguration, |
+ policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
+ policy::POLICY_SOURCE_CLOUD, |
+ base::MakeUnique<base::StringValue>(kUserONCPolicy), nullptr); |
+ policy.Set(policy::key::kDeviceOpenNetworkConfiguration, |
+ policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_MACHINE, |
+ policy::POLICY_SOURCE_CLOUD, |
+ base::MakeUnique<base::StringValue>(kDeviceONCPolicy), nullptr); |
+ UpdatePolicy(policy); |
+ |
+ std::unique_ptr<base::DictionaryValue> expected_proxy_config( |
+ base::MakeUnique<base::DictionaryValue>()); |
+ expected_proxy_config->SetString("mode", |
+ ProxyPrefs::kFixedServersProxyModeName); |
+ expected_proxy_config->SetString("host", "proxy"); |
+ expected_proxy_config->SetInteger("port", 5000); |
+ |
+ EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(), |
+ expected_proxy_config.get()), |
+ 1); |
+ |
+ DisconnectNetworkService(kWifi1ServicePath); |
+ fake_intent_helper_instance_->clear_broadcasts(); |
+ |
+ // Connect to wifi0 with appliead user ONC policy. |
+ ConnectWifiNetworkService(kWifi0ServicePath, kWifi0Guid, kWifi0Ssid); |
+ |
+ expected_proxy_config->SetString("mode", |
+ ProxyPrefs::kFixedServersProxyModeName); |
+ expected_proxy_config->SetString("host", "proxy-n300"); |
+ expected_proxy_config->SetInteger("port", 3000); |
+ |
+ EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(), |
+ expected_proxy_config.get()), |
+ 1); |
+} |
+ |
} // namespace arc |