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

Side by Side Diff: chromeos/dbus/bluetooth_media_endpoint_service_provider.cc

Issue 963983002: chromeos/dbus: Add verbose log to media-related clients and service provider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@disconnect
Patch Set: Created 5 years, 9 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/bluetooth_media_endpoint_service_provider.h" 5 #include "chromeos/dbus/bluetooth_media_endpoint_service_provider.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 // Returns true if the current thread is on the origin thread, false 99 // Returns true if the current thread is on the origin thread, false
100 // otherwise. 100 // otherwise.
101 bool OnOriginThread() const { 101 bool OnOriginThread() const {
102 return base::PlatformThread::CurrentId() == origin_thread_id_; 102 return base::PlatformThread::CurrentId() == origin_thread_id_;
103 } 103 }
104 104
105 // Called by dbus:: when a method is exported. 105 // Called by dbus:: when a method is exported.
106 void OnExported(const std::string& interface_name, 106 void OnExported(const std::string& interface_name,
107 const std::string& method_name, 107 const std::string& method_name,
108 bool success) { 108 bool success) {
109 LOG_IF(WARNING, !success) << "Failed to export " 109 LOG_IF(ERROR, !success) << "Failed to export " << interface_name << "."
110 << interface_name << "." << method_name; 110 << method_name;
111 } 111 }
112 112
113 // Called by dbus:: when the remote device connects to the Media Endpoint. 113 // Called by dbus:: when the remote device connects to the Media Endpoint.
114 void SetConfiguration(dbus::MethodCall* method_call, 114 void SetConfiguration(dbus::MethodCall* method_call,
115 dbus::ExportedObject::ResponseSender response_sender) { 115 dbus::ExportedObject::ResponseSender response_sender) {
116 VLOG(1) << "SetConfiuration";
117
116 DCHECK(OnOriginThread()); 118 DCHECK(OnOriginThread());
117 DCHECK(delegate_); 119 DCHECK(delegate_);
118 120
119 dbus::MessageReader reader(method_call); 121 dbus::MessageReader reader(method_call);
120 dbus::ObjectPath transport_path; 122 dbus::ObjectPath transport_path;
121 dbus::MessageReader property_reader(method_call); 123 dbus::MessageReader property_reader(method_call);
122 if (!reader.PopObjectPath(&transport_path) || 124 if (!reader.PopObjectPath(&transport_path) ||
123 !reader.PopArray(&property_reader)) { 125 !reader.PopArray(&property_reader)) {
124 LOG(WARNING) << "SetConfiguration called with incorrect parameters: " 126 LOG(ERROR) << "SetConfiguration called with incorrect parameters: "
125 << method_call->ToString(); 127 << method_call->ToString();
126 return; 128 return;
127 } 129 }
128 130
129 // Parses |properties| and passes the property set as a 131 // Parses |properties| and passes the property set as a
130 // Delegate::TransportProperties structure to |delegate_|. 132 // Delegate::TransportProperties structure to |delegate_|.
131 Delegate::TransportProperties properties; 133 Delegate::TransportProperties properties;
132 while (property_reader.HasMoreData()) { 134 while (property_reader.HasMoreData()) {
133 dbus::MessageReader dict_entry_reader(nullptr); 135 dbus::MessageReader dict_entry_reader(nullptr);
134 std::string key; 136 std::string key;
135 if (!property_reader.PopDictEntry(&dict_entry_reader) || 137 if (!property_reader.PopDictEntry(&dict_entry_reader) ||
136 !dict_entry_reader.PopString(&key)) { 138 !dict_entry_reader.PopString(&key)) {
137 LOG(WARNING) << "SetConfiguration called with incorrect parameters: " 139 LOG(ERROR) << "SetConfiguration called with incorrect parameters: "
138 << method_call->ToString(); 140 << method_call->ToString();
139 } else if (key == BluetoothMediaTransportClient::kDeviceProperty) { 141 } else if (key == BluetoothMediaTransportClient::kDeviceProperty) {
140 dict_entry_reader.PopVariantOfObjectPath(&properties.device); 142 dict_entry_reader.PopVariantOfObjectPath(&properties.device);
141 } else if (key == BluetoothMediaTransportClient::kUUIDProperty) { 143 } else if (key == BluetoothMediaTransportClient::kUUIDProperty) {
142 dict_entry_reader.PopVariantOfString(&properties.uuid); 144 dict_entry_reader.PopVariantOfString(&properties.uuid);
143 } else if (key == BluetoothMediaTransportClient::kCodecProperty) { 145 } else if (key == BluetoothMediaTransportClient::kCodecProperty) {
144 dict_entry_reader.PopVariantOfByte(&properties.codec); 146 dict_entry_reader.PopVariantOfByte(&properties.codec);
145 } else if (key == BluetoothMediaTransportClient::kConfigurationProperty) { 147 } else if (key == BluetoothMediaTransportClient::kConfigurationProperty) {
146 dbus::MessageReader variant_reader(nullptr); 148 dbus::MessageReader variant_reader(nullptr);
147 const uint8_t* bytes = nullptr; 149 const uint8_t* bytes = nullptr;
148 size_t length = 0; 150 size_t length = 0;
149 dict_entry_reader.PopVariant(&variant_reader); 151 dict_entry_reader.PopVariant(&variant_reader);
150 variant_reader.PopArrayOfBytes(&bytes, &length); 152 variant_reader.PopArrayOfBytes(&bytes, &length);
151 properties.configuration.assign(bytes, bytes + length); 153 properties.configuration.assign(bytes, bytes + length);
152 } else if (key == BluetoothMediaTransportClient::kStateProperty) { 154 } else if (key == BluetoothMediaTransportClient::kStateProperty) {
153 dict_entry_reader.PopVariantOfString(&properties.state); 155 dict_entry_reader.PopVariantOfString(&properties.state);
154 } else if (key == BluetoothMediaTransportClient::kDelayProperty) { 156 } else if (key == BluetoothMediaTransportClient::kDelayProperty) {
155 properties.delay.reset(new uint16_t()); 157 properties.delay.reset(new uint16_t());
156 dict_entry_reader.PopVariantOfUint16(properties.delay.get()); 158 dict_entry_reader.PopVariantOfUint16(properties.delay.get());
157 } else if (key == BluetoothMediaTransportClient::kVolumeProperty) { 159 } else if (key == BluetoothMediaTransportClient::kVolumeProperty) {
158 properties.volume.reset(new uint16_t()); 160 properties.volume.reset(new uint16_t());
159 dict_entry_reader.PopVariantOfUint16(properties.volume.get()); 161 dict_entry_reader.PopVariantOfUint16(properties.volume.get());
160 } 162 }
161 } 163 }
162 164
163 if (properties.codec != kInvalidCodec && 165 if (properties.codec != kInvalidCodec &&
164 properties.state != kInvalidState) { 166 properties.state != kInvalidState) {
165 delegate_->SetConfiguration(transport_path, properties); 167 delegate_->SetConfiguration(transport_path, properties);
166 } else { 168 } else {
167 LOG(WARNING) << "SetConfiguration called with incorrect parameters: " 169 LOG(ERROR) << "SetConfiguration called with incorrect parameters: "
168 << method_call->ToString(); 170 << method_call->ToString();
169 } 171 }
170 172
171 response_sender.Run(dbus::Response::FromMethodCall(method_call)); 173 response_sender.Run(dbus::Response::FromMethodCall(method_call));
172 } 174 }
173 175
174 // Called by dbus:: when the remote device receives the configuration for 176 // Called by dbus:: when the remote device receives the configuration for
175 // media transport. 177 // media transport.
176 void SelectConfiguration( 178 void SelectConfiguration(
177 dbus::MethodCall* method_call, 179 dbus::MethodCall* method_call,
178 dbus::ExportedObject::ResponseSender response_sender) { 180 dbus::ExportedObject::ResponseSender response_sender) {
181 VLOG(1) << "SelectConfiguration";
182
179 DCHECK(OnOriginThread()); 183 DCHECK(OnOriginThread());
180 DCHECK(delegate_); 184 DCHECK(delegate_);
181 185
182 dbus::MessageReader reader(method_call); 186 dbus::MessageReader reader(method_call);
183 const uint8_t* capabilities = nullptr; 187 const uint8_t* capabilities = nullptr;
184 size_t length = 0; 188 size_t length = 0;
185 if (!reader.PopArrayOfBytes(&capabilities, &length)) { 189 if (!reader.PopArrayOfBytes(&capabilities, &length)) {
186 LOG(WARNING) << "SelectConfiguration called with incorrect parameters: " 190 LOG(ERROR) << "SelectConfiguration called with incorrect parameters: "
187 << method_call->ToString(); 191 << method_call->ToString();
188 return; 192 return;
189 } 193 }
190 194
191 std::vector<uint8_t> configuration(capabilities, capabilities + length); 195 std::vector<uint8_t> configuration(capabilities, capabilities + length);
192 196
193 // |delegate_| generates the response to |SelectConfiguration| and sends it 197 // |delegate_| generates the response to |SelectConfiguration| and sends it
194 // back via |callback|. 198 // back via |callback|.
195 Delegate::SelectConfigurationCallback callback = base::Bind( 199 Delegate::SelectConfigurationCallback callback = base::Bind(
196 &BluetoothMediaEndpointServiceProviderImpl::OnConfiguration, 200 &BluetoothMediaEndpointServiceProviderImpl::OnConfiguration,
197 weak_ptr_factory_.GetWeakPtr(), 201 weak_ptr_factory_.GetWeakPtr(),
198 method_call, 202 method_call,
199 response_sender); 203 response_sender);
200 204
201 delegate_->SelectConfiguration(configuration, callback); 205 delegate_->SelectConfiguration(configuration, callback);
202 } 206 }
203 207
204 // Called by dbus:: when the remote device is about to close the connection. 208 // Called by dbus:: when the remote device is about to close the connection.
205 void ClearConfiguration( 209 void ClearConfiguration(
206 dbus::MethodCall* method_call, 210 dbus::MethodCall* method_call,
207 dbus::ExportedObject::ResponseSender response_sender) { 211 dbus::ExportedObject::ResponseSender response_sender) {
212 VLOG(1) << "ClearConfiguration";
213
208 DCHECK(OnOriginThread()); 214 DCHECK(OnOriginThread());
209 DCHECK(delegate_); 215 DCHECK(delegate_);
210 216
211 dbus::MessageReader reader(method_call); 217 dbus::MessageReader reader(method_call);
212 dbus::ObjectPath transport_path; 218 dbus::ObjectPath transport_path;
213 if (!reader.PopObjectPath(&transport_path)) { 219 if (!reader.PopObjectPath(&transport_path)) {
214 LOG(WARNING) << "ClearConfiguration called with incorrect parameters: " 220 LOG(ERROR) << "ClearConfiguration called with incorrect parameters: "
215 << method_call->ToString(); 221 << method_call->ToString();
216 return; 222 return;
217 } 223 }
218 224
219 delegate_->ClearConfiguration(transport_path); 225 delegate_->ClearConfiguration(transport_path);
220 226
221 response_sender.Run(dbus::Response::FromMethodCall(method_call)); 227 response_sender.Run(dbus::Response::FromMethodCall(method_call));
222 } 228 }
223 229
224 // Called by Bluetooth daemon to do the clean up after unregistering the Media 230 // Called by Bluetooth daemon to do the clean up after unregistering the Media
225 // Endpoint. 231 // Endpoint.
226 void Release(dbus::MethodCall* method_call, 232 void Release(dbus::MethodCall* method_call,
227 dbus::ExportedObject::ResponseSender response_sender) { 233 dbus::ExportedObject::ResponseSender response_sender) {
234 VLOG(1) << "Release";
235
228 DCHECK(OnOriginThread()); 236 DCHECK(OnOriginThread());
229 DCHECK(delegate_); 237 DCHECK(delegate_);
230 238
231 delegate_->Released(); 239 delegate_->Released();
232 240
233 response_sender.Run(dbus::Response::FromMethodCall(method_call)); 241 response_sender.Run(dbus::Response::FromMethodCall(method_call));
234 } 242 }
235 243
236 // Called by Delegate to response to a method requiring transport 244 // Called by Delegate to response to a method requiring transport
237 // configuration. 245 // configuration.
238 void OnConfiguration(dbus::MethodCall* method_call, 246 void OnConfiguration(dbus::MethodCall* method_call,
239 dbus::ExportedObject::ResponseSender response_sender, 247 dbus::ExportedObject::ResponseSender response_sender,
240 const std::vector<uint8_t>& configuration) { 248 const std::vector<uint8_t>& configuration) {
249 VLOG(1) << "OnConfiguration";
250
241 DCHECK(OnOriginThread()); 251 DCHECK(OnOriginThread());
242 252
243 // Generates the response to the method call. 253 // Generates the response to the method call.
244 scoped_ptr<dbus::Response> response( 254 scoped_ptr<dbus::Response> response(
245 dbus::Response::FromMethodCall(method_call)); 255 dbus::Response::FromMethodCall(method_call));
246 dbus::MessageWriter writer(response.get()); 256 dbus::MessageWriter writer(response.get());
247 if (configuration.empty()) { 257 if (configuration.empty()) {
248 LOG(WARNING) << "OnConfiguration called with empty configuration."; 258 LOG(ERROR) << "OnConfiguration called with empty configuration.";
249 writer.AppendArrayOfBytes(nullptr, 0); 259 writer.AppendArrayOfBytes(nullptr, 0);
250 } else { 260 } else {
251 writer.AppendArrayOfBytes(&configuration[0], configuration.size()); 261 writer.AppendArrayOfBytes(&configuration[0], configuration.size());
252 } 262 }
253 response_sender.Run(response.Pass()); 263 response_sender.Run(response.Pass());
254 } 264 }
255 265
256 // Origin thread (i.e. the UI thread in production). 266 // Origin thread (i.e. the UI thread in production).
257 base::PlatformThreadId origin_thread_id_; 267 base::PlatformThreadId origin_thread_id_;
258 268
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 // Returns a real implementation. 316 // Returns a real implementation.
307 if (!DBusThreadManager::Get()->IsUsingStub(DBusClientBundle::BLUETOOTH)) { 317 if (!DBusThreadManager::Get()->IsUsingStub(DBusClientBundle::BLUETOOTH)) {
308 return new BluetoothMediaEndpointServiceProviderImpl( 318 return new BluetoothMediaEndpointServiceProviderImpl(
309 bus, object_path, delegate); 319 bus, object_path, delegate);
310 } 320 }
311 // Returns a fake implementation. 321 // Returns a fake implementation.
312 return new FakeBluetoothMediaEndpointServiceProvider(object_path, delegate); 322 return new FakeBluetoothMediaEndpointServiceProvider(object_path, delegate);
313 } 323 }
314 324
315 } // namespace chromeos 325 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/bluetooth_media_client.cc ('k') | chromeos/dbus/bluetooth_media_transport_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698