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 e4b463ed295f1b1a9387bbbf54108d594405c346..3c32d87d192f736fdb9b8f148569b6dad1073f39 100644 |
--- a/chrome/browser/extensions/api/bluetooth/bluetooth_event_router_unittest.cc |
+++ b/chrome/browser/extensions/api/bluetooth/bluetooth_event_router_unittest.cc |
@@ -8,23 +8,27 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop/message_loop.h" |
#include "base/run_loop.h" |
+#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h" |
#include "chrome/browser/extensions/event_names.h" |
#include "chrome/browser/extensions/extension_system_factory.h" |
#include "chrome/browser/extensions/test_extension_system.h" |
#include "chrome/common/extensions/api/bluetooth.h" |
#include "chrome/test/base/testing_profile.h" |
+#include "content/public/browser/notification_service.h" |
#include "content/public/test/test_browser_thread.h" |
#include "device/bluetooth/test/mock_bluetooth_adapter.h" |
#include "device/bluetooth/test/mock_bluetooth_device.h" |
#include "device/bluetooth/test/mock_bluetooth_profile.h" |
#include "device/bluetooth/test/mock_bluetooth_socket.h" |
#include "extensions/browser/event_router.h" |
+#include "extensions/common/extension_builder.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace { |
+const char kTestExtensionId[] = "test extension id"; |
const char kAudioProfileUuid[] = "audio profile uuid"; |
const char kHealthProfileUuid[] = "health profile uuid"; |
@@ -131,8 +135,10 @@ TEST_F(ExtensionBluetoothEventRouterTest, Profiles) { |
EXPECT_FALSE(router_.HasProfile(kAudioProfileUuid)); |
EXPECT_FALSE(router_.HasProfile(kHealthProfileUuid)); |
- router_.AddProfile(kAudioProfileUuid, &mock_audio_profile_); |
- router_.AddProfile(kHealthProfileUuid, &mock_health_profile_); |
+ router_.AddProfile( |
+ kAudioProfileUuid, kTestExtensionId, &mock_audio_profile_); |
+ router_.AddProfile( |
+ kHealthProfileUuid, kTestExtensionId, &mock_health_profile_); |
EXPECT_TRUE(router_.HasProfile(kAudioProfileUuid)); |
EXPECT_TRUE(router_.HasProfile(kHealthProfileUuid)); |
@@ -146,21 +152,55 @@ TEST_F(ExtensionBluetoothEventRouterTest, Profiles) { |
EXPECT_CALL(*mock_adapter_, RemoveObserver(testing::_)).Times(1); |
} |
+TEST_F(ExtensionBluetoothEventRouterTest, UnloadExtension) { |
+ scoped_refptr<const extensions::Extension> extension = |
+ extensions::ExtensionBuilder() |
+ .SetManifest(extensions::DictionaryBuilder() |
+ .Set("name", "BT event router test") |
+ .Set("version", "1.0") |
+ .Set("manifest_version", 2)) |
+ .SetID(kTestExtensionId) |
+ .Build(); |
+ |
+ router_.AddProfile( |
+ kAudioProfileUuid, kTestExtensionId, &mock_audio_profile_); |
+ router_.AddProfile( |
+ kHealthProfileUuid, kTestExtensionId, &mock_health_profile_); |
+ EXPECT_TRUE(router_.HasProfile(kAudioProfileUuid)); |
+ EXPECT_TRUE(router_.HasProfile(kHealthProfileUuid)); |
+ |
+ // Unloading the extension should unregister all profiles added by it. |
+ EXPECT_CALL(mock_audio_profile_, Unregister()).Times(1); |
+ EXPECT_CALL(mock_health_profile_, Unregister()).Times(1); |
+ |
+ content::NotificationService* notifier = |
+ content::NotificationService::current(); |
+ UnloadedExtensionInfo details( |
+ extension, UnloadedExtensionInfo::REASON_DISABLE); |
+ notifier->Notify(chrome::NOTIFICATION_EXTENSION_UNLOADED, |
+ content::Source<Profile>(test_profile_.get()), |
+ content::Details<UnloadedExtensionInfo>(&details)); |
+ |
+ EXPECT_FALSE(router_.HasProfile(kAudioProfileUuid)); |
+ EXPECT_FALSE(router_.HasProfile(kHealthProfileUuid)); |
+ EXPECT_CALL(*mock_adapter_, RemoveObserver(testing::_)).Times(1); |
+} |
+ |
TEST_F(ExtensionBluetoothEventRouterTest, DispatchConnectionEvent) { |
- router_.AddProfile(kAudioProfileUuid, &mock_audio_profile_); |
+ router_.AddProfile( |
+ kAudioProfileUuid, kTestExtensionId, &mock_audio_profile_); |
FakeExtensionSystem* fake_extension_system = |
static_cast<FakeExtensionSystem*>(ExtensionSystemFactory::GetInstance()-> |
SetTestingFactoryAndUse(test_profile_.get(), |
&BuildFakeExtensionSystem)); |
- const char test_extension_id[] = "test extension id"; |
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(test_extension_id, |
+ router_.DispatchConnectionEvent(kTestExtensionId, |
kAudioProfileUuid, |
&mock_device, |
mock_socket); |
@@ -168,7 +208,7 @@ TEST_F(ExtensionBluetoothEventRouterTest, DispatchConnectionEvent) { |
FakeEventRouter* fake_event_router = |
static_cast<FakeEventRouter*>(fake_extension_system->event_router()); |
- EXPECT_STREQ(test_extension_id, fake_event_router->extension_id().c_str()); |
+ EXPECT_STREQ(kTestExtensionId, fake_event_router->extension_id().c_str()); |
EXPECT_STREQ(bluetooth::OnConnection::kEventName, |
fake_event_router->event()->event_name.c_str()); |