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

Side by Side Diff: chromeos/dbus/shill_manager_client_stub.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
« no previous file with comments | « chromeos/dbus/shill_manager_client_stub.h ('k') | chromeos/dbus/shill_service_client_stub.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/dbus/shill_manager_client_stub.h" 5 #include "chromeos/dbus/shill_manager_client_stub.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/chromeos/chromeos_version.h" 8 #include "base/chromeos/chromeos_version.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 21 matching lines...) Expand all
32 explicit ValueEquals(const Value* first) : first_(first) {} 32 explicit ValueEquals(const Value* first) : first_(first) {}
33 bool operator()(const Value* second) const { 33 bool operator()(const Value* second) const {
34 return first_->Equals(second); 34 return first_->Equals(second);
35 } 35 }
36 const Value* first_; 36 const Value* first_;
37 }; 37 };
38 38
39 } // namespace 39 } // namespace
40 40
41 ShillManagerClientStub::ShillManagerClientStub() 41 ShillManagerClientStub::ShillManagerClientStub()
42 : weak_ptr_factory_(this) { 42 : weak_ptr_factory_(this) {
43 SetDefaultProperties(); 43 SetDefaultProperties();
44 } 44 }
45 45
46 ShillManagerClientStub::~ShillManagerClientStub() {} 46 ShillManagerClientStub::~ShillManagerClientStub() {}
47 47
48 // ShillManagerClient overrides. 48 // ShillManagerClient overrides.
49 49
50 void ShillManagerClientStub::AddPropertyChangedObserver( 50 void ShillManagerClientStub::AddPropertyChangedObserver(
51 ShillPropertyChangedObserver* observer) { 51 ShillPropertyChangedObserver* observer) {
52 observer_list_.AddObserver(observer); 52 observer_list_.AddObserver(observer);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 base::TimeDelta::FromSeconds(kDisableTechnologyDelaySeconds)); 173 base::TimeDelta::FromSeconds(kDisableTechnologyDelaySeconds));
174 } else { 174 } else {
175 SetTechnologyEnabled(type, callback, false); 175 SetTechnologyEnabled(type, callback, false);
176 } 176 }
177 } 177 }
178 178
179 void ShillManagerClientStub::ConfigureService( 179 void ShillManagerClientStub::ConfigureService(
180 const base::DictionaryValue& properties, 180 const base::DictionaryValue& properties,
181 const ObjectPathCallback& callback, 181 const ObjectPathCallback& callback,
182 const ErrorCallback& error_callback) { 182 const ErrorCallback& error_callback) {
183 if (callback.is_null())
184 return;
185
186 ShillServiceClient::TestInterface* service_client = 183 ShillServiceClient::TestInterface* service_client =
187 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); 184 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
188 185
189 std::string guid; 186 std::string guid;
190 std::string type; 187 std::string type;
191 if (!properties.GetString(flimflam::kGuidProperty, &guid) || 188 if (!properties.GetString(flimflam::kGuidProperty, &guid) ||
192 !properties.GetString(flimflam::kTypeProperty, &type)) { 189 !properties.GetString(flimflam::kTypeProperty, &type)) {
190 LOG(ERROR) << "ConfigureService requies GUID and Type to be defined";
193 // If the properties aren't filled out completely, then just return an empty 191 // If the properties aren't filled out completely, then just return an empty
194 // object path. 192 // object path.
195 MessageLoop::current()->PostTask( 193 if (!callback.is_null()) {
196 FROM_HERE, base::Bind(callback, dbus::ObjectPath())); 194 MessageLoop::current()->PostTask(
195 FROM_HERE, base::Bind(callback, dbus::ObjectPath()));
196 }
197 return; 197 return;
198 } 198 }
199 199
200 // For the purposes of this stub, we're going to assume that the GUID property 200 // For the purposes of this stub, we're going to assume that the GUID property
201 // is set to the service path because we don't want to re-implement Shill's 201 // is set to the service path because we don't want to re-implement Shill's
202 // property matching magic here. 202 // property matching magic here.
203 std::string service_path = guid; 203 std::string service_path = guid;
204 204
205 std::string ipconfig_path; 205 std::string ipconfig_path;
206 properties.GetString(shill::kIPConfigProperty, &ipconfig_path); 206 properties.GetString(shill::kIPConfigProperty, &ipconfig_path);
(...skipping 17 matching lines...) Expand all
224 // Now set all the properties. 224 // Now set all the properties.
225 for (base::DictionaryValue::Iterator iter(*merged_properties); 225 for (base::DictionaryValue::Iterator iter(*merged_properties);
226 !iter.IsAtEnd(); iter.Advance()) { 226 !iter.IsAtEnd(); iter.Advance()) {
227 service_client->SetServiceProperty(service_path, iter.key(), iter.value()); 227 service_client->SetServiceProperty(service_path, iter.key(), iter.value());
228 } 228 }
229 229
230 ShillProfileClient::TestInterface* profile_test = 230 ShillProfileClient::TestInterface* profile_test =
231 DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface(); 231 DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface();
232 profile_test->AddService(service_path); 232 profile_test->AddService(service_path);
233 233
234 MessageLoop::current()->PostTask( 234 if (!callback.is_null()) {
235 FROM_HERE, base::Bind(callback, dbus::ObjectPath(service_path))); 235 MessageLoop::current()->PostTask(
236 FROM_HERE, base::Bind(callback, dbus::ObjectPath(service_path)));
237 }
236 } 238 }
237 239
238 void ShillManagerClientStub::ConfigureServiceForProfile( 240 void ShillManagerClientStub::ConfigureServiceForProfile(
239 const dbus::ObjectPath& profile_path, 241 const dbus::ObjectPath& profile_path,
240 const base::DictionaryValue& properties, 242 const base::DictionaryValue& properties,
241 const ObjectPathCallback& callback, 243 const ObjectPathCallback& callback,
242 const ErrorCallback& error_callback) { 244 const ErrorCallback& error_callback) {
243 std::string profile_property; 245 std::string profile_property;
244 properties.GetStringWithoutPathExpansion(flimflam::kProfileProperty, 246 properties.GetStringWithoutPathExpansion(flimflam::kProfileProperty,
245 &profile_property); 247 &profile_property);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 device_path_value, NULL)) { 315 device_path_value, NULL)) {
314 CallNotifyObserversPropertyChanged(flimflam::kDevicesProperty, 0); 316 CallNotifyObserversPropertyChanged(flimflam::kDevicesProperty, 0);
315 } 317 }
316 } 318 }
317 319
318 void ShillManagerClientStub::ClearDevices() { 320 void ShillManagerClientStub::ClearDevices() {
319 GetListProperty(flimflam::kDevicesProperty)->Clear(); 321 GetListProperty(flimflam::kDevicesProperty)->Clear();
320 CallNotifyObserversPropertyChanged(flimflam::kDevicesProperty, 0); 322 CallNotifyObserversPropertyChanged(flimflam::kDevicesProperty, 0);
321 } 323 }
322 324
323 void ShillManagerClientStub::ClearServices() {
324 GetListProperty(flimflam::kServicesProperty)->Clear();
325 GetListProperty(flimflam::kServiceWatchListProperty)->Clear();
326 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
327 CallNotifyObserversPropertyChanged(flimflam::kServiceWatchListProperty, 0);
328 }
329
330 void ShillManagerClientStub::AddService(const std::string& service_path,
331 bool add_to_watch_list) {
332 if (GetListProperty(flimflam::kServicesProperty)->AppendIfNotPresent(
333 base::Value::CreateStringValue(service_path))) {
334 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
335 }
336 if (add_to_watch_list)
337 AddServiceToWatchList(service_path);
338 }
339
340 void ShillManagerClientStub::AddServiceAtIndex(const std::string& service_path,
341 size_t index,
342 bool add_to_watch_list) {
343 base::StringValue path_value(service_path);
344 base::ListValue* service_list =
345 GetListProperty(flimflam::kServicesProperty);
346 base::ListValue::iterator iter =
347 std::find_if(service_list->begin(), service_list->end(),
348 ValueEquals(&path_value));
349 if (iter != service_list->end())
350 service_list->Erase(iter, NULL);
351 service_list->Insert(index, path_value.DeepCopy());
352 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
353 if (add_to_watch_list)
354 AddServiceToWatchList(service_path);
355 }
356
357 void ShillManagerClientStub::RemoveService(const std::string& service_path) {
358 base::StringValue service_path_value(service_path);
359 if (GetListProperty(flimflam::kServicesProperty)->Remove(
360 service_path_value, NULL)) {
361 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
362 }
363 if (GetListProperty(flimflam::kServiceWatchListProperty)->Remove(
364 service_path_value, NULL)) {
365 CallNotifyObserversPropertyChanged(
366 flimflam::kServiceWatchListProperty, 0);
367 }
368 }
369
370 void ShillManagerClientStub::AddTechnology(const std::string& type, 325 void ShillManagerClientStub::AddTechnology(const std::string& type,
371 bool enabled) { 326 bool enabled) {
372 if (GetListProperty(flimflam::kAvailableTechnologiesProperty)-> 327 if (GetListProperty(flimflam::kAvailableTechnologiesProperty)->
373 AppendIfNotPresent(base::Value::CreateStringValue(type))) { 328 AppendIfNotPresent(base::Value::CreateStringValue(type))) {
374 CallNotifyObserversPropertyChanged( 329 CallNotifyObserversPropertyChanged(
375 flimflam::kAvailableTechnologiesProperty, 0); 330 flimflam::kAvailableTechnologiesProperty, 0);
376 } 331 }
377 if (enabled && 332 if (enabled &&
378 GetListProperty(flimflam::kEnabledTechnologiesProperty)-> 333 GetListProperty(flimflam::kEnabledTechnologiesProperty)->
379 AppendIfNotPresent(base::Value::CreateStringValue(type))) { 334 AppendIfNotPresent(base::Value::CreateStringValue(type))) {
(...skipping 30 matching lines...) Expand all
410 CallNotifyObserversPropertyChanged( 365 CallNotifyObserversPropertyChanged(
411 shill::kUninitializedTechnologiesProperty, 0); 366 shill::kUninitializedTechnologiesProperty, 0);
412 } 367 }
413 } 368 }
414 } 369 }
415 370
416 void ShillManagerClientStub::ClearProperties() { 371 void ShillManagerClientStub::ClearProperties() {
417 stub_properties_.Clear(); 372 stub_properties_.Clear();
418 } 373 }
419 374
375 void ShillManagerClientStub::MoveServiceToIndex(
376 const std::string& service_path,
377 size_t index,
378 bool add_to_watch_list) {
379 base::StringValue path_value(service_path);
380 base::ListValue* service_list = GetListProperty(flimflam::kServicesProperty);
381 base::ListValue::iterator iter =
382 std::find_if(service_list->begin(), service_list->end(),
383 ValueEquals(&path_value));
384 if (iter == service_list->end()) {
385 LOG(ERROR) << "Service not found to move: " << service_path;
386 return;
387 }
388 service_list->Erase(iter, NULL);
389 service_list->Insert(index, path_value.DeepCopy());
390 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
391 if (add_to_watch_list)
392 AddServiceToWatchList(service_path);
393 }
394
395 void ShillManagerClientStub::AddManagerService(const std::string& service_path,
396 bool add_to_watch_list) {
397 if (GetListProperty(flimflam::kServicesProperty)->AppendIfNotPresent(
398 base::Value::CreateStringValue(service_path))) {
399 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
400 }
401 if (add_to_watch_list)
402 AddServiceToWatchList(service_path);
403 }
404
405 void ShillManagerClientStub::RemoveManagerService(
406 const std::string& service_path) {
407 base::StringValue service_path_value(service_path);
408 if (GetListProperty(flimflam::kServicesProperty)->Remove(
409 service_path_value, NULL)) {
410 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
411 }
412 if (GetListProperty(flimflam::kServiceWatchListProperty)->Remove(
413 service_path_value, NULL)) {
414 CallNotifyObserversPropertyChanged(
415 flimflam::kServiceWatchListProperty, 0);
416 }
417 }
418
419 void ShillManagerClientStub::ClearManagerServices() {
420 GetListProperty(flimflam::kServicesProperty)->Clear();
421 GetListProperty(flimflam::kServiceWatchListProperty)->Clear();
422 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
423 CallNotifyObserversPropertyChanged(flimflam::kServiceWatchListProperty, 0);
424 }
425
420 void ShillManagerClientStub::AddGeoNetwork( 426 void ShillManagerClientStub::AddGeoNetwork(
421 const std::string& technology, 427 const std::string& technology,
422 const base::DictionaryValue& network) { 428 const base::DictionaryValue& network) {
423 base::ListValue* list_value = NULL; 429 base::ListValue* list_value = NULL;
424 if (!stub_geo_networks_.GetListWithoutPathExpansion( 430 if (!stub_geo_networks_.GetListWithoutPathExpansion(
425 technology, &list_value)) { 431 technology, &list_value)) {
426 list_value = new base::ListValue; 432 list_value = new base::ListValue;
427 stub_geo_networks_.SetWithoutPathExpansion(technology, list_value); 433 stub_geo_networks_.SetWithoutPathExpansion(technology, list_value);
428 } 434 }
429 list_value->Append(network.DeepCopy()); 435 list_value->Append(network.DeepCopy());
430 } 436 }
431 437
432 void ShillManagerClientStub::AddProfile(const std::string& profile_path) { 438 void ShillManagerClientStub::AddProfile(const std::string& profile_path) {
433 const char* key = flimflam::kProfilesProperty; 439 const char* key = flimflam::kProfilesProperty;
434 if (GetListProperty(key)->AppendIfNotPresent( 440 if (GetListProperty(key)->AppendIfNotPresent(
435 new base::StringValue(profile_path))) { 441 new base::StringValue(profile_path))) {
436 CallNotifyObserversPropertyChanged(key, 0); 442 CallNotifyObserversPropertyChanged(key, 0);
437 } 443 }
438 } 444 }
439 445
440 void ShillManagerClientStub::AddServiceToWatchList( 446 void ShillManagerClientStub::AddServiceToWatchList(
441 const std::string& service_path) { 447 const std::string& service_path) {
442 if (GetListProperty( 448 // Remove and insert the service, moving it to the front of the watch list.
443 flimflam::kServiceWatchListProperty)->AppendIfNotPresent( 449 GetListProperty(flimflam::kServiceWatchListProperty)->Remove(
444 base::Value::CreateStringValue(service_path))) { 450 base::StringValue(service_path), NULL);
445 CallNotifyObserversPropertyChanged( 451 GetListProperty(flimflam::kServiceWatchListProperty)->Insert(
446 flimflam::kServiceWatchListProperty, 0); 452 0, base::Value::CreateStringValue(service_path));
447 } 453 CallNotifyObserversPropertyChanged(
454 flimflam::kServiceWatchListProperty, 0);
448 } 455 }
449 456
450 void ShillManagerClientStub::SetDefaultProperties() { 457 void ShillManagerClientStub::SetDefaultProperties() {
451 // Stub Technologies. 458 // Stub Technologies.
452 if (!CommandLine::ForCurrentProcess()->HasSwitch( 459 if (!CommandLine::ForCurrentProcess()->HasSwitch(
453 chromeos::switches::kDisableStubEthernet)) { 460 chromeos::switches::kDisableStubEthernet)) {
454 AddTechnology(flimflam::kTypeEthernet, true); 461 AddTechnology(flimflam::kTypeEthernet, true);
455 } 462 }
456 AddTechnology(flimflam::kTypeWifi, true); 463 AddTechnology(flimflam::kTypeWifi, true);
457 AddTechnology(flimflam::kTypeCellular, true); 464 AddTechnology(flimflam::kTypeCellular, true);
(...skipping 14 matching lines...) Expand all
472 } 479 }
473 480
474 void ShillManagerClientStub::PassStubGeoNetworks( 481 void ShillManagerClientStub::PassStubGeoNetworks(
475 const DictionaryValueCallback& callback) const { 482 const DictionaryValueCallback& callback) const {
476 callback.Run(DBUS_METHOD_CALL_SUCCESS, stub_geo_networks_); 483 callback.Run(DBUS_METHOD_CALL_SUCCESS, stub_geo_networks_);
477 } 484 }
478 485
479 void ShillManagerClientStub::CallNotifyObserversPropertyChanged( 486 void ShillManagerClientStub::CallNotifyObserversPropertyChanged(
480 const std::string& property, 487 const std::string& property,
481 int delay_ms) { 488 int delay_ms) {
482 // Don't actually delay unless we're interactive.
483 if (!CommandLine::ForCurrentProcess()->HasSwitch(
484 chromeos::switches::kEnableStubInteractive)) {
485 delay_ms = 0;
486 }
487
488 // Avoid unnecessary delayed task if we have no observers (e.g. during 489 // Avoid unnecessary delayed task if we have no observers (e.g. during
489 // initial setup). 490 // initial setup).
490 if (observer_list_.size() == 0) 491 if (observer_list_.size() == 0)
491 return; 492 return;
492 if (!CommandLine::ForCurrentProcess()->HasSwitch( 493 if (!CommandLine::ForCurrentProcess()->HasSwitch(
493 chromeos::switches::kEnableStubInteractive)) { 494 chromeos::switches::kEnableStubInteractive)) {
494 delay_ms = 0; 495 delay_ms = 0;
495 } 496 }
496 MessageLoop::current()->PostDelayedTask( 497 MessageLoop::current()->PostDelayedTask(
497 FROM_HERE, 498 FROM_HERE,
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 base::FundamentalValue(false)); 606 base::FundamentalValue(false));
606 } 607 }
607 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0); 608 CallNotifyObserversPropertyChanged(flimflam::kServicesProperty, 0);
608 CallNotifyObserversPropertyChanged(flimflam::kServiceWatchListProperty, 609 CallNotifyObserversPropertyChanged(flimflam::kServiceWatchListProperty,
609 0); 610 0);
610 if (!callback.is_null()) 611 if (!callback.is_null())
611 MessageLoop::current()->PostTask(FROM_HERE, callback); 612 MessageLoop::current()->PostTask(FROM_HERE, callback);
612 } 613 }
613 614
614 } // namespace chromeos 615 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/shill_manager_client_stub.h ('k') | chromeos/dbus/shill_service_client_stub.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698