| 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 5ed18dfd173ccd9101a903881bb06b7820be2b9f..13dddd2aa39839638a4f573a9f5f5166f66e8f4b 100644
|
| --- a/content/renderer/media/media_stream_dispatcher_unittest.cc
|
| +++ b/content/renderer/media/media_stream_dispatcher_unittest.cc
|
| @@ -38,7 +38,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,
|
| @@ -88,6 +88,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_ = "";
|
| @@ -101,6 +103,7 @@ class MockMediaStreamDispatcherEventHandler
|
| std::string device_stopped_label_;
|
| StreamDeviceInfo audio_device_;
|
| StreamDeviceInfo video_device_;
|
| + bool did_receive_devices_changed_;
|
| };
|
|
|
| class MediaStreamDispatcherUnderTest : public MediaStreamDispatcher {
|
| @@ -409,4 +412,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
|
|
|