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

Side by Side Diff: chrome/browser/media/media_stream_capture_indicator.cc

Issue 10912004: Begin adding support for tab mirroring via the MediaStream audio/video capturing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 | Annotate | Revision Log
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 "chrome/browser/media/media_stream_capture_indicator.h" 5 #include "chrome/browser/media/media_stream_capture_indicator.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/i18n/rtl.h" 8 #include "base/i18n/rtl.h"
9 #include "base/logging.h"
9 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
10 #include "chrome/app/chrome_command_ids.h" 11 #include "chrome/app/chrome_command_ids.h"
11 #include "chrome/browser/browser_process.h" 12 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/extensions/extension_service.h" 13 #include "chrome/browser/extensions/extension_service.h"
13 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/status_icons/status_icon.h" 15 #include "chrome/browser/status_icons/status_icon.h"
15 #include "chrome/browser/status_icons/status_tray.h" 16 #include "chrome/browser/status_icons/status_tray.h"
16 #include "chrome/browser/tab_contents/tab_util.h" 17 #include "chrome/browser/tab_contents/tab_util.h"
17 #include "content/public/browser/browser_thread.h" 18 #include "content/public/browser/browser_thread.h"
18 #include "content/public/browser/content_browser_client.h" 19 #include "content/public/browser/content_browser_client.h"
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 tabs_.begin(), tabs_.end(), TabEquals(render_process_id, render_view_id)); 396 tabs_.begin(), tabs_.end(), TabEquals(render_process_id, render_view_id));
396 if (iter == tabs_.end()) { 397 if (iter == tabs_.end()) {
397 tabs_.push_back(CaptureDeviceTab(render_process_id, render_view_id)); 398 tabs_.push_back(CaptureDeviceTab(render_process_id, render_view_id));
398 iter = tabs_.end() - 1; 399 iter = tabs_.end() - 1;
399 } 400 }
400 401
401 bool audio = false; 402 bool audio = false;
402 bool video = false; 403 bool video = false;
403 content::MediaStreamDevices::const_iterator dev = devices.begin(); 404 content::MediaStreamDevices::const_iterator dev = devices.begin();
404 for (; dev != devices.end(); ++dev) { 405 for (; dev != devices.end(); ++dev) {
405 DCHECK(dev->type == content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE || 406 if (content::IsAudioMediaStreamDeviceType(dev->type)) {
406 dev->type == content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE);
407 if (dev->type == content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE) {
408 ++iter->audio_ref_count; 407 ++iter->audio_ref_count;
409 audio = true; 408 audio = true;
410 } else { 409 } else if (content::IsVideoMediaStreamDeviceType(dev->type)) {
411 ++iter->video_ref_count; 410 ++iter->video_ref_count;
412 video = true; 411 video = true;
412 } else {
413 NOTIMPLEMENTED();
413 } 414 }
414 } 415 }
415 416
416 UpdateStatusTrayIconContextMenu(); 417 UpdateStatusTrayIconContextMenu();
417 418
418 ShowBalloon(render_process_id, render_view_id, audio, video); 419 ShowBalloon(render_process_id, render_view_id, audio, video);
419 } 420 }
420 421
421 void MediaStreamCaptureIndicator::RemoveCaptureDeviceTab( 422 void MediaStreamCaptureIndicator::RemoveCaptureDeviceTab(
422 int render_process_id, 423 int render_process_id,
423 int render_view_id, 424 int render_view_id,
424 const content::MediaStreamDevices& devices) { 425 const content::MediaStreamDevices& devices) {
425 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 426 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
426 CaptureDeviceTabs::iterator iter = std::find_if( 427 CaptureDeviceTabs::iterator iter = std::find_if(
427 tabs_.begin(), tabs_.end(), TabEquals(render_process_id, render_view_id)); 428 tabs_.begin(), tabs_.end(), TabEquals(render_process_id, render_view_id));
428 429
429 if (iter != tabs_.end()) { 430 if (iter != tabs_.end()) {
430 content::MediaStreamDevices::const_iterator dev = devices.begin(); 431 content::MediaStreamDevices::const_iterator dev = devices.begin();
431 for (; dev != devices.end(); ++dev) { 432 for (; dev != devices.end(); ++dev) {
432 DCHECK(dev->type == content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE || 433 if (content::IsAudioMediaStreamDeviceType(dev->type)) {
433 dev->type == content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE);
434 if (dev->type == content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE)
435 --iter->audio_ref_count; 434 --iter->audio_ref_count;
436 else 435 } else if (content::IsVideoMediaStreamDeviceType(dev->type)) {
437 --iter->video_ref_count; 436 --iter->video_ref_count;
437 } else {
438 NOTIMPLEMENTED();
439 }
438 440
439 DCHECK_GE(iter->audio_ref_count, 0); 441 DCHECK_GE(iter->audio_ref_count, 0);
440 DCHECK_GE(iter->video_ref_count, 0); 442 DCHECK_GE(iter->video_ref_count, 0);
441 } 443 }
442 444
443 // Remove the tab if all the devices have been closed. 445 // Remove the tab if all the devices have been closed.
444 if (iter->audio_ref_count == 0 && iter->video_ref_count == 0) 446 if (iter->audio_ref_count == 0 && iter->video_ref_count == 0)
445 tabs_.erase(iter); 447 tabs_.erase(iter);
446 } 448 }
447 449
448 UpdateStatusTrayIconContextMenu(); 450 UpdateStatusTrayIconContextMenu();
449 } 451 }
450 452
451 void MediaStreamCaptureIndicator::EnsureImageLoadingTracker() { 453 void MediaStreamCaptureIndicator::EnsureImageLoadingTracker() {
452 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 454 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
453 if (tracker_.get()) 455 if (tracker_.get())
454 return; 456 return;
455 457
456 tracker_.reset(new ImageLoadingTracker(this)); 458 tracker_.reset(new ImageLoadingTracker(this));
457 pending_messages_.clear(); 459 pending_messages_.clear();
458 request_index_ = 0; 460 request_index_ = 0;
459 } 461 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698