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

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

Issue 14487002: Bluetooth: Profile support for Chrome OS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add unit tests, and class comments Created 7 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 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/experimental_bluetooth_profile_service_provider.h" 5 #include "chromeos/dbus/experimental_bluetooth_profile_service_provider.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/chromeos/chromeos_version.h" 10 #include "base/chromeos/chromeos_version.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 106
107 // Called by dbus:: when the Bluetooth daemon establishes a new connection 107 // Called by dbus:: when the Bluetooth daemon establishes a new connection
108 // to the profile. 108 // to the profile.
109 void NewConnection(dbus::MethodCall* method_call, 109 void NewConnection(dbus::MethodCall* method_call,
110 dbus::ExportedObject::ResponseSender response_sender) { 110 dbus::ExportedObject::ResponseSender response_sender) {
111 DCHECK(OnOriginThread()); 111 DCHECK(OnOriginThread());
112 DCHECK(delegate_); 112 DCHECK(delegate_);
113 113
114 dbus::MessageReader reader(method_call); 114 dbus::MessageReader reader(method_call);
115 dbus::ObjectPath device_path; 115 dbus::ObjectPath device_path;
116 dbus::FileDescriptor fd; 116 scoped_ptr<dbus::FileDescriptor> fd(new dbus::FileDescriptor());
117 dbus::MessageReader array_reader(NULL); 117 dbus::MessageReader array_reader(NULL);
118 if (!reader.PopObjectPath(&device_path) || 118 if (!reader.PopObjectPath(&device_path) ||
119 !reader.PopFileDescriptor(&fd) || 119 !reader.PopFileDescriptor(fd.get()) ||
120 !reader.PopArray(&array_reader)) { 120 !reader.PopArray(&array_reader)) {
121 LOG(WARNING) << "NewConnection called with incorrect paramters: " 121 LOG(WARNING) << "NewConnection called with incorrect paramters: "
122 << method_call->ToString(); 122 << method_call->ToString();
123 return; 123 return;
124 } 124 }
125 125
126 Delegate::Options options; 126 Delegate::Options options;
127 while (array_reader.HasMoreData()) { 127 while (array_reader.HasMoreData()) {
128 dbus::MessageReader dict_entry_reader(NULL); 128 dbus::MessageReader dict_entry_reader(NULL);
129 std::string key; 129 std::string key;
130 if (!array_reader.PopDictEntry(&dict_entry_reader) || 130 if (!array_reader.PopDictEntry(&dict_entry_reader) ||
131 !dict_entry_reader.PopString(&key)) { 131 !dict_entry_reader.PopString(&key)) {
132 LOG(WARNING) << "NewConnection called with incorrect paramters: " 132 LOG(WARNING) << "NewConnection called with incorrect paramters: "
133 << method_call->ToString(); 133 << method_call->ToString();
134 } else { 134 } else {
135 if (key == bluetooth_profile::kVersionProperty) 135 if (key == bluetooth_profile::kVersionProperty)
136 dict_entry_reader.PopVariantOfUint16(&options.version); 136 dict_entry_reader.PopVariantOfUint16(&options.version);
137 else if (key == bluetooth_profile::kFeaturesProperty) 137 else if (key == bluetooth_profile::kFeaturesProperty)
138 dict_entry_reader.PopVariantOfUint16(&options.features); 138 dict_entry_reader.PopVariantOfUint16(&options.features);
139 } 139 }
140 } 140 }
141 141
142 Delegate::ConfirmationCallback callback = base::Bind( 142 Delegate::ConfirmationCallback callback = base::Bind(
143 &ExperimentalBluetoothProfileServiceProviderImpl::OnConfirmation, 143 &ExperimentalBluetoothProfileServiceProviderImpl::OnConfirmation,
144 weak_ptr_factory_.GetWeakPtr(), 144 weak_ptr_factory_.GetWeakPtr(),
145 method_call, 145 method_call,
146 response_sender); 146 response_sender);
147 147
148 delegate_->NewConnection(device_path, &fd, options, callback); 148 delegate_->NewConnection(device_path, fd.Pass(), options, callback);
149
150 response_sender.Run(dbus::Response::FromMethodCall(method_call));
151 } 149 }
152 150
153 // Called by dbus:: when the Bluetooth daemon is about to disconnect the 151 // Called by dbus:: when the Bluetooth daemon is about to disconnect the
154 // profile. 152 // profile.
155 void RequestDisconnection( 153 void RequestDisconnection(
156 dbus::MethodCall* method_call, 154 dbus::MethodCall* method_call,
157 dbus::ExportedObject::ResponseSender response_sender) { 155 dbus::ExportedObject::ResponseSender response_sender) {
158 DCHECK(OnOriginThread()); 156 DCHECK(OnOriginThread());
159 DCHECK(delegate_); 157 DCHECK(delegate_);
160 158
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 Delegate* delegate) { 268 Delegate* delegate) {
271 if (base::chromeos::IsRunningOnChromeOS()) { 269 if (base::chromeos::IsRunningOnChromeOS()) {
272 return new ExperimentalBluetoothProfileServiceProviderImpl( 270 return new ExperimentalBluetoothProfileServiceProviderImpl(
273 bus, object_path, delegate); 271 bus, object_path, delegate);
274 } else { 272 } else {
275 return new FakeBluetoothProfileServiceProvider(object_path, delegate); 273 return new FakeBluetoothProfileServiceProvider(object_path, delegate);
276 } 274 }
277 } 275 }
278 276
279 } // namespace chromeos 277 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/experimental_bluetooth_profile_service_provider.h ('k') | chromeos/dbus/fake_bluetooth_device_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698