[EME][GStreamer] Register ClearKey CDMFactory
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Aug 2017 15:04:40 +0000 (15:04 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Aug 2017 15:04:40 +0000 (15:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=175136

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Register the ClearKey CDM factory in CDMFactoryGStreamer. A CDMFactoryClearKey
singleton object is introduced and used for that registration.

The basic CDMFactoryClearKey and CDMPrivateClearKey methods are implemented,
marking `org.w3.clearkey` as the supported key system and `keyids` as the
supported init data type. Additional logic around key system configurations,
distinctive identifiers, persistent state and related restrictions and
requirements is implemented.

This improves the ClearKey EME tests a bit, now progressing to the point of
failing with a NotAllowedError exception due to the CDMInstance object failing
to properly initialize because of missing implementation.

No new tests -- relevant tests have underlying baselines updated to reflect
changes in behavior.

* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::CDMFactoryClearKey::singleton):
(WebCore::CDMFactoryClearKey::supportsKeySystem):
(WebCore::CDMPrivateClearKey::supportsInitDataType const):
(WebCore::CDMPrivateClearKey::supportsConfiguration const):
(WebCore::CDMPrivateClearKey::supportsConfigurationWithRestrictions const):
(WebCore::CDMPrivateClearKey::supportsSessionTypeWithConfiguration const):
(WebCore::CDMPrivateClearKey::supportsRobustness const):
(WebCore::CDMPrivateClearKey::distinctiveIdentifiersRequirement const):
(WebCore::CDMPrivateClearKey::persistentStateRequirement const):
* platform/encryptedmedia/clearkey/CDMClearKey.h:
* platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp:
(WebCore::CDMFactory::platformRegisterFactories):

LayoutTests:

Update WPE baselines for EME ClearKey tests following some advancements in
ClearKey support.

* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events-session-closed-event-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-invalid-license-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multisession-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-reset-src-after-setmediakeys-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-at-same-time-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-the-same-mediakeys-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-to-multiple-video-elements-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeys-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeysession-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeysystemaccess-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-update-disallowed-input-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-waiting-for-a-key-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-update-non-ascii-input-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@220269 268f45cc-cd09-0410-ab3c-d52691b4dbfc

41 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events-session-closed-event-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-invalid-license-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multisession-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-reset-src-after-setmediakeys-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-at-same-time-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-the-same-mediakeys-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-to-multiple-video-elements-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeys-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeysession-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeysystemaccess-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-update-disallowed-input-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-waiting-for-a-key-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-update-non-ascii-input-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp
Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.h
Source/WebCore/platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp

index e20138746bc98317c2deaf0e0b53f4112504195e..8c7834d24c0054a8d2378101998668f7aa29d8fd 100644 (file)
@@ -1,3 +1,50 @@
+2017-08-04  Zan Dobersek  <zdobersek@igalia.com>
+
+        [EME][GStreamer] Register ClearKey CDMFactory
+        https://bugs.webkit.org/show_bug.cgi?id=175136
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        Update WPE baselines for EME ClearKey tests following some advancements in
+        ClearKey support.
+
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events-session-closed-event-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-invalid-license-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multisession-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-reset-src-after-setmediakeys-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-at-same-time-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-the-same-mediakeys-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-to-multiple-video-elements-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeys-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeysession-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeysystemaccess-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-update-disallowed-input-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-waiting-for-a-key-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-update-non-ascii-input-expected.txt:
+
 2017-08-04  John Wilander  <wilander@apple.com>
 
         Resource Load Statistics: Report user interaction immediately, but only when needed
index d45714e42b9df6cbe4b0dbd30a477e3aeec7b160..fe5281caf6c4f17427fb0b4c1f1b6f0490efad94 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: line 272: Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'contentitem.audio')
 
