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

Unified Diff: device/bluetooth/bluez/bluetooth_gatt_notify_session_bluez.cc

Issue 2051333004: Implement BluetoothGattNotifySession::Stop on Android, 2nd attempt (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address new review comments Created 4 years, 4 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: device/bluetooth/bluez/bluetooth_gatt_notify_session_bluez.cc
diff --git a/device/bluetooth/bluez/bluetooth_gatt_notify_session_bluez.cc b/device/bluetooth/bluez/bluetooth_gatt_notify_session_bluez.cc
deleted file mode 100644
index 0e979d88cca3f4af2facbf3048ddc5763c285c58..0000000000000000000000000000000000000000
--- a/device/bluetooth/bluez/bluetooth_gatt_notify_session_bluez.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2016 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/bluez/bluetooth_gatt_notify_session_bluez.h"
-
-#include "base/bind.h"
-#include "base/logging.h"
-#include "device/bluetooth/bluetooth_adapter.h"
-#include "device/bluetooth/bluetooth_device.h"
-#include "device/bluetooth/bluetooth_remote_gatt_service.h"
-#include "device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.h"
-#include "device/bluetooth/dbus/bluez_dbus_manager.h"
-
-namespace bluez {
-
-BluetoothGattNotifySessionBlueZ::BluetoothGattNotifySessionBlueZ(
- scoped_refptr<device::BluetoothAdapter> adapter,
- const std::string& device_address,
- const std::string& service_identifier,
- const std::string& characteristic_identifier,
- const dbus::ObjectPath& characteristic_path)
- : active_(true),
- adapter_(adapter),
- device_address_(device_address),
- service_id_(service_identifier),
- characteristic_id_(characteristic_identifier),
- object_path_(characteristic_path) {
- DCHECK(adapter_.get());
- DCHECK(!device_address_.empty());
- DCHECK(!service_id_.empty());
- DCHECK(!characteristic_id_.empty());
- DCHECK(object_path_.IsValid());
-
- bluez::BluezDBusManager::Get()
- ->GetBluetoothGattCharacteristicClient()
- ->AddObserver(this);
-}
-
-BluetoothGattNotifySessionBlueZ::~BluetoothGattNotifySessionBlueZ() {
- bluez::BluezDBusManager::Get()
- ->GetBluetoothGattCharacteristicClient()
- ->RemoveObserver(this);
- Stop(base::Bind(&base::DoNothing));
-}
-
-std::string BluetoothGattNotifySessionBlueZ::GetCharacteristicIdentifier()
- const {
- return characteristic_id_;
-}
-
-bool BluetoothGattNotifySessionBlueZ::IsActive() {
- // Determine if the session is active. If |active_| is false, then it's
- // been explicitly marked, so return false.
- if (!active_)
- return false;
-
- // The fact that |active_| is true doesn't mean that the session is
- // actually active, since the characteristic might have stopped sending
- // notifications yet this method was called before we processed the
- // observer event (e.g. because somebody else called this method in their
- // bluez::BluetoothGattCharacteristicClient::Observer implementation, which
- // was
- // called before ours). Check the client to see if notifications are still
- // being sent.
- bluez::BluetoothGattCharacteristicClient::Properties* properties =
- bluez::BluezDBusManager::Get()
- ->GetBluetoothGattCharacteristicClient()
- ->GetProperties(object_path_);
- if (!properties || !properties->notifying.value())
- active_ = false;
-
- return active_;
-}
-
-void BluetoothGattNotifySessionBlueZ::Stop(const base::Closure& callback) {
- if (!active_) {
- VLOG(1) << "Notify session already inactive.";
- callback.Run();
- return;
- }
-
- // Mark this session as inactive no matter what.
- active_ = false;
-
- device::BluetoothDevice* device = adapter_->GetDevice(device_address_);
- if (!device)
- return;
-
- device::BluetoothRemoteGattService* service =
- device->GetGattService(service_id_);
- if (!service)
- return;
-
- BluetoothRemoteGattCharacteristicBlueZ* chrc =
- static_cast<BluetoothRemoteGattCharacteristicBlueZ*>(
- service->GetCharacteristic(characteristic_id_));
- if (!chrc)
- return;
-
- chrc->RemoveNotifySession(callback);
-}
-
-void BluetoothGattNotifySessionBlueZ::GattCharacteristicRemoved(
- const dbus::ObjectPath& object_path) {
- if (object_path != object_path_)
- return;
-
- active_ = false;
-}
-
-void BluetoothGattNotifySessionBlueZ::GattCharacteristicPropertyChanged(
- const dbus::ObjectPath& object_path,
- const std::string& property_name) {
- if (object_path != object_path_)
- return;
-
- if (!active_)
- return;
-
- bluez::BluetoothGattCharacteristicClient::Properties* properties =
- bluez::BluezDBusManager::Get()
- ->GetBluetoothGattCharacteristicClient()
- ->GetProperties(object_path_);
- if (!properties) {
- active_ = false;
- return;
- }
-
- if (property_name == properties->notifying.name() &&
- !properties->notifying.value())
- active_ = false;
-}
-
-} // namespace bluez

Powered by Google App Engine
This is Rietveld 408576698