| Index: chrome/browser/chromeos/cros/network_ui_data.cc
|
| diff --git a/chrome/browser/chromeos/cros/network_ui_data.cc b/chrome/browser/chromeos/cros/network_ui_data.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9fae463bb6e1275ded3f18782cf486723504716f
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/cros/network_ui_data.cc
|
| @@ -0,0 +1,168 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/chromeos/cros/network_ui_data.h"
|
| +
|
| +#include "base/logging.h"
|
| +#include "chrome/browser/chromeos/cros/network_library.h"
|
| +
|
| +namespace chromeos {
|
| +
|
| +// Top-level UI data dictionary keys.
|
| +const char NetworkUIData::kKeyONCSource[] = "onc_source";
|
| +const char NetworkUIData::kKeyProperties[] = "properties";
|
| +
|
| +// Property names for per-property data stored under |kKeyProperties|.
|
| +const char NetworkUIData::kPropertyAutoConnect[] = "auto_connect";
|
| +const char NetworkUIData::kPropertyPreferred[] = "preferred";
|
| +const char NetworkUIData::kPropertyPassphrase[] = "passphrase";
|
| +const char NetworkUIData::kPropertySaveCredentials[] = "save_credentials";
|
| +
|
| +const char NetworkUIData::kPropertyVPNCaCertNss[] = "VPN.ca_cert_nss";
|
| +const char NetworkUIData::kPropertyVPNPskPassphrase[] = "VPN.psk_passphrase";
|
| +const char NetworkUIData::kPropertyVPNClientCertId[] = "VPN.client_cert_id";
|
| +const char NetworkUIData::kPropertyVPNUsername[] = "VPN.username";
|
| +const char NetworkUIData::kPropertyVPNUserPassphrase[] = "VPN.user_passphrase";
|
| +const char NetworkUIData::kPropertyVPNGroupName[] = "VPN.group_name";
|
| +
|
| +const char NetworkUIData::kPropertyEAPMethod[] = "EAP.method";
|
| +const char NetworkUIData::kPropertyEAPPhase2Auth[] = "EAP.phase_2_auth";
|
| +const char NetworkUIData::kPropertyEAPServerCaCertNssNickname[] =
|
| + "EAP.server_ca_cert_nss_nickname";
|
| +const char NetworkUIData::kPropertyEAPClientCertPkcs11Id[] =
|
| + "EAP.client_cert_pkcs11_id";
|
| +const char NetworkUIData::kPropertyEAPUseSystemCAs[] = "EAP.use_system_cas";
|
| +const char NetworkUIData::kPropertyEAPIdentity[] = "EAP.identity";
|
| +const char NetworkUIData::kPropertyEAPAnonymousIdentity[] =
|
| + "EAP.anonymous_identity";
|
| +const char NetworkUIData::kPropertyEAPPassphrase[] = "EAP.passphrase";
|
| +
|
| +const EnumMapper<NetworkUIData::ONCSource>::Pair
|
| + NetworkUIData::kONCSourceTable[] = {
|
| + { "user_import", NetworkUIData::ONC_SOURCE_USER_IMPORT },
|
| + { "device_policy", NetworkUIData::ONC_SOURCE_DEVICE_POLICY },
|
| + { "user_policy", NetworkUIData::ONC_SOURCE_USER_POLICY },
|
| +};
|
| +
|
| +// Property names for the per-property dictionary.
|
| +const char NetworkPropertyUIData::kKeyController[] = "controller";
|
| +const char NetworkPropertyUIData::kKeyDefaultValue[] = "default_value";
|
| +
|
| +const EnumMapper<NetworkPropertyUIData::Controller>::Pair
|
| + NetworkPropertyUIData::kControllerTable[] = {
|
| + { "user", NetworkPropertyUIData::CONTROLLER_USER },
|
| + { "policy", NetworkPropertyUIData::CONTROLLER_POLICY },
|
| +};
|
| +
|
| +NetworkUIData::NetworkUIData()
|
| + : onc_source_(ONC_SOURCE_NONE) {
|
| +}
|
| +
|
| +NetworkUIData::~NetworkUIData() {
|
| +}
|
| +
|
| +void NetworkUIData::SetProperty(const char* property_key,
|
| + const NetworkPropertyUIData& ui_data) {
|
| + properties_.Set(property_key, ui_data.BuildDictionary());
|
| +}
|
| +
|
| +void NetworkUIData::FillDictionary(base::DictionaryValue* dict) const {
|
| + std::string source_string(GetONCSourceMapper().GetKey(onc_source_));
|
| + if (!source_string.empty())
|
| + dict->SetString(kKeyONCSource, source_string);
|
| + dict->Set(kKeyProperties, properties_.DeepCopy());
|
| +}
|
| +
|
| +// static
|
| +NetworkUIData::ONCSource NetworkUIData::GetONCSource(const Network* network) {
|
| + std::string source;
|
| + if (network->ui_data()->GetString(kKeyONCSource, &source))
|
| + return GetONCSourceMapper().Get(source);
|
| + return ONC_SOURCE_NONE;
|
| +}
|
| +
|
| +// static
|
| +bool NetworkUIData::IsManaged(const Network* network) {
|
| + ONCSource source = GetONCSource(network);
|
| + return source == ONC_SOURCE_DEVICE_POLICY || source == ONC_SOURCE_USER_POLICY;
|
| +}
|
| +
|
| +// static
|
| +EnumMapper<NetworkUIData::ONCSource>& NetworkUIData::GetONCSourceMapper() {
|
| + CR_DEFINE_STATIC_LOCAL(EnumMapper<ONCSource>, mapper,
|
| + (kONCSourceTable, arraysize(kONCSourceTable),
|
| + ONC_SOURCE_NONE));
|
| + return mapper;
|
| +}
|
| +
|
| +NetworkPropertyUIData::NetworkPropertyUIData()
|
| + : controller_(CONTROLLER_USER) {
|
| +}
|
| +
|
| +NetworkPropertyUIData::~NetworkPropertyUIData() {
|
| +}
|
| +
|
| +NetworkPropertyUIData::NetworkPropertyUIData(Controller controller,
|
| + base::Value* default_value)
|
| + : controller_(controller),
|
| + default_value_(default_value) {
|
| +}
|
| +
|
| +NetworkPropertyUIData::NetworkPropertyUIData(const Network* network,
|
| + const char* property_key) {
|
| + UpdateFromNetwork(network, property_key);
|
| +}
|
| +
|
| +void NetworkPropertyUIData::UpdateFromNetwork(const Network* network,
|
| + const char* property_key) {
|
| + // If there is no per-property information available, the property inherits
|
| + // the controlled state of the network.
|
| + controller_ =
|
| + NetworkUIData::IsManaged(network) ? CONTROLLER_POLICY : CONTROLLER_USER;
|
| + default_value_.reset();
|
| +
|
| + if (!property_key)
|
| + return;
|
| +
|
| + const base::DictionaryValue* ui_data = network->ui_data();
|
| + if (!ui_data)
|
| + return;
|
| +
|
| + base::DictionaryValue* property_map = NULL;
|
| + if (!ui_data->GetDictionary(NetworkUIData::kKeyProperties, &property_map))
|
| + return;
|
| +
|
| + base::DictionaryValue* property = NULL;
|
| + if (!property_map->GetDictionary(property_key, &property))
|
| + return;
|
| +
|
| + std::string controller;
|
| + if (property->GetString(kKeyController, &controller))
|
| + controller_ = GetControllerMapper().Get(controller);
|
| +
|
| + base::Value* default_value = NULL;
|
| + if (property->Get(kKeyDefaultValue, &default_value) && default_value)
|
| + default_value_.reset(default_value->DeepCopy());
|
| +}
|
| +
|
| +base::DictionaryValue* NetworkPropertyUIData::BuildDictionary() const {
|
| + base::DictionaryValue* dict = new base::DictionaryValue();
|
| + std::string controller_string(GetControllerMapper().GetKey(controller_));
|
| + if (!controller_string.empty())
|
| + dict->SetString(kKeyController, controller_string);
|
| + if (default_value_.get())
|
| + dict->Set(kKeyDefaultValue, default_value_->DeepCopy());
|
| + return dict;
|
| +}
|
| +
|
| +// static
|
| +EnumMapper<NetworkPropertyUIData::Controller>&
|
| + NetworkPropertyUIData::GetControllerMapper() {
|
| + CR_DEFINE_STATIC_LOCAL(EnumMapper<Controller>, mapper,
|
| + (kControllerTable, arraysize(kControllerTable),
|
| + CONTROLLER_USER));
|
| + return mapper;
|
| +}
|
| +
|
| +} // namespace chromeos
|
|
|