-FAIL Encrypted Media Extensions: Events with Clear Key undefined is not an object (evaluating 'contentitem.audio')
+FAIL org.w3.clearkey, basic events assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index cec11a6134ddea6e84197f2172025e4f7a173bde..1c63b82295a041917c84302a3a4a56ec84214462 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey test MediaKeySession closed event. assert_unreached: Error: NotSupportedError Reached unreachable code
+FAIL org.w3.clearkey test MediaKeySession closed event. assert_unreached: Error: NotAllowedError Reached unreachable code
 
index 8928f775e8fba8bbf959d0faddd22e4c1dcb3a5f..2d563583cc3d3239911592c153967877ea80d800 100644 (file)
@@ -1,4 +1,5 @@
 
-Harness Error (TIMEOUT), message = null
-
+FAIL org.w3.clearkey, temporary, keyids, initData longer than 64Kb characters assert_equals: expected "TypeError" but got "NotAllowedError"
+FAIL org.w3.clearkey, temporary, keyids, invalid initdata (too short key ID) assert_equals: expected "TypeError" but got "NotAllowedError"
+FAIL org.w3.clearkey, temporary, keyids, invalid initdata (too long key ID) assert_equals: expected "TypeError" but got "NotAllowedError"
 
index 9e65e14fb9ffca2dda6ec45669cbc195f5f12ffe..d3c3688714f7db32913658ee840688d7ed22c6d9 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL Update with invalid Clear Key license assert_unreached: Error: NotSupportedError Reached unreachable code
+FAIL Update with invalid Clear Key license assert_unreached: Error: NotAllowedError Reached unreachable code
 
index 677e4779ef15f23e051cba823289056c760dbb2f..62c4bc66f676a4d575be41f545007af6c957e84a 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: line 163: Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'contentitem.keys')
 
-FAIL Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, Clear Key undefined is not an object (evaluating 'contentitem.keys')
+FAIL org.w3.clearkey, temporary, keystatuses assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index fdc6970a24e6457b998c48a380bf9f5aee7a611f..d4e0b2142dadcf64459931a51ee151b94dc69b9e 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: line 199: Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'contentitem.keys')
 
-FAIL Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, Clear Key undefined is not an object (evaluating 'contentitem.keys')
+FAIL org.w3.clearkey, temporary, keystatuses, multiple sessions assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 154b8be61334e910b95e8b7b401a5bae5b3e14c9..6c4ecbc5d17658910215f6b3b7b67c98fd63df00 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, single key, clear then encrypted content assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, single key, clear then encrypted content assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index be0d89910af9e589c400dcdcd7ecfa00de545136..a2a61d2045afac7d22d384c1f2ffc1ad1504e400 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, single key, encrypted then clear content assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, single key, encrypted then clear content assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 9544639d10fe8fd3776f07311e4a5e00bee5116f..e0eedd3259f4100d24f283053919614ed2e7d6e7 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, encrypted and clear sources assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, encrypted and clear sources assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 023961a007aa83a5351c2e239efc0af6763b54b0..ca1b5ad38e482bc31e30462f0525002cafce5e33 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, check events assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, check events assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index c255bfb16be1f70d78cda9934022a6d0020589d4..9d54c8494ff3ece95c4cbccc5740cf00f241006c 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, single key assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, single key assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index f1edfa7fad0fcb767925d01f18be47997f8ab4f5..5696e65a9c65a77a5f7982e06a002931543b62e9 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, multikey audio/video assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, multikey audio/video assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index e05606ee17d9931c98febff74d810fc3deddbffb..0366072583b6be6583124534a975a128cc8a87fa 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, successful playback, temporary, mp4, multiple keys, sequential assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, successful playback, temporary, mp4, multiple keys, sequential assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 9db0c183666123a5cfdf6a4f466ebd7c8493b9ea..cd000747d33955e38c71fac9682ebad13a86130e 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, successful playback, temporary, mp4, multiple keys, sequential, readyState assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, successful playback, temporary, mp4, multiple keys, sequential, readyState assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 319f48d209f2e2be827e09b9d1b1f1ff1b3efab7..56e57b14357a70cbcdbe2e42095e9e7a75587eb5 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback with multiple sessions, multikey video assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback with multiple sessions, multikey video assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 62836521f24e9ead904bb3980e87aa0ff97a6ec4..c48dca797753f52b87adbd0dbe4ccdbd231afc9e 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, setMediaKeys after setting video.src assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, setMediaKeys after setting video.src assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index e8264bbf3780c5363b9fa237d237d00f666154d2..b953eec07e007eee8da662320568209359bd02e2 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, setMediaKeys after updating session assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, setMediaKeys after updating session assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 3ced9a5141dd7b27e99fd592b4ff4ce968978c7f..89b2c704bcdf4c68e8e784a4a1c7a562ba750146 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, setMediaKeys first assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, setMediaKeys first assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index f085f2f385bd958a85f721e243acdb7dd59e75ac..639fbea21dd92b6fee56fa3543900039cc1a17ca 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback, setMediaKeys in encrypted event assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback, setMediaKeys in encrypted event assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index ddf248dc17ff07dd4f1f798a91e2dac92627089d..bc8f45d60f56b60afb4d9d39298940f8d3183b65 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, temporary, mp4, playback two videos assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, temporary, mp4, playback two videos assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
   
