Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: silently try com.microsoft.playready.recommendation before com.microsoft.playready #2750

Closed

Conversation

valotvince
Copy link
Contributor

@valotvince valotvince commented Jul 22, 2020

Following #818 and #1495, firstly and silently try to request a media key access with the com.microsoft.playready.recommendation keySytem, and fallback to the legacy one com.microsoft.playready if it fails.

See PlayReady playback tests #1495 (comment)

Also added a new field in the DRM AdvancedConfig sessionType allowing to force a specific MediaKey session to be created with that sessionType. Particularly useful when we issue purchase licenses, and the whole decryption chain checks for the configuration to be nice & pretty (unlike com.microsoft.playready).

We need this whenever content right-holders request hardware decryption for HD content.

Closes #1495

@valotvince valotvince changed the title feat: use playready recommendation when using robustness or persistent state feat: enforce playready recommendation when using robustness or persistent state Jul 22, 2020
@OrenMe
Copy link
Contributor

OrenMe commented Jul 23, 2020

Just came across to check what is the status with #2662 and saw this.
I actually like this approach and it correlates with what dash.js chose to do in Dash-Industry-Forum/dash.js#2714 where they just check if persistent-license is required.
You added some more checks where playready audio or video robustness are defined which I think is also a good test as if it is defined it will only work for .recommendation.

Please note that dash.js discussion came to conclusion that there is no good way to discover if recommendation is supported or not as it is async.
I also tried to think of how to tackle this but I think it adds unwarranted complexity.
If we can agree that this is app side responsibility then I would go ahead with this PR(or merge to existing the video/audio robustness and persistent checks).

BTW - @valotvince did you verify persistent license works on Edge? is offline possible with Shaka on Edge with this?

@valotvince
Copy link
Contributor Author

Hi @OrenMe 👋

I came across Dash-Industry-Forum/dash.js#2714 while trying to hardware decrypt content with Playready and added that check into the drm_engine without testing it (we don't have the use case here for now on) 😄

It's unclear to me which config the drm_engine internally chooses after I hardcode the keySystem (will it take com.microsoft.playready or the recommendation one 🤷‍♂️ ), I still need to clear that up. When using that code, I had to add a com.microsoft.playready.recommendation license url into the configuration (otherwise it would fail with error NO_LICENSE_SERVER_GIVEN).

I am testing it against my own DRM provider, querying them with that keySytem results into an internal server error... I am still investigating on that part so I didn't make it work all the way to playback :)

@valotvince
Copy link
Contributor Author

  • @OrenMe do you know where would be the best place to describe that strategy into the documentation ?

@OrenMe
Copy link
Contributor

OrenMe commented Jul 23, 2020

@valotvince there's this section https://github.com/google/shaka-player/blob/master/docs/tutorials/drm-config.md
And there's the design docs folder

docs/tutorials/drm-config.md Outdated Show resolved Hide resolved
docs/tutorials/drm-config.md Show resolved Hide resolved
docs/tutorials/drm-config.md Outdated Show resolved Hide resolved
lib/media/drm_engine.js Outdated Show resolved Hide resolved
lib/media/drm_engine.js Outdated Show resolved Hide resolved
demo/common/assets.js Outdated Show resolved Hide resolved
@valotvince
Copy link
Contributor Author

Hi @joeyparrish 👋

Any chances of getting that PR reviewed ?

Thank you ! :)

docs/tutorials/drm-config.md Outdated Show resolved Hide resolved
@joeyparrish
Copy link
Member

Sorry for the delay in review, and thank you for contributing!

@valotvince
Copy link
Contributor Author

@joeyparrish Any thoughts about my comment ? 🙏

demo/common/assets.js Outdated Show resolved Hide resolved
docs/tutorials/drm-config.md Outdated Show resolved Hide resolved
lib/media/drm_engine.js Outdated Show resolved Hide resolved
lib/media/drm_engine.js Outdated Show resolved Hide resolved
lib/media/drm_engine.js Outdated Show resolved Hide resolved
lib/media/drm_engine.js Outdated Show resolved Hide resolved
lib/media/drm_engine.js Outdated Show resolved Hide resolved
test/media/drm_engine_unit.js Outdated Show resolved Hide resolved
lib/media/drm_engine.js Outdated Show resolved Hide resolved
@valotvince valotvince changed the title feat: enforce playready recommendation when using robustness or persistent state feat: silently try com.microsoft.playready.recommendation before com.microsoft.playready Nov 2, 2020
@valotvince valotvince force-pushed the feat-playready-recommendation branch 3 times, most recently from fe24f09 to d139221 Compare November 2, 2020 14:51
@avelad
Copy link
Collaborator

