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

Side by Side Diff: content/browser/renderer_host/media/video_capture_manager.cc

Issue 248113003: Fix for closing the desktop sharing notification bar when the shared window is closed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/media/video_capture_manager.h" 5 #include "content/browser/renderer_host/media/video_capture_manager.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 // Detach client from controller. 326 // Detach client from controller.
327 media::VideoCaptureSessionId session_id = 327 media::VideoCaptureSessionId session_id =
328 controller->RemoveClient(client_id, client_handler); 328 controller->RemoveClient(client_id, client_handler);
329 DVLOG(1) << "VideoCaptureManager::StopCaptureForClient, session_id = " 329 DVLOG(1) << "VideoCaptureManager::StopCaptureForClient, session_id = "
330 << session_id; 330 << session_id;
331 331
332 // If controller has no more clients, delete controller and device. 332 // If controller has no more clients, delete controller and device.
333 DestroyDeviceEntryIfNoClients(entry); 333 DestroyDeviceEntryIfNoClients(entry);
334 } 334 }
335 335
336 void VideoCaptureManager::AbortCaptureForDeviceError(
337 VideoCaptureController* controller,
338 VideoCaptureControllerID client_id,
339 VideoCaptureControllerEventHandler* client_handler) {
340 DCHECK_CURRENTLY_ON(BrowserThread::IO);
341 DCHECK(controller);
342 DCHECK(client_handler);
343
344 DeviceEntry* entry = GetDeviceEntryForController(controller);
345 if (!entry) {
346 NOTREACHED();
347 return;
348 }
349
350 std::map<media::VideoCaptureSessionId, MediaStreamDevice>::iterator it;
mcasas 2014/04/24 11:09:47 nit: This data type std::map<media::VideoCaptureSe
jiayl 2014/04/24 18:11:13 Done.
351 for (it = sessions_.begin(); it != sessions_.end(); ++it) {
352 if (it->second.type == entry->stream_type &&
353 it->second.id == entry->id)
354 break;
355 }
356
mcasas 2014/04/24 11:09:47 nit: no blank line?
jiayl 2014/04/24 18:11:13 Done.
357 listener_->Aborted(it->second.type, it->first);
mcasas 2014/04/24 11:09:47 What happens if it->second.{id,type} has not been
jiayl 2014/04/24 18:11:13 Done.
358
359 StopCaptureForClient(controller, client_id, client_handler);
mcasas 2014/04/24 11:09:47 StopCaptureForClient() has overlapping boilerplate
jiayl 2014/04/24 18:11:13 Done.
360 }
361
336 bool VideoCaptureManager::GetDeviceSupportedFormats( 362 bool VideoCaptureManager::GetDeviceSupportedFormats(
337 media::VideoCaptureSessionId capture_session_id, 363 media::VideoCaptureSessionId capture_session_id,
338 media::VideoCaptureFormats* supported_formats) { 364 media::VideoCaptureFormats* supported_formats) {
339 DCHECK_CURRENTLY_ON(BrowserThread::IO); 365 DCHECK_CURRENTLY_ON(BrowserThread::IO);
340 DCHECK(supported_formats->empty()); 366 DCHECK(supported_formats->empty());
341 367
342 std::map<media::VideoCaptureSessionId, MediaStreamDevice>::iterator it = 368 std::map<media::VideoCaptureSessionId, MediaStreamDevice>::iterator it =
343 sessions_.find(capture_session_id); 369 sessions_.find(capture_session_id);
344 if (it == sessions_.end()) 370 if (it == sessions_.end())
345 return false; 371 return false;
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 if (device_info.type == device->stream_type && 586 if (device_info.type == device->stream_type &&
561 device_info.id == device->id) { 587 device_info.id == device->id) {
562 return device; 588 return device;
563 } 589 }
564 } 590 }
565 return NULL; 591 return NULL;
566 } 592 }
567 593
568 VideoCaptureManager::DeviceEntry* 594 VideoCaptureManager::DeviceEntry*
569 VideoCaptureManager::GetDeviceEntryForController( 595 VideoCaptureManager::GetDeviceEntryForController(
570 const VideoCaptureController* controller) { 596 const VideoCaptureController* controller) const {
571 // Look up |controller| in |devices_|. 597 // Look up |controller| in |devices_|.
572 for (DeviceEntries::iterator it = devices_.begin(); 598 for (DeviceEntries::const_iterator it = devices_.begin();
573 it != devices_.end(); ++it) { 599 it != devices_.end(); ++it) {
574 if ((*it)->video_capture_controller.get() == controller) { 600 if ((*it)->video_capture_controller.get() == controller) {
575 return *it; 601 return *it;
576 } 602 }
577 } 603 }
578 return NULL; 604 return NULL;
579 } 605 }
580 606
581 void VideoCaptureManager::DestroyDeviceEntryIfNoClients(DeviceEntry* entry) { 607 void VideoCaptureManager::DestroyDeviceEntryIfNoClients(DeviceEntry* entry) {
582 DCHECK_CURRENTLY_ON(BrowserThread::IO); 608 DCHECK_CURRENTLY_ON(BrowserThread::IO);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 void VideoCaptureManager::SaveDesktopCaptureWindowIdOnDeviceThread( 679 void VideoCaptureManager::SaveDesktopCaptureWindowIdOnDeviceThread(
654 media::VideoCaptureSessionId session_id, 680 media::VideoCaptureSessionId session_id,
655 gfx::NativeViewId window_id) { 681 gfx::NativeViewId window_id) {
656 DCHECK(IsOnDeviceThread()); 682 DCHECK(IsOnDeviceThread());
657 DCHECK(notification_window_ids_.find(session_id) == 683 DCHECK(notification_window_ids_.find(session_id) ==
658 notification_window_ids_.end()); 684 notification_window_ids_.end());
659 notification_window_ids_[session_id] = window_id; 685 notification_window_ids_[session_id] = window_id;
660 } 686 }
661 687
662 } // namespace content 688 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698