index 0bd9c358bc193ddef6476481003c42d5155b827e..a54a9ed6e410834238f5eb720c7c94376e0c1d23 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, successful playback, temporary, mp4, waitingforkey event, 1 key assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, successful playback, temporary, mp4, waitingforkey event, 1 key assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index d2500af1e79ff7bf10780c653cb72131435540a0..519e38116c905f0f40917221e6e8cbf84dbf5b5e 100644 (file)
@@ -21,33 +21,33 @@ PASS org.w3.clearkey, requestMediaKeySystemAccess: Trailing dot in Key System na
 PASS org.w3.clearkey, requestMediaKeySystemAccess: Key System name is case sensitive should result in NotSupportedError 
 PASS org.w3.clearkey, requestMediaKeySystemAccess: Empty supportedConfigurations should result in TypeError 
 PASS org.w3.clearkey, requestMediaKeySystemAccess: Empty configuration should result in NotSupportedError 
-FAIL Basic supported configuration promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Partially supported configuration promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Supported audio codec promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL ContentType formatting must be preserved promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Unsupported audio codec ('audio/webm; codecs=fake') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Unsupported video codec () should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Mismatched audio container/codec ('audio/webm; codecs=mp4a','audio/webm; codecs=mp4a.40.2') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Video codec specified in audio field ('video/mp4;codecs="avc1.4d401e"') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Audio codec specified in video field ('audio/mp4;codecs="mp4a.40.2"') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Mismatched audio container/codec ('audio/webm; codecs=avc1','audio/webm; codecs=avc1.42e01e') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Mismatched audio container/codec ('audio/mp4; codecs=vorbis') should result in NotSupportedError 
-FAIL Two configurations, one supported promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Two configurations, both supported promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Audio MIME type does not support video codecs (webm) ('audio/webm; codecs="vp8,vorbis"','audio/webm; codecs="vorbis, vp8"','audio/webm; codecs="vp8"') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Audio MIME type does not support video codecs (mp4) ('audio/mp4; codecs="avc1"','audio/mp4; codecs="avc1.4d401e"') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Video MIME type does not support audio codecs (webm) ('video/webm; codecs="vp8,vorbis"','video/webm; codecs="vorbis, vp8"','video/webm; codecs="vorbis"') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: Video MIME type does not support audio codecs (mp4) ('video/mp4; codecs="mp4a"','video/mp4; codecs="mp4a.40.2"') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: WebM audio does not support AVC1/AAC ('audio/webm; codecs="aac"','audio/webm; codecs="avc1"','audio/webm; codecs="vp8,aac"') should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: WebM video does not support AVC1/AAC ('video/webm; codecs="aac"','video/webm; codecs="avc1"','video/webm; codecs="vp8,aac"') should result in NotSupportedError 
-FAIL Leading space in contentType promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Space before ; in contentType promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+PASS Basic supported configuration 
+PASS Partially supported configuration 
+PASS Supported audio codec 
+PASS ContentType formatting must be preserved 
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Unsupported audio codec ('audio/webm; codecs=fake') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Unsupported video codec () should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Mismatched audio container/codec ('audio/webm; codecs=mp4a','audio/webm; codecs=mp4a.40.2') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Video codec specified in audio field ('video/mp4;codecs="avc1.4d401e"') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Audio codec specified in video field ('audio/mp4;codecs="mp4a.40.2"') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Mismatched audio container/codec ('audio/webm; codecs=avc1','audio/webm; codecs=avc1.42e01e') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Mismatched audio container/codec ('audio/mp4; codecs=vorbis') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+PASS Two configurations, one supported 
+PASS Two configurations, both supported 
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Audio MIME type does not support video codecs (webm) ('audio/webm; codecs="vp8,vorbis"','audio/webm; codecs="vorbis, vp8"','audio/webm; codecs="vp8"') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Audio MIME type does not support video codecs (mp4) ('audio/mp4; codecs="avc1"','audio/mp4; codecs="avc1.4d401e"') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Video MIME type does not support audio codecs (webm) ('video/webm; codecs="vp8,vorbis"','video/webm; codecs="vorbis, vp8"','video/webm; codecs="vorbis"') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: Video MIME type does not support audio codecs (mp4) ('video/mp4; codecs="mp4a"','video/mp4; codecs="mp4a.40.2"') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: WebM audio does not support AVC1/AAC ('audio/webm; codecs="aac"','audio/webm; codecs="avc1"','audio/webm; codecs="vp8,aac"') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: WebM video does not support AVC1/AAC ('video/webm; codecs="aac"','video/webm; codecs="avc1"','video/webm; codecs="vp8,aac"') should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+PASS Leading space in contentType 
+PASS Space before ; in contentType 
 FAIL Trailing space in contentType promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Space at start of codecs parameter promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Space at end of codecs parameter promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Video/ promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+PASS Space at start of codecs parameter 
