summaryrefslogtreecommitdiffstats
path: root/device/bluetooth
diff options
context:
space:
mode:
authoryoungki@chromium.org <youngki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-12 09:14:07 +0000
committeryoungki@chromium.org <youngki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-12 09:14:07 +0000
commit7256c0f159b2ac0db3606b8b33bedaa7f672b58c (patch)
treeb68e4b6e7a6102403129dd605667ee9182511b7b /device/bluetooth
parent3a72769978d5d76ae95982b1f7b34b5743c3390f (diff)
downloadchromium_src-7256c0f159b2ac0db3606b8b33bedaa7f672b58c.zip
chromium_src-7256c0f159b2ac0db3606b8b33bedaa7f672b58c.tar.gz
chromium_src-7256c0f159b2ac0db3606b8b33bedaa7f672b58c.tar.bz2
Changed DefaultAdapter to RunCallbackOnAdapterReady function.
Instead of returning BluetoothAdapter instance directly, RunCallbackOnAdapterReady will run the callback with the instance of BluetoothAdapter. The idea is that we want to make sure that the BluetoothAdapter is used when it is fully initialized. Right now the function is still synchronous; the callback will be run immediately after BluetoothAdapter is created within BluetoothAdapterFactory::RunCallbackOnAdapterReady(), so nothing should be broken in BluetoothOptionsHandler and AshSystemTrayDelegate. But later I will eventually change BluetoothAdapterFactory::RunCallbackOnAdapterReady() asynchronous, so we should discuss how we change BluetoothOptionsHandler and AshTryDelegate. Jenny, could you make changes on BluetoothOptionsHandler and AshSystemTrayDelegate to accomodate asynchronous RunCallbackOnAdapterReady() calls? We can also discuss how to make those changes together. Also is BluetoothAdapterFactory::Create() ever used? Maybe this function will be needed in the future, but currently I don't see this function being called; can we just remove this if it is not used currently and add it back when we actually use it? I will update unittests soon, but I wanted to send this out so that I can get initial preliminary review first. BUG=135470 Review URL: https://chromiumcodereview.appspot.com/11819007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176523 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'device/bluetooth')
-rw-r--r--device/bluetooth/bluetooth_adapter_chromeos_unittest.cc454
-rw-r--r--device/bluetooth/bluetooth_adapter_devices_chromeos_unittest.cc10
-rw-r--r--device/bluetooth/bluetooth_adapter_factory.cc16
-rw-r--r--device/bluetooth/bluetooth_adapter_factory.h22
4 files changed, 285 insertions, 217 deletions
diff --git a/device/bluetooth/bluetooth_adapter_chromeos_unittest.cc b/device/bluetooth/bluetooth_adapter_chromeos_unittest.cc
index 890d241..e0bfef1 100644
--- a/device/bluetooth/bluetooth_adapter_chromeos_unittest.cc
+++ b/device/bluetooth/bluetooth_adapter_chromeos_unittest.cc
@@ -41,6 +41,7 @@ class BluetoothAdapterChromeOsTest : public testing::Test {
}
virtual void TearDown() {
+ adapter_ = NULL;
DBusThreadManager::Shutdown();
}
@@ -52,12 +53,18 @@ class BluetoothAdapterChromeOsTest : public testing::Test {
error_callback_called_ = true;
}
+ void SetAdapter(scoped_refptr<device::BluetoothAdapter> adapter) {
+ adapter_ = adapter;
+ }
+
protected:
MockBluetoothManagerClient* mock_manager_client_;
MockBluetoothAdapterClient* mock_adapter_client_;
bool set_callback_called_;
bool error_callback_called_;
+
+ scoped_refptr<BluetoothAdapter> adapter_;
};
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterNotPresent) {
@@ -68,22 +75,23 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterNotPresent) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
- ASSERT_TRUE(adapter.get() != NULL);
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
+ ASSERT_TRUE(adapter_ != NULL);
// Call the adapter callback; make out it failed.
// BluetoothAdapter::Observer::AdapterPresentChanged must not be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), _))
.Times(0);
adapter_callback.Run(dbus::ObjectPath(""), false);
// Adapter should not be present.
- EXPECT_FALSE(adapter->IsPresent());
+ EXPECT_FALSE(adapter_->IsPresent());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithAddress) {
@@ -97,8 +105,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithAddress) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -112,16 +121,16 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithAddress) {
// BluetoothAdapter::Observer::AdapterPresentChanged will be called to
// indicate the adapter is now present.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
adapter_callback.Run(adapter_path, true);
// Adapter should be present with the given address.
- EXPECT_TRUE(adapter->IsPresent());
- EXPECT_EQ(adapter_address, adapter->address());
+ EXPECT_TRUE(adapter_->IsPresent());
+ EXPECT_EQ(adapter_address, adapter_->address());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddress) {
@@ -135,8 +144,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddress) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -149,33 +159,33 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddress) {
// BluetoothAdapter::Observer::AdapterPresentChanged must not be called
// yet.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), _))
.Times(0);
adapter_callback.Run(adapter_path, true);
// Adapter should not be present yet.
- EXPECT_FALSE(adapter->IsPresent());
+ EXPECT_FALSE(adapter_->IsPresent());
// Tell the adapter the address now;
// BluetoothAdapter::Observer::AdapterPresentChanged now must be called.
adapter_properties.address.ReplaceValue(adapter_address);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.address.name());
// Adapter should be present with the given address.
- EXPECT_TRUE(adapter->IsPresent());
- EXPECT_EQ(adapter_address, adapter->address());
+ EXPECT_TRUE(adapter_->IsPresent());
+ EXPECT_EQ(adapter_address, adapter_->address());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterBecomesPresentWithAddress) {
@@ -189,8 +199,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterBecomesPresentWithAddress) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback; make out it failed.
adapter_callback.Run(dbus::ObjectPath(""), false);
@@ -206,20 +217,20 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterBecomesPresentWithAddress) {
// BluetoothAdapter::Observer::AdapterPresentChanged must be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->DefaultAdapterChanged(adapter_path);
// Adapter should be present with the new address.
- EXPECT_TRUE(adapter->IsPresent());
- EXPECT_EQ(adapter_address, adapter->address());
+ EXPECT_TRUE(adapter_->IsPresent());
+ EXPECT_EQ(adapter_address, adapter_->address());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithAddress) {
@@ -235,8 +246,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithAddress) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -262,22 +274,22 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithAddress) {
// with false to indicate the old adapter being removed and once with true
// to announce the new adapter.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->DefaultAdapterChanged(new_adapter_path);
// Adapter should be present with the new address.
- EXPECT_TRUE(adapter->IsPresent());
- EXPECT_EQ(new_adapter_address, adapter->address());
+ EXPECT_TRUE(adapter_->IsPresent());
+ EXPECT_EQ(new_adapter_address, adapter_->address());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -292,8 +304,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback; make out it failed.
adapter_callback.Run(dbus::ObjectPath(""), false);
@@ -308,25 +321,25 @@ TEST_F(BluetoothAdapterChromeOsTest,
// BluetoothAdapter::Observer::AdapterPresentChanged must not be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), _))
.Times(0);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->DefaultAdapterChanged(adapter_path);
// Adapter should not be present yet.
- EXPECT_FALSE(adapter->IsPresent());
+ EXPECT_FALSE(adapter_->IsPresent());
// Tell the adapter the address now;
// BluetoothAdapter::Observer::AdapterPresentChanged now must be called.
adapter_properties.address.ReplaceValue(adapter_address);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
@@ -334,8 +347,8 @@ TEST_F(BluetoothAdapterChromeOsTest,
adapter_properties.address.name());
// Adapter should be present with the new address.
- EXPECT_TRUE(adapter->IsPresent());
- EXPECT_EQ(adapter_address, adapter->address());
+ EXPECT_TRUE(adapter_->IsPresent());
+ EXPECT_EQ(adapter_address, adapter_->address());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithoutAddress) {
@@ -351,8 +364,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithoutAddress) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -376,25 +390,25 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithoutAddress) {
// BluetoothAdapter::Observer::AdapterPresentChanged must be called to
// indicate the adapter has gone away.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->DefaultAdapterChanged(new_adapter_path);
// Adapter should be now marked not present.
- EXPECT_FALSE(adapter->IsPresent());
+ EXPECT_FALSE(adapter_->IsPresent());
// Tell the adapter the address now;
// BluetoothAdapter::Observer::AdapterPresentChanged now must be called.
new_adapter_properties.address.ReplaceValue(new_adapter_address);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
@@ -402,8 +416,8 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithoutAddress) {
new_adapter_properties.address.name());
// Adapter should be present with the new address.
- EXPECT_TRUE(adapter->IsPresent());
- EXPECT_EQ(new_adapter_address, adapter->address());
+ EXPECT_TRUE(adapter_->IsPresent());
+ EXPECT_EQ(new_adapter_address, adapter_->address());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterRemoved) {
@@ -417,8 +431,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterRemoved) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -435,19 +450,19 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterRemoved) {
// BluetoothAdapter::Observer::AdapterPresentChanged will be called to
// indicate the adapter is no longer present.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->AdapterRemoved(adapter_path);
// Adapter should be no longer present.
- EXPECT_FALSE(adapter->IsPresent());
+ EXPECT_FALSE(adapter_->IsPresent());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddressRemoved) {
@@ -460,8 +475,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddressRemoved) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -477,19 +493,19 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddressRemoved) {
// BluetoothAdapter::Observer::AdapterPresentChanged must not be called
// since we never should have announced it in the first place.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), _))
.Times(0);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->AdapterRemoved(adapter_path);
// Adapter should be still no longer present.
- EXPECT_FALSE(adapter->IsPresent());
+ EXPECT_FALSE(adapter_->IsPresent());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -504,8 +520,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -520,7 +537,7 @@ TEST_F(BluetoothAdapterChromeOsTest,
adapter_callback.Run(adapter_path, true);
// Adapter should have the correct property value.
- EXPECT_FALSE(adapter->IsPowered());
+ EXPECT_FALSE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -535,8 +552,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -550,18 +568,18 @@ TEST_F(BluetoothAdapterChromeOsTest,
// BluetoothAdapter::Observer::AdapterPoweredChanged will be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
.Times(1);
adapter_callback.Run(adapter_path, true);
// Adapter should have the correct property value.
- EXPECT_TRUE(adapter->IsPowered());
+ EXPECT_TRUE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -576,8 +594,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -587,39 +606,39 @@ TEST_F(BluetoothAdapterChromeOsTest,
adapter_properties.powered.ReplaceValue(true);
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
.WillRepeatedly(Return(&adapter_properties));
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), _))
.Times(0);
adapter_callback.Run(adapter_path, true);
// Adapter should not yet have the property value.
- EXPECT_FALSE(adapter->IsPowered());
+ EXPECT_FALSE(adapter_->IsPowered());
// Tell the adapter the address now,
// BluetoothAdapter::Observer::AdapterPresentChanged and
// BluetoothAdapter::Observer::AdapterPoweredChanged now must be called.
adapter_properties.address.ReplaceValue(adapter_address);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.address.name());
// Adapter should have the correct property value.
- EXPECT_TRUE(adapter->IsPowered());
+ EXPECT_TRUE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyChanged) {
@@ -633,8 +652,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyChanged) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -649,27 +669,27 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyChanged) {
adapter_callback.Run(adapter_path, true);
// Adapter should have the correct property value.
- EXPECT_FALSE(adapter->IsPowered());
+ EXPECT_FALSE(adapter_->IsPowered());
// Report that the property has been changed;
// BluetoothAdapter::Observer::AdapterPoweredChanged will be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
.Times(1);
adapter_properties.powered.ReplaceValue(true);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.powered.name());
// Adapter should have the new property values.
- EXPECT_TRUE(adapter->IsPowered());
+ EXPECT_TRUE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyUnchanged) {
@@ -683,8 +703,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyUnchanged) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -699,25 +720,25 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyUnchanged) {
adapter_callback.Run(adapter_path, true);
// Adapter should have the correct property value.
- EXPECT_TRUE(adapter->IsPowered());
+ EXPECT_TRUE(adapter_->IsPowered());
// Report that the property has been changed, but don't change the value;
// BluetoothAdapter::Observer::AdapterPoweredChanged should not be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), _))
.Times(0);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.powered.name());
// Adapter should still have the same property values.
- EXPECT_TRUE(adapter->IsPowered());
+ EXPECT_TRUE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -732,8 +753,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -742,12 +764,12 @@ TEST_F(BluetoothAdapterChromeOsTest,
MockBluetoothAdapterClient::Properties adapter_properties;
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
.WillRepeatedly(Return(&adapter_properties));
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), _))
.Times(0);
adapter_callback.Run(adapter_path, true);
@@ -757,28 +779,28 @@ TEST_F(BluetoothAdapterChromeOsTest,
// the adapter so it is not present.
adapter_properties.powered.ReplaceValue(true);
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), _))
.Times(0);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.powered.name());
// Adapter should not yet have the property value.
- EXPECT_FALSE(adapter->IsPowered());
+ EXPECT_FALSE(adapter_->IsPowered());
// Tell the adapter the address now,
// BluetoothAdapter::Observer::AdapterPresentChanged and
// BluetoothAdapter::Observer::AdapterPoweredChanged now must be called.
adapter_properties.address.ReplaceValue(adapter_address);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
.Times(1);
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
@@ -786,7 +808,7 @@ TEST_F(BluetoothAdapterChromeOsTest,
adapter_properties.address.name());
// Adapter should now have the correct property value.
- EXPECT_TRUE(adapter->IsPowered());
+ EXPECT_TRUE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -803,8 +825,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -829,28 +852,28 @@ TEST_F(BluetoothAdapterChromeOsTest,
// BluetoothAdapter::Observer::AdapterPoweredChanged will be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
{
InSequence s;
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
}
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), false))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->DefaultAdapterChanged(new_adapter_path);
// Adapter should have the new property value.
- EXPECT_FALSE(adapter->IsPowered());
+ EXPECT_FALSE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -867,8 +890,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -896,34 +920,34 @@ TEST_F(BluetoothAdapterChromeOsTest,
// to set the value to false for the previous adapter and once to set the
// value to true for the new adapter.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
{
InSequence s;
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
}
{
InSequence s;
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
.Times(1);
}
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->DefaultAdapterChanged(new_adapter_path);
// Adapter should have the new property value.
- EXPECT_TRUE(adapter->IsPowered());
+ EXPECT_TRUE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -938,8 +962,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -956,21 +981,21 @@ TEST_F(BluetoothAdapterChromeOsTest,
// Report that the adapter has been removed;
// BluetoothAdapter::Observer::AdapterPoweredChanged will be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), false))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->AdapterRemoved(adapter_path);
// Adapter should have the new property value.
- EXPECT_FALSE(adapter->IsPowered());
+ EXPECT_FALSE(adapter_->IsPowered());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPowered) {
@@ -984,8 +1009,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPowered) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1004,7 +1030,7 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPowered) {
EXPECT_CALL(adapter_properties, Set(&adapter_properties.powered, _))
.WillOnce(SaveArg<1>(&set_callback));
- adapter->SetPowered(true,
+ adapter_->SetPowered(true,
base::Bind(&BluetoothAdapterChromeOsTest::SetCallback,
base::Unretained(this)),
base::Bind(&BluetoothAdapterChromeOsTest::ErrorCallback,
@@ -1032,8 +1058,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPoweredError) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1052,11 +1079,11 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPoweredError) {
EXPECT_CALL(adapter_properties, Set(&adapter_properties.powered, _))
.WillOnce(SaveArg<1>(&set_callback));
- adapter->SetPowered(true,
- base::Bind(&BluetoothAdapterChromeOsTest::SetCallback,
- base::Unretained(this)),
- base::Bind(&BluetoothAdapterChromeOsTest::ErrorCallback,
- base::Unretained(this)));
+ adapter_->SetPowered(true,
+ base::Bind(&BluetoothAdapterChromeOsTest::SetCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothAdapterChromeOsTest::ErrorCallback,
+ base::Unretained(this)));
// Reply to the callback to indicate failure, the error callback we provided
// should be called but the properties should not be refetched.
@@ -1081,8 +1108,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1097,7 +1125,7 @@ TEST_F(BluetoothAdapterChromeOsTest,
adapter_callback.Run(adapter_path, true);
// Adapter should have the correct property value.
- EXPECT_FALSE(adapter->IsDiscovering());
+ EXPECT_FALSE(adapter_->IsDiscovering());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -1112,8 +1140,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1127,18 +1156,18 @@ TEST_F(BluetoothAdapterChromeOsTest,
// BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), true))
.Times(1);
adapter_callback.Run(adapter_path, true);
// Adapter should have the correct property value.
- EXPECT_TRUE(adapter->IsDiscovering());
+ EXPECT_TRUE(adapter_->IsDiscovering());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -1153,8 +1182,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1164,39 +1194,39 @@ TEST_F(BluetoothAdapterChromeOsTest,
adapter_properties.discovering.ReplaceValue(true);
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
.WillRepeatedly(Return(&adapter_properties));
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), _))
.Times(0);
adapter_callback.Run(adapter_path, true);
// Adapter should not yet have the property value.
- EXPECT_FALSE(adapter->IsDiscovering());
+ EXPECT_FALSE(adapter_->IsDiscovering());
// Tell the adapter the address now,
// BluetoothAdapter::Observer::AdapterPresentChanged and
// BluetoothAdapter::Observer::AdapterDiscoveringChanged now must be called.
adapter_properties.address.ReplaceValue(adapter_address);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), true))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.address.name());
// Adapter should have the correct property value.
- EXPECT_TRUE(adapter->IsDiscovering());
+ EXPECT_TRUE(adapter_->IsDiscovering());
}
TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterDiscoveringPropertyChanged) {
@@ -1210,8 +1240,9 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterDiscoveringPropertyChanged) {
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1226,27 +1257,27 @@ TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterDiscoveringPropertyChanged) {
adapter_callback.Run(adapter_path, true);
// Adapter should have the correct property value.
- EXPECT_FALSE(adapter->IsDiscovering());
+ EXPECT_FALSE(adapter_->IsDiscovering());
// Report that the property has been changed;
// BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), true))
.Times(1);
adapter_properties.discovering.ReplaceValue(true);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.discovering.name());
// Adapter should have the new property values.
- EXPECT_TRUE(adapter->IsDiscovering());
+ EXPECT_TRUE(adapter_->IsDiscovering());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -1261,8 +1292,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1277,26 +1309,26 @@ TEST_F(BluetoothAdapterChromeOsTest,
adapter_callback.Run(adapter_path, true);
// Adapter should have the correct property value.
- EXPECT_TRUE(adapter->IsDiscovering());
+ EXPECT_TRUE(adapter_->IsDiscovering());
// Report that the property has been changed, but don't change the value;
// BluetoothAdapter::Observer::AdapterDiscoveringChanged should not be
// called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), _))
.Times(0);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.discovering.name());
// Adapter should still have the same property values.
- EXPECT_TRUE(adapter->IsDiscovering());
+ EXPECT_TRUE(adapter_->IsDiscovering());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -1311,8 +1343,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1321,12 +1354,12 @@ TEST_F(BluetoothAdapterChromeOsTest,
MockBluetoothAdapterClient::Properties adapter_properties;
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
.WillRepeatedly(Return(&adapter_properties));
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), _))
.Times(0);
adapter_callback.Run(adapter_path, true);
@@ -1336,28 +1369,28 @@ TEST_F(BluetoothAdapterChromeOsTest,
// the adapter so it is not present.
adapter_properties.discovering.ReplaceValue(true);
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), _))
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), _))
.Times(0);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
->AdapterPropertyChanged(adapter_path,
adapter_properties.discovering.name());
// Adapter should not yet have the property value.
- EXPECT_FALSE(adapter->IsDiscovering());
+ EXPECT_FALSE(adapter_->IsDiscovering());
// Tell the adapter the address now,
// BluetoothAdapter::Observer::AdapterPresentChanged and
// BluetoothAdapter::Observer::AdapterDiscoveringChanged now must be called.
adapter_properties.address.ReplaceValue(adapter_address);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), true))
.Times(1);
static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
@@ -1365,7 +1398,7 @@ TEST_F(BluetoothAdapterChromeOsTest,
adapter_properties.address.name());
// Adapter should now have the correct property value.
- EXPECT_TRUE(adapter->IsDiscovering());
+ EXPECT_TRUE(adapter_->IsDiscovering());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -1382,8 +1415,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1408,28 +1442,29 @@ TEST_F(BluetoothAdapterChromeOsTest,
// BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
{
InSequence s;
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
}
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer,
+ AdapterDiscoveringChanged(adapter_.get(), false))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->DefaultAdapterChanged(new_adapter_path);
// Adapter should have the new property value.
- EXPECT_FALSE(adapter->IsDiscovering());
+ EXPECT_FALSE(adapter_->IsDiscovering());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -1446,8 +1481,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1475,36 +1511,36 @@ TEST_F(BluetoothAdapterChromeOsTest,
// to set the value to false for the previous adapter and once to set the
// value to true for the new adapter.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
{
InSequence s;
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
.Times(1);
}
{
InSequence s;
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(),
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(),
false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(),
+ EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(),
true))
.Times(1);
}
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->DefaultAdapterChanged(new_adapter_path);
// Adapter should have the new property value.
- EXPECT_TRUE(adapter->IsDiscovering());
+ EXPECT_TRUE(adapter_->IsDiscovering());
}
TEST_F(BluetoothAdapterChromeOsTest,
@@ -1519,8 +1555,9 @@ TEST_F(BluetoothAdapterChromeOsTest,
EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
.WillOnce(SaveArg<0>(&adapter_callback));
- scoped_refptr<BluetoothAdapter> adapter =
- BluetoothAdapterFactory::DefaultAdapter();
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
+ base::Unretained(this)));
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -1537,21 +1574,22 @@ TEST_F(BluetoothAdapterChromeOsTest,
// Report that the adapter has been removed;
// BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called.
MockBluetoothAdapter::Observer adapter_observer;
- adapter->AddObserver(&adapter_observer);
+ adapter_->AddObserver(&adapter_observer);
- EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
.Times(1);
- EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), false))
+ EXPECT_CALL(adapter_observer,
+ AdapterDiscoveringChanged(adapter_.get(), false))
.Times(1);
BluetoothAdapterChromeOs* adapter_chromeos =
- static_cast<BluetoothAdapterChromeOs*>(adapter.get());
+ static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
->AdapterRemoved(adapter_path);
// Adapter should have the new property value.
- EXPECT_FALSE(adapter->IsDiscovering());
+ EXPECT_FALSE(adapter_->IsDiscovering());
}
} // namespace chromeos
diff --git a/device/bluetooth/bluetooth_adapter_devices_chromeos_unittest.cc b/device/bluetooth/bluetooth_adapter_devices_chromeos_unittest.cc
index ac7677b..bf5a04b 100644
--- a/device/bluetooth/bluetooth_adapter_devices_chromeos_unittest.cc
+++ b/device/bluetooth/bluetooth_adapter_devices_chromeos_unittest.cc
@@ -52,8 +52,10 @@ class BluetoothAdapterDevicesChromeOsTest : public testing::Test {
EXPECT_CALL(*mock_adapter_client_, AddObserver(_))
.Times(1);
- adapter_ = BluetoothAdapterFactory::DefaultAdapter();
- ASSERT_TRUE(adapter_.get() != NULL);
+ BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ base::Bind(&BluetoothAdapterDevicesChromeOsTest::SetAdapter,
+ base::Unretained(this)));
+ ASSERT_TRUE(adapter_ != NULL);
// Call the adapter callback;
// BluetoothAdapterClient::GetProperties will be called once to obtain
@@ -96,6 +98,10 @@ class BluetoothAdapterDevicesChromeOsTest : public testing::Test {
DBusThreadManager::Shutdown();
}
+ void SetAdapter(scoped_refptr<device::BluetoothAdapter> adapter) {
+ adapter_ = adapter;
+ }
+
protected:
MockBluetoothManagerClient* mock_manager_client_;
MockBluetoothAdapterClient* mock_adapter_client_;
diff --git a/device/bluetooth/bluetooth_adapter_factory.cc b/device/bluetooth/bluetooth_adapter_factory.cc
index 03d633f..2e8dac0 100644
--- a/device/bluetooth/bluetooth_adapter_factory.cc
+++ b/device/bluetooth/bluetooth_adapter_factory.cc
@@ -27,7 +27,16 @@ base::LazyInstance<base::WeakPtr<device::BluetoothAdapter> >::Leaky
namespace device {
// static
-scoped_refptr<BluetoothAdapter> BluetoothAdapterFactory::DefaultAdapter() {
+bool BluetoothAdapterFactory::IsBluetoothAdapterAvailable() {
+#if defined(OS_CHROMEOS)
+ return true;
+#endif
+ return false;
+}
+
+// static
+void BluetoothAdapterFactory::RunCallbackOnAdapterReady(
+ const AdapterCallback& callback) {
if (!default_adapter.Get().get()) {
#if defined(OS_CHROMEOS)
chromeos::BluetoothAdapterChromeOs* new_adapter =
@@ -37,6 +46,11 @@ scoped_refptr<BluetoothAdapter> BluetoothAdapterFactory::DefaultAdapter() {
#endif
}
+ callback.Run(scoped_refptr<BluetoothAdapter>(default_adapter.Get()));
+}
+
+// static
+scoped_refptr<BluetoothAdapter> BluetoothAdapterFactory::GetAdapter() {
return scoped_refptr<BluetoothAdapter>(default_adapter.Get());
}
diff --git a/device/bluetooth/bluetooth_adapter_factory.h b/device/bluetooth/bluetooth_adapter_factory.h
index 82e1e6f..6923f7a 100644
--- a/device/bluetooth/bluetooth_adapter_factory.h
+++ b/device/bluetooth/bluetooth_adapter_factory.h
@@ -7,6 +7,7 @@
#include <string>
+#include "base/callback.h"
#include "base/memory/ref_counted.h"
namespace device {
@@ -14,15 +15,24 @@ namespace device {
class BluetoothAdapter;
// BluetoothAdapterFactory is a class that contains static methods, which
-// instantiate either a specific bluetooth adapter, or the generic "default
+// instantiate either a specific Bluetooth adapter, or the generic "default
// adapter" which may change depending on availability.
class BluetoothAdapterFactory {
public:
- // Returns the shared instance for the default adapter, whichever that may
- // be at the time. Check the returned scoped_refptr does not point to NULL and
- // use IsPresent() and the AdapterPresentChanged() observer method to
- // determine whether an adapter is actually available or not.
- static scoped_refptr<BluetoothAdapter> DefaultAdapter();
+ typedef base::Callback<void(scoped_refptr<device::BluetoothAdapter> adapter)>
+ AdapterCallback;
+
+ // Returns true if the Bluetooth adapter is available for the current
+ // platform.
+ static bool IsBluetoothAdapterAvailable();
+
+ // Runs the callback with the shared instance for the default adapter when the
+ // adapter is available to be used.
+ static void RunCallbackOnAdapterReady(const AdapterCallback& callback);
+
+ // Returns the shared instance of the adapter that has already been created.
+ // It returns NULL if no adapter has been created at the time.
+ static scoped_refptr<BluetoothAdapter> GetAdapter();
// Creates an instance for a specific adapter at address |address|.
static BluetoothAdapter* Create(const std::string& address);