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

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

Issue 2771893002: Move Bluetooth.Web.FunctionCall.Count UMA from browser to WebKit (Closed)
Patch Set: move Bluetooth.Web.FunctionCall.Count UMA from browser to WebKit Created 3 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 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 <utility>
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 8 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ScriptPromise.h" 9 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 10 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "core/dom/DOMException.h" 11 #include "core/dom/DOMException.h"
11 #include "core/dom/ExceptionCode.h" 12 #include "core/dom/ExceptionCode.h"
12 #include "core/events/Event.h" 13 #include "core/events/Event.h"
13 #include "modules/bluetooth/Bluetooth.h" 14 #include "modules/bluetooth/Bluetooth.h"
14 #include "modules/bluetooth/BluetoothDevice.h" 15 #include "modules/bluetooth/BluetoothDevice.h"
15 #include "modules/bluetooth/BluetoothError.h" 16 #include "modules/bluetooth/BluetoothError.h"
17 #include "modules/bluetooth/BluetoothMetrics.h"
16 #include "modules/bluetooth/BluetoothRemoteGATTService.h" 18 #include "modules/bluetooth/BluetoothRemoteGATTService.h"
17 #include "modules/bluetooth/BluetoothUUID.h" 19 #include "modules/bluetooth/BluetoothUUID.h"
18 #include <utility>
19 20
20 namespace blink { 21 namespace blink {
21 22
22 BluetoothRemoteGATTServer::BluetoothRemoteGATTServer(BluetoothDevice* device) 23 BluetoothRemoteGATTServer::BluetoothRemoteGATTServer(BluetoothDevice* device)
23 : m_device(device), m_connected(false) {} 24 : m_device(device), m_connected(false) {}
24 25
25 BluetoothRemoteGATTServer* BluetoothRemoteGATTServer::Create( 26 BluetoothRemoteGATTServer* BluetoothRemoteGATTServer::Create(
26 BluetoothDevice* device) { 27 BluetoothDevice* device) {
27 return new BluetoothRemoteGATTServer(device); 28 return new BluetoothRemoteGATTServer(device);
28 } 29 }
(...skipping 28 matching lines...) Expand all
57 if (result == mojom::blink::WebBluetoothResult::SUCCESS) { 58 if (result == mojom::blink::WebBluetoothResult::SUCCESS) {
58 m_device->bluetooth()->AddToConnectedDevicesMap(m_device->id(), m_device); 59 m_device->bluetooth()->AddToConnectedDevicesMap(m_device->id(), m_device);
59 SetConnected(true); 60 SetConnected(true);
60 resolver->resolve(this); 61 resolver->resolve(this);
61 } else { 62 } else {
62 resolver->reject(BluetoothError::CreateDOMException(result)); 63 resolver->reject(BluetoothError::CreateDOMException(result));
63 } 64 }
64 } 65 }
65 66
66 ScriptPromise BluetoothRemoteGATTServer::connect(ScriptState* scriptState) { 67 ScriptPromise BluetoothRemoteGATTServer::connect(ScriptState* scriptState) {
68 RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction::CONNECT_GATT);
69
67 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 70 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
68 ScriptPromise promise = resolver->promise(); 71 ScriptPromise promise = resolver->promise();
69 72
70 mojom::blink::WebBluetoothService* service = m_device->bluetooth()->Service(); 73 mojom::blink::WebBluetoothService* service = m_device->bluetooth()->Service();
71 service->RemoteServerConnect( 74 service->RemoteServerConnect(
72 m_device->id(), convertToBaseCallback(WTF::bind( 75 m_device->id(), convertToBaseCallback(WTF::bind(
73 &BluetoothRemoteGATTServer::ConnectCallback, 76 &BluetoothRemoteGATTServer::ConnectCallback,
74 wrapPersistent(this), wrapPersistent(resolver)))); 77 wrapPersistent(this), wrapPersistent(resolver))));
75 78
76 return promise; 79 return promise;
77 } 80 }
78 81
79 void BluetoothRemoteGATTServer::disconnect(ScriptState* scriptState) { 82 void BluetoothRemoteGATTServer::disconnect(ScriptState* scriptState) {
83 RecordWebBluetoothFunctionCall(
84 UMAWebBluetoothFunction::REMOTE_GATT_SERVER_DISCONNECT);
85
80 if (!m_connected) 86 if (!m_connected)
81 return; 87 return;
82 m_device->CleanupDisconnectedDeviceAndFireEvent(); 88 m_device->CleanupDisconnectedDeviceAndFireEvent();
83 m_device->bluetooth()->RemoveFromConnectedDevicesMap(m_device->id()); 89 m_device->bluetooth()->RemoveFromConnectedDevicesMap(m_device->id());
84 mojom::blink::WebBluetoothService* service = m_device->bluetooth()->Service(); 90 mojom::blink::WebBluetoothService* service = m_device->bluetooth()->Service();
85 service->RemoteServerDisconnect(m_device->id()); 91 service->RemoteServerDisconnect(m_device->id());
86 } 92 }
87 93
88 // Callback that allows us to resolve the promise with a single service or 94 // Callback that allows us to resolve the promise with a single service or
89 // with a vector owning the services. 95 // with a vector owning the services.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 } else { 138 } else {
133 resolver->reject(BluetoothError::CreateDOMException(result)); 139 resolver->reject(BluetoothError::CreateDOMException(result));
134 } 140 }
135 } 141 }
136 } 142 }
137 143
138 ScriptPromise BluetoothRemoteGATTServer::getPrimaryService( 144 ScriptPromise BluetoothRemoteGATTServer::getPrimaryService(
139 ScriptState* scriptState, 145 ScriptState* scriptState,
140 const StringOrUnsignedLong& service, 146 const StringOrUnsignedLong& service,
141 ExceptionState& exceptionState) { 147 ExceptionState& exceptionState) {
148 RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction::GET_PRIMARY_SERVICE);
149
142 String serviceUUID = BluetoothUUID::getService(service, exceptionState); 150 String serviceUUID = BluetoothUUID::getService(service, exceptionState);
143 if (exceptionState.hadException()) 151 if (exceptionState.hadException())
144 return exceptionState.reject(scriptState); 152 return exceptionState.reject(scriptState);
145 153
146 return GetPrimaryServicesImpl( 154 return GetPrimaryServicesImpl(
147 scriptState, mojom::blink::WebBluetoothGATTQueryQuantity::SINGLE, 155 scriptState, mojom::blink::WebBluetoothGATTQueryQuantity::SINGLE,
148 serviceUUID); 156 serviceUUID);
149 } 157 }
150 158
151 ScriptPromise BluetoothRemoteGATTServer::getPrimaryServices( 159 ScriptPromise BluetoothRemoteGATTServer::getPrimaryServices(
152 ScriptState* scriptState, 160 ScriptState* scriptState,
153 const StringOrUnsignedLong& service, 161 const StringOrUnsignedLong& service,
154 ExceptionState& exceptionState) { 162 ExceptionState& exceptionState) {
163 RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction::GET_PRIMARY_SERVICES);
164
155 String serviceUUID = BluetoothUUID::getService(service, exceptionState); 165 String serviceUUID = BluetoothUUID::getService(service, exceptionState);
156 if (exceptionState.hadException()) 166 if (exceptionState.hadException())
157 return exceptionState.reject(scriptState); 167 return exceptionState.reject(scriptState);
158 168
159 return GetPrimaryServicesImpl( 169 return GetPrimaryServicesImpl(
160 scriptState, mojom::blink::WebBluetoothGATTQueryQuantity::MULTIPLE, 170 scriptState, mojom::blink::WebBluetoothGATTQueryQuantity::MULTIPLE,
161 serviceUUID); 171 serviceUUID);
162 } 172 }
163 173
164 ScriptPromise BluetoothRemoteGATTServer::getPrimaryServices( 174 ScriptPromise BluetoothRemoteGATTServer::getPrimaryServices(
165 ScriptState* scriptState, 175 ScriptState* scriptState,
166 ExceptionState&) { 176 ExceptionState&) {
177 RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction::GET_PRIMARY_SERVICES);
178
167 return GetPrimaryServicesImpl( 179 return GetPrimaryServicesImpl(
168 scriptState, mojom::blink::WebBluetoothGATTQueryQuantity::MULTIPLE); 180 scriptState, mojom::blink::WebBluetoothGATTQueryQuantity::MULTIPLE);
169 } 181 }
170 182
171 ScriptPromise BluetoothRemoteGATTServer::GetPrimaryServicesImpl( 183 ScriptPromise BluetoothRemoteGATTServer::GetPrimaryServicesImpl(
172 ScriptState* scriptState, 184 ScriptState* scriptState,
173 mojom::blink::WebBluetoothGATTQueryQuantity quantity, 185 mojom::blink::WebBluetoothGATTQueryQuantity quantity,
174 String servicesUUID) { 186 String servicesUUID) {
175 if (!m_connected) { 187 if (!m_connected) {
176 return ScriptPromise::rejectWithDOMException( 188 return ScriptPromise::rejectWithDOMException(
177 scriptState, BluetoothError::CreateNotConnectedException( 189 scriptState, BluetoothError::CreateNotConnectedException(
178 BluetoothOperation::ServicesRetrieval)); 190 BluetoothOperation::ServicesRetrieval));
179 } 191 }
180 192
181 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 193 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
182 ScriptPromise promise = resolver->promise(); 194 ScriptPromise promise = resolver->promise();
183 AddToActiveAlgorithms(resolver); 195 AddToActiveAlgorithms(resolver);
184 196
185 mojom::blink::WebBluetoothService* service = m_device->bluetooth()->Service(); 197 mojom::blink::WebBluetoothService* service = m_device->bluetooth()->Service();
186 service->RemoteServerGetPrimaryServices( 198 service->RemoteServerGetPrimaryServices(
187 m_device->id(), quantity, servicesUUID, 199 m_device->id(), quantity, servicesUUID,
188 convertToBaseCallback( 200 convertToBaseCallback(
189 WTF::bind(&BluetoothRemoteGATTServer::GetPrimaryServicesCallback, 201 WTF::bind(&BluetoothRemoteGATTServer::GetPrimaryServicesCallback,
190 wrapPersistent(this), servicesUUID, quantity, 202 wrapPersistent(this), servicesUUID, quantity,
191 wrapPersistent(resolver)))); 203 wrapPersistent(resolver))));
192 return promise; 204 return promise;
193 } 205 }
194 206
195 } // namespace blink 207 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698