+PASS Space at end of codecs parameter 
+PASS Video/ 
 FAIL Codecs= promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Upper case MIME type promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+PASS Upper case MIME type 
 FAIL CODECS= promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
 PASS org.w3.clearkey, requestMediaKeySystemAccess: Unrecognized foo with webm ('video/webm; foo="bar"') should result in NotSupportedError 
 PASS org.w3.clearkey, requestMediaKeySystemAccess: Unrecognized foo with mp4 ('video/mp4; foo="bar"') should result in NotSupportedError 
@@ -55,6 +55,6 @@ PASS org.w3.clearkey, requestMediaKeySystemAccess: Unrecognized foo with codecs
 PASS org.w3.clearkey, requestMediaKeySystemAccess: contentType: 'fake' should result in NotSupportedError 
 PASS org.w3.clearkey, requestMediaKeySystemAccess: contentType: 'audio/fake' should result in NotSupportedError 
 PASS org.w3.clearkey, requestMediaKeySystemAccess: contentType: 'video/fake' should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: contentType: 'video/mp4;codecs="AVC1.4D401E"' should result in NotSupportedError 
-PASS org.w3.clearkey, requestMediaKeySystemAccess: contentType: 'video/mp4;codecs=",avc1.4d401e"' should result in NotSupportedError 
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: contentType: 'video/mp4;codecs="AVC1.4D401E"' should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
+FAIL org.w3.clearkey, requestMediaKeySystemAccess: contentType: 'video/mp4;codecs=",avc1.4d401e"' should result in NotSupportedError assert_unreached: Unexpected requestMediaKeySystemAccess() success. Reached unreachable code
 
