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

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

Issue 10912070: Makes it possible to run content_browsertests with --as-browser and fake WebRTC devices. (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 "content/browser/renderer_host/media/media_stream_manager.h" 5 #include "content/browser/renderer_host/media/media_stream_manager.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 DeviceRequests::iterator it = requests_.find(label); 683 DeviceRequests::iterator it = requests_.find(label);
684 if (it != requests_.end()) { 684 if (it != requests_.end()) {
685 DCHECK_EQ(it->second.type, DeviceRequest::GENERATE_STREAM); 685 DCHECK_EQ(it->second.type, DeviceRequest::GENERATE_STREAM);
686 it->second.requester->StreamGenerationFailed(label); 686 it->second.requester->StreamGenerationFailed(label);
687 requests_.erase(it); 687 requests_.erase(it);
688 return; 688 return;
689 } 689 }
690 } 690 }
691 691
692 void MediaStreamManager::UseFakeDevice() { 692 void MediaStreamManager::UseFakeDevice() {
693 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 693 if(!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
694 BrowserThread::PostTask(BrowserThread::IO,
695 FROM_HERE,
696 base::Bind(&media_stream::MediaStreamManager::UseFakeDevice,
697 base::Unretained(this)));
698 return;
699 }
700
694 video_capture_manager()->UseFakeDevice(); 701 video_capture_manager()->UseFakeDevice();
695 device_settings_->UseFakeUI(); 702 device_settings_->UseFakeUI();
696 } 703 }
697 704
698 void MediaStreamManager::WillDestroyCurrentMessageLoop() { 705 void MediaStreamManager::WillDestroyCurrentMessageLoop() {
699 DCHECK_EQ(MessageLoop::current(), io_loop_); 706 DCHECK_EQ(MessageLoop::current(), io_loop_);
700 DCHECK(requests_.empty()); 707 DCHECK(requests_.empty());
701 if (device_thread_.get()) { 708 if (device_thread_.get()) {
702 StopMonitoring(); 709 StopMonitoring();
703 710
704 video_capture_manager_->Unregister(); 711 video_capture_manager_->Unregister();
705 audio_input_device_manager_->Unregister(); 712 audio_input_device_manager_->Unregister();
706 device_thread_.reset(); 713 device_thread_.reset();
707 } 714 }
708 715
709 audio_input_device_manager_ = NULL; 716 audio_input_device_manager_ = NULL;
710 video_capture_manager_ = NULL; 717 video_capture_manager_ = NULL;
711 io_loop_ = NULL; 718 io_loop_ = NULL;
712 device_settings_.reset(); 719 device_settings_.reset();
713 } 720 }
714 721
715 void MediaStreamManager::NotifyObserverDevicesOpened(DeviceRequest* request) { 722 void MediaStreamManager::NotifyObserverDevicesOpened(DeviceRequest* request) {
716 content::MediaObserver* media_observer = 723 content::MediaObserver* media_observer =
717 content::GetContentClient()->browser()->GetMediaObserver(); 724 content::GetContentClient()->browser()->GetMediaObserver();
725 // Check if the embedder isn't interested in the notification.
jam 2012/09/04 15:18:14 nit: no need to comment this, per the style guide
phoglund_chromium 2012/09/05 11:43:54 Done.
726 if (media_observer == NULL)
727 return;
718 content::MediaStreamDevices opened_devices; 728 content::MediaStreamDevices opened_devices;
719 DevicesFromRequest(request, &opened_devices); 729 DevicesFromRequest(request, &opened_devices);
720 DCHECK(!opened_devices.empty()); 730 DCHECK(!opened_devices.empty());
721 media_observer->OnCaptureDevicesOpened(request->render_process_id, 731 media_observer->OnCaptureDevicesOpened(request->render_process_id,
722 request->render_view_id, 732 request->render_view_id,
723 opened_devices); 733 opened_devices);
724 } 734 }
725 735
726 void MediaStreamManager::NotifyObserverDevicesClosed(DeviceRequest* request) { 736 void MediaStreamManager::NotifyObserverDevicesClosed(DeviceRequest* request) {
727 content::MediaObserver* media_observer = 737 content::MediaObserver* media_observer =
728 content::GetContentClient()->browser()->GetMediaObserver(); 738 content::GetContentClient()->browser()->GetMediaObserver();
739 // Check if the embedder isn't interested in the notification.
740 if (media_observer == NULL)
741 return;
729 content::MediaStreamDevices closed_devices; 742 content::MediaStreamDevices closed_devices;
730 DevicesFromRequest(request, &closed_devices); 743 DevicesFromRequest(request, &closed_devices);
731 if (closed_devices.empty()) 744 if (closed_devices.empty())
732 return; 745 return;
733 media_observer->OnCaptureDevicesClosed(request->render_process_id, 746 media_observer->OnCaptureDevicesClosed(request->render_process_id,
734 request->render_view_id, 747 request->render_view_id,
735 closed_devices); 748 closed_devices);
736 } 749 }
737 750
738 void MediaStreamManager::DevicesFromRequest( 751 void MediaStreamManager::DevicesFromRequest(
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 it != requests_.end(); ++it) { 865 it != requests_.end(); ++it) {
853 if (it->second.type == DeviceRequest::ENUMERATE_DEVICES && 866 if (it->second.type == DeviceRequest::ENUMERATE_DEVICES &&
854 Requested(it->second.options, stream_type)) { 867 Requested(it->second.options, stream_type)) {
855 return true; 868 return true;
856 } 869 }
857 } 870 }
858 return false; 871 return false;
859 } 872 }
860 873
861 } // namespace media_stream 874 } // namespace media_stream
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698