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

Unified Diff: chrome/browser/extensions/api/bluetooth/bluetooth_apitest.cc

Issue 420663003: Extensions: Move bluetooth APIs to extensions/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android, gn Created 6 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: chrome/browser/extensions/api/bluetooth/bluetooth_apitest.cc
diff --git a/chrome/browser/extensions/api/bluetooth/bluetooth_apitest.cc b/chrome/browser/extensions/api/bluetooth/bluetooth_apitest.cc
deleted file mode 100644
index c2016a606eb3e70150bd2bf2022a94bb4fbf7514..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/api/bluetooth/bluetooth_apitest.cc
+++ /dev/null
@@ -1,459 +0,0 @@
-// Copyright (c) 2012 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 <string.h>
-
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/extensions/api/bluetooth/bluetooth_api.h"
-#include "chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h"
-#include "chrome/browser/extensions/extension_apitest.h"
-#include "chrome/browser/extensions/extension_function_test_utils.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_test_message_listener.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "device/bluetooth/bluetooth_adapter.h"
-#include "device/bluetooth/bluetooth_uuid.h"
-#include "device/bluetooth/test/mock_bluetooth_adapter.h"
-#include "device/bluetooth/test/mock_bluetooth_device.h"
-#include "device/bluetooth/test/mock_bluetooth_discovery_session.h"
-#include "testing/gmock/include/gmock/gmock.h"
-
-using device::BluetoothAdapter;
-using device::BluetoothDevice;
-using device::BluetoothDiscoverySession;
-using device::BluetoothUUID;
-using device::MockBluetoothAdapter;
-using device::MockBluetoothDevice;
-using device::MockBluetoothDiscoverySession;
-using extensions::Extension;
-
-namespace utils = extension_function_test_utils;
-namespace api = extensions::api;
-
-namespace {
-
-static const char* kAdapterAddress = "A1:A2:A3:A4:A5:A6";
-static const char* kName = "whatsinaname";
-
-class BluetoothApiTest : public ExtensionApiTest {
- public:
- BluetoothApiTest() {}
-
- virtual void SetUpOnMainThread() OVERRIDE {
- ExtensionApiTest::SetUpOnMainThread();
- empty_extension_ = utils::CreateEmptyExtension();
- SetUpMockAdapter();
- }
-
- virtual void TearDownOnMainThread() OVERRIDE {
- EXPECT_CALL(*mock_adapter_, RemoveObserver(testing::_));
- }
-
- void SetUpMockAdapter() {
- // The browser will clean this up when it is torn down
- mock_adapter_ = new testing::StrictMock<MockBluetoothAdapter>();
- event_router()->SetAdapterForTest(mock_adapter_);
-
- device1_.reset(new testing::NiceMock<MockBluetoothDevice>(
- mock_adapter_, 0, "d1", "11:12:13:14:15:16",
- true /* paired */, true /* connected */));
- device2_.reset(new testing::NiceMock<MockBluetoothDevice>(
- mock_adapter_, 0, "d2", "21:22:23:24:25:26",
- false /* paired */, false /* connected */));
- device3_.reset(new testing::NiceMock<MockBluetoothDevice>(
- mock_adapter_, 0, "d3", "31:32:33:34:35:36",
- false /* paired */, false /* connected */));
- }
-
- void DiscoverySessionCallback(
- const BluetoothAdapter::DiscoverySessionCallback& callback,
- const BluetoothAdapter::ErrorCallback& error_callback) {
- if (mock_session_.get()) {
- callback.Run(
- scoped_ptr<BluetoothDiscoverySession>(mock_session_.release()));
- return;
- }
- error_callback.Run();
- }
-
- template <class T>
- T* setupFunction(T* function) {
- function->set_extension(empty_extension_.get());
- function->set_has_callback(true);
- return function;
- }
-
- protected:
- testing::StrictMock<MockBluetoothAdapter>* mock_adapter_;
- scoped_ptr<testing::NiceMock<MockBluetoothDiscoverySession> > mock_session_;
- scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device1_;
- scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device2_;
- scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device3_;
-
- extensions::BluetoothEventRouter* event_router() {
- return bluetooth_api()->event_router();
- }
-
- extensions::BluetoothAPI* bluetooth_api() {
- return extensions::BluetoothAPI::Get(browser()->profile());
- }
-
- private:
- scoped_refptr<Extension> empty_extension_;
-};
-
-static void StopDiscoverySessionCallback(const base::Closure& callback,
- const base::Closure& error_callback) {
- callback.Run();
-}
-
-} // namespace
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetAdapterState) {
- EXPECT_CALL(*mock_adapter_, GetAddress())
- .WillOnce(testing::Return(kAdapterAddress));
- EXPECT_CALL(*mock_adapter_, GetName())
- .WillOnce(testing::Return(kName));
- EXPECT_CALL(*mock_adapter_, IsPresent())
- .WillOnce(testing::Return(false));
- EXPECT_CALL(*mock_adapter_, IsPowered())
- .WillOnce(testing::Return(true));
- EXPECT_CALL(*mock_adapter_, IsDiscovering())
- .WillOnce(testing::Return(false));
-
- scoped_refptr<api::BluetoothGetAdapterStateFunction> get_adapter_state;
- get_adapter_state = setupFunction(new api::BluetoothGetAdapterStateFunction);
-
- scoped_ptr<base::Value> result(utils::RunFunctionAndReturnSingleResult(
- get_adapter_state.get(), "[]", browser()));
- ASSERT_TRUE(result.get() != NULL);
- api::bluetooth::AdapterState state;
- ASSERT_TRUE(api::bluetooth::AdapterState::Populate(*result, &state));
-
- EXPECT_FALSE(state.available);
- EXPECT_TRUE(state.powered);
- EXPECT_FALSE(state.discovering);
- EXPECT_EQ(kName, state.name);
- EXPECT_EQ(kAdapterAddress, state.address);
-}
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, DeviceEvents) {
- ResultCatcher catcher;
- catcher.RestrictToProfile(browser()->profile());
-
- ASSERT_TRUE(LoadExtension(
- test_data_dir_.AppendASCII("bluetooth/device_events")));
-
- ExtensionTestMessageListener events_received("ready", true);
- event_router()->DeviceAdded(mock_adapter_, device1_.get());
- event_router()->DeviceAdded(mock_adapter_, device2_.get());
-
- EXPECT_CALL(*device2_.get(), GetDeviceName())
- .WillRepeatedly(testing::Return("the real d2"));
- EXPECT_CALL(*device2_.get(), GetName())
- .WillRepeatedly(testing::Return(base::UTF8ToUTF16("the real d2")));
- event_router()->DeviceChanged(mock_adapter_, device2_.get());
-
- event_router()->DeviceAdded(mock_adapter_, device3_.get());
- event_router()->DeviceRemoved(mock_adapter_, device1_.get());
- EXPECT_TRUE(events_received.WaitUntilSatisfied());
- events_received.Reply("go");
-
- EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
-}
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, Discovery) {
- // Try with a failure to start. This will return an error as we haven't
- // initialied a session object.
- EXPECT_CALL(*mock_adapter_, StartDiscoverySession(testing::_, testing::_))
- .WillOnce(
- testing::Invoke(this, &BluetoothApiTest::DiscoverySessionCallback));
-
- // StartDiscovery failure will not reference the adapter.
- scoped_refptr<api::BluetoothStartDiscoveryFunction> start_function;
- start_function = setupFunction(new api::BluetoothStartDiscoveryFunction);
- std::string error(
- utils::RunFunctionAndReturnError(start_function.get(), "[]", browser()));
- ASSERT_FALSE(error.empty());
-
- // Reset the adapter and initiate a discovery session. The ownership of the
- // mock session will be passed to the event router.
- ASSERT_FALSE(mock_session_.get());
- SetUpMockAdapter();
-
- // Create a mock session to be returned as a result. Get a handle to it as
- // its ownership will be passed and |mock_session_| will be reset.
- mock_session_.reset(new testing::NiceMock<MockBluetoothDiscoverySession>());
- MockBluetoothDiscoverySession* session = mock_session_.get();
- EXPECT_CALL(*mock_adapter_, StartDiscoverySession(testing::_, testing::_))
- .WillOnce(
- testing::Invoke(this, &BluetoothApiTest::DiscoverySessionCallback));
- start_function = setupFunction(new api::BluetoothStartDiscoveryFunction);
- (void)
- utils::RunFunctionAndReturnError(start_function.get(), "[]", browser());
-
- // End the discovery session. The StopDiscovery function should succeed.
- testing::Mock::VerifyAndClearExpectations(mock_adapter_);
- EXPECT_CALL(*session, IsActive()).WillOnce(testing::Return(true));
- EXPECT_CALL(*session, Stop(testing::_, testing::_))
- .WillOnce(testing::Invoke(StopDiscoverySessionCallback));
-
- // StopDiscovery success will remove the session object, unreferencing the
- // adapter.
- scoped_refptr<api::BluetoothStopDiscoveryFunction> stop_function;
- stop_function = setupFunction(new api::BluetoothStopDiscoveryFunction);
- (void) utils::RunFunctionAndReturnSingleResult(
- stop_function.get(), "[]", browser());
-
- // Reset the adapter. Simulate failure for stop discovery. The event router
- // still owns the session. Make it appear inactive.
- SetUpMockAdapter();
- EXPECT_CALL(*session, IsActive()).WillOnce(testing::Return(false));
- stop_function = setupFunction(new api::BluetoothStopDiscoveryFunction);
- error =
- utils::RunFunctionAndReturnError(stop_function.get(), "[]", browser());
- ASSERT_FALSE(error.empty());
- SetUpMockAdapter();
-}
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, DiscoveryCallback) {
- mock_session_.reset(new testing::NiceMock<MockBluetoothDiscoverySession>());
- MockBluetoothDiscoverySession* session = mock_session_.get();
- EXPECT_CALL(*mock_adapter_, StartDiscoverySession(testing::_, testing::_))
- .WillOnce(
- testing::Invoke(this, &BluetoothApiTest::DiscoverySessionCallback));
- EXPECT_CALL(*session, IsActive()).WillOnce(testing::Return(true));
- EXPECT_CALL(*session, Stop(testing::_, testing::_))
- .WillOnce(testing::Invoke(StopDiscoverySessionCallback));
-
- ResultCatcher catcher;
- catcher.RestrictToProfile(browser()->profile());
-
- ExtensionTestMessageListener discovery_started("ready", true);
- ASSERT_TRUE(LoadExtension(
- test_data_dir_.AppendASCII("bluetooth/discovery_callback")));
- EXPECT_TRUE(discovery_started.WaitUntilSatisfied());
-
- event_router()->DeviceAdded(mock_adapter_, device1_.get());
-
- discovery_started.Reply("go");
- ExtensionTestMessageListener discovery_stopped("ready", true);
- EXPECT_CALL(*mock_adapter_, RemoveObserver(testing::_));
- EXPECT_TRUE(discovery_stopped.WaitUntilSatisfied());
-
- SetUpMockAdapter();
- event_router()->DeviceAdded(mock_adapter_, device2_.get());
- discovery_stopped.Reply("go");
-
- EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
-}
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, DiscoveryInProgress) {
- EXPECT_CALL(*mock_adapter_, GetAddress())
- .WillOnce(testing::Return(kAdapterAddress));
- EXPECT_CALL(*mock_adapter_, GetName())
- .WillOnce(testing::Return(kName));
- EXPECT_CALL(*mock_adapter_, IsPresent())
- .WillOnce(testing::Return(true));
- EXPECT_CALL(*mock_adapter_, IsPowered())
- .WillOnce(testing::Return(true));
-
- // Fake that the adapter is discovering
- EXPECT_CALL(*mock_adapter_, IsDiscovering())
- .WillOnce(testing::Return(true));
- event_router()->AdapterDiscoveringChanged(mock_adapter_, true);
-
- // Cache a device before the extension starts discovering
- event_router()->DeviceAdded(mock_adapter_, device1_.get());
-
- ResultCatcher catcher;
- catcher.RestrictToProfile(browser()->profile());
-
- mock_session_.reset(new testing::NiceMock<MockBluetoothDiscoverySession>());
- MockBluetoothDiscoverySession* session = mock_session_.get();
- EXPECT_CALL(*mock_adapter_, StartDiscoverySession(testing::_, testing::_))
- .WillOnce(
- testing::Invoke(this, &BluetoothApiTest::DiscoverySessionCallback));
- EXPECT_CALL(*session, IsActive()).WillOnce(testing::Return(true));
- EXPECT_CALL(*session, Stop(testing::_, testing::_))
- .WillOnce(testing::Invoke(StopDiscoverySessionCallback));
-
- ExtensionTestMessageListener discovery_started("ready", true);
- ASSERT_TRUE(LoadExtension(
- test_data_dir_.AppendASCII("bluetooth/discovery_in_progress")));
- EXPECT_TRUE(discovery_started.WaitUntilSatisfied());
-
- // Only this should be received. No additional notification should be sent for
- // devices discovered before the discovery session started.
- event_router()->DeviceAdded(mock_adapter_, device2_.get());
-
- discovery_started.Reply("go");
- ExtensionTestMessageListener discovery_stopped("ready", true);
- EXPECT_CALL(*mock_adapter_, RemoveObserver(testing::_));
- EXPECT_TRUE(discovery_stopped.WaitUntilSatisfied());
-
- SetUpMockAdapter();
- // This should never be received.
- event_router()->DeviceAdded(mock_adapter_, device2_.get());
- discovery_stopped.Reply("go");
-
- EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
-}
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, OnAdapterStateChanged) {
- ResultCatcher catcher;
- catcher.RestrictToProfile(browser()->profile());
-
- // Load and wait for setup
- ExtensionTestMessageListener listener("ready", true);
- ASSERT_TRUE(
- LoadExtension(
- test_data_dir_.AppendASCII("bluetooth/on_adapter_state_changed")));
- EXPECT_TRUE(listener.WaitUntilSatisfied());
-
- EXPECT_CALL(*mock_adapter_, GetAddress())
- .WillOnce(testing::Return(kAdapterAddress));
- EXPECT_CALL(*mock_adapter_, GetName())
- .WillOnce(testing::Return(kName));
- EXPECT_CALL(*mock_adapter_, IsPresent())
- .WillOnce(testing::Return(false));
- EXPECT_CALL(*mock_adapter_, IsPowered())
- .WillOnce(testing::Return(false));
- EXPECT_CALL(*mock_adapter_, IsDiscovering())
- .WillOnce(testing::Return(false));
- event_router()->AdapterPoweredChanged(mock_adapter_, false);
-
- EXPECT_CALL(*mock_adapter_, GetAddress())
- .WillOnce(testing::Return(kAdapterAddress));
- EXPECT_CALL(*mock_adapter_, GetName())
- .WillOnce(testing::Return(kName));
- EXPECT_CALL(*mock_adapter_, IsPresent())
- .WillOnce(testing::Return(true));
- EXPECT_CALL(*mock_adapter_, IsPowered())
- .WillOnce(testing::Return(true));
- EXPECT_CALL(*mock_adapter_, IsDiscovering())
- .WillOnce(testing::Return(true));
- event_router()->AdapterPresentChanged(mock_adapter_, true);
-
- EXPECT_CALL(*mock_adapter_, GetAddress())
- .WillOnce(testing::Return(kAdapterAddress));
- EXPECT_CALL(*mock_adapter_, GetName())
- .WillOnce(testing::Return(kName));
- EXPECT_CALL(*mock_adapter_, IsPresent())
- .WillOnce(testing::Return(true));
- EXPECT_CALL(*mock_adapter_, IsPowered())
- .WillOnce(testing::Return(true));
- EXPECT_CALL(*mock_adapter_, IsDiscovering())
- .WillOnce(testing::Return(true));
- event_router()->AdapterDiscoveringChanged(mock_adapter_, true);
-
- listener.Reply("go");
-
- EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
-}
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetDevices) {
- ResultCatcher catcher;
- catcher.RestrictToProfile(browser()->profile());
-
- BluetoothAdapter::ConstDeviceList devices;
- devices.push_back(device1_.get());
- devices.push_back(device2_.get());
-
- EXPECT_CALL(*mock_adapter_, GetDevices())
- .Times(1)
- .WillRepeatedly(testing::Return(devices));
-
- // Load and wait for setup
- ExtensionTestMessageListener listener("ready", true);
- ASSERT_TRUE(
- LoadExtension(test_data_dir_.AppendASCII("bluetooth/get_devices")));
- EXPECT_TRUE(listener.WaitUntilSatisfied());
-
- listener.Reply("go");
-
- EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
-}
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetDevice) {
- ResultCatcher catcher;
- catcher.RestrictToProfile(browser()->profile());
-
- EXPECT_CALL(*mock_adapter_, GetDevice(device1_->GetAddress()))
- .WillOnce(testing::Return(device1_.get()));
- EXPECT_CALL(*mock_adapter_, GetDevice(device2_->GetAddress()))
- .Times(1)
- .WillRepeatedly(testing::Return(static_cast<BluetoothDevice*>(NULL)));
-
- // Load and wait for setup
- ExtensionTestMessageListener listener("ready", true);
- ASSERT_TRUE(
- LoadExtension(test_data_dir_.AppendASCII("bluetooth/get_device")));
- EXPECT_TRUE(listener.WaitUntilSatisfied());
-
- listener.Reply("go");
-
- EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
-}
-
-IN_PROC_BROWSER_TEST_F(BluetoothApiTest, DeviceInfo) {
- ResultCatcher catcher;
- catcher.RestrictToProfile(browser()->profile());
-
- // Set up the first device object to reflect a real-world device.
- BluetoothAdapter::ConstDeviceList devices;
-
- EXPECT_CALL(*device1_.get(), GetAddress())
- .WillRepeatedly(testing::Return("A4:17:31:00:00:00"));
- EXPECT_CALL(*device1_.get(), GetDeviceName())
- .WillRepeatedly(testing::Return("Chromebook Pixel"));
- EXPECT_CALL(*device1_.get(), GetName())
- .WillRepeatedly(testing::Return(base::UTF8ToUTF16("Chromebook Pixel")));
- EXPECT_CALL(*device1_.get(), GetBluetoothClass())
- .WillRepeatedly(testing::Return(0x080104));
- EXPECT_CALL(*device1_.get(), GetDeviceType())
- .WillRepeatedly(testing::Return(BluetoothDevice::DEVICE_COMPUTER));
- EXPECT_CALL(*device1_.get(), GetVendorIDSource())
- .WillRepeatedly(testing::Return(BluetoothDevice::VENDOR_ID_BLUETOOTH));
- EXPECT_CALL(*device1_.get(), GetVendorID())
- .WillRepeatedly(testing::Return(0x00E0));
- EXPECT_CALL(*device1_.get(), GetProductID())
- .WillRepeatedly(testing::Return(0x240A));
- EXPECT_CALL(*device1_.get(), GetDeviceID())
- .WillRepeatedly(testing::Return(0x0400));
- EXPECT_CALL(*device1_, GetRSSI()).WillRepeatedly(testing::Return(-42));
- EXPECT_CALL(*device1_, GetCurrentHostTransmitPower())
- .WillRepeatedly(testing::Return(-16));
- EXPECT_CALL(*device1_, GetMaximumHostTransmitPower())
- .WillRepeatedly(testing::Return(10));
-
- BluetoothDevice::UUIDList uuids;
- uuids.push_back(BluetoothUUID("1105"));
- uuids.push_back(BluetoothUUID("1106"));
-
- EXPECT_CALL(*device1_.get(), GetUUIDs())
- .WillOnce(testing::Return(uuids));
-
- devices.push_back(device1_.get());
-
- // Leave the second largely empty so we can check a device without
- // available information.
- devices.push_back(device2_.get());
-
- EXPECT_CALL(*mock_adapter_, GetDevices())
- .Times(1)
- .WillRepeatedly(testing::Return(devices));
-
- // Load and wait for setup
- ExtensionTestMessageListener listener("ready", true);
- ASSERT_TRUE(
- LoadExtension(test_data_dir_.AppendASCII("bluetooth/device_info")));
- EXPECT_TRUE(listener.WaitUntilSatisfied());
-
- listener.Reply("go");
-
- EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
-}

Powered by Google App Engine
This is Rietveld 408576698