index e4eb45b8d4dda98f11b74094be41f70c5d894be0..8bb35e0488f82d17868c30c1748aeece42f967cd 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL Reset src after setMediaKeys(). assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL Reset src after setMediaKeys(). assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 9d851a1ee94dfdb8b03c8ea3c553b86779d1f7e4..16db889de1b320018c85961c81e1732ad583692a 100644 (file)
@@ -1,3 +1,3 @@
 
-PASS org.w3.clearkey, setmediakeys again after playback 
+FAIL org.w3.clearkey, setmediakeys again after playback assert_in_array: value "NotAllowedError" not in array ["InvalidStateError", "NotSupportedError"]
 
index 0fc6efe53e632156c1099fa425e1f7308e46a450..f48044388c22b662c20dc1ce96109afa04d3d673 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, setmediakeys again after resetting src assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, setmediakeys again after resetting src assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 4b1a7fca95711d8e2b65f78b5a630f65d5c3abe5..d6541fb29b0972494fc336f9140acc2615c898d9 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: line 272: Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'contentitem.audio')
 
-FAIL Encrypted Media Extensions: setMediaKeys multiple at same time with Clear Key undefined is not an object (evaluating 'contentitem.audio')
+FAIL org.w3.clearkey, setmediakeys at same time assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index d953684ddd6d7061d17ba1b634baf29e4427927b..a1118d46f4befa963b29874436ce3373eb371dfe 100644 (file)
@@ -1,4 +1,5 @@
-CONSOLE MESSAGE: line 272: Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'contentitem.audio')
 
-FAIL Encrypted Media Extensions: setMediaKeys with Clear Key undefined is not an object (evaluating 'contentitem.audio')
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT org.w3.clearkey, setMediaKeys Test timed out
 
index 4d0471b712e078aeb4a87a3d2dcb8843d869021a..582ecfee2268298b26c332f5926b93822c10819b 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey, setmediakeys multiple times with the same mediakeys assert_unreached: NotSupportedError: The operation is not supported. Reached unreachable code
+FAIL org.w3.clearkey, setmediakeys multiple times with the same mediakeys assert_unreached: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. Reached unreachable code
 
index 6a454ba502a1809aec459e0bc6a4b0254a99751a..1ad27323a1f20eeda01a249ba2453c06314d84c7 100644 (file)
@@ -1,5 +1,4 @@
-CONSOLE MESSAGE: line 272: Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'contentitem.audio')
 
-FAIL Encrypted Media Extensions: setMediaKeys to multiple video elements with Clear Key undefined is not an object (evaluating 'contentitem.audio')
+FAIL org.w3.clearkey, setMediaKeys to multiple video elements assert_unreached: Error: assert_equals: expected "QuotaExceededError" but got "NotAllowedError" Reached unreachable code
 
 
index da08c49b3b70236c52547275ae5e5f7e0178e43c..5d3083cdbfae0a2871e9fa78440e8049db3b33f5 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL org.w3.clearkey test MediaKeys attribute syntax assert_true: initDataType should be supported expected true got false
-FAIL org.w3.clearkey test MediaKeys setServerCertificate() exceptions. assert_true: initDataType not supported expected true got false
-FAIL org.w3.clearkey test MediaKeys setServerCertificate() syntax with non-empty certificate. assert_true: initDataType not supported expected true got false
+FAIL org.w3.clearkey test MediaKeys attribute syntax promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey test MediaKeys setServerCertificate() exceptions. promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey test MediaKeys setServerCertificate() syntax with non-empty certificate. promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
 
index 511c294393b679fac73464bca40a289b121ee49e..c08fc1133ecf3114575f5d0277afbb6467b1aada 100644 (file)
@@ -1,9 +1,9 @@
 
