OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |