New issue
Advanced search Search tips

Issue 764143 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug

Blocking:
issue 403462
issue 772160



Sign in to add a comment

Support key system support query using CdmRegistry

Project Member Reported by xhw...@chromium.org, Sep 12 2017

Issue description

Today when querying support of key system backed by pepper/library CDM, we send an IPC message from the render process to the browser process:
ChromeViewHostMsg_IsInternalPluginAvailableForMimeType.

In the browser process, we use pepper plugin registration information to answer whether a CDM of a given pepper type is supported, and if so, what codecs are supported etc.

When we switch from pepper CDM to mojo CDM, we should be able to answer key system support query using CdmRegistry, in the form of an IPC, or more preferably, a mojo call.

This can be done after we start the experiment, but must be finished before we deprecate pepper CDM support. Mark as P3 for now.
 
For my own reference, this is an example using a service in a RenderThread context: 

https://cs.chromium.org/chromium/src/content/renderer/gamepad_shared_memory_reader.cc?rcl=d6a383995a0e74853b81b22405229fe54b6b3728&l=25

And the service is registered in RenderProcessHostImpl::RegisterMojoInterfaces().
We also needs to add the equivalence of Plugin.AvailabilityStatus.WidevineCdm UMA in this new code path.
Labels: -Pri-3 -M-64 M-65 Pri-2

Comment 4 by xhw...@chromium.org, Nov 16 2017

Blocking: 772160

Comment 5 by xhw...@chromium.org, Nov 28 2017

Cc: -jrumm...@chromium.org xhw...@chromium.org
Owner: jrumm...@chromium.org
Assign to jrummell@ for load balance. It'll be great if we can land this early in M-65 timeframe (e.g. shortly after M-64 branch cut).
Labels: -Pri-2 Pri-1
Project Member

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

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

commit 5d457dd1b8e515a59422d0dab4f18fd116e113dd
Author: John Rummell <jrummell@chromium.org>
Date: Mon Dec 18 20:25:27 2017

media: Record whether a CDM supports persistent licenses or not

Updates CdmInfo to keep track if a CDM supports persistent licenses.

BUG= 764143 
TEST=updated content_unittest passes

Change-Id: I206daa59246a33c7a02e58b0356b617c175751a7
Reviewed-on: https://chromium-review.googlesource.com/826474
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Camille Lamy <clamy@chromium.org>
Commit-Queue: John Rummell <jrummell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524785}
[modify] https://crrev.com/5d457dd1b8e515a59422d0dab4f18fd116e113dd/chrome/browser/component_updater/widevine_cdm_component_installer.cc
[modify] https://crrev.com/5d457dd1b8e515a59422d0dab4f18fd116e113dd/chrome/common/chrome_content_client.cc
[modify] https://crrev.com/5d457dd1b8e515a59422d0dab4f18fd116e113dd/content/browser/media/cdm_registry_impl_unittest.cc
[modify] https://crrev.com/5d457dd1b8e515a59422d0dab4f18fd116e113dd/content/common/media/cdm_info.cc
[modify] https://crrev.com/5d457dd1b8e515a59422d0dab4f18fd116e113dd/content/public/common/cdm_info.h

Project Member

Comment 8 by bugdroid1@chromium.org, Dec 21 2017

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

commit 39082fe713310d01e66b71a632404726b70767eb
Author: John Rummell <jrummell@chromium.org>
Date: Thu Dec 21 20:32:00 2017

media: Keep track of codecs as enums rather than strings

To ensure that the values for supported video codecs are valid,
keep track of them as enums.

BUG= 764143 
TEST=updated content_unittest passes

Change-Id: Ic984d580aa5967fa64b72cad3684b3c3ee9c5b9e
Reviewed-on: https://chromium-review.googlesource.com/838192
Commit-Queue: John Rummell <jrummell@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Camille Lamy <clamy@chromium.org>
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#525789}
[modify] https://crrev.com/39082fe713310d01e66b71a632404726b70767eb/chrome/browser/component_updater/widevine_cdm_component_installer.cc
[modify] https://crrev.com/39082fe713310d01e66b71a632404726b70767eb/chrome/common/chrome_content_client.cc
[modify] https://crrev.com/39082fe713310d01e66b71a632404726b70767eb/content/browser/media/cdm_registry_impl_unittest.cc
[modify] https://crrev.com/39082fe713310d01e66b71a632404726b70767eb/content/common/media/cdm_info.cc
[modify] https://crrev.com/39082fe713310d01e66b71a632404726b70767eb/content/public/common/cdm_info.h

Project Member

Comment 9 by bugdroid1@chromium.org, Jan 8 2018

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

commit f4b8cba3f369a14dcf580aea1debef676590037d
Author: John Rummell <jrummell@chromium.org>
Date: Mon Jan 08 20:35:35 2018

[media] Check for key system support using new mojo service KeySystemSupport

Instead of determining if the browser supports a key system by checking if a
particular plugin is registered, use the new mojo service KeySystemSupport to
query the browser and obtain information about the key system.

BUG= 764143 
TEST=new tests + modified EME browser_tests pass

