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