summaryrefslogtreecommitdiffstats
path: root/mobile/android/base/java/org/mozilla/gecko/media/RemoteMediaDrmBridgeStub.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/media/RemoteMediaDrmBridgeStub.java')
-rw-r--r--mobile/android/base/java/org/mozilla/gecko/media/RemoteMediaDrmBridgeStub.java247
1 files changed, 0 insertions, 247 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/media/RemoteMediaDrmBridgeStub.java b/mobile/android/base/java/org/mozilla/gecko/media/RemoteMediaDrmBridgeStub.java
deleted file mode 100644
index 8aed0f851..000000000
--- a/mobile/android/base/java/org/mozilla/gecko/media/RemoteMediaDrmBridgeStub.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.media;
-import org.mozilla.gecko.AppConstants;
-
-import java.util.ArrayList;
-
-import android.media.MediaCrypto;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.util.Log;
-
-final class RemoteMediaDrmBridgeStub extends IMediaDrmBridge.Stub implements IBinder.DeathRecipient {
- private static final String LOGTAG = "GeckoRemoteMediaDrmBridgeStub";
- private static final boolean DEBUG = false;
- private volatile IMediaDrmBridgeCallbacks mCallbacks = null;
-
- // Underlying bridge implmenetaion, i.e. GeckoMediaDrmBrdigeV21.
- private GeckoMediaDrm mBridge = null;
-
- // mStubId is initialized during stub construction. It should be a unique
- // string which is generated in MediaDrmProxy in Fennec App process and is
- // used for Codec to obtain corresponding MediaCrypto as input to achieve
- // decryption.
- // The generated stubId will be delivered to Codec via a code path starting
- // from MediaDrmProxy -> MediaDrmCDMProxy -> RemoteDataDecoder => IPC => Codec.
- private String mStubId = "";
-
- public static ArrayList<RemoteMediaDrmBridgeStub> mBridgeStubs =
- new ArrayList<RemoteMediaDrmBridgeStub>();
-
- private String getId() {
- return mStubId;
- }
-
- private MediaCrypto getMediaCryptoFromBridge() {
- return mBridge != null ? mBridge.getMediaCrypto() : null;
- }
-
- public static synchronized MediaCrypto getMediaCrypto(String stubId) {
- if (DEBUG) Log.d(LOGTAG, "getMediaCrypto()");
-
- for (int i = 0; i < mBridgeStubs.size(); i++) {
- if (mBridgeStubs.get(i) != null &&
- mBridgeStubs.get(i).getId().equals(stubId)) {
- return mBridgeStubs.get(i).getMediaCryptoFromBridge();
- }
- }
- return null;
- }
-
- // Callback to RemoteMediaDrmBridge.
- private final class Callbacks implements GeckoMediaDrm.Callbacks {
- private IMediaDrmBridgeCallbacks mRemoteCallbacks;
-
- public Callbacks(IMediaDrmBridgeCallbacks remote) {
- mRemoteCallbacks = remote;
- }
-
- @Override
- public void onSessionCreated(int createSessionToken,
- int promiseId,
- byte[] sessionId,
- byte[] request) {
- if (DEBUG) Log.d(LOGTAG, "onSessionCreated()");
- try {
- mRemoteCallbacks.onSessionCreated(createSessionToken,
- promiseId,
- sessionId,
- request);
- } catch (RemoteException e) {
- Log.e(LOGTAG, "Exception ! Dead recipient !!", e);
- }
- }
-
- @Override
- public void onSessionUpdated(int promiseId, byte[] sessionId) {
- if (DEBUG) Log.d(LOGTAG, "onSessionUpdated()");
- try {
- mRemoteCallbacks.onSessionUpdated(promiseId, sessionId);
- } catch (RemoteException e) {
- Log.e(LOGTAG, "Exception ! Dead recipient !!", e);
- }
- }
-
- @Override
- public void onSessionClosed(int promiseId, byte[] sessionId) {
- if (DEBUG) Log.d(LOGTAG, "onSessionClosed()");
- try {
- mRemoteCallbacks.onSessionClosed(promiseId, sessionId);
- } catch (RemoteException e) {
- Log.e(LOGTAG, "Exception ! Dead recipient !!", e);
- }
- }
-
- @Override
- public void onSessionMessage(byte[] sessionId,
- int sessionMessageType,
- byte[] request) {
- if (DEBUG) Log.d(LOGTAG, "onSessionMessage()");
- try {
- mRemoteCallbacks.onSessionMessage(sessionId, sessionMessageType, request);
- } catch (RemoteException e) {
- Log.e(LOGTAG, "Exception ! Dead recipient !!", e);
- }
- }
-
- @Override
- public void onSessionError(byte[] sessionId, String message) {
- if (DEBUG) Log.d(LOGTAG, "onSessionError()");
- try {
- mRemoteCallbacks.onSessionError(sessionId, message);
- } catch (RemoteException e) {
- Log.e(LOGTAG, "Exception ! Dead recipient !!", e);
- }
- }
-
- @Override
- public void onSessionBatchedKeyChanged(byte[] sessionId,
- SessionKeyInfo[] keyInfos) {
- if (DEBUG) Log.d(LOGTAG, "onSessionBatchedKeyChanged()");
- try {
- mRemoteCallbacks.onSessionBatchedKeyChanged(sessionId, keyInfos);
- } catch (RemoteException e) {
- Log.e(LOGTAG, "Exception ! Dead recipient !!", e);
- }
- }
-
- @Override
- public void onRejectPromise(int promiseId, String message) {
- if (DEBUG) Log.d(LOGTAG, "onRejectPromise()");
- try {
- mRemoteCallbacks.onRejectPromise(promiseId, message);
- } catch (RemoteException e) {
- Log.e(LOGTAG, "Exception ! Dead recipient !!", e);
- }
- }
- }
-
- /* package-private */ void assertTrue(boolean condition) {
- if (DEBUG && !condition) {
- throw new AssertionError("Expected condition to be true");
- }
- }
-
- RemoteMediaDrmBridgeStub(String keySystem, String stubId) throws RemoteException {
- if (AppConstants.Versions.preLollipop) {
- Log.e(LOGTAG, "Pre-Lollipop should never enter here!!");
- throw new RemoteException("Error, unsupported version!");
- }
- try {
- if (AppConstants.Versions.feature21Plus &&
- AppConstants.Versions.preMarshmallow) {
- mBridge = new GeckoMediaDrmBridgeV21(keySystem);
- } else {
- mBridge = new GeckoMediaDrmBridgeV23(keySystem);
- }
- mStubId = stubId;
- mBridgeStubs.add(this);
- } catch (Exception e) {
- throw new RemoteException("RemoteMediaDrmBridgeStub cannot create bridge implementation.");
- }
- }
-
- @Override
- public synchronized void setCallbacks(IMediaDrmBridgeCallbacks callbacks) throws RemoteException {
- if (DEBUG) Log.d(LOGTAG, "setCallbacks()");
- assertTrue(mBridge != null);
- assertTrue(callbacks != null);
- mCallbacks = callbacks;
- callbacks.asBinder().linkToDeath(this, 0);
- mBridge.setCallbacks(new Callbacks(mCallbacks));
- }
-
- @Override
- public synchronized void createSession(int createSessionToken,
- int promiseId,
- String initDataType,
- byte[] initData) throws RemoteException {
- if (DEBUG) Log.d(LOGTAG, "createSession()");
- try {
- assertTrue(mCallbacks != null);
- assertTrue(mBridge != null);
- mBridge.createSession(createSessionToken,
- promiseId,
- initDataType,
- initData);
- } catch (Exception e) {
- Log.e(LOGTAG, "Failed to createSession.", e);
- mCallbacks.onRejectPromise(promiseId, "Failed to createSession.");
- }
- }
-
- @Override
- public synchronized void updateSession(int promiseId,
- String sessionId,
- byte[] response) throws RemoteException {
- if (DEBUG) Log.d(LOGTAG, "updateSession()");
- try {
- assertTrue(mCallbacks != null);
- assertTrue(mBridge != null);
- mBridge.updateSession(promiseId, sessionId, response);
- } catch (Exception e) {
- Log.e(LOGTAG, "Failed to updateSession.", e);
- mCallbacks.onRejectPromise(promiseId, "Failed to updateSession.");
- }
- }
-
- @Override
- public synchronized void closeSession(int promiseId, String sessionId) throws RemoteException {
- if (DEBUG) Log.d(LOGTAG, "closeSession()");
- try {
- assertTrue(mCallbacks != null);
- assertTrue(mBridge != null);
- mBridge.closeSession(promiseId, sessionId);
- } catch (Exception e) {
- Log.e(LOGTAG, "Failed to closeSession.", e);
- mCallbacks.onRejectPromise(promiseId, "Failed to closeSession.");
- }
- }
-
- // IBinder.DeathRecipient
- @Override
- public synchronized void binderDied() {
- Log.e(LOGTAG, "Binder died !!");
- try {
- release();
- } catch (Exception e) {
- Log.e(LOGTAG, "Exception ! Dead recipient !!", e);
- }
- }
-
- @Override
- public synchronized void release() {
- if (DEBUG) Log.d(LOGTAG, "release()");
- mBridgeStubs.remove(this);
- if (mBridge != null) {
- mBridge.release();
- mBridge = null;
- }
- mCallbacks.asBinder().unlinkToDeath(this, 0);
- mCallbacks = null;
- mStubId = "";
- }
-}