Change-Id: Ied69bf2cc089f2620644f867cdcf7d7a2bce5ca0
Reviewed-on: https://chromium-review.googlesource.com/834764
Commit-Queue: John Rummell <jrummell@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#527741}
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/chrome/browser/media/encrypted_media_browsertest.cc
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/chrome/browser/media/encrypted_media_supported_types_browsertest.cc
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/chrome/browser/media/library_cdm_test_helper.cc
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/chrome/renderer/media/DEPS
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/chrome/renderer/media/chrome_key_systems.cc
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/browser/BUILD.gn
[add] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/browser/media/key_system_support_impl.cc
[add] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/browser/media/key_system_support_impl.h
[add] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/browser/media/key_system_support_impl_unittest.cc
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/browser/media/media_interface_proxy.cc
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/public/renderer/BUILD.gn
[add] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/public/renderer/key_system_support.cc
[add] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/public/renderer/key_system_support.h
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/content/test/BUILD.gn
[modify] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/media/mojo/interfaces/BUILD.gn
[add] https://crrev.com/f4b8cba3f369a14dcf580aea1debef676590037d/media/mojo/interfaces/key_system_support.mojom

Project Member

Comment 10 by bugdroid1@chromium.org, Jan 11 2018

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

commit 09c31164555c31f507c7f1940a88118204ef52df
Author: John Rummell <jrummell@chromium.org>
Date: Thu Jan 11 22:19:22 2018

Remove PluginInfoHost::IsInternalPluginAvailableForMimeType

Now that key system support is determined by KeySystemSupport, remove the
code for IsInternalPluginAvailableForMimeType and it's associated UMA.

BUG= 764143 
TEST=EME browser_tests pass

Change-Id: I256ad0685078877a1ba81fd6ba85526030f499b7
Reviewed-on: https://chromium-review.googlesource.com/855299
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Steven Holte <holte@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: John Rummell <jrummell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#528780}
[modify] https://crrev.com/09c31164555c31f507c7f1940a88118204ef52df/chrome/browser/component_updater/widevine_cdm_component_installer.cc
[modify] https://crrev.com/09c31164555c31f507c7f1940a88118204ef52df/chrome/browser/plugins/plugin_info_host_impl.cc
[modify] https://crrev.com/09c31164555c31f507c7f1940a88118204ef52df/chrome/browser/plugins/plugin_info_host_impl.h
[modify] https://crrev.com/09c31164555c31f507c7f1940a88118204ef52df/chrome/common/chrome_content_client.cc
[modify] https://crrev.com/09c31164555c31f507c7f1940a88118204ef52df/chrome/common/plugin.mojom
[modify] https://crrev.com/09c31164555c31f507c7f1940a88118204ef52df/content/public/renderer/key_system_support.cc
[modify] https://crrev.com/09c31164555c31f507c7f1940a88118204ef52df/third_party/widevine/cdm/widevine_cdm_common.h
[modify] https://crrev.com/09c31164555c31f507c7f1940a88118204ef52df/tools/metrics/histograms/histograms.xml

Project Member

Comment 11 by bugdroid1@chromium.org, Jan 11 2018

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

commit fa6b26339b8df2b039dceefd73df802b2e6c1d2f
Author: Xiaohan Wang <xhwang@chromium.org>
Date: Thu Jan 11 23:28:31 2018

media: Various fixes in EncryptedMediaSupportedTypes*Test

- Rename RegisterExternalClearKey() to RegisterClearKeyCdm(), as this
  function registers the Clear Key CDM to CdmRegister, not the key
  system itself.
- EncryptedMediaSupportedTypesExternalClearKeyNotEnabledTest is updated
  to use RegisterClearKeyCdm().
- EncryptedMediaSupportedTypesClearKeyCDMRegisteredWithWrongPathTest is
  updated using RegisterClearKeyCdm() as well.
- EncryptedMediaSupportedTypesWidevineCDMRegisteredWithWrongPathTest is
  removed as there's no way to actually register Widevine CDM using a
  wrong path.

BUG= 764143 

Change-Id: Icdf700ec5a4b85a0b2f0c4df3c3ef76fcc443184
Reviewed-on: https://chromium-review.googlesource.com/862295
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: John Rummell <jrummell@chromium.org>
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#528813}
[modify] https://crrev.com/fa6b26339b8df2b039dceefd73df802b2e6c1d2f/chrome/browser/media/encrypted_media_browsertest.cc
[modify] https://crrev.com/fa6b26339b8df2b039dceefd73df802b2e6c1d2f/chrome/browser/media/encrypted_media_supported_types_browsertest.cc
[modify] https://crrev.com/fa6b26339b8df2b039dceefd73df802b2e6c1d2f/chrome/browser/media/library_cdm_test_helper.cc
[modify] https://crrev.com/fa6b26339b8df2b039dceefd73df802b2e6c1d2f/chrome/browser/media/library_cdm_test_helper.h
[modify] https://crrev.com/fa6b26339b8df2b039dceefd73df802b2e6c1d2f/chrome/common/chrome_content_client.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Jan 12 2018

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

commit 4dd77fe66cb9e8bda7b5f9d22bd8199372c769c9
Author: John Rummell <jrummell@chromium.org>
Date: Fri Jan 12 20:08:40 2018

Add UMA to report results from checking CDM availability for key system support

Now that the KeySystemSupport mojo interface is used to determine if a
key system is supported, keep track if the request succeeds or not.

This UMA replaces "Plugin.AvailabilityStatus.WidevineCdm" as the plugin
check is no longer done.

BUG= 764143 

Change-Id: I9a08b75cc533de0c1e6891879876a73df37c1e75
Reviewed-on: https://chromium-review.googlesource.com/855050
Reviewed-by: Steven Holte <holte@chromium.org>
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Commit-Queue: John Rummell <jrummell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#529037}
[modify] https://crrev.com/4dd77fe66cb9e8bda7b5f9d22bd8199372c769c9/content/browser/media/key_system_support_impl.cc
[modify] https://crrev.com/4dd77fe66cb9e8bda7b5f9d22bd8199372c769c9/tools/metrics/histograms/histograms.xml

Status: Fixed (was: Assigned)

Sign in to add a comment