Home | History | Annotate | Download | only in dbus
      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 ShillIPConfigClient::TestInterface*
     94 FakeShillIPConfigClient::GetTestInterface() {
     95   return this;
     96 }
     97 
     98 // ShillIPConfigClient::TestInterface overrides
     99 
    100 void FakeShillIPConfigClient::AddIPConfig(
    101     const std::string& ip_config_path,
    102     const base::DictionaryValue& properties) {
    103   ipconfigs_.SetWithoutPathExpansion(ip_config_path, properties.DeepCopy());
    104 }
    105 
    106 // Private methods
    107 
    108 void FakeShillIPConfigClient::PassProperties(
    109     const base::DictionaryValue* values,
    110     const DictionaryValueCallback& callback) const {
    111   callback.Run(DBUS_METHOD_CALL_SUCCESS, *values);
    112 }
    113 
    114 }  // namespace chromeos
    115