New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug

Blocked on:
issue 570216
issue 709354

Blocking:
issue 735283



Sign in to add a comment

Implement "EME Extension: HDCP Policy Check" in Chromium

Project Member Reported by xhw...@chromium.org, Apr 7 2017

Issue description

This would allow an application to discover HDCP availability quickly to fetch the right media stream to be played.

Current API doc:
https://github.com/WICG/media-capabilities/blob/master/eme-extension-policy-check.md
 
Blockedon: 570216 709354
As this is a new API, remember to follow the ITI/ITS process. Also, you'll probably need an OWP launch bug - maybe block it on this.

Comment 3 by xhw...@chromium.org, Jun 29 2017

Blocking: 735283
Project Member

Comment 4 by bugdroid1@chromium.org, Jul 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6de258a1803009bb76b7d1dbce0f99c45dd67d39

commit 6de258a1803009bb76b7d1dbce0f99c45dd67d39
Author: Xiaohan Wang <xhwang@chromium.org>
Date: Fri Jul 07 07:08:34 2017

media: Add HDCP policy check on MediaKeys (blink)

This API provides an API for JS application to check the key status
associated with a policy without the need to fetch an actual license.
This is critical for starting playback at higher resolution and hence a
better user experience.

This CL updates the Blink side to support the new API:
- Add IDL for MediaKeysPolicy.
- Add IDL for GetStatusForPolicy (on partial MediaKeys interface).
- Implement GetStatusForPolicy on the blink side.
- Add a run time flag EncryptedMediaHdcpPolicyCheck to control this API.

The Chromium side change will be implemented in the next CL.

BUG= 709348 

Change-Id: I61009d516aae2d29a3dc3536214560d0495d250c
Reviewed-on: https://chromium-review.googlesource.com/540784
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Mounir Lamouri <mlamouri@chromium.org>
Reviewed-by: John Rummell <jrummell@chromium.org>
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484848}
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/media/blink/webcontentdecryptionmodule_impl.cc
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/media/blink/webcontentdecryptionmodule_impl.h
[add] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-getstatusforpolicy.html
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-expected.txt
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/BUILD.gn
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.cpp
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.h
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/EncryptedMediaUtils.cpp
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/EncryptedMediaUtils.h
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeys.cpp
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeys.h
[add] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysGetStatusForPolicy.cpp
[add] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysGetStatusForPolicy.h
[add] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysGetStatusForPolicy.idl
[add] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysPolicy.cpp
[add] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysPolicy.h
[add] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysPolicy.idl
[add] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysPolicyInit.idl
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/modules/modules_idl_files.gni
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/platform/ContentDecryptionModuleResult.h
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/Source/platform/exported/WebContentDecryptionModuleResult.cpp
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/public/platform/WebContentDecryptionModule.h
[modify] https://crrev.com/6de258a1803009bb76b7d1dbce0f99c45dd67d39/third_party/WebKit/public/platform/WebContentDecryptionModuleResult.h

Cc: halliwell@chromium.org
Project Member

Comment 6 by bugdroid1@chromium.org, Jul 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/81fd0021320d6be662d29df294baa8794d063416

commit 81fd0021320d6be662d29df294baa8794d063416
Author: Xiaohan Wang <xhwang@chromium.org>
Date: Tue Jul 11 17:45:24 2017

media: Add HDCP policy check on MediaKeys (chromium)

This API provides an API for JS application to check the key status
associated with a policy without the need to fetch an actual license.
This is critical for starting playback at higher resolution and hence a
better user experience.

This CL updates the Chromium side to support the new API:
- Convert the HDCP version string to enum.
- Pass the call down to media::ContentDecryptionModule.

By default CDMs do not support this call (rejecting the promise). In
future CLs it will be enabled in CDMs that do support it.

BUG= 709348 

Change-Id: I55dd05060013464cc9660e5d8365c6adeace6630
Reviewed-on: https://chromium-review.googlesource.com/541776
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Reviewed-by: Mounir Lamouri <mlamouri@chromium.org>
Reviewed-by: John Rummell <jrummell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485672}
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/base/cdm_promise.h
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/base/content_decryption_module.cc
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/base/content_decryption_module.h
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/cdm_result_promise.h
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/cdm_result_promise_helper.cc
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/cdm_result_promise_helper.h
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/cdm_session_adapter.cc
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/cdm_session_adapter.h
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/webcontentdecryptionmodule_impl.cc
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/webcontentdecryptionmodule_impl.h
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/webcontentdecryptionmodulesession_impl.cc
[modify] https://crrev.com/81fd0021320d6be662d29df294baa8794d063416/media/blink/webmediaplayer_impl.cc

