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

Issue 866625 link

Starred by 15 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug-Regression



Sign in to add a comment

The EME call generateRequest() fails when attempting to use Chrome with Shaka player in a closed environment

Project Member Reported by ryanlewis@google.com, Jul 23

Issue description

Steps to reproduce the problem:
Reproduces on the following devices: 

Samsung Galaxy S8 - Android 7.0, Chrome 66
Samsung Galaxy S6 -Android 7.0, Chrome 66
Huawei Nova Lite - Android 7.0, Chrome 66
Huawei P8 - Android 6.0, Chrome 66

Attempt to play content using the Shaka player in Chrome browser
https://shaka-player-demo.appspot.com/demo/#asset=https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd;lang=en-US;build=uncompiled

Device should have no external access and only be on an isolated wifi network with only access to the 

What is the expected behavior?
generateRequest() should not fail and prevent content playback. 

What went wrong?
The service certificate is set as required by the Widevine License SDK.

The first call always fails with 139 and returns a certificate.

But in the closed network environment the license SDK is not reached at all by the player.

Did this work before? N/A 

Chrome version: 66.0.3359.126  Channel: stable
OS Version: Android N 7.0
Flash Version: 

Github background issue:
https://github.com/google/shaka-player/issues/1433

From partner describing videos:
All these were done in a disconnected environment (no internet connection) as the devices work fine in a connected environment. 

In video1 I play the content on Chrome on Windows, works fine and calls the Widevine SDK with no problems. 

In video2 I try play the same content on an Android 7 with Chrome 67. It fails and the Widevine SDK is not even called it fails on an EME call as described in earlier emails. 

In video3 I set Chrome back to the factory settings which is version 61. 

In video4 I can play the content with Chrome 61 installed, the Widevine SDK is reached and the license returned. 

So with this evidence I can surmise the following: 
That my Widevine SDK setup is working correctly. 
It is not a bug either in the Widevine product, since it is not calling the product. 
The changes made between Chrome 61 and 67 on an Android are (only in disconnected mode) refusing to connect with the Widevine SDK.
 
Cc: hmchen@chromium.org tinskip@chromium.org maxcop...@google.com xhw...@chromium.org ericde@chromium.org
Components: Internals>Media>Encrypted
More details.  Partner captured 

Client
User-Agent: Widevine CDM v1.0

Transport
Host:www.googleapis.com:443
Proxy-Connection: keep-alive

They never saw this call in previous Chrome versions and see this call return successful when in online mode, but never in offline or in a local connection.  See screenshots for more details. 


offline_call_timeout.png
506 KB View Download
online_call_successful.png
791 KB View Download
offline_older_chrome_no_call.png
641 KB View Download
Cc: chelamcherla@chromium.org
Labels: Needs-triage-Mobile Needs-Feedback Triaged-Mobile
Tested the issue on Android and unable to reproduce this issue. Below are the observations

Observations:
==============
1. Connected to google internal guest wifi 
2. launched https://shaka-player-demo.appspot.com/demo/#asset=https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd;lang=en-US;build=uncompiled from chrome , clicked on Load and clicked on video -- video played succesfully.
3. Disconnected from wifi and tried playing above , clicked on load and observed 2 different error - Error code 1002, Error code 4000

Chrome versions tested:
67.0.3396.87(Stable)

OS:
Android 7.0

Android Devices:
Samsung GalaxyJ7

ryanlewis@: Could you please check the steps and let us know if we miss anything/ this is the behavior you are seeing. If possible please guide us with screencast on reproducing the issue. This would help in better triaging.
 
Thanks!
Labels: allpublic
We see the same issue. 
After step 2, please perform the below steps:

Chrome->Settings->Site settings->Media->Protected Content. Clear and reset the entry for https://shaka-player-demo.appspot.com
Chrome->Settings->Privacy->Clear browsing data-> Advanced->Media Licenses(check this) and click clear data.

After these two steps please attempt to play the content connected to a Wifi not connected to internet.

Provisioning requires network access to a Google server, e.g. www.googleapis.com:443 as noted in #2, which will not work in a closed environment. So the device has to be provisioned in an online environment before it can work in a closed environment.

Previously we use per-device provisioning, meaning the device only need to be provisioned once, triggered either by Chrome or by an Android app.