-FAIL org.w3.clearkey test MediaKeySession generateRequest() exceptions. assert_true: initDataType not supported expected true got false
-FAIL org.w3.clearkey test MediaKeySession load() exceptions. assert_true: initDataType not supported expected true got false
-FAIL org.w3.clearkey test if MediaKeySession generateRequest() resolves for various sessions assert_true: initDataType should be supported expected true got false
-FAIL org.w3.clearkey test MediaKeySession update() exceptions. assert_true: initDataType not supported expected true got false
-FAIL org.w3.clearkey test MediaKeySession close() exceptions. assert_true: initDataType not supported expected true got false
-FAIL org.w3.clearkey test MediaKeySession remove() exceptions. assert_true: initDataType not supported expected true got false
-FAIL org.w3.clearkey test MediaKeySession attribute syntax. assert_true: initDataType not supported expected true got false
+FAIL org.w3.clearkey test MediaKeySession generateRequest() exceptions. promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey test MediaKeySession load() exceptions. promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey test if MediaKeySession generateRequest() resolves for various sessions promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey test MediaKeySession update() exceptions. promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey test MediaKeySession close() exceptions. promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey test MediaKeySession remove() exceptions. promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey test MediaKeySession attribute syntax. promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
 
index 9c5ca1866fceb97c7569c675e30f756f94c9ac1e..fbe23aabe5cd56cff88ddaff934a23840fffaf3a 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS org.w3.clearkey test requestMediaKeySystemAccess() exceptions. 
-FAIL org.w3.clearkey test MediaKeySystemAccess attribute syntax. assert_true: initDataType not supported expected true got false
+PASS org.w3.clearkey test MediaKeySystemAccess attribute syntax. 
 
index a83c6cada63de18f325eea0ea219df52be3d504d..6ab697ec28e5a65e6efbeae2f8df8b3be92d7f11 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL update() with invalid response (longer than 64Kb characters) should fail. assert_equals: expected "TypeError" but got "NotSupportedError"
+FAIL update() with invalid response (longer than 64Kb characters) should fail. assert_equals: expected "TypeError" but got "NotAllowedError"
 
index 52f991bffa25535df101de8a2cf30e55e100fc68..734723744988231d4a0ace923d15a81237232fcb 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL Waiting for a key. assert_unreached: Error: NotSupportedError Reached unreachable code
+FAIL Waiting for a key. assert_unreached: Error: NotAllowedError Reached unreachable code
 
index 356901724c05b0c2842bd23226ec06d297485f00..72706aa3b81895416a4847a9262ee85f26c5c5ba 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL org.w3.clearkey, temporary, update() immediately after createSession() promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL org.w3.clearkey, temporary, close() immediately after createSession() promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL org.w3.clearkey, temporary, remove() immediately after createSession() promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL org.w3.clearkey, temporary, update() immediately after createSession() promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey, temporary, close() immediately after createSession() promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
+FAIL org.w3.clearkey, temporary, remove() immediately after createSession() promise_test: Unhandled rejection with value: object "NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
 
index 25831257c8a3a0e2aae0a6fe60becb55761ba7ea..c69bb0ee4943bfb51f88796746f571efc38b0c58 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL org.w3.clearkey test handling of non-ASCII responses for update() assert_unreached: Error: NotSupportedError Reached unreachable code
+FAIL org.w3.clearkey test handling of non-ASCII responses for update() assert_unreached: Error: NotAllowedError Reached unreachable code
 
