| OLD | NEW |
| 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_service_client_stub.h" | 5 #include "chromeos/dbus/shill_service_client_stub.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| 11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
| 12 #include "base/values.h" | 12 #include "base/values.h" |
| 13 #include "chromeos/chromeos_switches.h" | 13 #include "chromeos/chromeos_switches.h" |
| 14 #include "chromeos/dbus/dbus_thread_manager.h" | 14 #include "chromeos/dbus/dbus_thread_manager.h" |
| 15 #include "chromeos/dbus/shill_manager_client.h" | 15 #include "chromeos/dbus/shill_manager_client.h" |
| 16 #include "chromeos/dbus/shill_profile_client_stub.h" | 16 #include "chromeos/dbus/shill_profile_client_stub.h" |
| 17 #include "chromeos/dbus/shill_property_changed_observer.h" | 17 #include "chromeos/dbus/shill_property_changed_observer.h" |
| 18 #include "dbus/bus.h" | 18 #include "dbus/bus.h" |
| 19 #include "dbus/message.h" | 19 #include "dbus/message.h" |
| 20 #include "dbus/object_proxy.h" | 20 #include "dbus/object_proxy.h" |
| 21 #include "third_party/cros_system_api/dbus/service_constants.h" | 21 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 22 | 22 |
| 23 namespace chromeos { | 23 namespace chromeos { |
| 24 | 24 |
| 25 namespace { | 25 namespace { |
| 26 | 26 |
| 27 const char kStubPortalledWifiPath[] = "portalled_wifi"; |
| 28 const char kStubPortalledWifiName[] = "Portalled Wifi"; |
| 29 |
| 27 void ErrorFunction(const std::string& error_name, | 30 void ErrorFunction(const std::string& error_name, |
| 28 const std::string& error_message) { | 31 const std::string& error_message) { |
| 29 LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; | 32 LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; |
| 30 } | 33 } |
| 31 | 34 |
| 32 void PassStubListValue(const ShillServiceClient::ListValueCallback& callback, | 35 void PassStubListValue(const ShillServiceClient::ListValueCallback& callback, |
| 33 base::ListValue* value) { | 36 base::ListValue* value) { |
| 34 callback.Run(*value); | 37 callback.Run(*value); |
| 35 } | 38 } |
| 36 | 39 |
| 37 void PassStubServiceProperties( | 40 void PassStubServiceProperties( |
| 38 const ShillServiceClient::DictionaryValueCallback& callback, | 41 const ShillServiceClient::DictionaryValueCallback& callback, |
| 39 DBusMethodCallStatus call_status, | 42 DBusMethodCallStatus call_status, |
| 40 const base::DictionaryValue* properties) { | 43 const base::DictionaryValue* properties) { |
| 41 callback.Run(call_status, *properties); | 44 callback.Run(call_status, *properties); |
| 42 } | 45 } |
| 43 | 46 |
| 44 } // namespace | 47 } // namespace |
| 45 | 48 |
| 46 ShillServiceClientStub::ShillServiceClientStub() : weak_ptr_factory_(this) { | 49 ShillServiceClientStub::ShillServiceClientStub() : weak_ptr_factory_(this) { |
| 47 } | 50 } |
| 48 | 51 |
| 49 ShillServiceClientStub::~ShillServiceClientStub() { | 52 ShillServiceClientStub::~ShillServiceClientStub() { |
| 50 STLDeleteContainerPairSecondPointers( | 53 STLDeleteContainerPairSecondPointers( |
| 51 observer_list_.begin(), observer_list_.end()); | 54 observer_list_.begin(), observer_list_.end()); |
| 52 } | 55 } |
| 53 | 56 |
| 57 // static |
| 58 bool ShillServiceClientStub::IsStubPortalledWifiEnabled( |
| 59 const std::string& path) { |
| 60 if (!CommandLine::ForCurrentProcess()->HasSwitch( |
| 61 chromeos::switches::kEnableStubPortalledWifi)) { |
| 62 return false; |
| 63 } |
| 64 return path == kStubPortalledWifiPath; |
| 65 } |
| 66 |
| 54 // ShillServiceClient overrides. | 67 // ShillServiceClient overrides. |
| 55 | 68 |
| 56 void ShillServiceClientStub::AddPropertyChangedObserver( | 69 void ShillServiceClientStub::AddPropertyChangedObserver( |
| 57 const dbus::ObjectPath& service_path, | 70 const dbus::ObjectPath& service_path, |
| 58 ShillPropertyChangedObserver* observer) { | 71 ShillPropertyChangedObserver* observer) { |
| 59 GetObserverList(service_path).AddObserver(observer); | 72 GetObserverList(service_path).AddObserver(observer); |
| 60 } | 73 } |
| 61 | 74 |
| 62 void ShillServiceClientStub::RemovePropertyChangedObserver( | 75 void ShillServiceClientStub::RemovePropertyChangedObserver( |
| 63 const dbus::ObjectPath& service_path, | 76 const dbus::ObjectPath& service_path, |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 associating_value); | 198 associating_value); |
| 186 | 199 |
| 187 // Set Online after a delay. | 200 // Set Online after a delay. |
| 188 base::TimeDelta delay; | 201 base::TimeDelta delay; |
| 189 if (CommandLine::ForCurrentProcess()->HasSwitch( | 202 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 190 chromeos::switches::kEnableStubInteractive)) { | 203 chromeos::switches::kEnableStubInteractive)) { |
| 191 const int kConnectDelaySeconds = 5; | 204 const int kConnectDelaySeconds = 5; |
| 192 delay = base::TimeDelta::FromSeconds(kConnectDelaySeconds); | 205 delay = base::TimeDelta::FromSeconds(kConnectDelaySeconds); |
| 193 } | 206 } |
| 194 base::StringValue online_value(flimflam::kStateOnline); | 207 base::StringValue online_value(flimflam::kStateOnline); |
| 208 if (service_path.value() == kStubPortalledWifiPath) |
| 209 online_value = base::StringValue(flimflam::kStatePortal); |
| 195 std::string passphrase; | 210 std::string passphrase; |
| 196 service_properties->GetStringWithoutPathExpansion( | 211 service_properties->GetStringWithoutPathExpansion( |
| 197 flimflam::kPassphraseProperty, &passphrase); | 212 flimflam::kPassphraseProperty, &passphrase); |
| 198 if (passphrase == "failure") | 213 if (passphrase == "failure") |
| 199 online_value = base::StringValue(flimflam::kStateFailure); | 214 online_value = base::StringValue(flimflam::kStateFailure); |
| 200 base::MessageLoop::current()->PostDelayedTask( | 215 base::MessageLoop::current()->PostDelayedTask( |
| 201 FROM_HERE, | 216 FROM_HERE, |
| 202 base::Bind(&ShillServiceClientStub::SetProperty, | 217 base::Bind(&ShillServiceClientStub::SetProperty, |
| 203 weak_ptr_factory_.GetWeakPtr(), | 218 weak_ptr_factory_.GetWeakPtr(), |
| 204 service_path, | 219 service_path, |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 } | 328 } |
| 314 | 329 |
| 315 // ShillServiceClient::TestInterface overrides. | 330 // ShillServiceClient::TestInterface overrides. |
| 316 | 331 |
| 317 void ShillServiceClientStub::AddService(const std::string& service_path, | 332 void ShillServiceClientStub::AddService(const std::string& service_path, |
| 318 const std::string& name, | 333 const std::string& name, |
| 319 const std::string& type, | 334 const std::string& type, |
| 320 const std::string& state, | 335 const std::string& state, |
| 321 bool add_to_visible_list, | 336 bool add_to_visible_list, |
| 322 bool add_to_watch_list) { | 337 bool add_to_watch_list) { |
| 323 AddServiceWithIPConfig(service_path, name, type, state, "", | 338 std::string nstate = state; |
| 339 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 340 chromeos::switches::kDefaultStubNetworkStateIdle)) { |
| 341 nstate = flimflam::kStateIdle; |
| 342 } |
| 343 AddServiceWithIPConfig(service_path, name, type, nstate, "", |
| 324 add_to_visible_list, add_to_watch_list); | 344 add_to_visible_list, add_to_watch_list); |
| 325 } | 345 } |
| 326 | 346 |
| 327 void ShillServiceClientStub::AddServiceWithIPConfig( | 347 void ShillServiceClientStub::AddServiceWithIPConfig( |
| 328 const std::string& service_path, | 348 const std::string& service_path, |
| 329 const std::string& name, | 349 const std::string& name, |
| 330 const std::string& type, | 350 const std::string& type, |
| 331 const std::string& state, | 351 const std::string& state, |
| 332 const std::string& ipconfig_path, | 352 const std::string& ipconfig_path, |
| 333 bool add_to_visible_list, | 353 bool add_to_visible_list, |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 flimflam::kStateIdle, | 467 flimflam::kStateIdle, |
| 448 add_to_visible, add_to_watchlist); | 468 add_to_visible, add_to_watchlist); |
| 449 SetServiceProperty("wifi2", | 469 SetServiceProperty("wifi2", |
| 450 flimflam::kSecurityProperty, | 470 flimflam::kSecurityProperty, |
| 451 base::StringValue(flimflam::kSecurityPsk)); | 471 base::StringValue(flimflam::kSecurityPsk)); |
| 452 base::FundamentalValue strength_value(80); | 472 base::FundamentalValue strength_value(80); |
| 453 SetServiceProperty("wifi2", | 473 SetServiceProperty("wifi2", |
| 454 flimflam::kSignalStrengthProperty, | 474 flimflam::kSignalStrengthProperty, |
| 455 strength_value); | 475 strength_value); |
| 456 | 476 |
| 477 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 478 chromeos::switches::kEnableStubPortalledWifi)) { |
| 479 AddService(kStubPortalledWifiPath, kStubPortalledWifiName, |
| 480 flimflam::kTypeWifi, |
| 481 flimflam::kStatePortal, |
| 482 add_to_visible, add_to_watchlist); |
| 483 SetServiceProperty(kStubPortalledWifiPath, |
| 484 flimflam::kSecurityProperty, |
| 485 base::StringValue(flimflam::kSecurityNone)); |
| 486 } |
| 487 |
| 457 // Wimax | 488 // Wimax |
| 458 | 489 |
| 459 AddService("wimax1", "wimax1", | 490 AddService("wimax1", "wimax1", |
| 460 flimflam::kTypeWimax, | 491 flimflam::kTypeWimax, |
| 461 flimflam::kStateIdle, | 492 flimflam::kStateIdle, |
| 462 add_to_visible, add_to_watchlist); | 493 add_to_visible, add_to_watchlist); |
| 463 SetServiceProperty("wimax1", | 494 SetServiceProperty("wimax1", |
| 464 flimflam::kConnectableProperty, | 495 flimflam::kConnectableProperty, |
| 465 base::FundamentalValue(true)); | 496 base::FundamentalValue(true)); |
| 466 | 497 |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 properties->GetString(flimflam::kTypeProperty, &type); | 612 properties->GetString(flimflam::kTypeProperty, &type); |
| 582 if (type != service_type) | 613 if (type != service_type) |
| 583 continue; | 614 continue; |
| 584 properties->SetWithoutPathExpansion( | 615 properties->SetWithoutPathExpansion( |
| 585 flimflam::kStateProperty, | 616 flimflam::kStateProperty, |
| 586 base::Value::CreateStringValue(flimflam::kStateIdle)); | 617 base::Value::CreateStringValue(flimflam::kStateIdle)); |
| 587 } | 618 } |
| 588 } | 619 } |
| 589 | 620 |
| 590 } // namespace chromeos | 621 } // namespace chromeos |
| OLD | NEW |