OLD | NEW |
| (Empty) |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "android_webview/common/aw_media_client_android.h" | |
6 | |
7 #include <utility> | |
8 | |
9 #include "base/logging.h" | |
10 #include "base/stl_util.h" | |
11 #include "base/strings/string_number_conversions.h" | |
12 #include "base/strings/string_split.h" | |
13 #include "base/strings/string_util.h" | |
14 | |
15 namespace android_webview { | |
16 | |
17 namespace { | |
18 | |
19 const size_t kGUIDLength = 36U; | |
20 | |
21 #define RCHECK(x) \ | |
22 if (!(x)) { \ | |
23 LOG(ERROR) << "Can't parse key-system mapping: " \ | |
24 << key_system_uuid_mapping; \ | |
25 return std::make_pair("", uuid); \ | |
26 } | |
27 | |
28 media::MediaClientAndroid::KeySystemUuidMap::value_type CreateMappingFromString( | |
29 const std::string& key_system_uuid_mapping) { | |
30 std::vector<uint8_t> uuid; | |
31 | |
32 std::vector<std::string> tokens = | |
33 base::SplitString(key_system_uuid_mapping, ",", base::KEEP_WHITESPACE, | |
34 base::SPLIT_WANT_NONEMPTY); | |
35 RCHECK(tokens.size() == 2); | |
36 | |
37 std::string key_system; | |
38 base::TrimWhitespaceASCII(tokens[0], base::TRIM_ALL, &key_system); | |
39 | |
40 std::string guid(tokens[1]); | |
41 RCHECK(guid.length() == kGUIDLength); | |
42 base::RemoveChars(guid, "-", &guid); | |
43 RCHECK(base::HexStringToBytes(guid, &uuid)); | |
44 | |
45 return std::make_pair(key_system, uuid); | |
46 } | |
47 | |
48 } // namespace | |
49 | |
50 AwMediaClientAndroid::AwMediaClientAndroid( | |
51 const std::vector<std::string>& key_system_uuid_mappings) | |
52 : key_system_uuid_mappings_(key_system_uuid_mappings) {} | |
53 | |
54 AwMediaClientAndroid::~AwMediaClientAndroid() {} | |
55 | |
56 void AwMediaClientAndroid::AddKeySystemUUIDMappings(KeySystemUuidMap* map) { | |
57 for (const std::string& key_system_uuid_mapping : key_system_uuid_mappings_) { | |
58 auto mapping = CreateMappingFromString(key_system_uuid_mapping); | |
59 if (!mapping.first.empty()) | |
60 map->insert(mapping); | |
61 } | |
62 } | |
63 | |
64 media::MediaDrmBridgeDelegate* AwMediaClientAndroid::GetMediaDrmBridgeDelegate( | |
65 const media::UUID& scheme_uuid) { | |
66 if (scheme_uuid == widevine_delegate_.GetUUID()) | |
67 return &widevine_delegate_; | |
68 return nullptr; | |
69 } | |
70 | |
71 } // namespace android_webview | |
OLD | NEW |