Comment 7 by xhw...@chromium.org, Jul 17 2017

Labels: -M-61 M-62
Status: Started (was: Assigned)
Project Member

Comment 8 by bugdroid1@chromium.org, Jul 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ada25fea214db0d07efb6d99f8a97e5d39c9960e

commit ada25fea214db0d07efb6d99f8a97e5d39c9960e
Author: Xiaohan Wang <xhwang@chromium.org>
Date: Mon Jul 24 21:24:24 2017

media: Support GetStatusForPolicy() in pepper CDM

- Update PpapiDecryptor et al to support GetStatusForPolicy().
- Update PPP_CONTENT_DECRYPTOR_PRIVATE interface to support
  GetStatusForPolicy().
- Update PPB_CONTENT_DECRYPTOR_PRIVATE interface to support
  PromiseResolvedWithKeyStatus().
- Add PolicyCheck browser test.

In future CLs:
- GetStatusForPolicy() will also be supported in mojo CDM.
- Widevine CDM will be updated to support GetStatusForPolicy().

BUG= 709348 
TEST=New tests added

Change-Id: Ida71224a60bd4cbf9a37b9613c2fd84acb878f60
Reviewed-on: https://chromium-review.googlesource.com/576152
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: John Rummell <jrummell@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489077}
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/chrome/browser/media/encrypted_media_browsertest.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/content/renderer/media/cdm/ppapi_decryptor.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/content/renderer/media/cdm/ppapi_decryptor.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/content/renderer/pepper/content_decryptor_delegate.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/content/renderer/pepper/content_decryptor_delegate.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/content/renderer/pepper/pepper_plugin_instance_impl.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/content/renderer/pepper/pepper_plugin_instance_impl.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/base/cdm_promise_adapter.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/cdm/cdm_wrapper.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/cdm/ppapi/external_clear_key/clear_key_cdm.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/cdm/ppapi/ppapi_cdm_adapter.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/cdm/ppapi/ppapi_cdm_adapter.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/test/data/eme_player_js/globals.js
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/test/data/eme_player_js/player_utils.js
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/test/data/eme_player_js/test_config.js
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/media/test/data/eme_player_js/unit_test_player.js
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/api/private/pp_content_decryptor.idl
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/api/private/ppb_content_decryptor_private.idl
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/api/private/ppp_content_decryptor_private.idl
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/c/pp_macros.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/c/private/pp_content_decryptor.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/c/private/ppb_content_decryptor_private.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/c/private/ppp_content_decryptor_private.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/cpp/private/content_decryptor_private.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/cpp/private/content_decryptor_private.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/proxy/ppapi_messages.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/proxy/ppb_instance_proxy.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/proxy/ppb_instance_proxy.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/proxy/ppp_content_decryptor_private_proxy.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/proxy/ppp_content_decryptor_private_proxy.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/thunk/interfaces_ppb_private.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/thunk/ppb_content_decryptor_private_thunk.cc
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/ppapi/thunk/ppb_instance_api.h
[modify] https://crrev.com/ada25fea214db0d07efb6d99f8a97e5d39c9960e/tools/metrics/histograms/enums.xml

Project Member

Comment 9 by bugdroid1@chromium.org, Jul 25 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/57fc53b6e72d22dbc04bacafc117e5a58dcef19d

commit 57fc53b6e72d22dbc04bacafc117e5a58dcef19d
Author: Xiaohan Wang <xhwang@chromium.org>
Date: Tue Jul 25 06:41:08 2017

media: Support GetStatusForPolicy() in mojo CDM

BUG= 709348 
TEST=Enable new tests

Change-Id: I3b00ebdaf1e5566b5d180fa52204b0f5f0270625
Reviewed-on: https://chromium-review.googlesource.com/576859
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Reviewed-by: John Rummell <jrummell@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489244}
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/chrome/browser/media/encrypted_media_browsertest.cc
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/base/content_decryption_module.h
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/base/ipc/media_param_traits_macros.h
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/cdm/cdm_adapter.cc
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/cdm/cdm_adapter.h
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/mojo/clients/mojo_cdm.cc
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/mojo/clients/mojo_cdm.h
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/mojo/interfaces/content_decryption_module.mojom
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/mojo/interfaces/content_decryption_module.typemap
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/mojo/services/mojo_cdm_promise.cc
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/mojo/services/mojo_cdm_promise.h
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/mojo/services/mojo_cdm_service.cc
[modify] https://crrev.com/57fc53b6e72d22dbc04bacafc117e5a58dcef19d/media/mojo/services/mojo_cdm_service.h

