| Index: chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_apitest.cc
|
| diff --git a/chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_apitest.cc b/chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_apitest.cc
|
| deleted file mode 100644
|
| index 7ed4132ed12ae17809fc13f47e93fe31a53339fd..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_apitest.cc
|
| +++ /dev/null
|
| @@ -1,219 +0,0 @@
|
| -// 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 <string>
|
| -
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_api.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_factory.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_socket.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -
|
| -using device::BluetoothAdapter;
|
| -using device::BluetoothAdapterFactory;
|
| -using device::BluetoothDevice;
|
| -using device::BluetoothSocket;
|
| -using device::BluetoothUUID;
|
| -using device::MockBluetoothAdapter;
|
| -using device::MockBluetoothDevice;
|
| -using device::MockBluetoothSocket;
|
| -using extensions::Extension;
|
| -
|
| -namespace utils = extension_function_test_utils;
|
| -namespace api = extensions::api;
|
| -
|
| -namespace {
|
| -
|
| -class BluetoothSocketApiTest : public ExtensionApiTest {
|
| - public:
|
| - BluetoothSocketApiTest() {}
|
| -
|
| - virtual void SetUpOnMainThread() OVERRIDE {
|
| - ExtensionApiTest::SetUpOnMainThread();
|
| - empty_extension_ = utils::CreateEmptyExtension();
|
| - SetUpMockAdapter();
|
| - }
|
| -
|
| - void SetUpMockAdapter() {
|
| - // The browser will clean this up when it is torn down.
|
| - mock_adapter_ = new testing::StrictMock<MockBluetoothAdapter>();
|
| - BluetoothAdapterFactory::SetAdapterForTesting(mock_adapter_);
|
| -
|
| - mock_device1_.reset(
|
| - new testing::NiceMock<MockBluetoothDevice>(mock_adapter_.get(),
|
| - 0,
|
| - "d1",
|
| - "11:12:13:14:15:16",
|
| - true /* paired */,
|
| - false /* connected */));
|
| - mock_device2_.reset(
|
| - new testing::NiceMock<MockBluetoothDevice>(mock_adapter_.get(),
|
| - 0,
|
| - "d2",
|
| - "21:22:23:24:25:26",
|
| - true /* paired */,
|
| - false /* connected */));
|
| - }
|
| -
|
| - protected:
|
| - scoped_refptr<testing::StrictMock<MockBluetoothAdapter> > mock_adapter_;
|
| - scoped_ptr<testing::NiceMock<MockBluetoothDevice> > mock_device1_;
|
| - scoped_ptr<testing::NiceMock<MockBluetoothDevice> > mock_device2_;
|
| -
|
| - private:
|
| - scoped_refptr<Extension> empty_extension_;
|
| -};
|
| -
|
| -// testing::InvokeArgument<N> does not work with base::Callback, fortunately
|
| -// gmock makes it simple to create action templates that do for the various
|
| -// possible numbers of arguments.
|
| -ACTION_TEMPLATE(InvokeCallbackArgument,
|
| - HAS_1_TEMPLATE_PARAMS(int, k),
|
| - AND_0_VALUE_PARAMS()) {
|
| - ::std::tr1::get<k>(args).Run();
|
| -}
|
| -
|
| -ACTION_TEMPLATE(InvokeCallbackArgument,
|
| - HAS_1_TEMPLATE_PARAMS(int, k),
|
| - AND_1_VALUE_PARAMS(p0)) {
|
| - ::std::tr1::get<k>(args).Run(p0);
|
| -}
|
| -
|
| -ACTION_TEMPLATE(InvokeCallbackArgument,
|
| - HAS_1_TEMPLATE_PARAMS(int, k),
|
| - AND_2_VALUE_PARAMS(p0, p1)) {
|
| - ::std::tr1::get<k>(args).Run(p0, p1);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -IN_PROC_BROWSER_TEST_F(BluetoothSocketApiTest, Connect) {
|
| - ResultCatcher catcher;
|
| - catcher.RestrictToProfile(browser()->profile());
|
| -
|
| - // Return the right mock device object for the address used by the test,
|
| - // return NULL for the "Device not found" test.
|
| - EXPECT_CALL(*mock_adapter_.get(), GetDevice(mock_device1_->GetAddress()))
|
| - .WillRepeatedly(testing::Return(mock_device1_.get()));
|
| - EXPECT_CALL(*mock_adapter_.get(), GetDevice(std::string("aa:aa:aa:aa:aa:aa")))
|
| - .WillOnce(testing::Return(static_cast<BluetoothDevice*>(NULL)));
|
| -
|
| - // Return a mock socket object as a successful result to the connect() call.
|
| - BluetoothUUID service_uuid("8e3ad063-db38-4289-aa8f-b30e4223cf40");
|
| - scoped_refptr<testing::StrictMock<MockBluetoothSocket> > mock_socket
|
| - = new testing::StrictMock<MockBluetoothSocket>();
|
| - EXPECT_CALL(*mock_device1_,
|
| - ConnectToService(service_uuid, testing::_, testing::_))
|
| - .WillOnce(InvokeCallbackArgument<1>(mock_socket));
|
| -
|
| - // Since the socket is unpaused, expect a call to Receive() from the socket
|
| - // dispatcher. Since there is no data, this will not call its callback.
|
| - EXPECT_CALL(*mock_socket.get(), Receive(testing::_, testing::_, testing::_));
|
| -
|
| - // The test also cleans up by calling Disconnect and Close.
|
| - EXPECT_CALL(*mock_socket.get(), Disconnect(testing::_))
|
| - .WillOnce(InvokeCallbackArgument<0>());
|
| - EXPECT_CALL(*mock_socket.get(), Close());
|
| -
|
| - // Run the test.
|
| - ExtensionTestMessageListener listener("ready", true);
|
| - scoped_refptr<const Extension> extension(
|
| - LoadExtension(test_data_dir_.AppendASCII("bluetooth_socket/connect")));
|
| - ASSERT_TRUE(extension.get());
|
| - EXPECT_TRUE(listener.WaitUntilSatisfied());
|
| -
|
| - listener.Reply("go");
|
| - EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
|
| -}
|
| -
|
| -#if defined(_LIBCPP_VERSION)
|
| -// This test fails in libc++ builds, see http://crbug.com/392205.
|
| -#define MAYBE_Listen DISABLED_Listen
|
| -#else
|
| -#define MAYBE_Listen Listen
|
| -#endif
|
| -IN_PROC_BROWSER_TEST_F(BluetoothSocketApiTest, MAYBE_Listen) {
|
| - ResultCatcher catcher;
|
| - catcher.RestrictToProfile(browser()->profile());
|
| -
|
| - // Return a mock socket object as a successful result to the create service
|
| - // call.
|
| - BluetoothUUID service_uuid("2de497f9-ab28-49db-b6d2-066ea69f1737");
|
| - scoped_refptr<testing::StrictMock<MockBluetoothSocket> > mock_server_socket
|
| - = new testing::StrictMock<MockBluetoothSocket>();
|
| - BluetoothAdapter::ServiceOptions service_options;
|
| - service_options.name.reset(new std::string("MyServiceName"));
|
| - EXPECT_CALL(
|
| - *mock_adapter_.get(),
|
| - CreateRfcommService(
|
| - service_uuid,
|
| - testing::Field(&BluetoothAdapter::ServiceOptions::name,
|
| - testing::Pointee(testing::Eq("MyServiceName"))),
|
| - testing::_,
|
| - testing::_)).WillOnce(InvokeCallbackArgument<2>(mock_server_socket));
|
| -
|
| - // Since the socket is unpaused, expect a call to Accept() from the socket
|
| - // dispatcher. We'll immediately send back another mock socket to represent
|
| - // the client API. Further calls will return no data and behave as if
|
| - // pending.
|
| - scoped_refptr<testing::StrictMock<MockBluetoothSocket> > mock_client_socket
|
| - = new testing::StrictMock<MockBluetoothSocket>();
|
| - EXPECT_CALL(*mock_server_socket.get(), Accept(testing::_, testing::_))
|
| - .Times(2)
|
| - .WillOnce(
|
| - InvokeCallbackArgument<0>(mock_device1_.get(), mock_client_socket))
|
| - .WillOnce(testing::Return());
|
| -
|
| - // Run the test, it sends a ready signal once it's ready for us to dispatch
|
| - // a client connection to it.
|
| - ExtensionTestMessageListener socket_listening("ready", true);
|
| - scoped_refptr<const Extension> extension(
|
| - LoadExtension(test_data_dir_.AppendASCII("bluetooth_socket/listen")));
|
| - ASSERT_TRUE(extension.get());
|
| - EXPECT_TRUE(socket_listening.WaitUntilSatisfied());
|
| -
|
| - // Connection events are dispatched using a couple of PostTask to the UI
|
| - // thread. Waiting until idle ensures the event is dispatched to the
|
| - // receiver(s).
|
| - base::RunLoop().RunUntilIdle();
|
| - ExtensionTestMessageListener listener("ready", true);
|
| - socket_listening.Reply("go");
|
| -
|
| - // Second stage of tests checks for error conditions, and will clean up
|
| - // the existing server and client sockets.
|
| - EXPECT_CALL(*mock_server_socket.get(), Disconnect(testing::_))
|
| - .WillOnce(InvokeCallbackArgument<0>());
|
| - EXPECT_CALL(*mock_server_socket.get(), Close());
|
| -
|
| - EXPECT_CALL(*mock_client_socket.get(), Disconnect(testing::_))
|
| - .WillOnce(InvokeCallbackArgument<0>());
|
| - EXPECT_CALL(*mock_client_socket.get(), Close());
|
| -
|
| - EXPECT_TRUE(listener.WaitUntilSatisfied());
|
| - listener.Reply("go");
|
| - EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(BluetoothSocketApiTest, PermissionDenied) {
|
| - ResultCatcher catcher;
|
| - catcher.RestrictToProfile(browser()->profile());
|
| -
|
| - // Run the test.
|
| - scoped_refptr<const Extension> extension(
|
| - LoadExtension(test_data_dir_.AppendASCII(
|
| - "bluetooth_socket/permission_denied")));
|
| - ASSERT_TRUE(extension.get());
|
| -
|
| - EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
|
| -}
|
|
|