@Before public void setUp() throws MediaDrmException, MediaCryptoException { frameworkMediaCrypto = FrameworkMediaCryptoFixture.aFrameworkMediaCrypto().build(); given(mediaDrm.openSession()).willReturn(SESSION_ID.asBytes()); localDrmSessionManager = new LocalDrmSessionManager( KEY_SET_ID_TO_RESTORE, mediaDrm, DRM_SCHEME, handler, eventListener ); }
@RequiresApi(api = Build.VERSION_CODES.KITKAT) @Test public void givenOpeningSessionError_whenAcquiringSession_thenNotifiesErrorEventListenerOnHandler() throws MediaDrmException { given(mediaDrm.openSession()).willThrow(new ResourceBusyException("resource is busy")); localDrmSessionManager.acquireSession(IGNORED_LOOPER, IGNORED_DRM_DATA); ArgumentCaptor<Runnable> argumentCaptor = ArgumentCaptor.forClass(Runnable.class); verify(handler).post(argumentCaptor.capture()); argumentCaptor.getValue().run(); verify(eventListener).onDrmSessionManagerError(any(DrmSession.DrmSessionException.class)); }
@RequiresApi(api = Build.VERSION_CODES.KITKAT) @Test public void givenOpeningSessionError_whenAcquiringSession_thenReturnsInvalidDrmSession() throws MediaDrmException { ResourceBusyException resourceBusyException = new ResourceBusyException("resource is busy"); given(mediaDrm.openSession()).willThrow(resourceBusyException); DrmSession<FrameworkMediaCrypto> drmSession = localDrmSessionManager.acquireSession(IGNORED_LOOPER, IGNORED_DRM_DATA); assertThat(drmSession).isInstanceOf(InvalidDrmSession.class); assertThat(drmSession.getError().getCause()).isEqualTo(resourceBusyException); }
@Override public byte[] openSession() throws MediaDrmException { return mediaDrm.openSession(); }
static MediaDrmSession open(@NonNull MediaDrm mediaDrm) throws MediaDrmException { MediaDrmSession session = new MediaDrmSession(mediaDrm); session.mSessionId = mediaDrm.openSession(); return session; }
static MediaDrmSession openSessionWithKeys(MediaDrm mediaDrm, OfflineKeySetStorage storage, byte[] initData) throws MediaDrmException, MediaCryptoException, FileNotFoundException { byte[] keySetId = storage.loadKeySetId(initData); MediaDrmSession session = MediaDrmSession.open(mediaDrm); session.restoreKeys(keySetId); Map<String, String> keyStatus = session.queryKeyStatus(); Log.d(TAG, "keyStatus: " + keyStatus); return session; }
/** * @see MediaDrm#openSession() */ byte[] openSession() throws MediaDrmException;