Index: chromeos/dbus/shill_manager_client_stub.cc |
diff --git a/chromeos/dbus/shill_manager_client_stub.cc b/chromeos/dbus/shill_manager_client_stub.cc |
index f19c5a5d2de8209759cc5ff623349f409562625c..aa58ddf15fa4ec78c621cae1b93c83485f319bfb 100644 |
--- a/chromeos/dbus/shill_manager_client_stub.cc |
+++ b/chromeos/dbus/shill_manager_client_stub.cc |
@@ -11,6 +11,7 @@ |
#include "base/values.h" |
#include "chromeos/chromeos_switches.h" |
#include "chromeos/dbus/dbus_thread_manager.h" |
+#include "chromeos/dbus/shill_device_client.h" |
#include "chromeos/dbus/shill_property_changed_observer.h" |
#include "chromeos/dbus/shill_service_client.h" |
#include "dbus/bus.h" |
@@ -94,12 +95,24 @@ void ShillManagerClientStub::SetProperty(const std::string& name, |
void ShillManagerClientStub::RequestScan(const std::string& type, |
const base::Closure& callback, |
const ErrorCallback& error_callback) { |
- const int kScanDelayMilliseconds = 3000; |
- CallNotifyObserversPropertyChanged( |
- flimflam::kServicesProperty, kScanDelayMilliseconds); |
- if (callback.is_null()) |
- return; |
- MessageLoop::current()->PostTask(FROM_HERE, callback); |
+ // For Stub purposes, default to a Wifi scan. |
+ std::string device_type = flimflam::kTypeWifi; |
+ if (!type.empty()) |
+ device_type = type; |
+ ShillDeviceClient::TestInterface* device_client = |
+ DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface(); |
+ std::string device_path = device_client->GetDevicePathForType(device_type); |
+ if (!device_path.empty()) { |
+ device_client->SetDeviceProperty(device_path, |
+ flimflam::kScanningProperty, |
+ base::FundamentalValue(true)); |
+ } |
+ const int kScanDurationSeconds = 3; |
+ MessageLoop::current()->PostDelayedTask( |
+ FROM_HERE, |
+ base::Bind(&ShillManagerClientStub::ScanCompleted, |
+ weak_ptr_factory_.GetWeakPtr(), device_path, callback), |
+ base::TimeDelta::FromSeconds(kScanDurationSeconds)); |
} |
void ShillManagerClientStub::EnableTechnology( |
@@ -312,7 +325,6 @@ void ShillManagerClientStub::AddServiceAtIndex(const std::string& service_path, |
base::ListValue::iterator iter = |
std::find_if(service_list->begin(), service_list->end(), |
ValueEquals(&path_value)); |
- service_list->Find(path_value); |
if (iter != service_list->end()) |
service_list->Erase(iter, NULL); |
service_list->Insert(index, path_value.DeepCopy()); |
@@ -507,4 +519,16 @@ base::ListValue* ShillManagerClientStub::GetEnabledServiceList( |
return new_service_list; |
} |
+void ShillManagerClientStub::ScanCompleted(const std::string& device_path, |
+ const base::Closure& callback) { |
+ if (!device_path.empty()) { |
+ DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface()-> |
+ SetDeviceProperty(device_path, |
+ flimflam::kScanningProperty, |
+ base::FundamentalValue(false)); |
+ } |
+ if (!callback.is_null()) |
+ MessageLoop::current()->PostTask(FROM_HERE, callback); |
+} |
+ |
} // namespace chromeos |