| 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)); | 
|  |