| 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/renderer/media/user_media_client_impl.h" |     5 #include "content/renderer/media/user_media_client_impl.h" | 
|     6  |     6  | 
|     7 #include <stddef.h> |     7 #include <stddef.h> | 
|     8  |     8  | 
|     9 #include <utility> |     9 #include <utility> | 
|    10 #include <vector> |    10 #include <vector> | 
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   280       true /* audio input */, true /* video input */, true /* audio output */, |   280       true /* audio input */, true /* video input */, true /* audio output */, | 
|   281       security_origin, |   281       security_origin, | 
|   282       base::Bind(&UserMediaClientImpl::FinalizeEnumerateDevices, |   282       base::Bind(&UserMediaClientImpl::FinalizeEnumerateDevices, | 
|   283                  weak_factory_.GetWeakPtr(), media_devices_request)); |   283                  weak_factory_.GetWeakPtr(), media_devices_request)); | 
|   284 } |   284 } | 
|   285  |   285  | 
|   286 void UserMediaClientImpl::setMediaDeviceChangeObserver( |   286 void UserMediaClientImpl::setMediaDeviceChangeObserver( | 
|   287     const blink::WebMediaDeviceChangeObserver& observer) { |   287     const blink::WebMediaDeviceChangeObserver& observer) { | 
|   288   media_device_change_observer_ = observer; |   288   media_device_change_observer_ = observer; | 
|   289  |   289  | 
 |   290   // Do nothing if setting a valid observer while already subscribed or setting | 
 |   291   // no observer while unsubscribed. | 
 |   292   if (media_device_change_observer_.isNull() == | 
 |   293       device_change_subscription_ids_.empty()) | 
 |   294     return; | 
 |   295  | 
 |   296   base::WeakPtr<MediaDevicesEventDispatcher> event_dispatcher = | 
 |   297       MediaDevicesEventDispatcher::GetForRenderFrame(render_frame()); | 
|   290   if (media_device_change_observer_.isNull()) { |   298   if (media_device_change_observer_.isNull()) { | 
|   291     media_stream_dispatcher_->CancelDeviceChangeNotifications( |   299     event_dispatcher->UnsubscribeDeviceChangeNotifications( | 
|   292         weak_factory_.GetWeakPtr()); |   300         device_change_subscription_ids_); | 
 |   301     device_change_subscription_ids_.clear(); | 
|   293   } else { |   302   } else { | 
|   294     url::Origin origin = observer.getSecurityOrigin(); |   303     DCHECK(device_change_subscription_ids_.empty()); | 
|   295     media_stream_dispatcher_->SubscribeToDeviceChangeNotifications( |   304     url::Origin security_origin = | 
|   296         weak_factory_.GetWeakPtr(), origin); |   305         media_device_change_observer_.getSecurityOrigin(); | 
 |   306     device_change_subscription_ids_ = | 
 |   307         event_dispatcher->SubscribeDeviceChangeNotifications( | 
 |   308             security_origin, base::Bind(&UserMediaClientImpl::DevicesChanged, | 
 |   309                                         weak_factory_.GetWeakPtr())); | 
|   297   } |   310   } | 
|   298 } |   311 } | 
|   299  |   312  | 
|   300 // Callback from MediaStreamDispatcher. |   313 // Callback from MediaStreamDispatcher. | 
|   301 // The requested stream have been generated by the MediaStreamDispatcher. |   314 // The requested stream have been generated by the MediaStreamDispatcher. | 
|   302 void UserMediaClientImpl::OnStreamGenerated( |   315 void UserMediaClientImpl::OnStreamGenerated( | 
|   303     int request_id, |   316     int request_id, | 
|   304     const std::string& label, |   317     const std::string& label, | 
|   305     const StreamDeviceInfoArray& audio_array, |   318     const StreamDeviceInfoArray& audio_array, | 
|   306     const StreamDeviceInfoArray& video_array) { |   319     const StreamDeviceInfoArray& video_array) { | 
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   592     for (auto& web_track : tracks) { |   605     for (auto& web_track : tracks) { | 
|   593       MediaStreamTrack* track = MediaStreamTrack::GetTrack(web_track); |   606       MediaStreamTrack* track = MediaStreamTrack::GetTrack(web_track); | 
|   594       if (track) |   607       if (track) | 
|   595         track->Stop(); |   608         track->Stop(); | 
|   596     } |   609     } | 
|   597   } |   610   } | 
|   598  |   611  | 
|   599   DeleteUserMediaRequestInfo(request); |   612   DeleteUserMediaRequestInfo(request); | 
|   600 } |   613 } | 
|   601  |   614  | 
 |   615 // TODO(guidou): Remove once this method is removed from the | 
 |   616 // MediaStreamDispatcherEventHandler interface. http://648183. | 
