| Index: chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc
|
| diff --git a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..51f50e2f24fc5559216a4b3defc5905a92a842a2
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc
|
| @@ -0,0 +1,159 @@
|
| +// 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 "base/memory/scoped_ptr.h"
|
| +#include "chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.h"
|
| +#include "chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h"
|
| +#include "chrome/browser/extensions/extension_apitest.h"
|
| +#include "chrome/browser/extensions/extension_function_test_utils.h"
|
| +#include "chrome/browser/extensions/extension_test_message_listener.h"
|
| +#include "device/bluetooth/test/mock_bluetooth_adapter.h"
|
| +#include "device/bluetooth/test/mock_bluetooth_device.h"
|
| +#include "device/bluetooth/test/mock_bluetooth_gatt_service.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| +
|
| +using device::BluetoothUUID;
|
| +using device::BluetoothAdapter;
|
| +using device::BluetoothDevice;
|
| +using device::BluetoothGattService;
|
| +using device::MockBluetoothAdapter;
|
| +using device::MockBluetoothDevice;
|
| +using device::MockBluetoothGattService;
|
| +using testing::Return;
|
| +using testing::_;
|
| +
|
| +namespace utils = extension_function_test_utils;
|
| +
|
| +namespace {
|
| +
|
| +const char kTestLeDeviceAddress[] = "11:22:33:44:55:66";
|
| +const char kTestLeDeviceName[] = "Test LE Device";
|
| +
|
| +const char kTestServiceId0[] = "service_id0";
|
| +const char kTestServiceUuid0[] = "1234";
|
| +const char kTestServiceId1[] = "service_id1";
|
| +const char kTestServiceUuid1[] = "5678";
|
| +
|
| +class BluetoothLowEnergyApiTest : public ExtensionApiTest {
|
| + public:
|
| + BluetoothLowEnergyApiTest() {}
|
| +
|
| + virtual ~BluetoothLowEnergyApiTest() {}
|
| +
|
| + virtual void SetUpOnMainThread() OVERRIDE {
|
| + ExtensionApiTest::SetUpOnMainThread();
|
| + empty_extension_ = utils::CreateEmptyExtension();
|
| + SetUpMocks();
|
| + }
|
| +
|
| + virtual void CleanUpOnMainThread() OVERRIDE {
|
| + EXPECT_CALL(*mock_adapter_, RemoveObserver(_));
|
| + }
|
| +
|
| + void SetUpMocks() {
|
| + mock_adapter_ = new testing::StrictMock<MockBluetoothAdapter>();
|
| + EXPECT_CALL(*mock_adapter_, GetDevices())
|
| + .WillOnce(Return(BluetoothAdapter::ConstDeviceList()));
|
| +
|
| + event_router()->SetAdapterForTesting(mock_adapter_);
|
| +
|
| + device_.reset(
|
| + new testing::NiceMock<MockBluetoothDevice>(mock_adapter_,
|
| + 0,
|
| + kTestLeDeviceName,
|
| + kTestLeDeviceAddress,
|
| + false /* paired */,
|
| + true /* connected */));
|
| +
|
| + service0_.reset(new testing::NiceMock<MockBluetoothGattService>(
|
| + device_.get(),
|
| + kTestServiceId0,
|
| + BluetoothUUID(kTestServiceUuid0),
|
| + true /* is_primary */,
|
| + false /* is_local */));
|
| +
|
| + service1_.reset(new testing::NiceMock<MockBluetoothGattService>(
|
| + device_.get(),
|
| + kTestServiceId1,
|
| + BluetoothUUID(kTestServiceUuid1),
|
| + false /* is_primary */,
|
| + false /* is_local */));
|
| + }
|
| +
|
| + protected:
|
| + extensions::BluetoothLowEnergyEventRouter* event_router() {
|
| + return extensions::BluetoothLowEnergyAPI::Get(browser()->profile())
|
| + ->event_router();
|
| + }
|
| +
|
| + testing::StrictMock<MockBluetoothAdapter>* mock_adapter_;
|
| + scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device_;
|
| + scoped_ptr<testing::NiceMock<MockBluetoothGattService> > service0_;
|
| + scoped_ptr<testing::NiceMock<MockBluetoothGattService> > service1_;
|
| +
|
| + private:
|
| + scoped_refptr<extensions::Extension> empty_extension_;
|
| +};
|
| +
|
| +IN_PROC_BROWSER_TEST_F(BluetoothLowEnergyApiTest, GetServices) {
|
| + ResultCatcher catcher;
|
| + catcher.RestrictToProfile(browser()->profile());
|
| +
|
| + std::vector<BluetoothGattService*> services;
|
| + services.push_back(service0_.get());
|
| + services.push_back(service1_.get());
|
| +
|
| + EXPECT_CALL(*mock_adapter_, GetDevice(_))
|
| + .Times(3)
|
| + .WillOnce(Return(static_cast<BluetoothDevice*>(NULL)))
|
| + .WillRepeatedly(Return(device_.get()));
|
| +
|
| + EXPECT_CALL(*device_, GetGattServices())
|
| + .Times(2)
|
| + .WillOnce(Return(std::vector<BluetoothGattService*>()))
|
| + .WillOnce(Return(services));
|
| +
|
| + // Load and wait for setup.
|
| + ExtensionTestMessageListener listener("ready", true);
|
| + ASSERT_TRUE(LoadExtension(
|
| + test_data_dir_.AppendASCII("bluetooth_low_energy/get_services")));
|
| + EXPECT_TRUE(listener.WaitUntilSatisfied());
|
| +
|
| + listener.Reply("go");
|
| +
|
| + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(BluetoothLowEnergyApiTest, GetService) {
|
| + ResultCatcher catcher;
|
| + catcher.RestrictToProfile(browser()->profile());
|
| +
|
| + event_router()->DeviceAdded(mock_adapter_, device_.get());
|
| + event_router()->GattServiceAdded(device_.get(), service0_.get());
|
| +
|
| + EXPECT_CALL(*mock_adapter_, GetDevice(_))
|
| + .Times(3)
|
| + .WillOnce(Return(static_cast<BluetoothDevice*>(NULL)))
|
| + .WillRepeatedly(Return(device_.get()));
|
| +
|
| + EXPECT_CALL(*device_, GetGattService(kTestServiceId0))
|
| + .Times(2)
|
| + .WillOnce(Return(static_cast<BluetoothGattService*>(NULL)))
|
| + .WillOnce(Return(service0_.get()));
|
| +
|
| + // Load and wait for setup.
|
| + ExtensionTestMessageListener listener("ready", true);
|
| + ASSERT_TRUE(LoadExtension(
|
| + test_data_dir_.AppendASCII("bluetooth_low_energy/get_service")));
|
| + EXPECT_TRUE(listener.WaitUntilSatisfied());
|
| +
|
| + listener.Reply("go");
|
| +
|
| + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
|
| +
|
| + event_router()->GattServiceRemoved(device_.get(), service0_.get());
|
| + event_router()->DeviceRemoved(mock_adapter_, device_.get());
|
| +}
|
| +
|
| +} // namespace
|
|
|