diff --git a/encrypted-media-respec.html b/encrypted-media-respec.html index e82bfb02..51cdd8f8 100644 --- a/encrypted-media-respec.html +++ b/encrypted-media-respec.html @@ -605,14 +605,48 @@
Get Supported Configuration

If the is not unique per-origin and clearable, return null.

-

Implementations MUST use per-origin identifiers and allow the user to clear identifiers.

+

+ The "unique per-origin" and "clearable" conditions cannot be false in a compliant implementation because implementations MUST use per-origin identifiers and allow the user to clear identifier. +

  • - If there is no persisted consent covering accumulated configuration for the origin, it is RECOMMENDED that implementations request user consent to use Distinctive Identifier(s). + Let distinctive identifier state be the result of running the algorithm on accumulated configuration and origin and follow the steps for the first matching condition from the following list:

    -

    A previous user consent for a prompt that did not include use of a (with similar properties) would not be considered as covering this accumulated configuration, which implies use of such an identifier.

    -

    Implementations MAY require consent for other reasons, such as the security properties of the CDM implementation.

    + +
    +
    If distinctive identifier state is ConsentRequired:
    +
    +
      +
    1. +

      + Request user consent to use Distinctive Identifier(s) for accumulated configuration and origin. +

      +
    2. +
    3. +

      + If consent was denied, return null. +

      +
    4. +
    +
    +
    + If distinctive identifier state is InformUser: +
    +
    +

    + Inform the user that Distinctive Identifier(s) are in use for accumulated configuration and origin. +

    +
    +
    + Otherwise: +
    +
    +

    + Continue with the following steps. +

    +
    +
  • @@ -620,7 +654,7 @@
    Get Supported Configuration
  • Return accumulated configuration.

  • - +
    Get Supported Capabilities for Audio/Video Type

    Given a audio/video type, MediaKeySystemMediaCapability sequence requested media capabilities, and MediaKeySystemConfiguration partial configuration, this algorithm returns a sequence of supported MediaKeySystemMediaCapability values for this audio/video type or null as appropriate.

    @@ -693,6 +727,37 @@
    Are insecure contexts allowed? - DEPRECATED

    Implementations SHOULD return Not Allowed. Implementations MAY return Allowed.

    +
    +
    Get Distinctive Identifier State
    +

    + Given an accumulated configuration and an origin, this algorithm returns the status of Distinctive Identifier(s) for accumulated configuration and origin as one of ConsentRequired, InformUser or Allowed. +

    +
      +
    1. +

      + If there is persisted state indicating that Distinctive Identifier(s) are allowed for accumulated configuration and origin return Allowed. +

      +

      + A previous user consent for a prompt that did not include use of a (with similar properties) would not be considered as covering an accumulated configuration, which implies use of such an identifier. +

      +
    2. +
    3. +

      + If the any of the recommendations of Allow Identifiers to be Cleared are not supported by the User Agent, or if the user agent requires explicit consent for the user of + Distinctive Identifier(s) for other reasons, return ConsentRequired. +

      +

      + Implementations MAY require consent for other reasons, such as the security properties of the CDM implementation. +

      +
    4. +
    5. +

      + Return InformUser. +

      +
    6. +
    +
    + diff --git a/encrypted-media.js b/encrypted-media.js index 5950089f..51176d2e 100644 --- a/encrypted-media.js +++ b/encrypted-media.js @@ -162,6 +162,7 @@ 'requestMediaKeySystemAccess': { func: idlref_helper, fragment: 'widl-Navigator-requestMediaKeySystemAccess-Promise-MediaKeySystemAccess--DOMString-keySystem-sequence-MediaKeySystemConfiguration--supportedConfigurations', link_text: 'requestMediaKeySystemAccess()', }, 'requestMediaKeySystemAccess-call': { func: idlref_helper, fragment: 'widl-Navigator-requestMediaKeySystemAccess-Promise-MediaKeySystemAccess--DOMString-keySystem-sequence-MediaKeySystemConfiguration--supportedConfigurations', link_text: 'requestMediaKeySystemAccess', }, + 'get-distinctive-identifier-state-algorithm' : { func: term_helper, fragment: 'get-distinctive-identifier-state', link_text: 'Get Distinctive Identifier State' }, 'get-supported-configuration-algorithm': { func: term_helper, fragment: 'get-supported-configuration', link_text: 'Get Supported Configuration', }, 'get-supported-capabilities-for-audio-video-type-algorithm': { func: term_helper, fragment: 'get-supported-capabilities-for-audio-video-type', link_text: 'Get Supported Capabilities for Audio/Video Type', }, 'requirement-required': { func: idlref_helper, fragment: 'idl-def-MediaKeysRequirement.required', link_text: '"required"', }, diff --git a/index.html b/index.html index 2a021141..d675d8d8 100644 --- a/index.html +++ b/index.html @@ -472,7 +472,102 @@ display: none; } } - + +
    Note

    For example, if audio/video type is Video and the top-level type is not "video" or audio/video types contains non-video codecs.

  • Let container be the container type specified by content type.

  • If the user agent does not support container, continue to the next iteration. The case-sensitivity of string comparisons is determined by the appropriate RFC.

    -
    Note

    Per RFC 6838 [RFC6838], "Both top-level type and subtype names are case-insensitive."

    +
    Note

    Per RFC 6838 [RFC6838], "Both top-level type and subtype names are case-insensitive."

  • Let parameters be the RFC 6381 [RFC6381] parameters, if any, specified by content type.

  • If the user agent does not recognize one or more parameters, continue to the next iteration.

  • Let audio/video types be the set of codecs, with parameters, specified by parameters. It MAY be empty. The case-sensitivity of string comparisons is determined by the appropriate RFC or other specification.

    -
    Note

    Case-sensitive string comparison is RECOMMENDED because RFC 6381 [RFC6381] says, "Values are case sensitive" for some formats.

    +
    Note

    Case-sensitive string comparison is RECOMMENDED because RFC 6381 [RFC6381] says, "Values are case sensitive" for some formats.

  • If robustness is not the empty string and contains an unrecognized value or a value not supported by implementation, continue to the next iteration. String comparison is case-sensitive.

  • If the user agent and implementation do not support playback of encrypted media data for the combination of container, audio/video types, robustness and local accumulated configuration, continue to the next iteration.

    -
    Note

    requested media capability (content type and robustness) must be supported with all previously added requested media capabilities.

    +
    Note

    requested media capability (content type and robustness) must be supported with all previously added requested media capabilities.

  • Add requested media capability to supported media capabilities.

    -
    Note

    +

    Note

    This step ensures that the values of the members of entries in supported media capabilities are exactly the strings supplied in requested media capability without modification by the User Agent.

    @@ -1208,7 +1337,7 @@
    Note

    +

    Note

    This step ensures that configurations are always checked with configurations from previous iterations, including from previous calls to this algorithm. Otherwise, only configurations from previous calls to this algorithm would be checked in subsequent calls.

    @@ -1216,7 +1345,7 @@
    Note

    None of the MediaKeySystemMediaCapability elements in requested media capabilities is supported in combination with partial configuration.

    +
    Note

    None of the MediaKeySystemMediaCapability elements in requested media capabilities is supported in combination with partial configuration.

  • Return supported media capabilities.

  • @@ -1228,6 +1357,37 @@
    SHOULD return Not Allowed. Implementations MAY return Allowed.

    +
    +
    3.1.2.4 Get Distinctive Identifier State
    +

    + Given an accumulated configuration and an origin, this algorithm returns the status of Distinctive Identifier(s) for accumulated configuration and origin as one of ConsentRequired, InformUser or Allowed. +

    +
      +
    1. +

      + If there is persisted state indicating that Distinctive Identifier(s) are allowed for accumulated configuration and origin return Allowed. +

      +
      Note

      + A previous user consent for a prompt that did not include use of a Distinctive Identifier (with similar properties) would not be considered as covering an accumulated configuration, which implies use of such an identifier. +

      +
    2. +
    3. +

      + If the any of the recommendations of Allow Identifiers to be Cleared are not supported by the User Agent, or if the user agent requires explicit consent for the user of + Distinctive Identifier(s) for other reasons, return ConsentRequired. +

      +
      Note

      + Implementations MAY require consent for other reasons, such as the security properties of the CDM implementation. +

      +
    4. +
    5. +

      + Return InformUser. +

      +
    6. +
    +
    +