Index: content/browser/renderer_host/media/video_capture_manager.cc |
diff --git a/content/browser/renderer_host/media/video_capture_manager.cc b/content/browser/renderer_host/media/video_capture_manager.cc |
index a7cca9c22665fb08cd80f97f94c23d3908098d92..df56e0196a3270d83d3a9801cbf5364057a33af0 100644 |
--- a/content/browser/renderer_host/media/video_capture_manager.cc |
+++ b/content/browser/renderer_host/media/video_capture_manager.cc |
@@ -160,8 +160,7 @@ void VideoCaptureManager::Close(int capture_session_id) { |
DCHECK(listener_); |
DVLOG(1) << "VideoCaptureManager::Close, id " << capture_session_id; |
- std::map<media::VideoCaptureSessionId, MediaStreamDevice>::iterator |
- session_it = sessions_.find(capture_session_id); |
+ SessionMap::iterator session_it = sessions_.find(capture_session_id); |
if (session_it == sessions_.end()) { |
NOTREACHED(); |
return; |
@@ -312,7 +311,8 @@ void VideoCaptureManager::StartCaptureForClient( |
void VideoCaptureManager::StopCaptureForClient( |
VideoCaptureController* controller, |
VideoCaptureControllerID client_id, |
- VideoCaptureControllerEventHandler* client_handler) { |
+ VideoCaptureControllerEventHandler* client_handler, |
+ bool aborted_due_to_error) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
DCHECK(controller); |
DCHECK(client_handler); |
@@ -322,6 +322,16 @@ void VideoCaptureManager::StopCaptureForClient( |
NOTREACHED(); |
return; |
} |
+ if (aborted_due_to_error) { |
+ SessionMap::iterator it; |
+ for (it = sessions_.begin(); it != sessions_.end(); ++it) { |
+ if (it->second.type == entry->stream_type && |
+ it->second.id == entry->id) { |
+ listener_->Aborted(it->second.type, it->first); |
+ break; |
+ } |
+ } |
+ } |
// Detach client from controller. |
media::VideoCaptureSessionId session_id = |
@@ -339,8 +349,7 @@ bool VideoCaptureManager::GetDeviceSupportedFormats( |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
DCHECK(supported_formats->empty()); |
- std::map<media::VideoCaptureSessionId, MediaStreamDevice>::iterator it = |
- sessions_.find(capture_session_id); |
+ SessionMap::iterator it = sessions_.find(capture_session_id); |
if (it == sessions_.end()) |
return false; |
DVLOG(1) << "GetDeviceSupportedFormats for device: " << it->second.name; |
@@ -359,8 +368,7 @@ bool VideoCaptureManager::GetDeviceFormatsInUse( |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
DCHECK(formats_in_use->empty()); |
- std::map<media::VideoCaptureSessionId, MediaStreamDevice>::iterator it = |
- sessions_.find(capture_session_id); |
+ SessionMap::iterator it = sessions_.find(capture_session_id); |
if (it == sessions_.end()) |
return false; |
DVLOG(1) << "GetDeviceFormatsInUse for device: " << it->second.name; |
@@ -380,8 +388,7 @@ void VideoCaptureManager::SetDesktopCaptureWindowId( |
media::VideoCaptureSessionId session_id, |
gfx::NativeViewId window_id) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- std::map<media::VideoCaptureSessionId, MediaStreamDevice>::iterator |
- session_it = sessions_.find(session_id); |
+ SessionMap::iterator session_it = sessions_.find(session_id); |
if (session_it == sessions_.end()) { |
device_task_runner_->PostTask( |
FROM_HERE, |
@@ -567,9 +574,9 @@ VideoCaptureManager::GetDeviceEntryForMediaStreamDevice( |
VideoCaptureManager::DeviceEntry* |
VideoCaptureManager::GetDeviceEntryForController( |
- const VideoCaptureController* controller) { |
+ const VideoCaptureController* controller) const { |
// Look up |controller| in |devices_|. |
- for (DeviceEntries::iterator it = devices_.begin(); |
+ for (DeviceEntries::const_iterator it = devices_.begin(); |
it != devices_.end(); ++it) { |
if ((*it)->video_capture_controller.get() == controller) { |
return *it; |
@@ -602,8 +609,7 @@ VideoCaptureManager::DeviceEntry* VideoCaptureManager::GetOrCreateDeviceEntry( |
media::VideoCaptureSessionId capture_session_id) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- std::map<media::VideoCaptureSessionId, MediaStreamDevice>::iterator |
- session_it = sessions_.find(capture_session_id); |
+ SessionMap::iterator session_it = sessions_.find(capture_session_id); |
if (session_it == sessions_.end()) { |
return NULL; |
} |