OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/renderer/extensions/cast_streaming_native_handler.h" | 5 #include "chrome/renderer/extensions/cast_streaming_native_handler.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | |
10 #include <algorithm> | 9 #include <algorithm> |
11 #include <functional> | 10 #include <functional> |
12 #include <iterator> | 11 #include <iterator> |
13 #include <string> | 12 #include <string> |
| 13 #include <utility> |
14 #include <vector> | 14 #include <vector> |
15 | 15 |
16 #include "base/location.h" | 16 #include "base/location.h" |
17 #include "base/logging.h" | 17 #include "base/logging.h" |
18 #include "base/macros.h" | 18 #include "base/macros.h" |
19 #include "base/single_thread_task_runner.h" | 19 #include "base/single_thread_task_runner.h" |
20 #include "base/strings/string_number_conversions.h" | 20 #include "base/strings/string_number_conversions.h" |
21 #include "base/thread_task_runner_handle.h" | 21 #include "base/thread_task_runner_handle.h" |
22 #include "chrome/common/extensions/api/cast_streaming_receiver_session.h" | 22 #include "chrome/common/extensions/api/cast_streaming_receiver_session.h" |
23 #include "chrome/common/extensions/api/cast_streaming_rtp_stream.h" | 23 #include "chrome/common/extensions/api/cast_streaming_rtp_stream.h" |
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 v8::String::NewFromUtf8(args.GetIsolate(), kInvalidAudioParams))); | 812 v8::String::NewFromUtf8(args.GetIsolate(), kInvalidAudioParams))); |
813 return; | 813 return; |
814 } | 814 } |
815 | 815 |
816 scoped_ptr<base::DictionaryValue> options; | 816 scoped_ptr<base::DictionaryValue> options; |
817 if (args.Length() >= 9) { | 817 if (args.Length() >= 9) { |
818 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); | 818 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); |
819 scoped_ptr<base::Value> options_value( | 819 scoped_ptr<base::Value> options_value( |
820 converter->FromV8Value(args[8], context()->v8_context())); | 820 converter->FromV8Value(args[8], context()->v8_context())); |
821 if (!options_value->IsType(base::Value::TYPE_NULL)) { | 821 if (!options_value->IsType(base::Value::TYPE_NULL)) { |
822 options = base::DictionaryValue::From(options_value.Pass()); | 822 options = base::DictionaryValue::From(std::move(options_value)); |
823 if (!options) { | 823 if (!options) { |
824 args.GetIsolate()->ThrowException(v8::Exception::TypeError( | 824 args.GetIsolate()->ThrowException(v8::Exception::TypeError( |
825 v8::String::NewFromUtf8(args.GetIsolate(), kUnableToConvertArgs))); | 825 v8::String::NewFromUtf8(args.GetIsolate(), kUnableToConvertArgs))); |
826 return; | 826 return; |
827 } | 827 } |
828 } | 828 } |
829 } | 829 } |
830 | 830 |
831 if (!options) { | 831 if (!options) { |
832 options.reset(new base::DictionaryValue()); | 832 options.reset(new base::DictionaryValue()); |
833 } | 833 } |
834 | 834 |
835 v8::CopyablePersistentTraits<v8::Function>::CopyablePersistent error_callback; | 835 v8::CopyablePersistentTraits<v8::Function>::CopyablePersistent error_callback; |
836 error_callback.Reset(args.GetIsolate(), | 836 error_callback.Reset(args.GetIsolate(), |
837 v8::Local<v8::Function>(args[7].As<v8::Function>())); | 837 v8::Local<v8::Function>(args[7].As<v8::Function>())); |
838 | 838 |
839 session->Start( | 839 session->Start( |
840 audio_config, video_config, local_endpoint, remote_endpoint, | 840 audio_config, video_config, local_endpoint, remote_endpoint, |
841 options.Pass(), capture_format, | 841 std::move(options), capture_format, |
842 base::Bind(&CastStreamingNativeHandler::AddTracksToMediaStream, | 842 base::Bind(&CastStreamingNativeHandler::AddTracksToMediaStream, |
843 weak_factory_.GetWeakPtr(), url, params), | 843 weak_factory_.GetWeakPtr(), url, params), |
844 base::Bind(&CastStreamingNativeHandler::CallReceiverErrorCallback, | 844 base::Bind(&CastStreamingNativeHandler::CallReceiverErrorCallback, |
845 weak_factory_.GetWeakPtr(), error_callback)); | 845 weak_factory_.GetWeakPtr(), error_callback)); |
846 } | 846 } |
847 | 847 |
848 void CastStreamingNativeHandler::CallReceiverErrorCallback( | 848 void CastStreamingNativeHandler::CallReceiverErrorCallback( |
849 v8::CopyablePersistentTraits<v8::Function>::CopyablePersistent function, | 849 v8::CopyablePersistentTraits<v8::Function>::CopyablePersistent function, |
850 const std::string& error_message) { | 850 const std::string& error_message) { |
851 v8::Isolate* isolate = context()->v8_context()->GetIsolate(); | 851 v8::Isolate* isolate = context()->v8_context()->GetIsolate(); |
852 v8::Local<v8::Value> arg = v8::String::NewFromUtf8(isolate, | 852 v8::Local<v8::Value> arg = v8::String::NewFromUtf8(isolate, |
853 error_message.data(), | 853 error_message.data(), |
854 v8::String::kNormalString, | 854 v8::String::kNormalString, |
855 error_message.size()); | 855 error_message.size()); |
856 context()->CallFunction( | 856 context()->CallFunction( |
857 v8::Local<v8::Function>::New(isolate, function), 1, &arg); | 857 v8::Local<v8::Function>::New(isolate, function), 1, &arg); |
858 } | 858 } |
859 | 859 |
860 | 860 |
861 void CastStreamingNativeHandler::AddTracksToMediaStream( | 861 void CastStreamingNativeHandler::AddTracksToMediaStream( |
862 const std::string& url, | 862 const std::string& url, |
863 const media::AudioParameters& params, | 863 const media::AudioParameters& params, |
864 scoped_refptr<media::AudioCapturerSource> audio, | 864 scoped_refptr<media::AudioCapturerSource> audio, |
865 scoped_ptr<media::VideoCapturerSource> video) { | 865 scoped_ptr<media::VideoCapturerSource> video) { |
866 content::AddAudioTrackToMediaStream(audio, params, true, true, url); | 866 content::AddAudioTrackToMediaStream(audio, params, true, true, url); |
867 content::AddVideoTrackToMediaStream(video.Pass(), true, true, url); | 867 content::AddVideoTrackToMediaStream(std::move(video), true, true, url); |
868 } | 868 } |
869 | 869 |
870 } // namespace extensions | 870 } // namespace extensions |
OLD | NEW |