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 "webkit/media/webmediaplayer_impl.h" | 5 #include "webkit/media/webmediaplayer_impl.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
792 // We do not support run-time switching between key systems for now. | 792 // We do not support run-time switching between key systems for now. |
793 if (current_key_system_.isEmpty()) | 793 if (current_key_system_.isEmpty()) |
794 current_key_system_ = key_system; | 794 current_key_system_ = key_system; |
795 else if (key_system != current_key_system_) | 795 else if (key_system != current_key_system_) |
796 return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState; | 796 return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState; |
797 | 797 |
798 DVLOG(1) << "generateKeyRequest: " << key_system.utf8().data() << ": " | 798 DVLOG(1) << "generateKeyRequest: " << key_system.utf8().data() << ": " |
799 << std::string(reinterpret_cast<const char*>(init_data), | 799 << std::string(reinterpret_cast<const char*>(init_data), |
800 static_cast<size_t>(init_data_length)); | 800 static_cast<size_t>(init_data_length)); |
801 | 801 |
| 802 // TODO(xhwang): We assume all streams are from the same container (thus have |
| 803 // the same "type") for now. In the future, the "type" should be passed down |
| 804 // from the application. |
802 if (!decryptor_.GenerateKeyRequest(key_system.utf8(), | 805 if (!decryptor_.GenerateKeyRequest(key_system.utf8(), |
| 806 init_data_type_, |
803 init_data, init_data_length)) { | 807 init_data, init_data_length)) { |
804 current_key_system_.reset(); | 808 current_key_system_.reset(); |
805 return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; | 809 return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
806 } | 810 } |
807 | 811 |
808 return WebMediaPlayer::MediaKeyExceptionNoError; | 812 return WebMediaPlayer::MediaKeyExceptionNoError; |
809 } | 813 } |
810 | 814 |
811 WebMediaPlayer::MediaKeyException WebMediaPlayerImpl::addKey( | 815 WebMediaPlayer::MediaKeyException WebMediaPlayerImpl::addKey( |
812 const WebString& key_system, | 816 const WebString& key_system, |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1006 kMediaEme + KeySystemNameForUMA(key_system) + ".KeyAdded", | 1010 kMediaEme + KeySystemNameForUMA(key_system) + ".KeyAdded", |
1007 1, 1000000, 50, | 1011 1, 1000000, 50, |
1008 base::Histogram::kUmaTargetedHistogramFlag)->Add(1); | 1012 base::Histogram::kUmaTargetedHistogramFlag)->Add(1); |
1009 | 1013 |
1010 GetClient()->keyAdded(WebString::fromUTF8(key_system), | 1014 GetClient()->keyAdded(WebString::fromUTF8(key_system), |
1011 WebString::fromUTF8(session_id)); | 1015 WebString::fromUTF8(session_id)); |
1012 } | 1016 } |
1013 | 1017 |
1014 void WebMediaPlayerImpl::OnNeedKey(const std::string& key_system, | 1018 void WebMediaPlayerImpl::OnNeedKey(const std::string& key_system, |
1015 const std::string& session_id, | 1019 const std::string& session_id, |
| 1020 const std::string& type, |
1016 scoped_array<uint8> init_data, | 1021 scoped_array<uint8> init_data, |
1017 int init_data_size) { | 1022 int init_data_size) { |
1018 DCHECK_EQ(main_loop_, MessageLoop::current()); | 1023 DCHECK_EQ(main_loop_, MessageLoop::current()); |
1019 | 1024 |
1020 UMA_HISTOGRAM_COUNTS(kMediaEme + std::string("NeedKey"), 1); | 1025 UMA_HISTOGRAM_COUNTS(kMediaEme + std::string("NeedKey"), 1); |
1021 | 1026 |
| 1027 DCHECK(init_data_type_.empty() || type.empty() || type == init_data_type_); |
| 1028 if (init_data_type_.empty()) |
| 1029 init_data_type_ = type; |
| 1030 |
1022 GetClient()->keyNeeded(WebString::fromUTF8(key_system), | 1031 GetClient()->keyNeeded(WebString::fromUTF8(key_system), |
1023 WebString::fromUTF8(session_id), | 1032 WebString::fromUTF8(session_id), |
1024 init_data.get(), | 1033 init_data.get(), |
1025 init_data_size); | 1034 init_data_size); |
1026 } | 1035 } |
1027 | 1036 |
1028 #define COMPILE_ASSERT_MATCHING_ENUM(name) \ | 1037 #define COMPILE_ASSERT_MATCHING_ENUM(name) \ |
1029 COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayerClient::name) == \ | 1038 COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayerClient::name) == \ |
1030 static_cast<int>(media::Decryptor::k ## name), \ | 1039 static_cast<int>(media::Decryptor::k ## name), \ |
1031 mismatching_enums) | 1040 mismatching_enums) |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1181 return audio_source_provider_; | 1190 return audio_source_provider_; |
1182 } | 1191 } |
1183 | 1192 |
1184 void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() { | 1193 void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() { |
1185 DCHECK_EQ(main_loop_, MessageLoop::current()); | 1194 DCHECK_EQ(main_loop_, MessageLoop::current()); |
1186 incremented_externally_allocated_memory_ = true; | 1195 incremented_externally_allocated_memory_ = true; |
1187 v8::V8::AdjustAmountOfExternalAllocatedMemory(kPlayerExtraMemory); | 1196 v8::V8::AdjustAmountOfExternalAllocatedMemory(kPlayerExtraMemory); |
1188 } | 1197 } |
1189 | 1198 |
1190 } // namespace webkit_media | 1199 } // namespace webkit_media |
OLD | NEW |