| 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/media/media_internals.h" | 5 #include "content/browser/media/media_internals.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <tuple> | 10 #include <tuple> |
| (...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 int status; | 772 int status; |
| 773 if (!event.params.GetInteger("pipeline_error", &status) || | 773 if (!event.params.GetInteger("pipeline_error", &status) || |
| 774 status < static_cast<int>(media::PIPELINE_OK) || | 774 status < static_cast<int>(media::PIPELINE_OK) || |
| 775 status > static_cast<int>(media::PIPELINE_STATUS_MAX)) { | 775 status > static_cast<int>(media::PIPELINE_STATUS_MAX)) { |
| 776 return false; | 776 return false; |
| 777 } | 777 } |
| 778 media::PipelineStatus error = static_cast<media::PipelineStatus>(status); | 778 media::PipelineStatus error = static_cast<media::PipelineStatus>(status); |
| 779 dict.SetString("params.pipeline_error", | 779 dict.SetString("params.pipeline_error", |
| 780 media::MediaLog::PipelineStatusToString(error)); | 780 media::MediaLog::PipelineStatusToString(error)); |
| 781 } else { | 781 } else { |
| 782 dict.Set("params", event.params.DeepCopy()); | 782 dict.Set("params", base::MakeUnique<base::Value>(event.params)); |
| 783 } | 783 } |
| 784 | 784 |
| 785 *update = SerializeUpdate("media.onMediaEvent", &dict); | 785 *update = SerializeUpdate("media.onMediaEvent", &dict); |
| 786 return true; | 786 return true; |
| 787 } | 787 } |
| 788 | 788 |
| 789 void MediaInternals::OnMediaEvents( | 789 void MediaInternals::OnMediaEvents( |
| 790 int render_process_id, const std::vector<media::MediaLogEvent>& events) { | 790 int render_process_id, const std::vector<media::MediaLogEvent>& events) { |
| 791 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 791 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 792 // Notify observers that |event| has occurred. | 792 // Notify observers that |event| has occurred. |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 864 } | 864 } |
| 865 | 865 |
| 866 void MediaInternals::UpdateVideoCaptureDeviceCapabilities( | 866 void MediaInternals::UpdateVideoCaptureDeviceCapabilities( |
| 867 const std::vector<std::tuple<media::VideoCaptureDeviceDescriptor, | 867 const std::vector<std::tuple<media::VideoCaptureDeviceDescriptor, |
| 868 media::VideoCaptureFormats>>& | 868 media::VideoCaptureFormats>>& |
| 869 descriptors_and_formats) { | 869 descriptors_and_formats) { |
| 870 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 870 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 871 video_capture_capabilities_cached_data_.Clear(); | 871 video_capture_capabilities_cached_data_.Clear(); |
| 872 | 872 |
| 873 for (const auto& device_format_pair : descriptors_and_formats) { | 873 for (const auto& device_format_pair : descriptors_and_formats) { |
| 874 base::ListValue* format_list = new base::ListValue(); | 874 auto format_list = base::MakeUnique<base::ListValue>(); |
| 875 // TODO(nisse): Representing format information as a string, to be | 875 // TODO(nisse): Representing format information as a string, to be |
| 876 // parsed by the javascript handler, is brittle. Consider passing | 876 // parsed by the javascript handler, is brittle. Consider passing |
| 877 // a list of mappings instead. | 877 // a list of mappings instead. |
| 878 | 878 |
| 879 const media::VideoCaptureDeviceDescriptor& descriptor = | 879 const media::VideoCaptureDeviceDescriptor& descriptor = |
| 880 std::get<0>(device_format_pair); | 880 std::get<0>(device_format_pair); |
| 881 const media::VideoCaptureFormats& supported_formats = | 881 const media::VideoCaptureFormats& supported_formats = |
| 882 std::get<1>(device_format_pair); | 882 std::get<1>(device_format_pair); |
| 883 for (const auto& format : supported_formats) | 883 for (const auto& format : supported_formats) |
| 884 format_list->AppendString(media::VideoCaptureFormat::ToString(format)); | 884 format_list->AppendString(media::VideoCaptureFormat::ToString(format)); |
| 885 | 885 |
| 886 std::unique_ptr<base::DictionaryValue> device_dict( | 886 std::unique_ptr<base::DictionaryValue> device_dict( |
| 887 new base::DictionaryValue()); | 887 new base::DictionaryValue()); |
| 888 device_dict->SetString("id", descriptor.device_id); | 888 device_dict->SetString("id", descriptor.device_id); |
| 889 device_dict->SetString("name", descriptor.GetNameAndModel()); | 889 device_dict->SetString("name", descriptor.GetNameAndModel()); |
| 890 device_dict->Set("formats", format_list); | 890 device_dict->Set("formats", std::move(format_list)); |
| 891 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ | 891 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ |
| 892 defined(OS_ANDROID) | 892 defined(OS_ANDROID) |
| 893 device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString()); | 893 device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString()); |
| 894 #endif | 894 #endif |
| 895 video_capture_capabilities_cached_data_.Append(std::move(device_dict)); | 895 video_capture_capabilities_cached_data_.Append(std::move(device_dict)); |
| 896 } | 896 } |
| 897 | 897 |
| 898 SendVideoCaptureDeviceCapabilities(); | 898 SendVideoCaptureDeviceCapabilities(); |
| 899 } | 899 } |
| 900 | 900 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 const std::string& cache_key, | 963 const std::string& cache_key, |
| 964 const std::string& function, | 964 const std::string& function, |
| 965 const base::DictionaryValue* value) { | 965 const base::DictionaryValue* value) { |
| 966 { | 966 { |
| 967 base::AutoLock auto_lock(lock_); | 967 base::AutoLock auto_lock(lock_); |
| 968 const bool has_entry = audio_streams_cached_data_.HasKey(cache_key); | 968 const bool has_entry = audio_streams_cached_data_.HasKey(cache_key); |
| 969 if ((type == UPDATE_IF_EXISTS || type == UPDATE_AND_DELETE) && !has_entry) { | 969 if ((type == UPDATE_IF_EXISTS || type == UPDATE_AND_DELETE) && !has_entry) { |
| 970 return; | 970 return; |
| 971 } else if (!has_entry) { | 971 } else if (!has_entry) { |
| 972 DCHECK_EQ(type, CREATE); | 972 DCHECK_EQ(type, CREATE); |
| 973 audio_streams_cached_data_.Set(cache_key, value->DeepCopy()); | 973 audio_streams_cached_data_.Set(cache_key, |
| 974 base::MakeUnique<base::Value>(*value)); |
| 974 } else if (type == UPDATE_AND_DELETE) { | 975 } else if (type == UPDATE_AND_DELETE) { |
| 975 std::unique_ptr<base::Value> out_value; | 976 std::unique_ptr<base::Value> out_value; |
| 976 CHECK(audio_streams_cached_data_.Remove(cache_key, &out_value)); | 977 CHECK(audio_streams_cached_data_.Remove(cache_key, &out_value)); |
| 977 } else { | 978 } else { |
| 978 base::DictionaryValue* existing_dict = NULL; | 979 base::DictionaryValue* existing_dict = NULL; |
| 979 CHECK( | 980 CHECK( |
| 980 audio_streams_cached_data_.GetDictionary(cache_key, &existing_dict)); | 981 audio_streams_cached_data_.GetDictionary(cache_key, &existing_dict)); |
| 981 existing_dict->MergeDictionary(value); | 982 existing_dict->MergeDictionary(value); |
| 982 } | 983 } |
| 983 } | 984 } |
| 984 | 985 |
| 985 if (CanUpdate()) | 986 if (CanUpdate()) |
| 986 SendUpdate(SerializeUpdate(function, value)); | 987 SendUpdate(SerializeUpdate(function, value)); |
| 987 } | 988 } |
| 988 | 989 |
| 989 std::unique_ptr<ukm::UkmEntryBuilder> MediaInternals::CreateUkmBuilder( | 990 std::unique_ptr<ukm::UkmEntryBuilder> MediaInternals::CreateUkmBuilder( |
| 990 const GURL& url, | 991 const GURL& url, |
| 991 const char* event_name) { | 992 const char* event_name) { |
| 992 // UKM is unavailable in builds w/o chrome/ code (e.g., content_shell). | 993 // UKM is unavailable in builds w/o chrome/ code (e.g., content_shell). |
| 993 ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get(); | 994 ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get(); |
| 994 if (!ukm_recorder) | 995 if (!ukm_recorder) |
| 995 return nullptr; | 996 return nullptr; |
| 996 | 997 |
| 997 const int32_t source_id = ukm_recorder->GetNewSourceID(); | 998 const int32_t source_id = ukm_recorder->GetNewSourceID(); |
| 998 ukm_recorder->UpdateSourceURL(source_id, url); | 999 ukm_recorder->UpdateSourceURL(source_id, url); |
| 999 return ukm_recorder->GetEntryBuilder(source_id, event_name); | 1000 return ukm_recorder->GetEntryBuilder(source_id, event_name); |
| 1000 } | 1001 } |
| 1001 | 1002 |
| 1002 } // namespace content | 1003 } // namespace content |
| OLD | NEW |