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

Side by Side Diff: third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTServer.cpp

Issue 2637343002: Implement WebBluetooth descriptor.readValue() (Closed)
Patch Set: run bad_message_reasons Created 3 years, 11 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "modules/bluetooth/BluetoothRemoteGATTServer.h" 5 #include "modules/bluetooth/BluetoothRemoteGATTServer.h"
6 6
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 7 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ScriptPromise.h" 8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "core/dom/DOMException.h" 10 #include "core/dom/DOMException.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 // with a vector owning the services. 99 // with a vector owning the services.
100 void BluetoothRemoteGATTServer::GetPrimaryServicesCallback( 100 void BluetoothRemoteGATTServer::GetPrimaryServicesCallback(
101 mojom::blink::WebBluetoothGATTQueryQuantity quantity, 101 mojom::blink::WebBluetoothGATTQueryQuantity quantity,
102 ScriptPromiseResolver* resolver, 102 ScriptPromiseResolver* resolver,
103 mojom::blink::WebBluetoothResult result, 103 mojom::blink::WebBluetoothResult result,
104 Optional<Vector<mojom::blink::WebBluetoothRemoteGATTServicePtr>> services) { 104 Optional<Vector<mojom::blink::WebBluetoothRemoteGATTServicePtr>> services) {
105 if (!resolver->getExecutionContext() || 105 if (!resolver->getExecutionContext() ||
106 resolver->getExecutionContext()->isContextDestroyed()) 106 resolver->getExecutionContext()->isContextDestroyed())
107 return; 107 return;
108 108
109 // If the resolver is not in the set of ActiveAlgorithms then the frame 109 // If the device is disconnected, reject.
110 // disconnected so we reject.
111 if (!RemoveFromActiveAlgorithms(resolver)) { 110 if (!RemoveFromActiveAlgorithms(resolver)) {
112 resolver->reject( 111 resolver->reject(
113 DOMException::create(NetworkError, kGATTServerDisconnected)); 112 DOMException::create(NetworkError, kGATTServerDisconnected));
114 return; 113 return;
115 } 114 }
116 115
117 if (result == mojom::blink::WebBluetoothResult::SUCCESS) { 116 if (result == mojom::blink::WebBluetoothResult::SUCCESS) {
118 DCHECK(services); 117 DCHECK(services);
119 118
120 if (quantity == mojom::blink::WebBluetoothGATTQueryQuantity::SINGLE) { 119 if (quantity == mojom::blink::WebBluetoothGATTQueryQuantity::SINGLE) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 ScriptState* scriptState, 167 ScriptState* scriptState,
169 ExceptionState&) { 168 ExceptionState&) {
170 return getPrimaryServicesImpl( 169 return getPrimaryServicesImpl(
171 scriptState, mojom::blink::WebBluetoothGATTQueryQuantity::MULTIPLE); 170 scriptState, mojom::blink::WebBluetoothGATTQueryQuantity::MULTIPLE);
172 } 171 }
173 172
174 ScriptPromise BluetoothRemoteGATTServer::getPrimaryServicesImpl( 173 ScriptPromise BluetoothRemoteGATTServer::getPrimaryServicesImpl(
175 ScriptState* scriptState, 174 ScriptState* scriptState,
176 mojom::blink::WebBluetoothGATTQueryQuantity quantity, 175 mojom::blink::WebBluetoothGATTQueryQuantity quantity,
177 String servicesUUID) { 176 String servicesUUID) {
178 // We always check that the device is connected.
179 if (!connected()) { 177 if (!connected()) {
180 return ScriptPromise::rejectWithDOMException( 178 return ScriptPromise::rejectWithDOMException(
181 scriptState, 179 scriptState,
182 DOMException::create(NetworkError, kGATTServerNotConnected)); 180 DOMException::create(NetworkError, kGATTServerNotConnected));
183 } 181 }
184 182
185 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 183 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
186 ScriptPromise promise = resolver->promise(); 184 ScriptPromise promise = resolver->promise();
187 AddToActiveAlgorithms(resolver); 185 AddToActiveAlgorithms(resolver);
188 186
189 mojom::blink::WebBluetoothService* service = m_device->bluetooth()->service(); 187 mojom::blink::WebBluetoothService* service = m_device->bluetooth()->service();
190 WTF::Optional<String> uuid = WTF::nullopt; 188 WTF::Optional<String> uuid = WTF::nullopt;
191 if (!servicesUUID.isEmpty()) 189 if (!servicesUUID.isEmpty())
192 uuid = servicesUUID; 190 uuid = servicesUUID;
193 191
194 service->RemoteServerGetPrimaryServices( 192 service->RemoteServerGetPrimaryServices(
195 device()->id(), quantity, uuid, 193 device()->id(), quantity, uuid,
196 convertToBaseCallback( 194 convertToBaseCallback(
197 WTF::bind(&BluetoothRemoteGATTServer::GetPrimaryServicesCallback, 195 WTF::bind(&BluetoothRemoteGATTServer::GetPrimaryServicesCallback,
198 wrapPersistent(this), quantity, wrapPersistent(resolver)))); 196 wrapPersistent(this), quantity, wrapPersistent(resolver))));
199 return promise; 197 return promise;
200 } 198 }
201 199
202 } // namespace blink 200 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698