| Index: content/browser/renderer_host/media/media_devices_manager.cc
 | 
| diff --git a/content/browser/renderer_host/media/media_devices_manager.cc b/content/browser/renderer_host/media/media_devices_manager.cc
 | 
| index de50a1f8206d1fb8c1d834de26e54220415513bc..c5deb94fd5870a8c6370750b52712fcaf89c699e 100644
 | 
| --- a/content/browser/renderer_host/media/media_devices_manager.cc
 | 
| +++ b/content/browser/renderer_host/media/media_devices_manager.cc
 | 
| @@ -209,6 +209,27 @@ void MediaDevicesManager::EnumerateDevices(
 | 
|      ProcessRequests();
 | 
|  }
 | 
|  
 | 
| +void MediaDevicesManager::SubscribeDeviceChangeNotifications(
 | 
| +    MediaDeviceType type,
 | 
| +    MediaDeviceChangeSubscriber* subscriber) {
 | 
| +  DCHECK_CURRENTLY_ON(BrowserThread::IO);
 | 
| +
 | 
| +  auto it = std::find(device_change_subscribers_[type].begin(),
 | 
| +                      device_change_subscribers_[type].end(), subscriber);
 | 
| +  if (it == device_change_subscribers_[type].end())
 | 
| +    device_change_subscribers_[type].push_back(subscriber);
 | 
| +}
 | 
| +
 | 
| +void MediaDevicesManager::UnsubscribeDeviceChangeNotifications(
 | 
| +    MediaDeviceType type,
 | 
| +    MediaDeviceChangeSubscriber* subscriber) {
 | 
| +  DCHECK_CURRENTLY_ON(BrowserThread::IO);
 | 
| +  auto it = std::find(device_change_subscribers_[type].begin(),
 | 
| +                      device_change_subscribers_[type].end(), subscriber);
 | 
| +  if (it != device_change_subscribers_[type].end())
 | 
| +    device_change_subscribers_[type].erase(it);
 | 
| +}
 | 
| +
 | 
|  void MediaDevicesManager::SetCachePolicy(MediaDeviceType type,
 | 
|                                           CachePolicy policy) {
 | 
|    DCHECK_CURRENTLY_ON(BrowserThread::IO);
 | 
| @@ -516,6 +537,10 @@ void MediaDevicesManager::NotifyDeviceChangeSubscribers(
 | 
|                                          : MEDIA_DEVICE_AUDIO_CAPTURE;
 | 
|    if (media_stream_manager_)
 | 
|      media_stream_manager_->NotifyDeviceChangeSubscribers(permission_type);
 | 
| +
 | 
| +  for (const auto& subscriber : device_change_subscribers_[type]) {
 | 
| +    subscriber->OnDevicesChanged(type, snapshot);
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  }  // namespace content
 | 
| 
 |