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

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

Issue 8728030: Infrastructure for accessing and manipulating network UI data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make clang happy. 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_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
« no previous file with comments | « chrome/browser/chromeos/cros/network_ui_data.h ('k') | chrome/browser/chromeos/cros/network_ui_data_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698