Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Unified Diff: content/renderer/media/media_stream_dispatcher_unittest.cc

Issue 1918173002: Add support for device-change notifications to MediaStreamDispatcher and MediaStreamDispatcherHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase and palmer's comments Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « content/renderer/media/media_stream_dispatcher_eventhandler.h ('k') | content/renderer/media/user_media_client_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698