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

Side by Side Diff: chromeos/network/managed_network_configuration_handler.cc

Issue 14566009: Add NetworkConnectionHandler class (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Revert Associating Stub change for test Created 7 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/network/managed_network_configuration_handler.h" 5 #include "chromeos/network/managed_network_configuration_handler.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 const network_handler::ErrorCallback& error_callback) { 80 const network_handler::ErrorCallback& error_callback) {
81 network_event_log::AddEntry(kLogModule, error_name, error_message); 81 network_event_log::AddEntry(kLogModule, error_name, error_message);
82 error_callback.Run( 82 error_callback.Run(
83 error_name, 83 error_name,
84 make_scoped_ptr( 84 make_scoped_ptr(
85 network_handler::CreateErrorData(service_path, 85 network_handler::CreateErrorData(service_path,
86 error_name, 86 error_name,
87 error_message))); 87 error_message)));
88 } 88 }
89 89
90 // Returns the NetworkUIData parsed from the UIData property of
91 // |shill_dictionary|. If parsing fails or the field doesn't exist, returns
92 // NULL.
93 scoped_ptr<NetworkUIData> GetUIData(
94 const base::DictionaryValue& shill_dictionary) {
95 std::string ui_data_blob;
96 if (shill_dictionary.GetStringWithoutPathExpansion(
97 flimflam::kUIDataProperty,
98 &ui_data_blob) &&
99 !ui_data_blob.empty()) {
100 scoped_ptr<base::DictionaryValue> ui_data_dict =
101 onc::ReadDictionaryFromJson(ui_data_blob);
102 if (ui_data_dict)
103 return make_scoped_ptr(new NetworkUIData(*ui_data_dict));
104 else
105 LOG(ERROR) << "UIData is not a valid JSON dictionary.";
106 }
107 return scoped_ptr<NetworkUIData>();
108 }
109
110 // Sets the UIData property in |shill_dictionary| to the serialization of 90 // Sets the UIData property in |shill_dictionary| to the serialization of
111 // |ui_data|. 91 // |ui_data|.
112 void SetUIData(const NetworkUIData& ui_data, 92 void SetUIData(const NetworkUIData& ui_data,
113 base::DictionaryValue* shill_dictionary) { 93 base::DictionaryValue* shill_dictionary) {
114 base::DictionaryValue ui_data_dict; 94 base::DictionaryValue ui_data_dict;
115 ui_data.FillDictionary(&ui_data_dict); 95 ui_data.FillDictionary(&ui_data_dict);
116 std::string ui_data_blob; 96 std::string ui_data_blob;
117 base::JSONWriter::Write(&ui_data_dict, &ui_data_blob); 97 base::JSONWriter::Write(&ui_data_dict, &ui_data_blob);
118 shill_dictionary->SetStringWithoutPathExpansion(flimflam::kUIDataProperty, 98 shill_dictionary->SetStringWithoutPathExpansion(flimflam::kUIDataProperty,
119 ui_data_blob); 99 ui_data_blob);
120 } 100 }
121 101
122 // A dummy callback to ignore the result of Shill calls. 102 // A dummy callback to ignore the result of Shill calls.
123 void IgnoreString(const std::string& str) { 103 void IgnoreString(const std::string& str) {
124 } 104 }
125 105
126 void LogErrorWithDict(const tracked_objects::Location& from_where, 106 void LogErrorWithDict(const tracked_objects::Location& from_where,
127 const std::string& error_name, 107 const std::string& error_name,
128 const scoped_ptr<base::DictionaryValue> error_data) { 108 scoped_ptr<base::DictionaryValue> error_data) {
129 LOG(ERROR) << from_where.ToString() << ": " << error_name; 109 LOG(ERROR) << from_where.ToString() << ": " << error_name;
130 } 110 }
131 111
132 void LogErrorMessage(const tracked_objects::Location& from_where, 112 void LogErrorMessage(const tracked_objects::Location& from_where,
133 const std::string& error_name, 113 const std::string& error_name,
134 const std::string& error_message) { 114 const std::string& error_message) {
135 LOG(ERROR) << from_where.ToString() << ": " << error_message; 115 LOG(ERROR) << from_where.ToString() << ": " << error_message;
136 } 116 }
137 117
138 // Removes all kFakeCredential values from sensitive fields (determined by 118 // Removes all kFakeCredential values from sensitive fields (determined by
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 201
222 scoped_ptr<base::DictionaryValue> shill_dictionary( 202 scoped_ptr<base::DictionaryValue> shill_dictionary(
223 onc::TranslateONCObjectToShill(&onc::kNetworkConfigurationSignature, 203 onc::TranslateONCObjectToShill(&onc::kNetworkConfigurationSignature,
224 *effective)); 204 *effective));
225 205
226 shill_dictionary->SetStringWithoutPathExpansion(flimflam::kProfileProperty, 206 shill_dictionary->SetStringWithoutPathExpansion(flimflam::kProfileProperty,
227 profile.path); 207 profile.path);
228 208
229 scoped_ptr<NetworkUIData> ui_data; 209 scoped_ptr<NetworkUIData> ui_data;
230 if (policy) 210 if (policy)
231 ui_data = CreateUIDataFromONC(onc_source, *policy); 211 ui_data = NetworkUIData::CreateFromONC(onc_source, *policy);
232 else 212 else
233 ui_data.reset(new NetworkUIData()); 213 ui_data.reset(new NetworkUIData());
234 214
235 if (settings) { 215 if (settings) {
236 // Shill doesn't know that sensitive data is contained in the UIData 216 // Shill doesn't know that sensitive data is contained in the UIData
237 // property and might write it into logs or other insecure places. Thus, we 217 // property and might write it into logs or other insecure places. Thus, we
238 // have to remove or mask credentials. 218 // have to remove or mask credentials.
239 // 219 //
240 // Shill's GetProperties doesn't return credentials. Masking credentials 220 // Shill's GetProperties doesn't return credentials. Masking credentials
241 // instead of just removing them, allows remembering if a credential is set 221 // instead of just removing them, allows remembering if a credential is set
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 delete g_configuration_handler_instance; 318 delete g_configuration_handler_instance;
339 g_configuration_handler_instance = NULL; 319 g_configuration_handler_instance = NULL;
340 } 320 }
341 321
342 // static 322 // static
343 ManagedNetworkConfigurationHandler* ManagedNetworkConfigurationHandler::Get() { 323 ManagedNetworkConfigurationHandler* ManagedNetworkConfigurationHandler::Get() {
344 CHECK(g_configuration_handler_instance); 324 CHECK(g_configuration_handler_instance);
345 return g_configuration_handler_instance; 325 return g_configuration_handler_instance;
346 } 326 }
347 327
328 // static
329 scoped_ptr<NetworkUIData> ManagedNetworkConfigurationHandler::GetUIData(
330 const base::DictionaryValue& shill_dictionary) {
331 std::string ui_data_blob;
332 if (shill_dictionary.GetStringWithoutPathExpansion(
333 flimflam::kUIDataProperty,
334 &ui_data_blob) &&
335 !ui_data_blob.empty()) {
336 scoped_ptr<base::DictionaryValue> ui_data_dict =
337 onc::ReadDictionaryFromJson(ui_data_blob);
338 if (ui_data_dict)
339 return make_scoped_ptr(new NetworkUIData(*ui_data_dict));
340 else
341 LOG(ERROR) << "UIData is not a valid JSON dictionary.";
342 }
343 VLOG(2) << "JSON dictionary has no UIData blob: " << shill_dictionary;
344 return scoped_ptr<NetworkUIData>();
345 }
346
348 void ManagedNetworkConfigurationHandler::GetManagedProperties( 347 void ManagedNetworkConfigurationHandler::GetManagedProperties(
349 const std::string& userhash, 348 const std::string& userhash,
350 const std::string& service_path, 349 const std::string& service_path,
351 const network_handler::DictionaryResultCallback& callback, 350 const network_handler::DictionaryResultCallback& callback,
352 const network_handler::ErrorCallback& error_callback) { 351 const network_handler::ErrorCallback& error_callback) {
353 if (!GetPoliciesForUser(userhash) || !GetPoliciesForUser(std::string())) { 352 if (!GetPoliciesForUser(userhash) || !GetPoliciesForUser(std::string())) {
354 RunErrorCallback(service_path, 353 RunErrorCallback(service_path,
355 kPoliciesNotInitialized, 354 kPoliciesNotInitialized,
356 kPoliciesNotInitializedMessage, 355 kPoliciesNotInitializedMessage,
357 error_callback); 356 error_callback);
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 532
534 scoped_ptr<base::DictionaryValue> shill_dictionary( 533 scoped_ptr<base::DictionaryValue> shill_dictionary(
535 CreateShillConfiguration(*profile, guid, policy, &user_settings)); 534 CreateShillConfiguration(*profile, guid, policy, &user_settings));
536 535
537 NetworkConfigurationHandler::Get()->SetProperties(service_path, 536 NetworkConfigurationHandler::Get()->SetProperties(service_path,
538 *shill_dictionary, 537 *shill_dictionary,
539 callback, 538 callback,
540 error_callback); 539 error_callback);
541 } 540 }
542 541
543 void ManagedNetworkConfigurationHandler::Connect(
544 const std::string& service_path,
545 const base::Closure& callback,
546 const network_handler::ErrorCallback& error_callback) const {
547 NetworkConfigurationHandler::Get()->Connect(service_path,
548 callback,
549 error_callback);
550 }
551
552 void ManagedNetworkConfigurationHandler::Disconnect(
553 const std::string& service_path,
554 const base::Closure& callback,
555 const network_handler::ErrorCallback& error_callback) const {
556 NetworkConfigurationHandler::Get()->Disconnect(service_path,
557 callback,
558 error_callback);
559 }
560
561 void ManagedNetworkConfigurationHandler::CreateConfiguration( 542 void ManagedNetworkConfigurationHandler::CreateConfiguration(
562 const std::string& userhash, 543 const std::string& userhash,
563 const base::DictionaryValue& properties, 544 const base::DictionaryValue& properties,
564 const network_handler::StringResultCallback& callback, 545 const network_handler::StringResultCallback& callback,
565 const network_handler::ErrorCallback& error_callback) const { 546 const network_handler::ErrorCallback& error_callback) const {
566 const GuidToPolicyMap* policies = GetPoliciesForUser(userhash); 547 const GuidToPolicyMap* policies = GetPoliciesForUser(userhash);
567 if (!policies) { 548 if (!policies) {
568 RunErrorCallback("", 549 RunErrorCallback("",
569 kPoliciesNotInitialized, 550 kPoliciesNotInitialized,
570 kPoliciesNotInitializedMessage, 551 kPoliciesNotInitializedMessage,
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 931
951 ManagedNetworkConfigurationHandler::~ManagedNetworkConfigurationHandler() { 932 ManagedNetworkConfigurationHandler::~ManagedNetworkConfigurationHandler() {
952 profile_handler_->RemoveObserver(this); 933 profile_handler_->RemoveObserver(this);
953 for (UserToPoliciesMap::iterator it = policies_by_user_.begin(); 934 for (UserToPoliciesMap::iterator it = policies_by_user_.begin();
954 it != policies_by_user_.end(); ++it) { 935 it != policies_by_user_.end(); ++it) {
955 STLDeleteValues(&it->second); 936 STLDeleteValues(&it->second);
956 } 937 }
957 } 938 }
958 939
959 } // namespace chromeos 940 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/network/managed_network_configuration_handler.h ('k') | chromeos/network/network_configuration_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698