index 9ef9c0cbb79593feb25b75bba59afa96657035e7..875f544080b0b62e39d72cf34e969bca8ea9e979 100644 (file)
@@ -1,3 +1,40 @@
+2017-08-04  Zan Dobersek  <zdobersek@igalia.com>
+
+        [EME][GStreamer] Register ClearKey CDMFactory
+        https://bugs.webkit.org/show_bug.cgi?id=175136
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        Register the ClearKey CDM factory in CDMFactoryGStreamer. A CDMFactoryClearKey
+        singleton object is introduced and used for that registration.
+
+        The basic CDMFactoryClearKey and CDMPrivateClearKey methods are implemented,
+        marking `org.w3.clearkey` as the supported key system and `keyids` as the
+        supported init data type. Additional logic around key system configurations,
+        distinctive identifiers, persistent state and related restrictions and
+        requirements is implemented.
+
+        This improves the ClearKey EME tests a bit, now progressing to the point of
+        failing with a NotAllowedError exception due to the CDMInstance object failing
+        to properly initialize because of missing implementation.
+
+        No new tests -- relevant tests have underlying baselines updated to reflect
+        changes in behavior.
+
+        * platform/encryptedmedia/clearkey/CDMClearKey.cpp:
+        (WebCore::CDMFactoryClearKey::singleton):
+        (WebCore::CDMFactoryClearKey::supportsKeySystem):
+        (WebCore::CDMPrivateClearKey::supportsInitDataType const):
+        (WebCore::CDMPrivateClearKey::supportsConfiguration const):
+        (WebCore::CDMPrivateClearKey::supportsConfigurationWithRestrictions const):
+        (WebCore::CDMPrivateClearKey::supportsSessionTypeWithConfiguration const):
+        (WebCore::CDMPrivateClearKey::supportsRobustness const):
+        (WebCore::CDMPrivateClearKey::distinctiveIdentifiersRequirement const):
+        (WebCore::CDMPrivateClearKey::persistentStateRequirement const):
+        * platform/encryptedmedia/clearkey/CDMClearKey.h:
+        * platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp:
+        (WebCore::CDMFactory::platformRegisterFactories):
+
 2017-08-04  John Wilander  <wilander@apple.com>
 
         Resource Load Statistics: Report user interaction immediately, but only when needed
index c87549aef260a919e336fc8ee1f48c21fbd3ee96..83e7337b7b9d5d637473a45a0cc6b5236ec61163 100644 (file)
 
 #if ENABLE(ENCRYPTED_MEDIA)
 
+#include "CDMKeySystemConfiguration.h"
+#include "CDMRestrictions.h"
+#include "CDMSessionType.h"
 #include "SharedBuffer.h"
 
 namespace WebCore {
 
+CDMFactoryClearKey& CDMFactoryClearKey::singleton()
+{
+    static CDMFactoryClearKey s_factory;
+    return s_factory;
+}
+
 CDMFactoryClearKey::CDMFactoryClearKey() = default;
 CDMFactoryClearKey::~CDMFactoryClearKey() = default;
 
@@ -43,46 +52,73 @@ std::unique_ptr<CDMPrivate> CDMFactoryClearKey::createCDM()
     return std::unique_ptr<CDMPrivate>(new CDMPrivateClearKey);
 }
 
-bool CDMFactoryClearKey::supportsKeySystem(const String&)
+bool CDMFactoryClearKey::supportsKeySystem(const String& keySystem)
 {
-    return false;
+    // `org.w3.clearkey` is the only supported key system.
+    return equalLettersIgnoringASCIICase(keySystem, "org.w3.clearkey");
 }
 
 CDMPrivateClearKey::CDMPrivateClearKey() = default;
 CDMPrivateClearKey::~CDMPrivateClearKey() = default;
 
-bool CDMPrivateClearKey::supportsInitDataType(const AtomicString&) const
+bool CDMPrivateClearKey::supportsInitDataType(const AtomicString& initDataType) const
 {
-    return false;
+    // `keyids` is the only supported init data type.
+    return equalLettersIgnoringASCIICase(initDataType, "keyids");
 }
 
-bool CDMPrivateClearKey::supportsConfiguration(const CDMKeySystemConfiguration&) const
+bool CDMPrivateClearKey::supportsConfiguration(const CDMKeySystemConfiguration& configuration) const
 {
-    return false;
+    // Reject any configuration that marks distinctive identifier or persistent state as required.
+    if (configuration.distinctiveIdentifier == CDMRequirement::Required
+        || configuration.persistentState == CDMRequirement::Required)
+        return false;
+    return true;
 }
 