Labels: -Pri-1 Pri-2
All changes in blink/chromium has been landed. Now we need to implement this in the individual CDMs, e.g. Cast CDM and Widevine CDM.
Should the result of the API depend on key system, given HDCP is independent of CDM? Is there any requirement that platform must get these values from CDM?
In other words, can I query Widevine for HDCP when this API is called on ClearKey?
Good questions. Note that the proposal is not limited to HDCP, it's more about "policy check". Since only the CDM knows exactly how policies work, we prefer to plumbing this to the CDM to get the answer. Also, this is to avoid having the same checking code duplicated in the CDM, and in Chromium. Also, if you do implement the check outside the CDM, since the implementation could be different from what the CDM does, the result could potentially be inconsistent.

That said, for HDCP policy, given the rules are pretty clear, if you are confident that you can get the same result without going through the actual CDM, you can implement it somewhere else.

ClearKey doesn't support HDCP policies, so it'll just reject the promise indicating that the policy is not supported:

https://cs.chromium.org/chromium/src/media/base/content_decryption_module.cc?rcl=a1e0a375eb4fbd011befa0bba5956b2488de32e8&l=20
For Chromecast, HDCP is always enforced, even for clear content. Also, Android should be similar. If the Android platform decides to enforce HDCP all the time, we should also report the correct value. Creating a Widevine MediaDrm and querying HDCP is a potential solution for ClearKey.

Agree, if there're other policy checks, we'd better to ask CDM.
Labels: -M-62 M-64
Status: Fixed (was: Started)
Summary: Implement "EME Extension: HDCP Policy Check" in Chromium (was: Implement "EME Extension: HDCP Policy Check")
This has already been implemented in Chromium in July.

Now each individual CDM needs to implement this. For example, on ChromeCast this is implemented in https://chromium-review.googlesource.com/c/chromium/src/+/676102.

With that, I'll update the title to emphasize that this issue tracks the Chromium side only, and mark it as fixed. We'll track CDM implementations separately.


Project Member

Comment 17 by bugdroid1@chromium.org, Dec 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/74041870cafa4df5fa909b4484f08a337590fed4

commit 74041870cafa4df5fa909b4484f08a337590fed4
Author: Xiaohan Wang <xhwang@chromium.org>
Date: Mon Dec 18 22:18:38 2017

media: Add use counter for EME policy check

Report a count when MediaKeys::getStatusForPolicy() is called so that we
keep track of the usage of this API.

BUG= 709348 

Change-Id: Iee2080d22406019fe76c66e9463c4f253a8dbd5e
Reviewed-on: https://chromium-review.googlesource.com/827633
Reviewed-by: Mounir Lamouri <mlamouri@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524831}
[modify] https://crrev.com/74041870cafa4df5fa909b4484f08a337590fed4/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysGetStatusForPolicy.idl
[modify] https://crrev.com/74041870cafa4df5fa909b4484f08a337590fed4/third_party/WebKit/public/platform/web_feature.mojom
[modify] https://crrev.com/74041870cafa4df5fa909b4484f08a337590fed4/tools/metrics/histograms/enums.xml

Project Member

Comment 18 by bugdroid1@chromium.org, Jun 6

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b9b3a7e867859e1b17015f61e09077bc78eee478

commit b9b3a7e867859e1b17015f61e09077bc78eee478
Author: Xiaohan Wang <xhwang@chromium.org>
Date: Wed Jun 06 06:16:53 2018

media: Mark EncryptedMediaHdcpPolicyCheck as experimental

Also allow API to be used via Origin Trial.

BUG= 709348 

Change-Id: I73e0c316a921ac3f9aac5cf259ef88ed37b38f9f
Reviewed-on: https://chromium-review.googlesource.com/862965
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Mounir Lamouri <mlamouri@chromium.org>
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#564802}
[modify] https://crrev.com/b9b3a7e867859e1b17015f61e09077bc78eee478/third_party/blink/renderer/modules/encryptedmedia/media_keys_get_status_for_policy.idl
[modify] https://crrev.com/b9b3a7e867859e1b17015f61e09077bc78eee478/third_party/blink/renderer/platform/runtime_enabled_features.json5

Sign in to add a comment