| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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/fake_shill_service_client.h" | 5 #include "chromeos/dbus/fake_shill_service_client.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 | 183 |
| 184 // Set any other services of the same Type to 'offline' first, before setting | 184 // Set any other services of the same Type to 'offline' first, before setting |
| 185 // State to Association which will trigger sorting Manager.Services and | 185 // State to Association which will trigger sorting Manager.Services and |
| 186 // sending an update. | 186 // sending an update. |
| 187 SetOtherServicesOffline(service_path.value()); | 187 SetOtherServicesOffline(service_path.value()); |
| 188 | 188 |
| 189 // Clear Error. | 189 // Clear Error. |
| 190 service_properties->SetStringWithoutPathExpansion(shill::kErrorProperty, ""); | 190 service_properties->SetStringWithoutPathExpansion(shill::kErrorProperty, ""); |
| 191 | 191 |
| 192 // Set Associating. | 192 // Set Associating. |
| 193 base::StringValue associating_value(shill::kStateAssociation); | 193 base::Value associating_value(shill::kStateAssociation); |
| 194 SetServiceProperty(service_path.value(), shill::kStateProperty, | 194 SetServiceProperty(service_path.value(), shill::kStateProperty, |
| 195 associating_value); | 195 associating_value); |
| 196 | 196 |
| 197 // Stay Associating until the state is changed again after a delay. | 197 // Stay Associating until the state is changed again after a delay. |
| 198 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 198 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 199 FROM_HERE, | 199 FROM_HERE, |
| 200 base::Bind(&FakeShillServiceClient::ContinueConnect, | 200 base::Bind(&FakeShillServiceClient::ContinueConnect, |
| 201 weak_ptr_factory_.GetWeakPtr(), service_path.value()), | 201 weak_ptr_factory_.GetWeakPtr(), service_path.value()), |
| 202 base::TimeDelta::FromSeconds(GetInteractiveDelay())); | 202 base::TimeDelta::FromSeconds(GetInteractiveDelay())); |
| 203 | 203 |
| 204 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); | 204 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); |
| 205 } | 205 } |
| 206 | 206 |
| 207 void FakeShillServiceClient::Disconnect(const dbus::ObjectPath& service_path, | 207 void FakeShillServiceClient::Disconnect(const dbus::ObjectPath& service_path, |
| 208 const base::Closure& callback, | 208 const base::Closure& callback, |
| 209 const ErrorCallback& error_callback) { | 209 const ErrorCallback& error_callback) { |
| 210 base::Value* service; | 210 base::Value* service; |
| 211 if (!stub_services_.Get(service_path.value(), &service)) { | 211 if (!stub_services_.Get(service_path.value(), &service)) { |
| 212 error_callback.Run("Error.InvalidService", "Invalid Service"); | 212 error_callback.Run("Error.InvalidService", "Invalid Service"); |
| 213 return; | 213 return; |
| 214 } | 214 } |
| 215 // Set Idle after a delay | 215 // Set Idle after a delay |
| 216 base::StringValue idle_value(shill::kStateIdle); | 216 base::Value idle_value(shill::kStateIdle); |
| 217 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 217 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 218 FROM_HERE, base::Bind(&FakeShillServiceClient::SetProperty, | 218 FROM_HERE, base::Bind(&FakeShillServiceClient::SetProperty, |
| 219 weak_ptr_factory_.GetWeakPtr(), service_path, | 219 weak_ptr_factory_.GetWeakPtr(), service_path, |
| 220 shill::kStateProperty, idle_value, | 220 shill::kStateProperty, idle_value, |
| 221 base::Bind(&base::DoNothing), error_callback), | 221 base::Bind(&base::DoNothing), error_callback), |
| 222 base::TimeDelta::FromSeconds(GetInteractiveDelay())); | 222 base::TimeDelta::FromSeconds(GetInteractiveDelay())); |
| 223 callback.Run(); | 223 callback.Run(); |
| 224 } | 224 } |
| 225 | 225 |
| 226 void FakeShillServiceClient::Remove(const dbus::ObjectPath& service_path, | 226 void FakeShillServiceClient::Remove(const dbus::ObjectPath& service_path, |
| 227 const base::Closure& callback, | 227 const base::Closure& callback, |
| 228 const ErrorCallback& error_callback) { | 228 const ErrorCallback& error_callback) { |
| 229 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); | 229 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); |
| 230 } | 230 } |
| 231 | 231 |
| 232 void FakeShillServiceClient::ActivateCellularModem( | 232 void FakeShillServiceClient::ActivateCellularModem( |
| 233 const dbus::ObjectPath& service_path, | 233 const dbus::ObjectPath& service_path, |
| 234 const std::string& carrier, | 234 const std::string& carrier, |
| 235 const base::Closure& callback, | 235 const base::Closure& callback, |
| 236 const ErrorCallback& error_callback) { | 236 const ErrorCallback& error_callback) { |
| 237 base::DictionaryValue* service_properties = | 237 base::DictionaryValue* service_properties = |
| 238 GetModifiableServiceProperties(service_path.value(), false); | 238 GetModifiableServiceProperties(service_path.value(), false); |
| 239 if (!service_properties) { | 239 if (!service_properties) { |
| 240 LOG(ERROR) << "Service not found: " << service_path.value(); | 240 LOG(ERROR) << "Service not found: " << service_path.value(); |
| 241 error_callback.Run("Error.InvalidService", "Invalid Service"); | 241 error_callback.Run("Error.InvalidService", "Invalid Service"); |
| 242 } | 242 } |
| 243 SetServiceProperty(service_path.value(), | 243 SetServiceProperty(service_path.value(), shill::kActivationStateProperty, |
| 244 shill::kActivationStateProperty, | 244 base::Value(shill::kActivationStateActivating)); |
| 245 base::StringValue(shill::kActivationStateActivating)); | |
| 246 // Set Activated after a delay | 245 // Set Activated after a delay |
| 247 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 246 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 248 FROM_HERE, | 247 FROM_HERE, |
| 249 base::Bind(&FakeShillServiceClient::SetCellularActivated, | 248 base::Bind(&FakeShillServiceClient::SetCellularActivated, |
| 250 weak_ptr_factory_.GetWeakPtr(), service_path, error_callback), | 249 weak_ptr_factory_.GetWeakPtr(), service_path, error_callback), |
| 251 base::TimeDelta::FromSeconds(GetInteractiveDelay())); | 250 base::TimeDelta::FromSeconds(GetInteractiveDelay())); |
| 252 | 251 |
| 253 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); | 252 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); |
| 254 } | 253 } |
| 255 | 254 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 | 315 |
| 317 std::string profile_path; | 316 std::string profile_path; |
| 318 if (properties->GetStringWithoutPathExpansion(shill::kProfileProperty, | 317 if (properties->GetStringWithoutPathExpansion(shill::kProfileProperty, |
| 319 &profile_path) && | 318 &profile_path) && |
| 320 !profile_path.empty()) { | 319 !profile_path.empty()) { |
| 321 DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface()-> | 320 DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface()-> |
| 322 UpdateService(profile_path, service_path); | 321 UpdateService(profile_path, service_path); |
| 323 } | 322 } |
| 324 | 323 |
| 325 if (!ipconfig_path.empty()) { | 324 if (!ipconfig_path.empty()) { |
| 326 properties->SetWithoutPathExpansion( | 325 properties->SetWithoutPathExpansion(shill::kIPConfigProperty, |
| 327 shill::kIPConfigProperty, | 326 new base::Value(ipconfig_path)); |
| 328 new base::StringValue(ipconfig_path)); | |
| 329 } | 327 } |
| 330 | 328 |
| 331 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface()-> | 329 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface()-> |
| 332 AddManagerService(service_path, true); | 330 AddManagerService(service_path, true); |
| 333 } | 331 } |
| 334 | 332 |
| 335 base::DictionaryValue* FakeShillServiceClient::SetServiceProperties( | 333 base::DictionaryValue* FakeShillServiceClient::SetServiceProperties( |
| 336 const std::string& service_path, | 334 const std::string& service_path, |
| 337 const std::string& guid, | 335 const std::string& guid, |
| 338 const std::string& name, | 336 const std::string& name, |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 if (path == service_path) | 562 if (path == service_path) |
| 565 continue; | 563 continue; |
| 566 base::DictionaryValue* properties; | 564 base::DictionaryValue* properties; |
| 567 if (!stub_services_.GetDictionaryWithoutPathExpansion(path, &properties)) | 565 if (!stub_services_.GetDictionaryWithoutPathExpansion(path, &properties)) |
| 568 NOTREACHED(); | 566 NOTREACHED(); |
| 569 | 567 |
| 570 std::string type; | 568 std::string type; |
| 571 properties->GetString(shill::kTypeProperty, &type); | 569 properties->GetString(shill::kTypeProperty, &type); |
| 572 if (type != service_type) | 570 if (type != service_type) |
| 573 continue; | 571 continue; |
| 574 properties->SetWithoutPathExpansion( | 572 properties->SetWithoutPathExpansion(shill::kStateProperty, |
| 575 shill::kStateProperty, | 573 new base::Value(shill::kStateIdle)); |
| 576 new base::StringValue(shill::kStateIdle)); | |
| 577 } | 574 } |
| 578 } | 575 } |
| 579 | 576 |
| 580 void FakeShillServiceClient::SetCellularActivated( | 577 void FakeShillServiceClient::SetCellularActivated( |
| 581 const dbus::ObjectPath& service_path, | 578 const dbus::ObjectPath& service_path, |
| 582 const ErrorCallback& error_callback) { | 579 const ErrorCallback& error_callback) { |
| 583 SetProperty(service_path, | 580 SetProperty(service_path, shill::kActivationStateProperty, |
| 584 shill::kActivationStateProperty, | 581 base::Value(shill::kActivationStateActivated), |
| 585 base::StringValue(shill::kActivationStateActivated), | 582 base::Bind(&base::DoNothing), error_callback); |
| 586 base::Bind(&base::DoNothing), | |
| 587 error_callback); | |
| 588 SetProperty(service_path, shill::kConnectableProperty, base::Value(true), | 583 SetProperty(service_path, shill::kConnectableProperty, base::Value(true), |
| 589 base::Bind(&base::DoNothing), error_callback); | 584 base::Bind(&base::DoNothing), error_callback); |
| 590 } | 585 } |
| 591 | 586 |
| 592 void FakeShillServiceClient::ContinueConnect(const std::string& service_path) { | 587 void FakeShillServiceClient::ContinueConnect(const std::string& service_path) { |
| 593 VLOG(1) << "FakeShillServiceClient::ContinueConnect: " << service_path; | 588 VLOG(1) << "FakeShillServiceClient::ContinueConnect: " << service_path; |
| 594 base::DictionaryValue* service_properties = NULL; | 589 base::DictionaryValue* service_properties = NULL; |
| 595 if (!stub_services_.GetDictionary(service_path, &service_properties)) { | 590 if (!stub_services_.GetDictionary(service_path, &service_properties)) { |
| 596 LOG(ERROR) << "Service not found: " << service_path; | 591 LOG(ERROR) << "Service not found: " << service_path; |
| 597 return; | 592 return; |
| 598 } | 593 } |
| 599 | 594 |
| 600 if (base::ContainsKey(connect_behavior_, service_path)) { | 595 if (base::ContainsKey(connect_behavior_, service_path)) { |
| 601 const base::Closure& custom_connect_behavior = | 596 const base::Closure& custom_connect_behavior = |
| 602 connect_behavior_[service_path]; | 597 connect_behavior_[service_path]; |
| 603 VLOG(1) << "Running custom connect behavior for " << service_path; | 598 VLOG(1) << "Running custom connect behavior for " << service_path; |
| 604 custom_connect_behavior.Run(); | 599 custom_connect_behavior.Run(); |
| 605 return; | 600 return; |
| 606 } | 601 } |
| 607 | 602 |
| 608 // No custom connect behavior set, continue with the default connect behavior. | 603 // No custom connect behavior set, continue with the default connect behavior. |
| 609 std::string passphrase; | 604 std::string passphrase; |
| 610 service_properties->GetStringWithoutPathExpansion(shill::kPassphraseProperty, | 605 service_properties->GetStringWithoutPathExpansion(shill::kPassphraseProperty, |
| 611 &passphrase); | 606 &passphrase); |
| 612 if (passphrase == "failure") { | 607 if (passphrase == "failure") { |
| 613 // Simulate a password failure. | 608 // Simulate a password failure. |
| 614 SetServiceProperty(service_path, shill::kErrorProperty, | 609 SetServiceProperty(service_path, shill::kErrorProperty, |
| 615 base::StringValue(shill::kErrorBadPassphrase)); | 610 base::Value(shill::kErrorBadPassphrase)); |
| 616 SetServiceProperty(service_path, shill::kStateProperty, | 611 SetServiceProperty(service_path, shill::kStateProperty, |
| 617 base::StringValue(shill::kStateFailure)); | 612 base::Value(shill::kStateFailure)); |
| 618 base::ThreadTaskRunnerHandle::Get()->PostTask( | 613 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 619 FROM_HERE, | 614 FROM_HERE, |
| 620 base::Bind( | 615 base::Bind( |
| 621 base::IgnoreResult(&FakeShillServiceClient::SetServiceProperty), | 616 base::IgnoreResult(&FakeShillServiceClient::SetServiceProperty), |
| 622 weak_ptr_factory_.GetWeakPtr(), service_path, shill::kErrorProperty, | 617 weak_ptr_factory_.GetWeakPtr(), service_path, shill::kErrorProperty, |
| 623 base::StringValue(shill::kErrorBadPassphrase))); | 618 base::Value(shill::kErrorBadPassphrase))); |
| 624 } else { | 619 } else { |
| 625 // Set Online. | 620 // Set Online. |
| 626 VLOG(1) << "Setting state to Online " << service_path; | 621 VLOG(1) << "Setting state to Online " << service_path; |
| 627 SetServiceProperty(service_path, shill::kStateProperty, | 622 SetServiceProperty(service_path, shill::kStateProperty, |
| 628 base::StringValue(shill::kStateOnline)); | 623 base::Value(shill::kStateOnline)); |
| 629 } | 624 } |
| 630 } | 625 } |
| 631 | 626 |
| 632 } // namespace chromeos | 627 } // namespace chromeos |
| OLD | NEW |