diff --git a/fuzzer/Android.bp b/fuzzer/Android.bp index ce7a8773..f65d7e37 100644 --- a/fuzzer/Android.bp +++ b/fuzzer/Android.bp @@ -39,6 +39,7 @@ cc_defaults { "liblog", "libbase", "libutils", + "wv_media_drm_flags_c_lib", ], include_dirs: [ "vendor/widevine/libwvdrmengine/cdm/core/include", diff --git a/libwvdrmengine/Android.bp b/libwvdrmengine/Android.bp index c60c069e..55b54802 100644 --- a/libwvdrmengine/Android.bp +++ b/libwvdrmengine/Android.bp @@ -154,6 +154,7 @@ cc_binary { shared_libs: [ "libbinder_ndk", + "wv_media_drm_flags_c_lib", ], init_rc: ["src/android.hardware.drm-service.widevine.rc"], @@ -178,7 +179,10 @@ cc_binary { "frameworks/native/libs/binder/include", ], - shared_libs: ["libbinder_ndk"], + shared_libs: [ + "libbinder_ndk", + "wv_media_drm_flags_c_lib", + ], init_rc: ["src/android.hardware.drm-service-lazy.widevine.rc"], vintf_fragments: ["manifest_android.hardware.drm-service-lazy.widevine.xml"], @@ -224,6 +228,7 @@ cc_library_static { "libbinder_ndk", "libcrypto", "liblog", + "wv_media_drm_flags_c_lib", ], static_libs: [ @@ -297,6 +302,7 @@ cc_library { "libcrypto", "libdl", "liblog", + "wv_media_drm_flags_c_lib", ], header_libs: ["libstagefright_foundation_headers"], @@ -329,6 +335,9 @@ cc_fuzz { "service_fuzzer_defaults", "fuzzer_disable_leaks", ], + shared_libs: [ + "wv_media_drm_flags_c_lib", + ], static_libs: [ "libbase", "libbinder_random_parcel", diff --git a/libwvdrmengine/aconfig/Android.bp b/libwvdrmengine/aconfig/Android.bp new file mode 100644 index 00000000..d1ae5e7a --- /dev/null +++ b/libwvdrmengine/aconfig/Android.bp @@ -0,0 +1,28 @@ +// Copyright (C) 2023 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. + +aconfig_declarations { + name: "wv_media_drm_flags", + package: "com.android.mediadrm.widevine.flags", + srcs: [ + "wv_media_drm_flags.aconfig", + ], +} + +cc_aconfig_library { + name: "wv_media_drm_flags_c_lib", + aconfig_declarations: "wv_media_drm_flags", + vendor_available: true, + min_sdk_version: "34", +} diff --git a/libwvdrmengine/aconfig/wv_media_drm_flags.aconfig b/libwvdrmengine/aconfig/wv_media_drm_flags.aconfig new file mode 100644 index 00000000..646b358f --- /dev/null +++ b/libwvdrmengine/aconfig/wv_media_drm_flags.aconfig @@ -0,0 +1,8 @@ +package: "com.android.mediadrm.widevine.flags" + +flag { + name: "update_cdm_version_to_18_0_2" + namespace: "media_drm" + description: "Update CDM version to 18.0.2" + bug: "311951236" +} diff --git a/libwvdrmengine/cdm/include/wv_android_constants.h b/libwvdrmengine/cdm/include/wv_android_constants.h index caf4a246..bd49ea1b 100644 --- a/libwvdrmengine/cdm/include/wv_android_constants.h +++ b/libwvdrmengine/cdm/include/wv_android_constants.h @@ -11,7 +11,8 @@ namespace wvcdm { // Note: If you change this, make sure you also change // https://developers.google.com/widevine/drm/client/oemcrypto/compatibility -static const std::string kWVAndroidCdmVersion = "18.0.0"; +static const std::string kWVAndroidCdmVersion_18_0_1 = "18.0.1"; +static const std::string kWVAndroidCdmVersion_18_0_2 = "18.0.2"; } // namespace wvcdm diff --git a/libwvdrmengine/cdm/src/properties_android.cpp b/libwvdrmengine/cdm/src/properties_android.cpp index 339536ff..04afdd7e 100644 --- a/libwvdrmengine/cdm/src/properties_android.cpp +++ b/libwvdrmengine/cdm/src/properties_android.cpp @@ -12,11 +12,15 @@ #include #include +#include + #include "log.h" #include "wv_android_constants.h" #include "widevine_apex_info.h" using namespace android::sysprop; + +namespace mediadrm_flags = com::android::mediadrm::widevine::flags; namespace { const char kBasePathPrefix[] = "/data/vendor/mediadrm/IDM"; @@ -146,7 +150,11 @@ bool Properties::GetWVCdmVersion(std::string* version) { } #endif - *version = kWVAndroidCdmVersion + apex_version; + if (mediadrm_flags::update_cdm_version_to_18_0_2()) { + *version = kWVAndroidCdmVersion_18_0_2 + apex_version; + } else { + *version = kWVAndroidCdmVersion_18_0_1 + apex_version; + } return true; } diff --git a/libwvdrmengine/cdm/test/integration-test.mk b/libwvdrmengine/cdm/test/integration-test.mk index 811d47fd..35cc4107 100644 --- a/libwvdrmengine/cdm/test/integration-test.mk +++ b/libwvdrmengine/cdm/test/integration-test.mk @@ -75,6 +75,7 @@ LOCAL_SHARED_LIBRARIES := \ libssl \ libstagefright_foundation \ libutils \ + wv_media_drm_flags_c_lib \ LOCAL_CFLAGS += -DUNIT_TEST diff --git a/libwvdrmengine/mediacrypto/test/Android.mk b/libwvdrmengine/mediacrypto/test/Android.mk index fa497b45..f1ab4070 100644 --- a/libwvdrmengine/mediacrypto/test/Android.mk +++ b/libwvdrmengine/mediacrypto/test/Android.mk @@ -42,6 +42,7 @@ LOCAL_SHARED_LIBRARIES := \ libprotobuf-cpp-lite \ libutils \ libwvaidl \ + wv_media_drm_flags_c_lib \ LOCAL_HEADER_LIBRARIES := \ libstagefright_headers \ diff --git a/libwvdrmengine/mediadrm/test/Android.mk b/libwvdrmengine/mediadrm/test/Android.mk index baf4a85e..7bfc43bf 100644 --- a/libwvdrmengine/mediadrm/test/Android.mk +++ b/libwvdrmengine/mediadrm/test/Android.mk @@ -41,6 +41,7 @@ LOCAL_SHARED_LIBRARIES := \ libprotobuf-cpp-lite \ libutils \ libwvaidl \ + wv_media_drm_flags_c_lib \ LOCAL_HEADER_LIBRARIES := \ libstagefright_headers \ diff --git a/libwvdrmengine/test/Android.bp b/libwvdrmengine/test/Android.bp index 45044259..f2b1c1d9 100644 --- a/libwvdrmengine/test/Android.bp +++ b/libwvdrmengine/test/Android.bp @@ -66,6 +66,7 @@ cc_test { "libdl", "liblog", "libssl", + "wv_media_drm_flags_c_lib", ], cflags: [ "-Wall",