Index: chrome/browser/chromeos/cros/network_library.cc |
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc |
index 14abf48473bfd2cfdabcefc90800073a5cca682d..e770311bf6eccbde8b371d0630786daaed753079 100644 |
--- a/chrome/browser/chromeos/cros/network_library.cc |
+++ b/chrome/browser/chromeos/cros/network_library.cc |
@@ -28,11 +28,11 @@ |
#include "base/utf_string_conversion_utils.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
-#include "chrome/browser/chromeos/cros_settings.h" |
#include "chrome/browser/chromeos/cros/cros_library.h" |
#include "chrome/browser/chromeos/cros/native_network_constants.h" |
#include "chrome/browser/chromeos/cros/native_network_parser.h" |
#include "chrome/browser/chromeos/cros/onc_network_parser.h" |
+#include "chrome/browser/chromeos/cros_settings.h" |
#include "chrome/browser/chromeos/network_login_observer.h" |
#include "chrome/common/time_format.h" |
#include "content/public/browser/browser_thread.h" |
@@ -342,6 +342,55 @@ void DumpDictionaryValue(const char* desc, const base::DictionaryValue* dict) { |
// UI data keys. |
const char kUIDataKeyONCSource[] = "onc_source"; |
+const char kUIDataKeyProperties[] = "properties"; |
+const char kUIDataKeyPropertiesController[] = "controller"; |
+const char kUIDataKeyPropertiesControllerPolicy[] = "policy"; |
+const char kUIDataKeyPropertiesControllerUser[] = "user"; |
+const char kUIDataKeyPropertiesDefaultValue[] = "default_value"; |
+ |
+const char kUIDataPropertyAutoConnect[] = "auto_connect"; |
+const char kUIDataPropertyPreferred[] = "preferred"; |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// NetworkPropertyUIData |
+ |
+NetworkPropertyUIData::NetworkPropertyUIData() |
+ : controller_(CONTROLLER_USER) {} |
+ |
+void NetworkPropertyUIData::UpdateFromNetwork(const Network* network, |
+ const char* property_key) { |
+ // Initialize to defaults. |
stevenjb
2011/11/29 07:23:19
This comment confused me, since setting controller
Mattias Nissler (ping if slow)
2011/11/29 14:48:50
You are right. I clarified the comment.
|
+ controller_ = |
+ network->IsManagedByPolicy() ? CONTROLLER_POLICY : CONTROLLER_USER; |
+ default_value_.reset(); |
+ |
+ if (!property_key) |
+ return; |
+ |
+ const DictionaryValue* ui_data = network->ui_data(); |
+ if (!ui_data) |
+ return; |
+ |
+ base::DictionaryValue* property_map = NULL; |
+ if (!ui_data->GetDictionary(kUIDataKeyProperties, &property_map)) |
+ return; |
+ |
+ base::DictionaryValue* property = NULL; |
+ if (!property_map->GetDictionary(property_key, &property)) |
+ return; |
+ |
+ std::string controller; |
+ if (property->GetString(kUIDataKeyPropertiesController, &controller)) { |
+ if (controller == kUIDataKeyPropertiesControllerPolicy) |
+ controller_ = CONTROLLER_POLICY; |
+ else if (controller == kUIDataKeyPropertiesControllerUser) |
+ controller_ = CONTROLLER_USER; |
+ } |
+ |
+ base::Value* default_value = NULL; |
+ property->Get(kUIDataKeyPropertiesDefaultValue, &default_value); |
+ default_value_.reset(default_value); |
+} |
//////////////////////////////////////////////////////////////////////////////// |
// FoundCellularNetwork |
@@ -464,6 +513,29 @@ bool Network::RequiresUserProfile() const { |
void Network::CopyCredentialsFromRemembered(Network* remembered) { |
} |
+bool Network::IsManagedByPolicy() const { |
+ int source_value = 0; |
+ if (ui_data()->GetInteger(chromeos::kUIDataKeyONCSource, &source_value)) { |
+ chromeos::ONCSource source = static_cast<chromeos::ONCSource>(source_value); |
+ return source == chromeos::ONC_SOURCE_DEVICE_POLICY || |
+ source == chromeos::ONC_SOURCE_USER_POLICY; |
+ } |
+ |
+ return false; |
+} |
+ |
+void Network::GetUIDataForPreferred(NetworkPropertyUIData* ui_data) const { |
+ ui_data->UpdateFromNetwork(this, kUIDataPropertyPreferred); |
+} |
+ |
+void Network::GetUIDataForAutoConnect(NetworkPropertyUIData* ui_data) const { |
+ ui_data->UpdateFromNetwork(this, kUIDataPropertyAutoConnect); |
+} |
+ |
+void Network::GetUIDataForIPConfig(NetworkPropertyUIData* ui_data) const { |
+ ui_data->UpdateFromNetwork(this, NULL); |
+} |
+ |
void Network::SetValueProperty(const char* prop, Value* value) { |
DCHECK(prop); |
DCHECK(value); |
@@ -4879,6 +4951,26 @@ void NetworkLibraryImplStub::Init() { |
cellular->imsi_ = "123456789012345"; |
device_map_["cellular"] = cellular; |
+ CellularApn apn; |
+ apn.apn = "apn"; |
+ apn.network_id = "network_id"; |
+ apn.username = "username"; |
+ apn.password = "password"; |
+ apn.name = "name"; |
+ apn.localized_name = "localized_name"; |
+ apn.language = "language"; |
+ |
+ CellularApnList apn_list; |
+ apn_list.push_back(apn); |
+ |
+ NetworkDevice* cellular_gsm = new NetworkDevice("cellular_gsm"); |
+ cellular_gsm->type_ = TYPE_CELLULAR; |
+ cellular_gsm->set_technology_family(TECHNOLOGY_FAMILY_GSM); |
+ cellular_gsm->imsi_ = "123456789012345"; |
+ cellular_gsm->set_sim_pin_required(SIM_PIN_REQUIRED); |
+ cellular_gsm->set_provider_apn_list(apn_list); |
+ device_map_["cellular_gsm"] = cellular_gsm; |
+ |
// Profiles |
AddProfile("default", PROFILE_SHARED); |
AddProfile("user", PROFILE_USER); |
@@ -4938,8 +5030,13 @@ void NetworkLibraryImplStub::Init() { |
wifi6->set_strength(20); |
AddStubNetwork(wifi6, PROFILE_NONE); |
+ WifiNetwork* wifi7 = new WifiNetwork("wifi7"); |
+ wifi7->set_name("Fake Wifi7 (policy-managed)"); |
+ wifi7->ui_data()->SetInteger("onc_source", ONC_SOURCE_DEVICE_POLICY); |
+ AddStubNetwork(wifi7, PROFILE_USER); |
+ |
CellularNetwork* cellular1 = new CellularNetwork("cellular1"); |
- cellular1->set_name("Fake Cellular1"); |
+ cellular1->set_name("Fake Cellular 1"); |
cellular1->set_strength(100); |
cellular1->set_connected(true); |
cellular1->set_activation_state(ACTIVATION_STATE_ACTIVATED); |
@@ -4949,13 +5046,29 @@ void NetworkLibraryImplStub::Init() { |
AddStubNetwork(cellular1, PROFILE_NONE); |
CellularNetwork* cellular2 = new CellularNetwork("cellular2"); |
- cellular2->set_name("Fake Cellular2"); |
+ cellular2->set_name("Fake Cellular 2"); |
cellular2->set_strength(50); |
cellular2->set_activation_state(ACTIVATION_STATE_NOT_ACTIVATED); |
cellular2->set_network_technology(NETWORK_TECHNOLOGY_UMTS); |
cellular2->set_roaming_state(ROAMING_STATE_ROAMING); |
AddStubNetwork(cellular2, PROFILE_NONE); |
+ CellularNetwork* cellular3 = new CellularNetwork("cellular3"); |
+ cellular3->set_name("Fake Cellular 3 (policy-managed)"); |
+ cellular3->set_device_path(cellular->device_path()); |
+ cellular3->set_activation_state(ACTIVATION_STATE_ACTIVATED); |
+ cellular3->set_network_technology(NETWORK_TECHNOLOGY_EVDO); |
+ cellular3->ui_data()->SetInteger("onc_source", ONC_SOURCE_USER_POLICY); |
+ AddStubNetwork(cellular3, PROFILE_NONE); |
+ |
+ CellularNetwork* cellular4 = new CellularNetwork("cellular4"); |
+ cellular4->set_name("Fake Cellular 4 (policy-managed)"); |
+ cellular4->set_device_path(cellular_gsm->device_path()); |
+ cellular4->set_activation_state(ACTIVATION_STATE_ACTIVATED); |
+ cellular4->set_network_technology(NETWORK_TECHNOLOGY_GSM); |
+ cellular4->ui_data()->SetInteger("onc_source", ONC_SOURCE_USER_POLICY); |
+ AddStubNetwork(cellular4, PROFILE_NONE); |
+ |
CellularDataPlan* base_plan = new CellularDataPlan(); |
base_plan->plan_name = "Base plan"; |
base_plan->plan_type = CELLULAR_DATA_PLAN_METERED_BASE; |
@@ -4993,6 +5106,13 @@ void NetworkLibraryImplStub::Init() { |
vpn3->set_provider_type(PROVIDER_TYPE_OPEN_VPN); |
AddStubNetwork(vpn3, PROFILE_USER); |
+ VirtualNetwork* vpn4 = new VirtualNetwork("vpn4"); |
+ vpn4->set_name("Fake VPN4 (policy-managed)"); |
+ vpn4->set_server_hostname("vpn4server.fake.com"); |
+ vpn4->set_provider_type(PROVIDER_TYPE_OPEN_VPN); |
+ vpn4->ui_data()->SetInteger("onc_source", ONC_SOURCE_DEVICE_POLICY); |
+ AddStubNetwork(vpn4, PROFILE_USER); |
stevenjb
2011/11/29 07:23:19
Make sure that these changes don't break the unit
Mattias Nissler (ping if slow)
2011/11/29 14:48:50
Done.
|
+ |
wifi_scanning_ = false; |
offline_mode_ = false; |