avelad commented Nov 3, 2020

@valotvince I have a question, is there a way to ban this behavior on platforms that do not support this? For example, in SmartTV it does not exist and always doing this check adds an extra time that I would like to save myself.

@valotvince
Copy link
Contributor Author

@avelad Sure, if you can provide a listing like isWebOS(), isTizen4() i'll add an exclusion list :)

@avelad
Copy link
Collaborator

avelad commented Nov 3, 2020

@valotvince I think it should be the other way around, this change should only apply if the browser is Edge

@valotvince
Copy link
Contributor Author

valotvince commented Nov 3, 2020

@avelad Why not, but this would exclude platforms adding the support for that keySystem (without adding some code). As long as this is known, no worries :)

@@ -173,6 +173,11 @@ it fails, silently fallback to `com.microsoft.playready`.

NB: Audio Hardware DRM is not supported (PlayReady limitation)

NB: If you are using **purchase persistent licenses**, you will need to set the
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this note here!

Copy link
Member

@joeyparrish joeyparrish left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just one minor nit. Looks great! I'll start a test run.

lib/media/drm_engine.js Outdated Show resolved Hide resolved
@joeyparrish
Copy link
Member

In addition to the tests being run by the build bot, since this has so many platform-specific changes, I am also running a full test pass in our test lab across all devices and operating systems.

@shaka-bot
Copy link
Contributor

All tests passed!

@joeyparrish
Copy link
Member

I am seeing a bunch of failures in my test run, on multiple platforms. I'll need a little time to dig into the specifics and understand what is wrong. Thanks for your patience!

@valotvince
Copy link
Contributor Author

@joeyparrish Thank you ! I'd love to know more about the failures, so I might be of some help to understand them :)

@joeyparrish
Copy link
Member

It turns out that there are already some test failures on the master branch, which appear to be related to the MediaCapabilities work destined for v3.2. So it's possible that there's actually nothing wrong with this PR. To be sure, I'm going to try cherry-picking this PR into the v3.1.x branch to see if there are any test failures with the PR in that context. If not, I'll go ahead and merge it to master, then cherry-pick it to v3.1.x.

Thanks!

@michellezhuogg
Copy link
Contributor

@valotvince We've found the root cause and will have it fixed very soon! It's my bad, not relevant with your PR :D

@valotvince
Copy link
Contributor Author

@joeyparrish @michellezhuogg Thanks for the heads up :)

@shaka-bot
Copy link
Contributor

All tests passed!

@joeyparrish
Copy link
Member

With Michelle's recent fix, I'm still getting failures:

Chrome 84.0.4147.125 (Chromecast 1.50.230474) DrmEngine init should silently try PlayReady recommendation keySytem FAILED
        Shaka Error DRM.REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE ()
Firefox 86.0 (Ubuntu 0.0.0) StreamUtils filterManifest filters transport streams FAILED
        Expected 0 to be 1.
        <Jasmine>
        _callee3$@test/util/stream_utils_unit.js:550:40 <- test/util/stream_utils_unit.js:535:48
        tryCatch@node_modules/babel-polyfill/dist/polyfill.js:6900:40
        invoke@node_modules/babel-polyfill/dist/polyfill.js:7138:30
        defineIteratorMethods/</prototype[method]@node_modules/babel-polyfill/dist/polyfill.js:6952:21
        step@test/util/stream_utils_unit.js:3:191
        step/<@test/util/stream_utils_unit.js:3:365
        TypeError: manifest.variants[0] is undefined in test/util/stream_utils_unit.js (line 536)
        _callee3$@test/util/stream_utils_unit.js:551:7 <- test/util/stream_utils_unit.js:536:15
        tryCatch@node_modules/babel-polyfill/dist/polyfill.js:6900:40
        invoke@node_modules/babel-polyfill/dist/polyfill.js:7138:30
        defineIteratorMethods/</prototype[method]@node_modules/babel-polyfill/dist/polyfill.js:6952:21
        step@test/util/stream_utils_unit.js:3:191
        step/<@test/util/stream_utils_unit.js:3:365