|   602 void UserMediaClientImpl::OnDevicesEnumerated( |   617 void UserMediaClientImpl::OnDevicesEnumerated( | 
|   603     int request_id, |   618     int request_id, | 
|   604     const StreamDeviceInfoArray& device_array) { |   619     const StreamDeviceInfoArray& device_array) { | 
|   605   NOTREACHED(); |   620   NOTREACHED(); | 
|   606 } |   621 } | 
|   607  |   622  | 
|   608 void UserMediaClientImpl::OnDeviceOpened( |   623 void UserMediaClientImpl::OnDeviceOpened( | 
|   609     int request_id, |   624     int request_id, | 
|   610     const std::string& label, |   625     const std::string& label, | 
|   611     const StreamDeviceInfo& video_device) { |   626     const StreamDeviceInfo& video_device) { | 
|   612   DVLOG(1) << "UserMediaClientImpl::OnDeviceOpened(" |   627   DVLOG(1) << "UserMediaClientImpl::OnDeviceOpened(" | 
|   613            << request_id << ", " << label << ")"; |   628            << request_id << ", " << label << ")"; | 
|   614   NOTIMPLEMENTED(); |   629   NOTIMPLEMENTED(); | 
|   615 } |   630 } | 
|   616  |   631  | 
|   617 void UserMediaClientImpl::OnDeviceOpenFailed(int request_id) { |   632 void UserMediaClientImpl::OnDeviceOpenFailed(int request_id) { | 
|   618   DVLOG(1) << "UserMediaClientImpl::VideoDeviceOpenFailed(" |   633   DVLOG(1) << "UserMediaClientImpl::VideoDeviceOpenFailed(" | 
|   619            << request_id << ")"; |   634            << request_id << ")"; | 
|   620   NOTIMPLEMENTED(); |   635   NOTIMPLEMENTED(); | 
|   621 } |   636 } | 
|   622  |   637  | 
 |   638 // TODO(guidou): Remove once this method is removed from the | 
 |   639 // MediaStreamDispatcherEventHandler interface. http://648183. | 
|   623 void UserMediaClientImpl::OnDevicesChanged() { |   640 void UserMediaClientImpl::OnDevicesChanged() { | 
|   624   DVLOG(1) << "UserMediaClientImpl::OnDevicesChanged()"; |   641   NOTREACHED(); | 
 |   642 } | 
 |   643  | 
 |   644 void UserMediaClientImpl::DevicesChanged( | 
 |   645     MediaDeviceType type, | 
 |   646     const MediaDeviceInfoArray& device_infos) { | 
|   625   if (!media_device_change_observer_.isNull()) |   647   if (!media_device_change_observer_.isNull()) | 
|   626     media_device_change_observer_.didChangeMediaDevices(); |   648     media_device_change_observer_.didChangeMediaDevices(); | 
|   627 } |   649 } | 
|   628  |   650  | 
|   629 void UserMediaClientImpl::GetUserMediaRequestSucceeded( |   651 void UserMediaClientImpl::GetUserMediaRequestSucceeded( | 
|   630     const blink::WebMediaStream& stream, |   652     const blink::WebMediaStream& stream, | 
|   631     blink::WebUserMediaRequest request_info) { |   653     blink::WebUserMediaRequest request_info) { | 
|   632   // Completing the getUserMedia request can lead to that the RenderFrame and |   654   // Completing the getUserMedia request can lead to that the RenderFrame and | 
|   633   // the UserMediaClientImpl is destroyed if the JavaScript code request the |   655   // the UserMediaClientImpl is destroyed if the JavaScript code request the | 
|   634   // frame to be destroyed within the scope of the callback. Therefore, |   656   // frame to be destroyed within the scope of the callback. Therefore, | 
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   970  |   992  | 
|   971 bool UserMediaClientImpl::UserMediaRequestInfo::HasPendingSources() const { |   993 bool UserMediaClientImpl::UserMediaRequestInfo::HasPendingSources() const { | 
|   972   return !sources_waiting_for_callback_.empty(); |   994   return !sources_waiting_for_callback_.empty(); | 
|   973 } |   995 } | 
|   974  |   996  | 
|   975 void UserMediaClientImpl::OnDestruct() { |   997 void UserMediaClientImpl::OnDestruct() { | 
|   976   delete this; |   998   delete this; | 
|   977 } |   999 } | 
|   978  |  1000  | 
|   979 }  // namespace content |  1001 }  // namespace content | 
| OLD | NEW |