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

Unified Diff: content/browser/bluetooth/bluetooth_dispatcher_host.cc

Issue 1775953004: bluetooth: Move writeValue to mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@my-origin
Patch Set: Address scheib's comments Created 4 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/bluetooth/bluetooth_dispatcher_host.cc
diff --git a/content/browser/bluetooth/bluetooth_dispatcher_host.cc b/content/browser/bluetooth/bluetooth_dispatcher_host.cc
index ed47a5a843bfb3815c98e651aa51048aafde6157..09ffc304e93df530c3588c9c5db48c6c82abf6a2 100644
--- a/content/browser/bluetooth/bluetooth_dispatcher_host.cc
+++ b/content/browser/bluetooth/bluetooth_dispatcher_host.cc
@@ -21,10 +21,8 @@
#include "base/thread_task_runner_handle.h"
#include "content/browser/bad_message.h"
#include "content/browser/bluetooth/bluetooth_blacklist.h"
-#include "content/browser/bluetooth/bluetooth_metrics.h"
#include "content/browser/bluetooth/first_device_bluetooth_chooser.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
-#include "content/common/bluetooth/bluetooth_messages.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
@@ -169,7 +167,7 @@ WebBluetoothError TranslateConnectError(
return WebBluetoothError::UNTRANSLATED_CONNECT_ERROR_CODE;
}
-blink::WebBluetoothError TranslateGATTError(
+WebBluetoothError TranslateGATTError(
BluetoothGattService::GattErrorCode error_code,
UMAGATTOperation operation) {
switch (error_code) {
@@ -310,7 +308,6 @@ bool BluetoothDispatcherHost::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(BluetoothHostMsg_GetCharacteristic, OnGetCharacteristic)
IPC_MESSAGE_HANDLER(BluetoothHostMsg_GetCharacteristics, OnGetCharacteristics)
IPC_MESSAGE_HANDLER(BluetoothHostMsg_ReadValue, OnReadValue)
- IPC_MESSAGE_HANDLER(BluetoothHostMsg_WriteValue, OnWriteValue)
IPC_MESSAGE_HANDLER(BluetoothHostMsg_StartNotifications, OnStartNotifications)
IPC_MESSAGE_HANDLER(BluetoothHostMsg_StopNotifications, OnStopNotifications)
IPC_MESSAGE_HANDLER(BluetoothHostMsg_RegisterCharacteristic,
@@ -409,40 +406,31 @@ struct BluetoothDispatcherHost::RequestDeviceSession {
scoped_ptr<device::BluetoothDiscoverySession> discovery_session;
};
-struct BluetoothDispatcherHost::CacheQueryResult {
- CacheQueryResult()
- : device(nullptr),
- service(nullptr),
- characteristic(nullptr),
- outcome(CacheQueryOutcome::SUCCESS) {}
- CacheQueryResult(CacheQueryOutcome outcome)
- : device(nullptr),
- service(nullptr),
- characteristic(nullptr),
- outcome(outcome) {}
- ~CacheQueryResult() {}
- WebBluetoothError GetWebError() const {
- switch (outcome) {
- case CacheQueryOutcome::SUCCESS:
- case CacheQueryOutcome::BAD_RENDERER:
- NOTREACHED();
- return WebBluetoothError::DEVICE_NO_LONGER_IN_RANGE;
- case CacheQueryOutcome::NO_DEVICE:
- return WebBluetoothError::DEVICE_NO_LONGER_IN_RANGE;
- case CacheQueryOutcome::NO_SERVICE:
- return WebBluetoothError::SERVICE_NO_LONGER_EXISTS;
- case CacheQueryOutcome::NO_CHARACTERISTIC:
- return WebBluetoothError::CHARACTERISTIC_NO_LONGER_EXISTS;
- }
- NOTREACHED();
- return WebBluetoothError::DEVICE_NO_LONGER_IN_RANGE;
- }
+BluetoothDispatcherHost::CacheQueryResult::CacheQueryResult() {}
- device::BluetoothDevice* device;
- device::BluetoothGattService* service;
- device::BluetoothGattCharacteristic* characteristic;
- CacheQueryOutcome outcome;
-};
+BluetoothDispatcherHost::CacheQueryResult::CacheQueryResult(
+ CacheQueryOutcome outcome)
+ : outcome(outcome) {}
+
+BluetoothDispatcherHost::CacheQueryResult::~CacheQueryResult() {}
+
+WebBluetoothError BluetoothDispatcherHost::CacheQueryResult::GetWebError()
+ const {
+ switch (outcome) {
+ case CacheQueryOutcome::SUCCESS:
+ case CacheQueryOutcome::BAD_RENDERER:
+ NOTREACHED();
+ return WebBluetoothError::DEVICE_NO_LONGER_IN_RANGE;
+ case CacheQueryOutcome::NO_DEVICE:
+ return WebBluetoothError::DEVICE_NO_LONGER_IN_RANGE;
+ case CacheQueryOutcome::NO_SERVICE:
+ return WebBluetoothError::SERVICE_NO_LONGER_EXISTS;
+ case CacheQueryOutcome::NO_CHARACTERISTIC:
+ return WebBluetoothError::CHARACTERISTIC_NO_LONGER_EXISTS;
+ }
+ NOTREACHED();
+ return WebBluetoothError::DEVICE_NO_LONGER_IN_RANGE;
+}
struct BluetoothDispatcherHost::PrimaryServicesRequest {
enum CallingFunction { GET_PRIMARY_SERVICE, GET_PRIMARY_SERVICES };
@@ -987,56 +975,6 @@ void BluetoothDispatcherHost::OnReadValue(
weak_ptr_on_ui_thread_, thread_id, request_id));
}
-void BluetoothDispatcherHost::OnWriteValue(
- int thread_id,
- int request_id,
- int frame_routing_id,
- const std::string& characteristic_instance_id,
- const std::vector<uint8_t>& value) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- RecordWebBluetoothFunctionCall(
- UMAWebBluetoothFunction::CHARACTERISTIC_WRITE_VALUE);
-
- // Length check per step 3 of writeValue algorithm:
- // https://webbluetoothchrome.github.io/web-bluetooth/#dom-bluetoothgattcharacteristic-writevalue
- // We perform the length check on the renderer side. So if we
- // get a value with length > 512, we can assume it's a hostile
- // renderer and kill it.
- if (value.size() > 512) {
- bad_message::ReceivedBadMessage(
- this, bad_message::BDH_INVALID_WRITE_VALUE_LENGTH);
- return;
- }
-
- const CacheQueryResult query_result = QueryCacheForCharacteristic(
- GetOrigin(frame_routing_id), characteristic_instance_id);
-
- if (query_result.outcome == CacheQueryOutcome::BAD_RENDERER) {
- return;
- }
-
- if (query_result.outcome != CacheQueryOutcome::SUCCESS) {
- RecordCharacteristicWriteValueOutcome(query_result.outcome);
- Send(new BluetoothMsg_WriteCharacteristicValueError(
- thread_id, request_id, query_result.GetWebError()));
- return;
- }
-
- if (BluetoothBlacklist::Get().IsExcludedFromWrites(
- query_result.characteristic->GetUUID())) {
- RecordCharacteristicWriteValueOutcome(UMAGATTOperationOutcome::BLACKLISTED);
- Send(new BluetoothMsg_WriteCharacteristicValueError(
- thread_id, request_id, WebBluetoothError::BLACKLISTED_WRITE));
- return;
- }
-
- query_result.characteristic->WriteRemoteCharacteristic(
- value, base::Bind(&BluetoothDispatcherHost::OnWriteValueSuccess,
- weak_ptr_on_ui_thread_, thread_id, request_id),
- base::Bind(&BluetoothDispatcherHost::OnWriteValueFailed,
- weak_ptr_on_ui_thread_, thread_id, request_id));
-}
-
void BluetoothDispatcherHost::OnStartNotifications(
int thread_id,
int request_id,
@@ -1524,24 +1462,6 @@ void BluetoothDispatcherHost::OnCharacteristicReadValueError(
TranslateGATTError(error_code, UMAGATTOperation::CHARACTERISTIC_READ)));
}
-void BluetoothDispatcherHost::OnWriteValueSuccess(int thread_id,
- int request_id) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- RecordCharacteristicWriteValueOutcome(UMAGATTOperationOutcome::SUCCESS);
- Send(new BluetoothMsg_WriteCharacteristicValueSuccess(thread_id, request_id));
-}
-
-void BluetoothDispatcherHost::OnWriteValueFailed(
- int thread_id,
- int request_id,
- device::BluetoothGattService::GattErrorCode error_code) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- // TranslateGATTError calls RecordGATTOperationOutcome.
- Send(new BluetoothMsg_WriteCharacteristicValueError(
- thread_id, request_id,
- TranslateGATTError(error_code, UMAGATTOperation::CHARACTERISTIC_WRITE)));
-}
-
void BluetoothDispatcherHost::OnStartNotifySessionSuccess(
int thread_id,
int request_id,
« no previous file with comments | « content/browser/bluetooth/bluetooth_dispatcher_host.h ('k') | content/browser/bluetooth/web_bluetooth_service_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698