libwvhidl: upgrade to android.hardware.drm@1.4

Bug: 136119370
Test: GtsMediaTestCases MediaDrmTest#testRequiresSecureDecoder
Change-Id: Iaaa7c225c0056904b5fd98c4557ec47f661b2c7d
This commit is contained in:
Robert Shih
2021-01-19 05:52:59 -08:00
parent 5eb7d21fd5
commit 56195b41c6
27 changed files with 204 additions and 49 deletions

View File

@@ -93,6 +93,7 @@ cc_defaults {
"android.hardware.drm@1.1", "android.hardware.drm@1.1",
"android.hardware.drm@1.2", "android.hardware.drm@1.2",
"android.hardware.drm@1.3", "android.hardware.drm@1.3",
"android.hardware.drm@1.4",
"libbase", "libbase",
"libhidlbase", "libhidlbase",
"liblog", "liblog",
@@ -168,6 +169,39 @@ cc_binary {
} }
// ----------------------------------------------------------------------------
// Builds android.hardware.drm@1.4-service.widevine
//
cc_binary {
name: "android.hardware.drm@1.4-service.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults",
],
srcs: ["src_hidl/service.cpp"],
init_rc: ["src_hidl/android.hardware.drm@1.4-service.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm@1.4-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm@1.4-service-lazy.widevine
//
cc_binary {
name: "android.hardware.drm@1.4-service-lazy.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults",
],
srcs: ["src_hidl/serviceLazy.cpp"],
overrides: ["android.hardware.drm@1.4-service.widevine"],
init_rc: ["src_hidl/android.hardware.drm@1.4-service-lazy.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm@1.4-service.widevine.xml"],
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Builds libcdm_utils.a // Builds libcdm_utils.a
// //
@@ -323,6 +357,7 @@ cc_library_shared {
"android.hardware.drm@1.1", "android.hardware.drm@1.1",
"android.hardware.drm@1.2", "android.hardware.drm@1.2",
"android.hardware.drm@1.3", "android.hardware.drm@1.3",
"android.hardware.drm@1.4",
"android.hidl.memory@1.0", "android.hidl.memory@1.0",
"libbase", "libbase",
"libcrypto", "libcrypto",

View File

@@ -8,12 +8,12 @@
#define HIDL_TYPES_H_ #define HIDL_TYPES_H_
#include <android/hardware/drm/1.1/types.h> #include <android/hardware/drm/1.1/types.h>
#include <android/hardware/drm/1.2/ICryptoPlugin.h>
#include <android/hardware/drm/1.2/IDrmPlugin.h>
#include <android/hardware/drm/1.2/IDrmPluginListener.h>
#include <android/hardware/drm/1.2/types.h> #include <android/hardware/drm/1.2/types.h>
#include <android/hardware/drm/1.3/ICryptoFactory.h> #include <android/hardware/drm/1.2/IDrmPluginListener.h>
#include <android/hardware/drm/1.3/IDrmFactory.h> #include <android/hardware/drm/1.4/ICryptoFactory.h>
#include <android/hardware/drm/1.4/ICryptoPlugin.h>
#include <android/hardware/drm/1.4/IDrmFactory.h>
#include <android/hardware/drm/1.4/IDrmPlugin.h>
#include <hidl/HidlTransportSupport.h> #include <hidl/HidlTransportSupport.h>
using ::android::hardware::configureRpcThreadpool; using ::android::hardware::configureRpcThreadpool;

View File

@@ -12,16 +12,16 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
extern "C" { extern "C" {
IDrmFactory* createDrmFactory(); ::drm::V1_4::IDrmFactory* createDrmFactory();
ICryptoFactory* createCryptoFactory(); ::drm::V1_4::ICryptoFactory* createCryptoFactory();
} }
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -13,10 +13,10 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
struct WVCryptoFactory : public ICryptoFactory { struct WVCryptoFactory : public ::drm::V1_4::ICryptoFactory {
public: public:
WVCryptoFactory() {} WVCryptoFactory() {}
virtual ~WVCryptoFactory() {} virtual ~WVCryptoFactory() {}
@@ -34,7 +34,7 @@ struct WVCryptoFactory : public ICryptoFactory {
}; };
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -14,13 +14,13 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
using ::android::hardware::hidl_handle; using ::android::hardware::hidl_handle;
using ::android::hardware::hidl_vec; using ::android::hardware::hidl_vec;
struct WVDrmFactory : public IDrmFactory { struct WVDrmFactory : public ::drm::V1_4::IDrmFactory {
WVDrmFactory() {} WVDrmFactory() {}
virtual ~WVDrmFactory() {} virtual ~WVDrmFactory() {}
@@ -60,7 +60,7 @@ struct WVDrmFactory : public IDrmFactory {
extern "C" IDrmFactory* HIDL_FETCH_IDrmFactory(const char* name); extern "C" IDrmFactory* HIDL_FETCH_IDrmFactory(const char* name);
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manifest version="1.0" type="device">
<hal format="hidl">
<name>android.hardware.drm</name>
<transport>hwbinder</transport>
<fqname>@1.4::ICryptoFactory/widevine</fqname>
<fqname>@1.4::IDrmFactory/widevine</fqname>
</hal>
</manifest>

View File

@@ -83,6 +83,7 @@ cc_library_static {
"android.hardware.drm@1.1", "android.hardware.drm@1.1",
"android.hardware.drm@1.2", "android.hardware.drm@1.2",
"android.hardware.drm@1.3", "android.hardware.drm@1.3",
"android.hardware.drm@1.4",
"android.hidl.memory@1.0", "android.hidl.memory@1.0",
"libcrypto", "libcrypto",
"libhidlmemory", "libhidlmemory",

View File

@@ -16,12 +16,12 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_2 { namespace V1_4 {
namespace widevine { namespace widevine {
using ::android::hidl::memory::V1_0::IMemory; using ::android::hidl::memory::V1_0::IMemory;
struct WVCryptoPlugin : public ICryptoPlugin { struct WVCryptoPlugin : public ::drm::V1_4::ICryptoPlugin {
WVCryptoPlugin(const void* data, size_t size, WVCryptoPlugin(const void* data, size_t size,
const sp<wvcdm::WvContentDecryptionModule>& cdm); const sp<wvcdm::WvContentDecryptionModule>& cdm);
virtual ~WVCryptoPlugin() {} virtual ~WVCryptoPlugin() {}
@@ -75,7 +75,7 @@ struct WVCryptoPlugin : public ICryptoPlugin {
}; };
} // namespace widevine } // namespace widevine
} // namespace V1_2 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -40,7 +40,7 @@ inline Status toStatus_1_0(Status_V1_2 status) {
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_2 { namespace V1_4 {
namespace widevine { namespace widevine {
using android::hardware::drm::V1_2::widevine::toVector; using android::hardware::drm::V1_2::widevine::toVector;
@@ -345,7 +345,7 @@ Status_V1_2 WVCryptoPlugin::attemptDecrypt(
} }
} // namespace widevine } // namespace widevine
} // namespace V1_2 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -96,6 +96,7 @@ LOCAL_SHARED_LIBRARIES := \
android.hardware.drm@1.1 \ android.hardware.drm@1.1 \
android.hardware.drm@1.2 \ android.hardware.drm@1.2 \
android.hardware.drm@1.3 \ android.hardware.drm@1.3 \
android.hardware.drm@1.4 \
android.hidl.memory@1.0 \ android.hidl.memory@1.0 \
libbase \ libbase \
libbinder \ libbinder \

View File

@@ -30,7 +30,7 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_2 { namespace V1_4 {
namespace widevine { namespace widevine {
using ::android::MemoryDealer; using ::android::MemoryDealer;
@@ -637,7 +637,7 @@ TEST_F(WVCryptoPluginTest, DisallowsUnopenedSessionIdChanges) {
} }
} // namespace widevine } // namespace widevine
} // namespace V1_2 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -88,6 +88,7 @@ cc_library_static {
"android.hardware.drm@1.1", "android.hardware.drm@1.1",
"android.hardware.drm@1.2", "android.hardware.drm@1.2",
"android.hardware.drm@1.3", "android.hardware.drm@1.3",
"android.hardware.drm@1.4",
"android.hidl.memory@1.0", "android.hidl.memory@1.0",
"libcrypto", "libcrypto",
"liblog", "liblog",

View File

@@ -21,7 +21,7 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_2 { namespace V1_4 {
namespace widevine { namespace widevine {
using std::map; using std::map;
@@ -34,7 +34,7 @@ using wvcdm::WvContentDecryptionModule;
const OEMCrypto_Algorithm kInvalidCryptoAlgorithm = const OEMCrypto_Algorithm kInvalidCryptoAlgorithm =
static_cast<OEMCrypto_Algorithm>(-1); static_cast<OEMCrypto_Algorithm>(-1);
struct WVDrmPlugin : public IDrmPlugin, IDrmPluginListener, struct WVDrmPlugin : public ::drm::V1_4::IDrmPlugin, IDrmPluginListener,
wvcdm::WvCdmEventListener { wvcdm::WvCdmEventListener {
WVDrmPlugin(const sp<WvContentDecryptionModule>& cdm, WVDrmPlugin(const sp<WvContentDecryptionModule>& cdm,
@@ -220,6 +220,11 @@ struct WVDrmPlugin : public IDrmPlugin, IDrmPluginListener,
Return<void> sendSessionLostState( Return<void> sendSessionLostState(
const hidl_vec<uint8_t>& sessionId) override; const hidl_vec<uint8_t>& sessionId) override;
Return<bool> requiresSecureDecoder(const hidl_string& mime, SecurityLevel level)
override;
Return<bool> requiresSecureDecoderDefault(const hidl_string& mime) override;
// The following methods do not use hidl interface, it is used internally. // The following methods do not use hidl interface, it is used internally.
virtual Status unprovisionDevice(); virtual Status unprovisionDevice();
@@ -484,7 +489,7 @@ struct WVDrmPlugin : public IDrmPlugin, IDrmPluginListener,
}; };
} // namespace widevine } // namespace widevine
} // namespace V1_2 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -41,7 +41,7 @@ static const std::string kKeyOrigin = "origin";
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_2 { namespace V1_4 {
namespace widevine { namespace widevine {
using android::hardware::drm::V1_2::widevine::toHidlVec; using android::hardware::drm::V1_2::widevine::toHidlVec;
@@ -1926,6 +1926,35 @@ Return<void> WVDrmPlugin::sendSessionLostState(
return err; return err;
} }
Return<bool> WVDrmPlugin::requiresSecureDecoder(
const hidl_string& mime, SecurityLevel level) {
if (!strncasecmp(mime.c_str(), "video/", 6)) {
// Type is video, so check level to see if we require a secure decoder.
return level == SecurityLevel::HW_SECURE_ALL
|| level == SecurityLevel::HW_SECURE_DECODE;
} else {
// Type is not video, so never require a secure decoder.
return false;
}
}
Return<bool> WVDrmPlugin::requiresSecureDecoderDefault(const hidl_string& mime) {
if (!strncasecmp(mime.c_str(), "video/", 6)) {
// Type is video, so check level to see if we require a secure decoder.
std::string level(mPropertySet.security_level());
if (level == kResetSecurityLevel) {
mCDM->QueryStatus(wvcdm::kLevelDefault,
wvcdm::QUERY_KEY_SECURITY_LEVEL, &level);
}
return level == wvcdm::QUERY_VALUE_SECURITY_LEVEL_L1;
} else {
// Type is not video, so never require a secure decoder.
return false;
}
}
void WVDrmPlugin::OnSessionRenewalNeeded(const CdmSessionId& cdmSessionId) { void WVDrmPlugin::OnSessionRenewalNeeded(const CdmSessionId& cdmSessionId) {
const std::vector<uint8_t> sessionId = StrToVector(cdmSessionId); const std::vector<uint8_t> sessionId = StrToVector(cdmSessionId);
const hidl_vec<uint8_t> data; // data is ignored const hidl_vec<uint8_t> data; // data is ignored
@@ -2313,7 +2342,7 @@ uint32_t WVDrmPlugin::CdmIdentifierBuilder::getNextUniqueId() {
} }
} // namespace widevine } // namespace widevine
} // namespace V1_2 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -100,6 +100,7 @@ LOCAL_SHARED_LIBRARIES := \
android.hardware.drm@1.1 \ android.hardware.drm@1.1 \
android.hardware.drm@1.2 \ android.hardware.drm@1.2 \
android.hardware.drm@1.3 \ android.hardware.drm@1.3 \
android.hardware.drm@1.4 \
android.hidl.memory@1.0 \ android.hidl.memory@1.0 \
libbinder \ libbinder \
libbase \ libbase \

View File

@@ -31,7 +31,7 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_2 { namespace V1_4 {
namespace widevine { namespace widevine {
using android::hardware::drm::V1_2::widevine::toHidlVec; using android::hardware::drm::V1_2::widevine::toHidlVec;
@@ -3427,7 +3427,7 @@ TEST_F(WVDrmPluginTest, RemoveOfflineLicense) {
} }
} // namespace widevine } // namespace widevine
} // namespace V1_2 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -12,22 +12,22 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
extern "C" { extern "C" {
IDrmFactory* createDrmFactory() { ::drm::V1_4::IDrmFactory* createDrmFactory() {
return new WVDrmFactory(); return new WVDrmFactory();
} }
ICryptoFactory* createCryptoFactory() { ::drm::V1_4::ICryptoFactory* createCryptoFactory() {
return new WVCryptoFactory(); return new WVCryptoFactory();
} }
} // extern "C" } // extern "C"
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -19,10 +19,10 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
using wvdrm::hardware::drm::V1_2::widevine::WVCryptoPlugin; using wvdrm::hardware::drm::V1_4::widevine::WVCryptoPlugin;
Return<bool> WVCryptoFactory::isCryptoSchemeSupported( Return<bool> WVCryptoFactory::isCryptoSchemeSupported(
const hidl_array<uint8_t, 16>& uuid) { const hidl_array<uint8_t, 16>& uuid) {
@@ -54,7 +54,7 @@ Return<void> WVCryptoFactory::createPlugin(
} }
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -24,10 +24,10 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
using wvdrm::hardware::drm::V1_2::widevine::WVDrmPlugin; using wvdrm::hardware::drm::V1_4::widevine::WVDrmPlugin;
WVGenericCryptoInterface WVDrmFactory::sOemCryptoInterface; WVGenericCryptoInterface WVDrmFactory::sOemCryptoInterface;
@@ -269,7 +269,7 @@ Return<void> WVDrmFactory::debug(const hidl_handle& fd,
} }
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -0,0 +1,30 @@
on property:init.svc.mediadrm=running
mkdir /data/vendor/mediadrm 0770 media mediadrm
start vendor.move_data_sh
service vendor.move_data_sh /system/bin/move_widevine_data.sh
class late_start
user media
group media mediadrm system
disabled
oneshot
service vendor.drm-widevine-hal-1-4 /vendor/bin/hw/android.hardware.drm@1.4-service-lazy.widevine
interface android.hardware.drm@1.0::ICryptoFactory widevine
interface android.hardware.drm@1.0::IDrmFactory widevine
interface android.hardware.drm@1.1::ICryptoFactory widevine
interface android.hardware.drm@1.1::IDrmFactory widevine
interface android.hardware.drm@1.2::ICryptoFactory widevine
interface android.hardware.drm@1.2::IDrmFactory widevine
interface android.hardware.drm@1.3::ICryptoFactory widevine
interface android.hardware.drm@1.3::IDrmFactory widevine
interface android.hardware.drm@1.4::ICryptoFactory widevine
interface android.hardware.drm@1.4::IDrmFactory widevine
interface android.hidl.base@1.0::IBase widevine
oneshot
disabled
class hal
user media
group media mediadrm drmrpc system
ioprio rt 4
writepid /dev/cpuset/foreground/tasks

View File

@@ -0,0 +1,28 @@
on property:init.svc.mediadrm=running
mkdir /data/vendor/mediadrm 0770 media mediadrm
start vendor.move_data_sh
service vendor.move_data_sh /system/bin/move_widevine_data.sh
class late_start
user media
group media mediadrm system
disabled
oneshot
service vendor.drm-widevine-hal-1-4 /vendor/bin/hw/android.hardware.drm@1.4-service.widevine
interface android.hardware.drm@1.0::ICryptoFactory widevine
interface android.hardware.drm@1.0::IDrmFactory widevine
interface android.hardware.drm@1.1::ICryptoFactory widevine
interface android.hardware.drm@1.1::IDrmFactory widevine
interface android.hardware.drm@1.2::ICryptoFactory widevine
interface android.hardware.drm@1.2::IDrmFactory widevine
interface android.hardware.drm@1.3::ICryptoFactory widevine
interface android.hardware.drm@1.3::IDrmFactory widevine
interface android.hardware.drm@1.4::ICryptoFactory widevine
interface android.hardware.drm@1.4::IDrmFactory widevine
interface android.hidl.base@1.0::IBase widevine
class hal
user media
group media mediadrm drmrpc system
ioprio rt 4
writepid /dev/cpuset/foreground/tasks

View File

@@ -22,8 +22,8 @@
#include "WVCryptoFactory.h" #include "WVCryptoFactory.h"
#include "WVDrmFactory.h" #include "WVDrmFactory.h"
using wvdrm::hardware::drm::V1_3::widevine::WVCryptoFactory; using wvdrm::hardware::drm::V1_4::widevine::WVCryptoFactory;
using wvdrm::hardware::drm::V1_3::widevine::WVDrmFactory; using wvdrm::hardware::drm::V1_4::widevine::WVDrmFactory;
int main(int /* argc */, char** /* argv */) { int main(int /* argc */, char** /* argv */) {
sp<IDrmFactory> drmFactory = new WVDrmFactory; sp<IDrmFactory> drmFactory = new WVDrmFactory;

View File

@@ -23,8 +23,8 @@
#include "WVCryptoFactory.h" #include "WVCryptoFactory.h"
#include "WVDrmFactory.h" #include "WVDrmFactory.h"
using wvdrm::hardware::drm::V1_3::widevine::WVCryptoFactory; using wvdrm::hardware::drm::V1_4::widevine::WVCryptoFactory;
using wvdrm::hardware::drm::V1_3::widevine::WVDrmFactory; using wvdrm::hardware::drm::V1_4::widevine::WVDrmFactory;
using android::hardware::LazyServiceRegistrar; using android::hardware::LazyServiceRegistrar;
int main(int /* argc */, char** /* argv */) { int main(int /* argc */, char** /* argv */) {

View File

@@ -76,6 +76,7 @@ LOCAL_SHARED_LIBRARIES := \
android.hardware.drm@1.1 \ android.hardware.drm@1.1 \
android.hardware.drm@1.2 \ android.hardware.drm@1.2 \
android.hardware.drm@1.3 \ android.hardware.drm@1.3 \
android.hardware.drm@1.4 \
libbase \ libbase \
libcrypto \ libcrypto \
libdl \ libdl \

View File

@@ -10,7 +10,7 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
using ::android::sp; using ::android::sp;
@@ -32,7 +32,7 @@ TEST(CreatePluginFactoriesTest, CreatesCryptoFactory) {
} }
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -10,7 +10,7 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
using ::android::sp; using ::android::sp;
@@ -48,7 +48,7 @@ TEST(WVCryptoFactoryTest, DoesNotSupportUnsupportedCryptoSchemes) {
} }
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm

View File

@@ -13,7 +13,7 @@
namespace wvdrm { namespace wvdrm {
namespace hardware { namespace hardware {
namespace drm { namespace drm {
namespace V1_3 { namespace V1_4 {
namespace widevine { namespace widevine {
using namespace android; using namespace android;
@@ -144,7 +144,7 @@ TEST(WVDrmFactoryTest, CalculatesBlankAppPackageNamePermissibilityCorrectly) {
} }
} // namespace widevine } // namespace widevine
} // namespace V1_3 } // namespace V1_4
} // namespace drm } // namespace drm
} // namespace hardware } // namespace hardware
} // namespace wvdrm } // namespace wvdrm