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 3 // found in the LICENSE file. 4 5 #include "chromeos/dbus/fake_shill_ipconfig_client.h" 6 7 #include "base/bind.h" 8 #include "base/message_loop/message_loop.h" 9 #include "base/stl_util.h" 10 #include "base/values.h" 11 #include "chromeos/dbus/shill_property_changed_observer.h" 12 #include "dbus/bus.h" 13 #include "dbus/message.h" 14 #include "dbus/object_path.h" 15 #include "dbus/object_proxy.h" 16 #include "dbus/values_util.h" 17 #include "third_party/cros_system_api/dbus/service_constants.h" 18 19 namespace chromeos { 20 21 FakeShillIPConfigClient::FakeShillIPConfigClient() : weak_ptr_factory_(this) { 22 } 23 24 FakeShillIPConfigClient::~FakeShillIPConfigClient() { 25 } 26 27 void FakeShillIPConfigClient::Init(dbus::Bus* bus) { 28 } 29 30 void FakeShillIPConfigClient::AddPropertyChangedObserver( 31 const dbus::ObjectPath& ipconfig_path, 32 ShillPropertyChangedObserver* observer) { 33 } 34 35 void FakeShillIPConfigClient::RemovePropertyChangedObserver( 36 const dbus::ObjectPath& ipconfig_path, 37 ShillPropertyChangedObserver* observer) { 38 } 39 40 void FakeShillIPConfigClient::Refresh(const dbus::ObjectPath& ipconfig_path, 41 const VoidDBusMethodCallback& callback) { 42 } 43 44 void FakeShillIPConfigClient::GetProperties( 45 const dbus::ObjectPath& ipconfig_path, 46 const DictionaryValueCallback& callback) { 47 const base::DictionaryValue* dict = NULL; 48 if (!ipconfigs_.GetDictionaryWithoutPathExpansion(ipconfig_path.value(), 49 &dict)) 50 return; 51 base::MessageLoop::current()->PostTask( 52 FROM_HERE, base::Bind(&FakeShillIPConfigClient::PassProperties, 53 weak_ptr_factory_.GetWeakPtr(), 54 dict, 55 callback)); 56 } 57 58 void FakeShillIPConfigClient::SetProperty( 59 const dbus::ObjectPath& ipconfig_path, 60 const std::string& name, 61 const base::Value& value, 62 const VoidDBusMethodCallback& callback) { 63 base::DictionaryValue* dict = NULL; 64 if (ipconfigs_.GetDictionaryWithoutPathExpansion(ipconfig_path.value(), 65 &dict)) { 66 // Update existing ip config stub object's properties. 67 dict->SetWithoutPathExpansion(name, value.DeepCopy()); 68 } else { 69 // Create a new stub ipconfig object, and update its properties. 70 base::DictionaryValue* dvalue = new base::DictionaryValue; 71 dvalue->SetWithoutPathExpansion(name, value.DeepCopy()); 72 ipconfigs_.SetWithoutPathExpansion(ipconfig_path.value(), 73 dvalue); 74 } 75 base::MessageLoop::current()->PostTask( 76 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS)); 77 } 78 79 void FakeShillIPConfigClient::ClearProperty( 80 const dbus::ObjectPath& ipconfig_path, 81 const std::string& name, 82 const VoidDBusMethodCallback& callback) { 83 base::MessageLoop::current()->PostTask( 84 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS)); 85 } 86 87 void FakeShillIPConfigClient::Remove(const dbus::ObjectPath& ipconfig_path, 88 const VoidDBusMethodCallback& callback) { 89 base::MessageLoop::current()->PostTask( 90 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS)); 91 } 92 93 void FakeShillIPConfigClient::PassProperties( 94 const base::DictionaryValue* values, 95 const DictionaryValueCallback& callback) const { 96 callback.Run(DBUS_METHOD_CALL_SUCCESS, *values); 97 } 98 99 } // namespace chromeos 100