| Index: device/bluetooth/bluetooth_adapter_factory_wrapper.cc
|
| diff --git a/content/browser/bluetooth/bluetooth_adapter_factory_wrapper.cc b/device/bluetooth/bluetooth_adapter_factory_wrapper.cc
|
| similarity index 55%
|
| rename from content/browser/bluetooth/bluetooth_adapter_factory_wrapper.cc
|
| rename to device/bluetooth/bluetooth_adapter_factory_wrapper.cc
|
| index 5623d5177fc0740cb670a41ec8811c7655ae8744..50318965e7db8490fbc37b772d2fe84e664c3bd0 100644
|
| --- a/content/browser/bluetooth/bluetooth_adapter_factory_wrapper.cc
|
| +++ b/device/bluetooth/bluetooth_adapter_factory_wrapper.cc
|
| @@ -2,54 +2,48 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "content/browser/bluetooth/bluetooth_adapter_factory_wrapper.h"
|
| +#include "device/bluetooth/bluetooth_adapter_factory_wrapper.h"
|
|
|
| #include <stddef.h>
|
|
|
| #include <utility>
|
|
|
| +#include "base/bind.h"
|
| +#include "base/location.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| -#include "base/time/time.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| #include "device/bluetooth/bluetooth_adapter_factory.h"
|
|
|
| -using device::BluetoothAdapter;
|
| -using device::BluetoothAdapterFactory;
|
| -
|
| namespace {
|
| -// TODO(ortuno): Once we have a chooser for scanning and a way to control that
|
| -// chooser from tests we should delete this constant.
|
| -// https://crbug.com/436280
|
| -enum { kTestingScanDuration = 0 }; // No need to wait when testing.
|
| -enum { kScanDuration = 10 };
|
| -} // namespace
|
|
|
| -namespace content {
|
| +static base::LazyInstance<device::BluetoothAdapterFactoryWrapper>::Leaky
|
| + g_singleton = LAZY_INSTANCE_INITIALIZER;
|
|
|
| -BluetoothAdapterFactoryWrapper::BluetoothAdapterFactoryWrapper()
|
| - : scan_duration_(base::TimeDelta::FromSecondsD(kScanDuration)),
|
| - testing_(false),
|
| - weak_ptr_factory_(this) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| -}
|
| +} // namespace
|
| +
|
| +namespace device {
|
|
|
| BluetoothAdapterFactoryWrapper::~BluetoothAdapterFactoryWrapper() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| // All observers should have been removed already.
|
| DCHECK(adapter_observers_.empty());
|
| // Clear adapter.
|
| - set_adapter(scoped_refptr<device::BluetoothAdapter>());
|
| + set_adapter(scoped_refptr<BluetoothAdapter>());
|
| +}
|
| +
|
| +// static
|
| +BluetoothAdapterFactoryWrapper& BluetoothAdapterFactoryWrapper::Get() {
|
| + return g_singleton.Get();
|
| }
|
|
|
| bool BluetoothAdapterFactoryWrapper::IsBluetoothAdapterAvailable() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - return BluetoothAdapterFactory::IsBluetoothAdapterAvailable() || testing_;
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + return BluetoothAdapterFactory::IsBluetoothAdapterAvailable();
|
| }
|
|
|
| void BluetoothAdapterFactoryWrapper::AcquireAdapter(
|
| - device::BluetoothAdapter::Observer* observer,
|
| + BluetoothAdapter::Observer* observer,
|
| const AcquireAdapterCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| DCHECK(!GetAdapter(observer));
|
|
|
| AddAdapterObserver(observer);
|
| @@ -66,19 +60,19 @@ void BluetoothAdapterFactoryWrapper::AcquireAdapter(
|
| }
|
|
|
| void BluetoothAdapterFactoryWrapper::ReleaseAdapter(
|
| - device::BluetoothAdapter::Observer* observer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + BluetoothAdapter::Observer* observer) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| if (!HasAdapter(observer)) {
|
| return;
|
| }
|
| RemoveAdapterObserver(observer);
|
| if (adapter_observers_.empty())
|
| - set_adapter(scoped_refptr<device::BluetoothAdapter>());
|
| + set_adapter(scoped_refptr<BluetoothAdapter>());
|
| }
|
|
|
| BluetoothAdapter* BluetoothAdapterFactoryWrapper::GetAdapter(
|
| - device::BluetoothAdapter::Observer* observer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + BluetoothAdapter::Observer* observer) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| if (HasAdapter(observer)) {
|
| return adapter_.get();
|
| }
|
| @@ -86,30 +80,36 @@ BluetoothAdapter* BluetoothAdapterFactoryWrapper::GetAdapter(
|
| }
|
|
|
| void BluetoothAdapterFactoryWrapper::SetBluetoothAdapterForTesting(
|
| - scoped_refptr<device::BluetoothAdapter> mock_adapter) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - scan_duration_ = base::TimeDelta::FromSecondsD(kTestingScanDuration);
|
| - testing_ = true;
|
| + scoped_refptr<BluetoothAdapter> mock_adapter) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| set_adapter(std::move(mock_adapter));
|
| }
|
|
|
| +BluetoothAdapterFactoryWrapper::BluetoothAdapterFactoryWrapper()
|
| + : weak_ptr_factory_(this) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +}
|
| +
|
| void BluetoothAdapterFactoryWrapper::OnGetAdapter(
|
| const AcquireAdapterCallback& continuation,
|
| - scoped_refptr<device::BluetoothAdapter> adapter) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + scoped_refptr<BluetoothAdapter> adapter) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| set_adapter(adapter);
|
| continuation.Run(adapter_.get());
|
| }
|
|
|
| bool BluetoothAdapterFactoryWrapper::HasAdapter(
|
| - device::BluetoothAdapter::Observer* observer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + BluetoothAdapter::Observer* observer) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| return ContainsKey(adapter_observers_, observer);
|
| }
|
|
|
| void BluetoothAdapterFactoryWrapper::AddAdapterObserver(
|
| - device::BluetoothAdapter::Observer* observer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + BluetoothAdapter::Observer* observer) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| auto iter = adapter_observers_.insert(observer);
|
| DCHECK(iter.second);
|
| if (adapter_) {
|
| @@ -118,8 +118,9 @@ void BluetoothAdapterFactoryWrapper::AddAdapterObserver(
|
| }
|
|
|
| void BluetoothAdapterFactoryWrapper::RemoveAdapterObserver(
|
| - device::BluetoothAdapter::Observer* observer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + BluetoothAdapter::Observer* observer) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| size_t removed = adapter_observers_.erase(observer);
|
| DCHECK(removed);
|
| if (adapter_) {
|
| @@ -128,19 +129,20 @@ void BluetoothAdapterFactoryWrapper::RemoveAdapterObserver(
|
| }
|
|
|
| void BluetoothAdapterFactoryWrapper::set_adapter(
|
| - scoped_refptr<device::BluetoothAdapter> adapter) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + scoped_refptr<BluetoothAdapter> adapter) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| if (adapter_.get()) {
|
| - for (device::BluetoothAdapter::Observer* observer : adapter_observers_) {
|
| + for (BluetoothAdapter::Observer* observer : adapter_observers_) {
|
| adapter_->RemoveObserver(observer);
|
| }
|
| }
|
| adapter_ = adapter;
|
| if (adapter_.get()) {
|
| - for (device::BluetoothAdapter::Observer* observer : adapter_observers_) {
|
| + for (BluetoothAdapter::Observer* observer : adapter_observers_) {
|
| adapter_->AddObserver(observer);
|
| }
|
| }
|
| }
|
|
|
| -} // namespace content
|
| +} // namespace device
|
|
|