Around M58 we started to use per-origin provisioning feature provided by Android OS. That means each site (origin) needs to be provisioned separately. To make it work, user needs to visit that exact site and trigger provisioning with network access to finish the provisioning process. Then user should be able to use the device to play content on that site in a closed environment.
Thanks for the reply. Is provisioning mentioned here, the device provisioning as mandated by Widevine protocol or is it some provisioning by Chrome? If Chrome needs provisioning, how can a closed environment support provisioning.
Tested the issue on Android and unable to reproduce this issue. Below are the observations

Observations:
==============
1. Connected to google internal guest wifi 
2. launched https://shaka-player-demo.appspot.com/demo/#asset=https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd;lang=en-US;build=uncompiled from chrome , clicked on Load and clicked on video -- video played succesfully.
3. Navigated to Chrome->Settings->Site settings->Media->Protected Content. Cleared and resetted the entry for https://shaka-player-demo.appspot.com
4. Navigated to Chrome->Settings->Privacy->Clear browsing data-> Advanced->Media Licenses(check this) and click clear data.
5. Now played video and observed video playing successfully.

Chrome versions tested:
67.0.3396.87(Stable)

OS:
Android 7.0

Android Devices:
Samsung GalaxyJ7

shiney.james@: Could you please check the screencast and let us know if we miss anything.
 
Thanks!

866625.mp4
8.8 MB View Download
Hi, as Shiney, we are having the same issue. Keep in mind that our environment is completely offline: it is an aircraft flying with no internet. In this scenario we have a stand-alone widevine license server on board.

In your example, your device seem to have internet connectivity, so the conditions are not the same as in our scenario. Probably your device has access to the provisioning service, which is not the case in our offline scenario.
The steps are fine. But the WiFi connected does have Internet enabled. 
The issue is replicated only in a closed network(Internet disabled).

Let me know if you would need any logs collected from our test environment. 


Labels: Target-70
Owner: xhw...@chromium.org
Status: Available (was: Unconfirmed)
Is it possible to raise the priority of the issue to priority 1? 

As per https://www.chromium.org/for-testers/bug-reporting-guidelines/chromium-bug-labels, 
Type-Bug-Regression: Features that worked in prior releases and are now broken. These should be Pri-1.

Hello Shiney,

Out of curiosity, this should have been broken for long time since the change was made around Chrome 58, which was released last year. Do you know why this is only reported now?
I know from the partners I've spoken to they've been aware that "something broke" a while back but haven't been able to pin down what / where until recently.  Given the fact that it is very hard to replicate without getting on a flight, and even then only when not connecting to the internet it's been challenging.

Yes, this issue was reported earlier in Nov 11 in Widevine discussion forum(see link below). As no feedback was received, this was marked as an open issue. In couple of aircrafts connectivity was supported.  Business use case started to get affected for completely disconnected aircrafts. There is no way to enable connectivity here. Hence the push for a quicker resolution.

https://groups.google.com/forum/#!searchin/cwip-discuss/mediadrm$20is$20null$20or$20security$20level$20is$20not$20supported.%7Csort:date/cwip-discuss/Mwbb1egg3Ro/srCMDcaAAwAJ
All,

We are actively working on a solution for this, but do not yet have a time frame.  Please stay tuned for more updates.  

Thanks,
Ryan
Hi Ryan,

We are also serving in aircraft non connected environment and using ExoPlayer to play widevine DRM content. in Android 8/8.1 we are facing same issue (request made to google cloud server for device provisioning & failing due to non connectivity) in new devices like Galaxy S9+ or after doing factory reset to oneplus6, Nokia 7 plus, Galaxy S9. but I can not reproduce it in Android 7 devices with ExoPlayer.

As we are using App(ExoPlayer) and Not browser so want to know if the Fix will come in "Chrome browser" or in "Android OS"? as we need fix at App level.

Thanks,


Status: Assigned (was: Available)
Can this issue be reassigned to priority 1 as per regression bug guidelines? I am also experiencing this issue in a disconnected environment and also in Exo Player on Android 8 devices too; which is unrelated to this particular regression in Chrome, but worthwhile noting. 
Has there been any progress with this issue?
Please confirm if the fix is added in Chrome 70 beta release done in September 20, 2018.
Labels: M-70
Labels: -Target-70 -M-70 Target-72 M-72
This issue seems to persist in Chrome 70 and 71 (canary)  is 72 now the target?
Labels: FoundIn-66
That's correct.
This issue can still be reproduced in Chrome 72 (canary). 
Is the fix still targeted for M-72? 
Labels: -M-72 -Target-72 Target-73
Sorry for the delay. We have a plan and the current tentative target is M73.
Status: Started (was: Assigned)

Sign in to add a comment