Skip to content

Commit d03c6b5

Browse files
committed
Closes mozilla-mobile#1128: browser-engine-system: Automatically grant playing protected media (EME APIs).
This is a workaround for Firefox for Fire TV to play DRM content automatically. Eventually we want to implement this API in a way that the app (or another component) can handle those requests. See: mozilla-mobile#1157
1 parent 2d61aa2 commit d03c6b5

File tree

1 file changed

+14
-2
lines changed
  • components/browser/engine-system/src/main/java/mozilla/components/browser/engine/system

1 file changed

+14
-2
lines changed

components/browser/engine-system/src/main/java/mozilla/components/browser/engine/system/SystemEngineView.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,21 @@ import android.util.AttributeSet
1717
import android.view.View
1818
import android.webkit.CookieManager
1919
import android.webkit.DownloadListener
20+
import android.webkit.PermissionRequest
2021
import android.webkit.SslErrorHandler
22+
import android.webkit.ValueCallback
2123
import android.webkit.WebChromeClient
2224
import android.webkit.WebResourceError
2325
import android.webkit.WebResourceRequest
2426
import android.webkit.WebResourceResponse
2527
import android.webkit.WebView
26-
import android.webkit.WebViewClient
27-
import android.webkit.ValueCallback
2828
import android.webkit.WebView.HitTestResult.EMAIL_TYPE
2929
import android.webkit.WebView.HitTestResult.GEO_TYPE
3030
import android.webkit.WebView.HitTestResult.IMAGE_TYPE
3131
import android.webkit.WebView.HitTestResult.PHONE_TYPE
3232
import android.webkit.WebView.HitTestResult.SRC_ANCHOR_TYPE
3333
import android.webkit.WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE
34+
import android.webkit.WebViewClient
3435
import android.widget.FrameLayout
3536
import mozilla.components.browser.engine.system.matcher.UrlMatcher
3637
import mozilla.components.browser.errorpages.ErrorType
@@ -256,6 +257,7 @@ class SystemEngineView @JvmOverloads constructor(
256257

257258
private fun isLowOnMemory() = testLowMemory || (context?.isOSOnLowMemory() == true)
258259

260+
@Suppress("ComplexMethod")
259261
private fun createWebChromeClient() = object : WebChromeClient() {
260262
override fun getVisitedHistory(callback: ValueCallback<Array<String>>) {
261263
// TODO private browsing not supported for SystemEngine
@@ -293,6 +295,16 @@ class SystemEngineView @JvmOverloads constructor(
293295
removeFullScreenView()
294296
session?.internalNotifyObservers { onFullScreenChange(false) }
295297
}
298+
299+
override fun onPermissionRequest(request: PermissionRequest) {
300+
if (request.resources.contains(PermissionRequest.RESOURCE_PROTECTED_MEDIA_ID)) {
301+
// For now we automatically grant playing protected media (EME APIs).
302+
// See https://github.com/mozilla-mobile/android-components/issues/1128
303+
request.grant(arrayOf(PermissionRequest.RESOURCE_PROTECTED_MEDIA_ID))
304+
} else {
305+
super.onPermissionRequest(request)
306+
}
307+
}
296308
}
297309

298310
internal fun createDownloadListener(): DownloadListener {

0 commit comments

Comments
 (0)