Firefox 86.0 (Ubuntu 0.0.0) StreamUtils filterManifest tolerates empty bandwidth, frameRate, width, height FAILED
        Expected 0 to be 1.
        <Jasmine>
        _callee4$@test/util/stream_utils_unit.js:573:40 <- test/util/stream_utils_unit.js:571:48
        tryCatch@node_modules/babel-polyfill/dist/polyfill.js:6900:40
        invoke@node_modules/babel-polyfill/dist/polyfill.js:7138:30
        defineIteratorMethods/</prototype[method]@node_modules/babel-polyfill/dist/polyfill.js:6952:21
        step@test/util/stream_utils_unit.js:3:191
        step/<@test/util/stream_utils_unit.js:3:365

I'm going to double-check by cherry-picking your change onto v3.0.x, since there are no MediaCapabilities changes there. I suspect the Firefox failures are unrelated to your work. But the Chromecast failure looks likely to be related, since it is the test case you added which is failing there.

@joeyparrish
Copy link
Member

A few more errors that look like they could be related:

Edge 89.0.774.54 (Windows 10) Offline stores, plays, and deletes protected content with a persistent license FAILED
        Failed: _class({ detail: shaka.util.Error {
          "severity": 2,
          "category": 6,
          "code": 6005,
          "data": [
            "Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70)"
          ],
          "handled": false,
          "message": "Shaka Error DRM.FAILED_TO_CREATE_SESSION (Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70))"
        }, bubbles: false, cancelable: false, defaultPrevented: false, timeStamp: 382723.7000000314, type: 'error', isTrusted: false, currentTarget: _class({ listeners_: _class({ map_: Object({ error: [ Function ] }) }), dispatchTarget: <circular reference: Object>, loadMode_: 2, video_: <video width="600" height="400" src="blob:https://karma.shakalab.rocks:27709/66fdf55a-3b29-4eaf-8502-35cecc431bfb">, videoContainer_: null, isTextVisible_: false, eventManager_: _class({ bindingMap_: _class({ map_: Object({ online: [ _class2({ target: <global>, type: 'online', listener: Function, options: false }) ], error: [ _class2({ target: <video width="600" height= ...
        Error: Failed: _class({ detail: shaka.util.Error {
          "severity": 2,
          "category": 6,
          "code": 6005,
          "data": [
            "Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70)"
          ],
          "handled": false,
          "message": "Shaka Error DRM.FAILED_TO_CREATE_SESSION (Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70))"
        }, bubbles: false, cancelable: false, defaultPrevented: false, timeStamp: 382723.7000000314, type: 'error', isTrusted: false, currentTarget: _class({ listeners_: _class({ map_: Object({ error: [ Function ] }) }), dispatchTarget: <circular reference: Object>, loadMode_: 2, video_: <video width="600" height="400" src="blob:https://karma.shakalab.rocks:27709/66fdf55a-3b29-4eaf-8502-35cecc431bfb">, videoContainer_: null, isTextVisible_: false, eventManager_: _class({ bindingMap_: _class({ map_: Object({ online: [ _class2({ target: <global>, type: 'online', listener: Function, options: false }) ], error: [ _class2({ target: <video width="600" height= ...
            at <Jasmine>
            at _class.dispatchEvent (lib/util/fake_event_target.js:97:20 <- lib/util/fake_event_target.js:717:24)
            at _class.onError_ (lib/player.js:5089:10 <- lib/player.js:49341:12)
            at Object.onError (lib/player.js:1719:14 <- lib/player.js:43156:29)
            at _class.onError_ (lib/media/drm_engine.js:81:23 <- lib/media/drm_engine.js:16178:23)
        Error: Timeout waiting for movement from 0 to 3
            at _class.waitUntilGeneric_ (test/test/util/waiter.js:214:19 <- test/test/util/waiter.js:259:19)
            at _class.waitUntilPlayheadReaches (test/test/util/waiter.js:109:17 <- test/test/util/waiter.js:133:19)
            at _class.waitUntilPlayheadReachesOrFailOnTimeout (test/test/util/waiter.js:125:17 <- test/test/util/waiter.js:151:19)
            at _callee6$ (test/offline/offline_integration.js:170:18 <- test/offline/offline_integration.js:41:29)
            at tryCatch (node_modules/babel-polyfill/dist/polyfill.js:6900:40)
            at Generator.invoke [as _invoke] (node_modules/babel-polyfill/dist/polyfill.js:7138:22)
            at Generator.prototype.<computed> [as next] (node_modules/babel-polyfill/dist/polyfill.js:6952:21)
            at step (test/offline/offline_integration.js:3:191)
            at test/offline/offline_integration.js:3:437
            at <Jasmine>
Edge 89.0.774.54 (Windows 10) Offline stores, plays, and deletes protected content with a temporary license FAILED
        Shaka Error DRM.FAILED_TO_CREATE_CDM (Cannot read property 'drmInfos' of undefined)
Chrome 89.0.4389.90 (Mac OS 10.15.7) Offline stores, plays, and deletes protected content with a persistent license FAILED
        Failed: _class({ detail: shaka.util.Error {
          "severity": 2,
          "category": 6,
          "code": 6005,
          "data": [
            "Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70)"
          ],
          "handled": false,
          "message": "Shaka Error DRM.FAILED_TO_CREATE_SESSION (Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70))"
        }, bubbles: false, cancelable: false, defaultPrevented: false, timeStamp: 394663.46499999054, type: 'error', isTrusted: false, currentTarget: _class({ listeners_: _class({ map_: Object({ error: [ Function ] }) }), dispatchTarget: <circular reference: Object>, loadMode_: 1, video_: <video width="600" height="400" src="blob:https://karma.shakalab.rocks:27709/e0aa06ab-e745-403d-b09a-e4418b2f5232">, videoContainer_: null, isTextVisible_: false, eventManager_: _class({ bindingMap_: _class({ map_: Object({ online: [ _class2({ target: <global>, type: 'online', listener: Function, options: false }) ], error: [ _class2({ target: <video width="600" height ...
        Error: Failed: _class({ detail: shaka.util.Error {
          "severity": 2,
          "category": 6,
          "code": 6005,
          "data": [
            "Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70)"
          ],
          "handled": false,
          "message": "Shaka Error DRM.FAILED_TO_CREATE_SESSION (Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70))"
        }, bubbles: false, cancelable: false, defaultPrevented: false, timeStamp: 394663.46499999054, type: 'error', isTrusted: false, currentTarget: _class({ listeners_: _class({ map_: Object({ error: [ Function ] }) }), dispatchTarget: <circular reference: Object>, loadMode_: 1, video_: <video width="600" height="400" src="blob:https://karma.shakalab.rocks:27709/e0aa06ab-e745-403d-b09a-e4418b2f5232">, videoContainer_: null, isTextVisible_: false, eventManager_: _class({ bindingMap_: _class({ map_: Object({ online: [ _class2({ target: <global>, type: 'online', listener: Function, options: false }) ], error: [ _class2({ target: <video width="600" height ...
            at <Jasmine>
            at _class.dispatchEvent (lib/util/fake_event_target.js:97:20 <- lib/util/fake_event_target.js:717:24)
            at _class.onError_ (lib/player.js:5089:10 <- lib/player.js:49341:12)
            at Object.onError (lib/player.js:1719:14 <- lib/player.js:43156:29)
            at _class.onError_ (lib/media/drm_engine.js:81:23 <- lib/media/drm_engine.js:16178:23)
        Error: Timeout waiting for movement from 0 to 3
            at _class.waitUntilGeneric_ (test/test/util/waiter.js:214:19 <- test/test/util/waiter.js:259:19)
            at _class.waitUntilPlayheadReaches (test/test/util/waiter.js:109:17 <- test/test/util/waiter.js:133:19)
            at _class.waitUntilPlayheadReachesOrFailOnTimeout (test/test/util/waiter.js:125:17 <- test/test/util/waiter.js:151:19)
            at _callee6$ (test/offline/offline_integration.js:170:18 <- test/offline/offline_integration.js:41:29)
            at tryCatch (node_modules/babel-polyfill/dist/polyfill.js:6900:40)
            at Generator.invoke [as _invoke] (node_modules/babel-polyfill/dist/polyfill.js:7138:22)
            at Generator.prototype.<computed> [as next] (node_modules/babel-polyfill/dist/polyfill.js:6952:21)
            at step (test/offline/offline_integration.js:3:191)
            at test/offline/offline_integration.js:3:437
            at <Jasmine>
Chrome 89.0.4389.72 (Android 10) Offline stores, plays, and deletes protected content with a persistent license FAILED
        Error: Timeout waiting for movement from 0 to 3
            at _class.waitUntilGeneric_ (test/test/util/waiter.js:214:19 <- test/test/util/waiter.js:259:19)
            at _class.waitUntilPlayheadReaches (test/test/util/waiter.js:109:17 <- test/test/util/waiter.js:133:19)
            at _class.waitUntilPlayheadReachesOrFailOnTimeout (test/test/util/waiter.js:125:17 <- test/test/util/waiter.js:151:19)
            at _callee6$ (test/offline/offline_integration.js:170:18 <- test/offline/offline_integration.js:41:29)
            at tryCatch (node_modules/babel-polyfill/dist/polyfill.js:6900:40)
            at Generator.invoke [as _invoke] (node_modules/babel-polyfill/dist/polyfill.js:7138:22)
            at Generator.prototype.<computed> [as next] (node_modules/babel-polyfill/dist/polyfill.js:6952:21)
            at step (test/offline/offline_integration.js:3:191)
            at test/offline/offline_integration.js:3:437
            at <Jasmine>
Chrome 89.0.4389.90 (Windows 10) Offline stores, plays, and deletes protected content with a persistent license FAILED
        Failed: _class({ detail: shaka.util.Error {
          "severity": 2,
          "category": 6,
          "code": 6005,
          "data": [
            "Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70)"
          ],
          "handled": false,
          "message": "Shaka Error DRM.FAILED_TO_CREATE_SESSION (Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70))"
        }, bubbles: false, cancelable: false, defaultPrevented: false, timeStamp: 410783.85499998694, type: 'error', isTrusted: false, currentTarget: _class({ listeners_: _class({ map_: Object({ error: [ Function ] }) }), dispatchTarget: <circular reference: Object>, loadMode_: 1, video_: <video width="600" height="400" src="blob:https://karma.shakalab.rocks:27709/77e03138-fc8b-4c2a-8bfa-0730c9d47bc1">, videoContainer_: null, isTextVisible_: false, eventManager_: _class({ bindingMap_: _class({ map_: Object({ online: [ _class2({ target: <global>, type: 'online', listener: Function, options: false }) ], error: [ _class2({ target: <video width="600" height ...
        Error: Failed: _class({ detail: shaka.util.Error {
          "severity": 2,
          "category": 6,
          "code": 6005,
          "data": [
            "Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70)"
          ],
          "handled": false,
          "message": "Shaka Error DRM.FAILED_TO_CREATE_SESSION (Failed to execute 'load' on 'MediaKeySession': Rejected with system code (70))"
        }, bubbles: false, cancelable: false, defaultPrevented: false, timeStamp: 410783.85499998694, type: 'error', isTrusted: false, currentTarget: _class({ listeners_: _class({ map_: Object({ error: [ Function ] }) }), dispatchTarget: <circular reference: Object>, loadMode_: 1, video_: <video width="600" height="400" src="blob:https://karma.shakalab.rocks:27709/77e03138-fc8b-4c2a-8bfa-0730c9d47bc1">, videoContainer_: null, isTextVisible_: false, eventManager_: _class({ bindingMap_: _class({ map_: Object({ online: [ _class2({ target: <global>, type: 'online', listener: Function, options: false }) ], error: [ _class2({ target: <video width="600" height ...
            at <Jasmine>
            at _class.dispatchEvent (lib/util/fake_event_target.js:97:20 <- lib/util/fake_event_target.js:717:24)
            at _class.onError_ (lib/player.js:5089:10 <- lib/player.js:49341:12)
            at Object.onError (lib/player.js:1719:14 <- lib/player.js:43156:29)
            at _class.onError_ (lib/media/drm_engine.js:81:23 <- lib/media/drm_engine.js:16178:23)
        Error: Timeout waiting for movement from 0 to 3
            at _class.waitUntilGeneric_ (test/test/util/waiter.js:214:19 <- test/test/util/waiter.js:259:19)
            at _class.waitUntilPlayheadReaches (test/test/util/waiter.js:109:17 <- test/test/util/waiter.js:133:19)
            at _class.waitUntilPlayheadReachesOrFailOnTimeout (test/test/util/waiter.js:125:17 <- test/test/util/waiter.js:151:19)
            at _callee6$ (test/offline/offline_integration.js:170:18 <- test/offline/offline_integration.js:41:29)
            at tryCatch (node_modules/babel-polyfill/dist/polyfill.js:6900:40)
            at Generator.invoke [as _invoke] (node_modules/babel-polyfill/dist/polyfill.js:7138:22)
            at Generator.prototype.<computed> [as next] (node_modules/babel-polyfill/dist/polyfill.js:6952:21)
            at step (test/offline/offline_integration.js:3:191)
            at test/offline/offline_integration.js:3:437
            at <Jasmine>

@joeyparrish
Copy link
Member

Okay, the Chromecast failure, and the offline test failures are reproducible even when I cherry-pick your work onto v3.0.x. (The Firefox failures went away, and are probably related to MediaCapabilities in master.)

I'm going to recommend that you split this work up into multiple PRs. For example, a smaller PR that just adds the sessionType advanced config and DrmInfo field. This should be easy to review, easy to test, and should be pretty low-risk.

Maybe next you could create a PR for the "tears down & removes active persistent sessions" test & feature.

And finally the preference for com.microsoft.playready.recommendation.

How does that sound?

@valotvince
Copy link
Contributor Author

@joeyparrish
Before splitting the PR, I'd like to see if I can quickly resolve those issues, as splitting it won't erase those failures at first ^^

About the offline tests, you are playing the same tests in the repo, but on a Windows 10 Edge Chromium, right ? If so, I am able to reproduce those cases.

About the Chromecast, I think this is what I did here #2750 (comment) that causes the issue, I'll revert that change and rename the function isMicrosoftPlayReady

@joeyparrish
Copy link
Member

Okay, sounds good. Yes, we're running tests on Chromium-based Edge. I can certainly run the tests again when you've made revisions.

Thanks!

@valotvince
Copy link
Contributor Author

valotvince commented Mar 19, 2021

@joeyparrish

After further investigations for the Chromecast part, I think this is more related to the way I did the test, rather than the code itself (fix in 70a5652).

Edit: turns out i am going to ignore the test when not running on Edge, new commit incoming

I am still investigating on the offline tests

@valotvince
Copy link
Contributor Author

@joeyparrish Offline tests should be fixed in fe65b22. I've added a check for storage initialisation, to prevent removing sessions specifically created for storage and used for playback afterwards.

@valotvince
Copy link
Contributor Author

valotvince commented Mar 19, 2021

Do we have to follow a specific setup to make the tests work on Windows 10 / Edge ?

The script doesn't seem to be able to start MicrosoftEdge (to check the last Shaka Error DRM.FAILED_TO_CREATE_CDM (Cannot read property 'drmInfos' of undefined) error on Edge).

Cannot start Edge
Edge failed 2 times (cannot start). Giving up

Edit: i've installed a Chromium Edge launcher on my local setup, I am able to launch the test and see the failure

@joeyparrish
Copy link
Member

Do we have to follow a specific setup to make the tests work on Windows 10 / Edge ?

The script doesn't seem to be able to start MicrosoftEdge (to check the last Shaka Error DRM.FAILED_TO_CREATE_CDM (Cannot read property 'drmInfos' of undefined) error on Edge).

Cannot start Edge
Edge failed 2 times (cannot start). Giving up

Edit: i've installed a Chromium Edge launcher on my local setup, I am able to launch the test and see the failure

Yes, it appears that karma-edge-launcher is outdated and only works for legacy Edge. Perhaps we should switch to this instead: https://github.com/ChiragRupani/karma-chromiumedge-launcher

@valotvince
Copy link
Contributor Author

@joeyparrish To fix the last test Edge, I had to heavily tweak offline / drm and I think it will be a pain to maintain in the future
I've opened a new PR with a different approach #3276

@valotvince valotvince closed this Apr 1, 2021
@valotvince valotvince deleted the feat-playready-recommendation branch April 4, 2021 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support "com.microsoft.playready.recommendation" key system
8 participants