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

Unified Diff: device/bluetooth/bluetooth_pairing_chromeos.cc

Issue 1415573014: Reland "Add Linux support for the Bluetooth API" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: build fix. Created 5 years, 1 month 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: device/bluetooth/bluetooth_pairing_chromeos.cc
diff --git a/device/bluetooth/bluetooth_pairing_chromeos.cc b/device/bluetooth/bluetooth_pairing_chromeos.cc
deleted file mode 100644
index 4541fb3810bf11ec40527aafe29d42741b85a8b5..0000000000000000000000000000000000000000
--- a/device/bluetooth/bluetooth_pairing_chromeos.cc
+++ /dev/null
@@ -1,275 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "device/bluetooth/bluetooth_pairing_chromeos.h"
-
-#include "base/logging.h"
-#include "base/metrics/histogram.h"
-#include "device/bluetooth/bluetooth_device.h"
-#include "device/bluetooth/bluetooth_device_chromeos.h"
-
-using device::BluetoothDevice;
-
-namespace {
-
-// Histogram enumerations for pairing methods.
-enum UMAPairingMethod {
- UMA_PAIRING_METHOD_NONE,
- UMA_PAIRING_METHOD_REQUEST_PINCODE,
- UMA_PAIRING_METHOD_REQUEST_PASSKEY,
- UMA_PAIRING_METHOD_DISPLAY_PINCODE,
- UMA_PAIRING_METHOD_DISPLAY_PASSKEY,
- UMA_PAIRING_METHOD_CONFIRM_PASSKEY,
- // NOTE: Add new pairing methods immediately above this line. Make sure to
- // update the enum list in tools/histogram/histograms.xml accordingly.
- UMA_PAIRING_METHOD_COUNT
-};
-
-// Number of keys that will be entered for a passkey, six digits plus the
-// final enter.
-const uint16 kPasskeyMaxKeysEntered = 7;
-
-} // namespace
-
-namespace chromeos {
-
-BluetoothPairingChromeOS::BluetoothPairingChromeOS(
- BluetoothDeviceChromeOS* device,
- BluetoothDevice::PairingDelegate* pairing_delegate)
- : device_(device),
- pairing_delegate_(pairing_delegate),
- pairing_delegate_used_(false) {
- VLOG(1) << "Created BluetoothPairingChromeOS for "
- << device_->GetAddress();
-}
-
-BluetoothPairingChromeOS::~BluetoothPairingChromeOS() {
- VLOG(1) << "Destroying BluetoothPairingChromeOS for "
- << device_->GetAddress();
-
- if (!pairing_delegate_used_) {
- UMA_HISTOGRAM_ENUMERATION("Bluetooth.PairingMethod",
- UMA_PAIRING_METHOD_NONE,
- UMA_PAIRING_METHOD_COUNT);
- }
-
- if (!pincode_callback_.is_null()) {
- pincode_callback_.Run(
- bluez::BluetoothAgentServiceProvider::Delegate::CANCELLED, "");
- }
-
- if (!passkey_callback_.is_null()) {
- passkey_callback_.Run(
- bluez::BluetoothAgentServiceProvider::Delegate::CANCELLED, 0);
- }
-
- if (!confirmation_callback_.is_null()) {
- confirmation_callback_.Run(
- bluez::BluetoothAgentServiceProvider::Delegate::CANCELLED);
- }
-
- pairing_delegate_ = NULL;
-}
-
-void BluetoothPairingChromeOS::RequestPinCode(
- const bluez::BluetoothAgentServiceProvider::Delegate::PinCodeCallback&
- callback) {
- UMA_HISTOGRAM_ENUMERATION("Bluetooth.PairingMethod",
- UMA_PAIRING_METHOD_REQUEST_PINCODE,
- UMA_PAIRING_METHOD_COUNT);
-
- ResetCallbacks();
- pincode_callback_ = callback;
- pairing_delegate_used_ = true;
- pairing_delegate_->RequestPinCode(device_);
-}
-
-bool BluetoothPairingChromeOS::ExpectingPinCode() const {
- return !pincode_callback_.is_null();
-}
-
-void BluetoothPairingChromeOS::SetPinCode(const std::string& pincode) {
- if (pincode_callback_.is_null())
- return;
-
- pincode_callback_.Run(bluez::BluetoothAgentServiceProvider::Delegate::SUCCESS,
- pincode);
- pincode_callback_.Reset();
-
- // If this is not an outgoing connection to the device, clean up the pairing
- // context since the pairing is done. The outgoing connection case is cleaned
- // up in the callback for the underlying Pair() call.
- if (!device_->IsConnecting())
- device_->EndPairing();
-}
-
-void BluetoothPairingChromeOS::DisplayPinCode(const std::string& pincode) {
- UMA_HISTOGRAM_ENUMERATION("Bluetooth.PairingMethod",
- UMA_PAIRING_METHOD_DISPLAY_PINCODE,
- UMA_PAIRING_METHOD_COUNT);
-
- ResetCallbacks();
- pairing_delegate_used_ = true;
- pairing_delegate_->DisplayPinCode(device_, pincode);
-
- // If this is not an outgoing connection to the device, the pairing context
- // needs to be cleaned up again as there's no reliable indication of
- // completion of incoming pairing.
- if (!device_->IsConnecting())
- device_->EndPairing();
-}
-
-void BluetoothPairingChromeOS::RequestPasskey(
- const bluez::BluetoothAgentServiceProvider::Delegate::PasskeyCallback&
- callback) {
- UMA_HISTOGRAM_ENUMERATION("Bluetooth.PairingMethod",
- UMA_PAIRING_METHOD_REQUEST_PASSKEY,
- UMA_PAIRING_METHOD_COUNT);
-
- ResetCallbacks();
- passkey_callback_ = callback;
- pairing_delegate_used_ = true;
- pairing_delegate_->RequestPasskey(device_);
-}
-
-bool BluetoothPairingChromeOS::ExpectingPasskey() const {
- return !passkey_callback_.is_null();
-}
-
-void BluetoothPairingChromeOS::SetPasskey(uint32 passkey) {
- if (passkey_callback_.is_null())
- return;
-
- passkey_callback_.Run(bluez::BluetoothAgentServiceProvider::Delegate::SUCCESS,
- passkey);
- passkey_callback_.Reset();
-
- // If this is not an outgoing connection to the device, clean up the pairing
- // context since the pairing is done. The outgoing connection case is cleaned
- // up in the callback for the underlying Pair() call.
- if (!device_->IsConnecting())
- device_->EndPairing();
-}
-
-void BluetoothPairingChromeOS::DisplayPasskey(uint32 passkey) {
- UMA_HISTOGRAM_ENUMERATION("Bluetooth.PairingMethod",
- UMA_PAIRING_METHOD_DISPLAY_PASSKEY,
- UMA_PAIRING_METHOD_COUNT);
-
- ResetCallbacks();
- pairing_delegate_used_ = true;
- pairing_delegate_->DisplayPasskey(device_, passkey);
-}
-
-void BluetoothPairingChromeOS::KeysEntered(uint16 entered) {
- pairing_delegate_used_ = true;
- pairing_delegate_->KeysEntered(device_, entered);
-
- // If this is not an outgoing connection to the device, the pairing context
- // needs to be cleaned up again as there's no reliable indication of
- // completion of incoming pairing.
- if (entered >= kPasskeyMaxKeysEntered && !device_->IsConnecting())
- device_->EndPairing();
-}
-
-void BluetoothPairingChromeOS::RequestConfirmation(
- uint32 passkey,
- const bluez::BluetoothAgentServiceProvider::Delegate::ConfirmationCallback&
- callback) {
- UMA_HISTOGRAM_ENUMERATION("Bluetooth.PairingMethod",
- UMA_PAIRING_METHOD_CONFIRM_PASSKEY,
- UMA_PAIRING_METHOD_COUNT);
-
- ResetCallbacks();
- confirmation_callback_ = callback;
- pairing_delegate_used_ = true;
- pairing_delegate_->ConfirmPasskey(device_, passkey);
-}
-
-void BluetoothPairingChromeOS::RequestAuthorization(
- const bluez::BluetoothAgentServiceProvider::Delegate::ConfirmationCallback&
- callback) {
- UMA_HISTOGRAM_ENUMERATION("Bluetooth.PairingMethod",
- UMA_PAIRING_METHOD_NONE,
- UMA_PAIRING_METHOD_COUNT);
-
- ResetCallbacks();
- confirmation_callback_ = callback;
- pairing_delegate_used_ = true;
- pairing_delegate_->AuthorizePairing(device_);
-}
-
-bool BluetoothPairingChromeOS::ExpectingConfirmation() const {
- return !confirmation_callback_.is_null();
-}
-
-void BluetoothPairingChromeOS::ConfirmPairing() {
- if (confirmation_callback_.is_null())
- return;
-
- confirmation_callback_.Run(
- bluez::BluetoothAgentServiceProvider::Delegate::SUCCESS);
- confirmation_callback_.Reset();
-
- // If this is not an outgoing connection to the device, clean up the pairing
- // context since the pairing is done. The outgoing connection case is cleaned
- // up in the callback for the underlying Pair() call.
- if (!device_->IsConnecting())
- device_->EndPairing();
-}
-
-bool BluetoothPairingChromeOS::RejectPairing() {
- return RunPairingCallbacks(
- bluez::BluetoothAgentServiceProvider::Delegate::REJECTED);
-}
-
-bool BluetoothPairingChromeOS::CancelPairing() {
- return RunPairingCallbacks(
- bluez::BluetoothAgentServiceProvider::Delegate::CANCELLED);
-}
-
-BluetoothDevice::PairingDelegate*
-BluetoothPairingChromeOS::GetPairingDelegate() const {
- return pairing_delegate_;
-}
-
-void BluetoothPairingChromeOS::ResetCallbacks() {
- pincode_callback_.Reset();
- passkey_callback_.Reset();
- confirmation_callback_.Reset();
-}
-
-bool BluetoothPairingChromeOS::RunPairingCallbacks(
- bluez::BluetoothAgentServiceProvider::Delegate::Status status) {
- pairing_delegate_used_ = true;
-
- bool callback_run = false;
- if (!pincode_callback_.is_null()) {
- pincode_callback_.Run(status, "");
- pincode_callback_.Reset();
- callback_run = true;
- }
-
- if (!passkey_callback_.is_null()) {
- passkey_callback_.Run(status, 0);
- passkey_callback_.Reset();
- callback_run = true;
- }
-
- if (!confirmation_callback_.is_null()) {
- confirmation_callback_.Run(status);
- confirmation_callback_.Reset();
- callback_run = true;
- }
-
- // If this is not an outgoing connection to the device, clean up the pairing
- // context since the pairing is done. The outgoing connection case is cleaned
- // up in the callback for the underlying Pair() call.
- if (!device_->IsConnecting())
- device_->EndPairing();
-
- return callback_run;
-}
-
-} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698