-bool CDMPrivateClearKey::supportsConfigurationWithRestrictions(const CDMKeySystemConfiguration&, const CDMRestrictions&) const
+bool CDMPrivateClearKey::supportsConfigurationWithRestrictions(const CDMKeySystemConfiguration& configuration, const CDMRestrictions& restrictions) const
 {
-    return false;
+    // Reject any configuration that marks distincitive identifier as required, or that marks
+    // distinctive identifier as optional even when restrictions mark it as denied.
+    if ((configuration.distinctiveIdentifier == CDMRequirement::Optional && restrictions.distinctiveIdentifierDenied)
+        || configuration.distinctiveIdentifier == CDMRequirement::Required)
+        return false;
+
+    // Ditto for persistent state.
+    if ((configuration.persistentState == CDMRequirement::Optional && restrictions.persistentStateDenied)
+        || configuration.persistentState == CDMRequirement::Required)
+        return false;
+
+    return true;
 }
 
-bool CDMPrivateClearKey::supportsSessionTypeWithConfiguration(CDMSessionType&, const CDMKeySystemConfiguration&) const
+bool CDMPrivateClearKey::supportsSessionTypeWithConfiguration(CDMSessionType& sessionType, const CDMKeySystemConfiguration& configuration) const
 {
-    return false;
+    // Only support the temporary session type.
+    if (sessionType != CDMSessionType::Temporary)
+        return false;
+    return supportsConfiguration(configuration);
 }
 
-bool CDMPrivateClearKey::supportsRobustness(const String&) const
+bool CDMPrivateClearKey::supportsRobustness(const String& robustness) const
 {
-    return false;
+    // Only empty `robustness` string is supported.
+    return robustness.isEmpty();
 }
 
-CDMRequirement CDMPrivateClearKey::distinctiveIdentifiersRequirement(const CDMKeySystemConfiguration&, const CDMRestrictions&) const
+CDMRequirement CDMPrivateClearKey::distinctiveIdentifiersRequirement(const CDMKeySystemConfiguration&, const CDMRestrictions& restrictions) const
 {
+    // Distinctive identifier is not allowed if it's been denied, otherwise it's optional.
+    if (restrictions.distinctiveIdentifierDenied)
+        return CDMRequirement::NotAllowed;
     return CDMRequirement::Optional;
 }
 
-CDMRequirement CDMPrivateClearKey::persistentStateRequirement(const CDMKeySystemConfiguration&, const CDMRestrictions&) const
+CDMRequirement CDMPrivateClearKey::persistentStateRequirement(const CDMKeySystemConfiguration&, const CDMRestrictions& restrictions) const
 {
+    // Persistent state is not allowed if it's been denied, otherwise it's optional.
+    if (restrictions.persistentStateDenied)
+        return CDMRequirement::NotAllowed;
     return CDMRequirement::Optional;
 }
 
index 4fc10b540cc6dbccfefa36d919c010b10c042d3d..e678e3753beea5c09538f9576b8421edf97d0e76 100644 (file)
@@ -38,11 +38,15 @@ namespace WebCore {
 
 class CDMFactoryClearKey final : public CDMFactory {
 public:
-    CDMFactoryClearKey();
+    static CDMFactoryClearKey& singleton();
+
     virtual ~CDMFactoryClearKey();
 
     std::unique_ptr<CDMPrivate> createCDM() override;
     bool supportsKeySystem(const String&) override;
+
+private:
+    CDMFactoryClearKey();
 };
 
 class CDMPrivateClearKey final : public CDMPrivate {
index 5c58417c9e5d1b49cc99b270a411d6588963be38..ca3757c974b75b92f1b87b458ed32ac8c0adbd87 100644 (file)
 
 #if ENABLE(ENCRYPTED_MEDIA)
 
+#include "CDMClearKey.h"
+
 namespace WebCore {
 
 void CDMFactory::platformRegisterFactories(Vector<CDMFactory*>& factories)
 {
+    factories.append(&CDMFactoryClearKey::singleton());
 }
 
 } // namespace WebCore