Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: chrome/browser/chromeos/dbus/flimflam_ipconfig_client.cc

Issue 9838085: Move files inside chrome/browser/chromeos/dbus to chromeos/dbus (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 "chrome/browser/chromeos/dbus/flimflam_ipconfig_client.h"
6
7 #include "base/bind.h"
8 #include "base/message_loop.h"
9 #include "dbus/bus.h"
10 #include "dbus/message.h"
11 #include "dbus/object_path.h"
12 #include "dbus/object_proxy.h"
13 #include "dbus/values_util.h"
14 #include "third_party/cros_system_api/dbus/service_constants.h"
15
16 namespace chromeos {
17
18 namespace {
19
20 // The FlimflamIPConfigClient implementation.
21 class FlimflamIPConfigClientImpl : public FlimflamIPConfigClient {
22 public:
23 explicit FlimflamIPConfigClientImpl(dbus::Bus* bus);
24
25 // FlimflamIPConfigClient override.
26 virtual void SetPropertyChangedHandler(
27 const PropertyChangedHandler& handler) OVERRIDE;
28
29 // FlimflamIPConfigClient override.
30 virtual void ResetPropertyChangedHandler() OVERRIDE;
31 // FlimflamIPConfigClient override.
32 virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE;
33 // FlimflamIPConfigClient override.
34 virtual void SetProperty(const std::string& name,
35 const base::Value& value,
36 const VoidCallback& callback) OVERRIDE;
37 // FlimflamIPConfigClient override.
38 virtual void ClearProperty(const std::string& name,
39 const VoidCallback& callback) OVERRIDE;
40 // FlimflamIPConfigClient override.
41 virtual void Remove(const VoidCallback& callback) OVERRIDE;
42
43 private:
44 dbus::ObjectProxy* proxy_;
45 FlimflamClientHelper helper_;
46
47 DISALLOW_COPY_AND_ASSIGN(FlimflamIPConfigClientImpl);
48 };
49
50 FlimflamIPConfigClientImpl::FlimflamIPConfigClientImpl(dbus::Bus* bus)
51 : proxy_(bus->GetObjectProxy(
52 flimflam::kFlimflamServiceName,
53 dbus::ObjectPath(flimflam::kFlimflamServicePath))),
54 helper_(proxy_) {
55 helper_.MonitorPropertyChanged(flimflam::kFlimflamIPConfigInterface);
56 }
57
58 void FlimflamIPConfigClientImpl::SetPropertyChangedHandler(
59 const PropertyChangedHandler& handler) {
60 helper_.SetPropertyChangedHandler(handler);
61 }
62
63 void FlimflamIPConfigClientImpl::ResetPropertyChangedHandler() {
64 helper_.ResetPropertyChangedHandler();
65 }
66
67 // FlimflamIPConfigClient override.
68 void FlimflamIPConfigClientImpl::GetProperties(
69 const DictionaryValueCallback& callback) {
70 dbus::MethodCall method_call(flimflam::kFlimflamIPConfigInterface,
71 flimflam::kGetPropertiesFunction);
72 helper_.CallDictionaryValueMethod(&method_call, callback);
73 }
74
75 // FlimflamIPConfigClient override.
76 void FlimflamIPConfigClientImpl::SetProperty(const std::string& name,
77 const base::Value& value,
78 const VoidCallback& callback) {
79 dbus::MethodCall method_call(flimflam::kFlimflamIPConfigInterface,
80 flimflam::kSetPropertyFunction);
81 dbus::MessageWriter writer(&method_call);
82 writer.AppendString(name);
83 // IPConfig supports writing basic type and string array properties.
84 switch (value.GetType()) {
85 case base::Value::TYPE_LIST: {
86 const base::ListValue* list_value = NULL;
87 value.GetAsList(&list_value);
88 dbus::MessageWriter variant_writer(NULL);
89 writer.OpenVariant("as", &variant_writer);
90 dbus::MessageWriter array_writer(NULL);
91 variant_writer.OpenArray("s", &array_writer);
92 for (base::ListValue::const_iterator it = list_value->begin();
93 it != list_value->end();
94 ++it) {
95 DLOG_IF(ERROR, (*it)->GetType() != base::Value::TYPE_STRING)
96 << "Unexpected type " << (*it)->GetType();
97 std::string str;
98 (*it)->GetAsString(&str);
99 array_writer.AppendString(str);
100 }
101 variant_writer.CloseContainer(&array_writer);
102 writer.CloseContainer(&variant_writer);
103 }
104 case base::Value::TYPE_BOOLEAN:
105 case base::Value::TYPE_INTEGER:
106 case base::Value::TYPE_DOUBLE:
107 case base::Value::TYPE_STRING:
108 dbus::AppendBasicTypeValueDataAsVariant(&writer, value);
109 break;
110 default:
111 DLOG(ERROR) << "Unexpected type " << value.GetType();
112 }
113 helper_.CallVoidMethod(&method_call, callback);
114 }
115
116 // FlimflamIPConfigClient override.
117 void FlimflamIPConfigClientImpl::ClearProperty(const std::string& name,
118 const VoidCallback& callback) {
119 dbus::MethodCall method_call(flimflam::kFlimflamIPConfigInterface,
120 flimflam::kClearPropertyFunction);
121 dbus::MessageWriter writer(&method_call);
122 writer.AppendString(name);
123 helper_.CallVoidMethod(&method_call, callback);
124 }
125
126 // FlimflamIPConfigClient override.
127 void FlimflamIPConfigClientImpl::Remove(const VoidCallback& callback) {
128 dbus::MethodCall method_call(flimflam::kFlimflamIPConfigInterface,
129 flimflam::kRemoveConfigFunction);
130 helper_.CallVoidMethod(&method_call, callback);
131 }
132
133 // A stub implementation of FlimflamIPConfigClient.
134 class FlimflamIPConfigClientStubImpl : public FlimflamIPConfigClient {
135 public:
136 FlimflamIPConfigClientStubImpl() : weak_ptr_factory_(this) {}
137
138 virtual ~FlimflamIPConfigClientStubImpl() {}
139
140 // FlimflamIPConfigClient override.
141 virtual void SetPropertyChangedHandler(
142 const PropertyChangedHandler& handler) OVERRIDE {}
143
144 // FlimflamIPConfigClient override.
145 virtual void ResetPropertyChangedHandler() OVERRIDE {}
146
147 // FlimflamIPConfigClient override.
148 virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE {
149 MessageLoop::current()->PostTask(
150 FROM_HERE, base::Bind(&FlimflamIPConfigClientStubImpl::PassProperties,
151 weak_ptr_factory_.GetWeakPtr(),
152 callback));
153 }
154
155 // FlimflamIPConfigClient override.
156 virtual void SetProperty(const std::string& name,
157 const base::Value& value,
158 const VoidCallback& callback) OVERRIDE {
159 MessageLoop::current()->PostTask(
160 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS));
161 }
162
163 // FlimflamIPConfigClient override.
164 virtual void ClearProperty(const std::string& name,
165 const VoidCallback& callback) OVERRIDE {
166 MessageLoop::current()->PostTask(
167 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS));
168 }
169
170 // FlimflamIPConfigClient override.
171 virtual void Remove(const VoidCallback& callback) OVERRIDE {
172 MessageLoop::current()->PostTask(
173 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS));
174 }
175
176 private:
177 // Runs callback with |properties_|.
178 void PassProperties(const DictionaryValueCallback& callback) const {
179 callback.Run(DBUS_METHOD_CALL_SUCCESS, properties_);
180 }
181
182 base::WeakPtrFactory<FlimflamIPConfigClientStubImpl> weak_ptr_factory_;
183 base::DictionaryValue properties_;
184
185 DISALLOW_COPY_AND_ASSIGN(FlimflamIPConfigClientStubImpl);
186 };
187
188 } // namespace
189
190 FlimflamIPConfigClient::FlimflamIPConfigClient() {}
191
192 FlimflamIPConfigClient::~FlimflamIPConfigClient() {}
193
194 // static
195 FlimflamIPConfigClient* FlimflamIPConfigClient::Create(
196 DBusClientImplementationType type,
197 dbus::Bus* bus) {
198 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
199 return new FlimflamIPConfigClientImpl(bus);
200 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
201 return new FlimflamIPConfigClientStubImpl();
202 }
203
204 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/dbus/flimflam_ipconfig_client.h ('k') | chrome/browser/chromeos/dbus/flimflam_network_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698