| Index: content/renderer/media/media_stream_dispatcher_unittest.cc
|
| diff --git a/content/renderer/media/media_stream_dispatcher_unittest.cc b/content/renderer/media/media_stream_dispatcher_unittest.cc
|
| index 21b581601d91120e9378409e60cd7e099ffbe965..0aae43a02a738e7c5cfa2a7cb5aba54a260e1d3c 100644
|
| --- a/content/renderer/media/media_stream_dispatcher_unittest.cc
|
| +++ b/content/renderer/media/media_stream_dispatcher_unittest.cc
|
| @@ -39,7 +39,7 @@ class MockMediaStreamDispatcherEventHandler
|
| public base::SupportsWeakPtr<MockMediaStreamDispatcherEventHandler> {
|
| public:
|
| MockMediaStreamDispatcherEventHandler()
|
| - : request_id_(-1) {}
|
| + : request_id_(-1), did_receive_devices_changed_(false) {}
|
|
|
| void OnStreamGenerated(
|
| int request_id,
|
| @@ -89,6 +89,8 @@ class MockMediaStreamDispatcherEventHandler
|
|
|
| void OnDeviceOpenFailed(int request_id) override { request_id_ = request_id; }
|
|
|
| + void OnDevicesChanged() override { did_receive_devices_changed_ = true; }
|
| +
|
| void ResetStoredParameters() {
|
| request_id_ = -1;
|
| label_ = "";
|
| @@ -102,6 +104,7 @@ class MockMediaStreamDispatcherEventHandler
|
| std::string device_stopped_label_;
|
| StreamDeviceInfo audio_device_;
|
| StreamDeviceInfo video_device_;
|
| + bool did_receive_devices_changed_;
|
| };
|
|
|
| class MediaStreamDispatcherUnderTest : public MediaStreamDispatcher {
|
| @@ -117,7 +120,7 @@ class MediaStreamDispatcherTest : public ::testing::Test {
|
| MediaStreamDispatcherTest()
|
| : dispatcher_(new MediaStreamDispatcherUnderTest()),
|
| handler_(new MockMediaStreamDispatcherEventHandler),
|
| - security_origin_(url::Origin(GURL("http://test.com"))) {}
|
| + security_origin_(GURL("http://test.com")) {}
|
|
|
| // Generates a request for a MediaStream and returns the request id that is
|
| // used in IPC. Use this returned id in CompleteGenerateStream to identify
|
| @@ -410,4 +413,28 @@ TEST_F(MediaStreamDispatcherTest, DeviceClosed) {
|
| StreamDeviceInfo::kNoId);
|
| }
|
|
|
| +// Test that the MediaStreamDispatcherEventHandler is notified when the message
|
| +// MediaStreamMsg_DevicesChanged is received.
|
| +TEST_F(MediaStreamDispatcherTest, DevicesChanged) {
|
| + std::unique_ptr<MockMediaStreamDispatcherEventHandler> handler1(
|
| + new MockMediaStreamDispatcherEventHandler);
|
| + std::unique_ptr<MockMediaStreamDispatcherEventHandler> handler2(
|
| + new MockMediaStreamDispatcherEventHandler);
|
| + dispatcher_->SubscribeToDeviceChangeNotifications(handler1->AsWeakPtr(),
|
| + security_origin_);
|
| + dispatcher_->SubscribeToDeviceChangeNotifications(handler2->AsWeakPtr(),
|
| + security_origin_);
|
| + EXPECT_DEATH(dispatcher_->SubscribeToDeviceChangeNotifications(
|
| + handler2->AsWeakPtr(), security_origin_),
|
| + "");
|
| + dispatcher_->OnMessageReceived(MediaStreamMsg_DevicesChanged(kRouteId));
|
| + dispatcher_->CancelDeviceChangeNotifications(handler1->AsWeakPtr());
|
| + dispatcher_->CancelDeviceChangeNotifications(handler2->AsWeakPtr());
|
| +
|
| + EXPECT_TRUE(handler1->did_receive_devices_changed_);
|
| + EXPECT_TRUE(handler2->did_receive_devices_changed_);
|
| + EXPECT_DEATH(
|
| + dispatcher_->CancelDeviceChangeNotifications(handler2->AsWeakPtr()), "");
|
| +}
|
| +
|
| } // namespace content
|
|
|