Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(705)

Unified Diff: chrome/browser/chromeos/cros/network_library.cc

Issue 8726007: Disable UI in chrome://settings/internet and details popup for policy-managed networks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Only allocate space to policy indicators if at least one is visible. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698