package com.kaltura.playersdk.drm;
import android.content.Context;
import android.drm.DrmErrorEvent;
import android.drm.DrmEvent;
import android.drm.DrmInfoEvent;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import com.kaltura.playersdk.LocalAssetsManager;
/**
* Created by noamt on 01/05/2016.
*/
class WidevineClassicAdapter extends DrmAdapter {
private static final String TAG = "WidevineClassicAdapter";
private final Context mContext;
@Override
public DRMScheme getScheme() {
return DRMScheme.WidevineClassic;
}
WidevineClassicAdapter(@NonNull Context context) {
mContext = context;
}
@Override
public boolean checkAssetStatus(@NonNull String localPath, @Nullable final LocalAssetsManager.AssetStatusListener listener) {
WidevineDrmClient widevineDrmClient = new WidevineDrmClient(mContext);
WidevineDrmClient.RightsInfo info = widevineDrmClient.getRightsInfo(localPath);
if (listener != null) {
listener.onStatus(localPath, info.expiryTime, info.availableTime);
}
return true;
}
@Override
public boolean registerAsset(@NonNull final String localPath, @NonNull String licenseUri, @Nullable final LocalAssetsManager.AssetRegistrationListener listener) {
WidevineDrmClient widevineDrmClient = new WidevineDrmClient(mContext);
widevineDrmClient.setEventListener(new WidevineDrmClient.EventListener() {
@Override
public void onError(DrmErrorEvent event) {
Log.d(TAG, event.toString());
if (listener != null) {
listener.onFailed(localPath, new Exception("License acquisition failed; DRM client error code: " + event.getType()));
}
}
@Override
public void onEvent(DrmEvent event) {
Log.d(TAG, event.toString());
switch (event.getType()) {
case DrmInfoEvent.TYPE_RIGHTS_INSTALLED:
if (listener != null) {
listener.onRegistered(localPath);
}
break;
}
}
});
widevineDrmClient.acquireLocalAssetRights(localPath, licenseUri);
return true;
}
@Override
public boolean refreshAsset(@NonNull String localPath, @NonNull String licenseUri, @Nullable LocalAssetsManager.AssetRegistrationListener listener) {
return registerAsset(localPath, licenseUri, listener);
}
@Override
public boolean unregisterAsset(@NonNull final String localPath, final LocalAssetsManager.AssetRemovalListener listener) {
WidevineDrmClient widevineDrmClient = new WidevineDrmClient(mContext);
widevineDrmClient.setEventListener(new WidevineDrmClient.EventListener() {
@Override
public void onError(DrmErrorEvent event) {
Log.d(TAG, event.toString());
}
@Override
public void onEvent(DrmEvent event) {
Log.d(TAG, event.toString());
switch (event.getType()) {
case DrmInfoEvent.TYPE_RIGHTS_REMOVED:
if (listener != null) {
listener.onRemoved(localPath);
}
break;
}
}
});
widevineDrmClient.removeRights(localPath);
return true;
}
}