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.
5 #include "android_webview/browser/aw_media_client_android.h"
9 #include "base/logging.h"
10 #include "base/stl_util.h"
11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/string_util.h"
14 namespace android_webview
{
18 const size_t kGUIDLength
= 36U;
22 LOG(ERROR) << "Can't parse key-system mapping: " \
23 << key_system_uuid_mapping; \
24 return std::make_pair("", uuid); \
27 media::MediaClientAndroid::KeySystemUuidMap::value_type
CreateMappingFromString(
28 const std::string
& key_system_uuid_mapping
) {
29 std::vector
<uint8_t> uuid
;
31 std::vector
<std::string
> tokens
;
32 Tokenize(key_system_uuid_mapping
, ",", &tokens
);
33 RCHECK(tokens
.size() == 2);
35 std::string key_system
;
36 base::TrimWhitespaceASCII(tokens
[0], base::TRIM_ALL
, &key_system
);
38 std::string
guid(tokens
[1]);
39 RCHECK(guid
.length() == kGUIDLength
);
40 base::RemoveChars(guid
, "-", &guid
);
41 RCHECK(base::HexStringToBytes(guid
, &uuid
));
43 return std::make_pair(key_system
, uuid
);
48 AwMediaClientAndroid::AwMediaClientAndroid(
49 const std::vector
<std::string
>& key_system_uuid_mappings
)
50 : key_system_uuid_mappings_(key_system_uuid_mappings
) {
53 AwMediaClientAndroid::~AwMediaClientAndroid() {
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())
64 media::MediaDrmBridgeDelegate
* AwMediaClientAndroid::GetMediaDrmBridgeDelegate(
65 const media::UUID
& scheme_uuid
) {
66 if (scheme_uuid
== widevine_delegate_
.GetUUID())
67 return &widevine_delegate_
;
71 } // namespace android_webview