Index: chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc |
diff --git a/chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc b/chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc |
index defefaa47dc6175d06546f8f6a8915fcecaebbd3..37901954dbe52fba22845e9e77c781fca45806b0 100644 |
--- a/chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc |
+++ b/chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc |
@@ -192,6 +192,41 @@ TEST_F(PresentationServiceDelegateImplTest, AddScreenAvailabilityListener) { |
render_process_id, render_frame_id2, source2.id())); |
} |
+TEST_F(PresentationServiceDelegateImplTest, AddMultipleListenersToFrame) { |
+ ON_CALL(router_, RegisterMediaSinksObserver(_)).WillByDefault(Return(true)); |
+ |
+ std::string presentation_url1("http://url1.com"); |
+ std::string presentation_url2("http://url2.com"); |
+ MediaSource source1 = MediaSourceForPresentationUrl(presentation_url1); |
+ MediaSource source2 = MediaSourceForPresentationUrl(presentation_url2); |
+ MockScreenAvailabilityListener listener1(presentation_url1); |
+ MockScreenAvailabilityListener listener2(presentation_url2); |
+ int render_process_id = 10; |
+ int render_frame_id = 1; |
+ |
+ EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).Times(2); |
+ EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener( |
+ render_process_id, render_frame_id, &listener1)); |
+ EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener( |
+ render_process_id, render_frame_id, &listener2)); |
+ EXPECT_TRUE(delegate_impl_->HasScreenAvailabilityListenerForTest( |
+ render_process_id, render_frame_id, source1.id())) |
+ << "Mapping not found for " << source1.ToString(); |
+ EXPECT_TRUE(delegate_impl_->HasScreenAvailabilityListenerForTest( |
+ render_process_id, render_frame_id, source2.id())) |
+ << "Mapping not found for " << source2.ToString(); |
+ |
+ EXPECT_CALL(router_, UnregisterMediaSinksObserver(_)).Times(2); |
+ delegate_impl_->RemoveScreenAvailabilityListener( |
+ render_process_id, render_frame_id, &listener1); |
+ delegate_impl_->RemoveScreenAvailabilityListener( |
+ render_process_id, render_frame_id, &listener2); |
+ EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest( |
+ render_process_id, render_frame_id, source1.id())); |
+ EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest( |
+ render_process_id, render_frame_id, source2.id())); |
+} |
+ |
TEST_F(PresentationServiceDelegateImplTest, AddSameListenerTwice) { |
std::string presentation_url1("http://url1.fakeUrl"); |
MediaSource source1(MediaSourceForPresentationUrl(presentation_url1)); |