Index: chrome/browser/extensions/api/bluetooth/bluetooth_event_router_unittest.cc |
diff --git a/chrome/browser/extensions/api/bluetooth/bluetooth_event_router_unittest.cc b/chrome/browser/extensions/api/bluetooth/bluetooth_event_router_unittest.cc |
index 98bf071bf1c87824b2d69c5c08de0803a7e00f5f..06ec55e2b894f02eddfe687615c14e060c695f86 100644 |
--- a/chrome/browser/extensions/api/bluetooth/bluetooth_event_router_unittest.cc |
+++ b/chrome/browser/extensions/api/bluetooth/bluetooth_event_router_unittest.cc |
@@ -16,6 +16,7 @@ |
#include "chrome/test/base/testing_profile.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/test/test_browser_thread.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
#include "device/bluetooth/bluetooth_uuid.h" |
#include "device/bluetooth/test/mock_bluetooth_adapter.h" |
#include "device/bluetooth/test/mock_bluetooth_device.h" |
@@ -32,53 +33,6 @@ const char kTestExtensionId[] = "test extension id"; |
const device::BluetoothUUID kAudioProfileUuid("1234"); |
const device::BluetoothUUID kHealthProfileUuid("4321"); |
-class FakeEventRouter : public extensions::EventRouter { |
- public: |
- explicit FakeEventRouter(Profile* profile) : EventRouter(profile, NULL) {} |
- |
- virtual void DispatchEventToExtension( |
- const std::string& extension_id, |
- scoped_ptr<extensions::Event> event) OVERRIDE { |
- extension_id_ = extension_id; |
- event_ = event.Pass(); |
- } |
- |
- std::string extension_id() const { |
- return extension_id_; |
- } |
- |
- const extensions::Event* event() const { |
- return event_.get(); |
- } |
- |
- private: |
- std::string extension_id_; |
- scoped_ptr<extensions::Event> event_; |
- |
- DISALLOW_COPY_AND_ASSIGN(FakeEventRouter); |
-}; |
- |
-class FakeExtensionSystem : public extensions::TestExtensionSystem { |
- public: |
- explicit FakeExtensionSystem(Profile* profile) |
- : extensions::TestExtensionSystem(profile) {} |
- |
- virtual extensions::EventRouter* event_router() OVERRIDE { |
- if (!fake_event_router_) |
- fake_event_router_.reset(new FakeEventRouter(profile_)); |
- return fake_event_router_.get(); |
- } |
- |
- private: |
- scoped_ptr<FakeEventRouter> fake_event_router_; |
- |
- DISALLOW_COPY_AND_ASSIGN(FakeExtensionSystem); |
-}; |
- |
-KeyedService* BuildFakeExtensionSystem(content::BrowserContext* profile) { |
- return new FakeExtensionSystem(static_cast<Profile*>(profile)); |
-} |
- |
} // namespace |
namespace extensions { |
@@ -88,10 +42,10 @@ namespace bluetooth = api::bluetooth; |
class BluetoothEventRouterTest : public testing::Test { |
public: |
BluetoothEventRouterTest() |
- : mock_adapter_(new testing::StrictMock<device::MockBluetoothAdapter>()), |
+ : ui_thread_(content::BrowserThread::UI, &message_loop_), |
+ mock_adapter_(new testing::StrictMock<device::MockBluetoothAdapter>()), |
test_profile_(new TestingProfile()), |
- router_(test_profile_.get()), |
- ui_thread_(content::BrowserThread::UI, &message_loop_) { |
+ router_(test_profile_.get()) { |
router_.SetAdapterForTest(mock_adapter_); |
} |
@@ -105,13 +59,14 @@ class BluetoothEventRouterTest : public testing::Test { |
} |
protected: |
+ base::MessageLoopForUI message_loop_; |
+ // Note: |ui_thread_| must be declared before |router_|. |
+ content::TestBrowserThread ui_thread_; |
testing::StrictMock<device::MockBluetoothAdapter>* mock_adapter_; |
testing::NiceMock<device::MockBluetoothProfile> mock_audio_profile_; |
testing::NiceMock<device::MockBluetoothProfile> mock_health_profile_; |
scoped_ptr<TestingProfile> test_profile_; |
BluetoothEventRouter router_; |
- base::MessageLoopForUI message_loop_; |
- content::TestBrowserThread ui_thread_; |
}; |
TEST_F(BluetoothEventRouterTest, BluetoothEventListener) { |
@@ -185,69 +140,4 @@ TEST_F(BluetoothEventRouterTest, UnloadExtension) { |
EXPECT_CALL(*mock_adapter_, RemoveObserver(testing::_)).Times(1); |
} |
-TEST_F(BluetoothEventRouterTest, DispatchConnectionEvent) { |
- router_.AddProfile( |
- kAudioProfileUuid, kTestExtensionId, &mock_audio_profile_); |
- |
- FakeExtensionSystem* fake_extension_system = |
- static_cast<FakeExtensionSystem*>(ExtensionSystemFactory::GetInstance()-> |
- SetTestingFactoryAndUse(test_profile_.get(), |
- &BuildFakeExtensionSystem)); |
- |
- testing::NiceMock<device::MockBluetoothDevice> mock_device( |
- mock_adapter_, 0, "device name", "device address", true, false); |
- scoped_refptr<testing::NiceMock<device::MockBluetoothSocket> > mock_socket( |
- new testing::NiceMock<device::MockBluetoothSocket>()); |
- |
- router_.DispatchConnectionEvent(kTestExtensionId, |
- kAudioProfileUuid, |
- &mock_device, |
- mock_socket); |
- |
- FakeEventRouter* fake_event_router = |
- static_cast<FakeEventRouter*>(fake_extension_system->event_router()); |
- |
- EXPECT_STREQ(kTestExtensionId, fake_event_router->extension_id().c_str()); |
- EXPECT_STREQ(bluetooth::OnConnection::kEventName, |
- fake_event_router->event()->event_name.c_str()); |
- |
- base::ListValue* event_args = fake_event_router->event()->event_args.get(); |
- base::DictionaryValue* socket_value = NULL; |
- ASSERT_TRUE(event_args->GetDictionary(0, &socket_value)); |
- int socket_id; |
- ASSERT_TRUE(socket_value->GetInteger("id", &socket_id)); |
- EXPECT_EQ(mock_socket.get(), router_.GetSocket(socket_id).get()); |
- |
- base::DictionaryValue* profile_value = NULL; |
- ASSERT_TRUE(socket_value->GetDictionary("profile", &profile_value)); |
- std::string uuid; |
- ASSERT_TRUE(profile_value->GetString("uuid", &uuid)); |
- EXPECT_STREQ(kAudioProfileUuid.canonical_value().c_str(), uuid.c_str()); |
- |
- EXPECT_CALL(*mock_adapter_, RemoveObserver(testing::_)).Times(1); |
- router_.ReleaseSocket(socket_id); |
-} |
- |
-TEST_F(BluetoothEventRouterTest, DoNotDispatchConnectionEvent) { |
- FakeExtensionSystem* fake_extension_system = |
- static_cast<FakeExtensionSystem*>(ExtensionSystemFactory::GetInstance()-> |
- SetTestingFactoryAndUse(test_profile_.get(), |
- &BuildFakeExtensionSystem)); |
- testing::NiceMock<device::MockBluetoothDevice> mock_device( |
- mock_adapter_, 0, "device name", "device address", true, false); |
- scoped_refptr<testing::NiceMock<device::MockBluetoothSocket> > mock_socket( |
- new testing::NiceMock<device::MockBluetoothSocket>()); |
- |
- // Connection event won't be dispatched for non-registered profiles. |
- router_.DispatchConnectionEvent("test extension id", |
- kAudioProfileUuid, |
- &mock_device, |
- mock_socket); |
- FakeEventRouter* fake_event_router = |
- static_cast<FakeEventRouter*>(fake_extension_system->event_router()); |
- EXPECT_TRUE(fake_event_router->event() == NULL); |
- |
- EXPECT_CALL(*mock_adapter_, RemoveObserver(testing::_)).Times(1); |
-} |
- |
} // namespace extensions |