Update plugin to use cas@1.1 hal

Implement sendSessionEvent and onSessionEvent in  ClearKeyCasPlugin and MockCasPlugin
Test: manual
Bug: 122472761

Change-Id: Iceb3e14f35cf3178b70e43b59fd492255ab205bc
gugelfrei
Henry Fang 6 years ago
parent b5a34d6deb
commit a6fc4d3f7a

@ -65,7 +65,20 @@ status_t ClearKeyCasFactory::createPlugin(
*plugin = new ClearKeyCasPlugin(appData, callback); *plugin = new ClearKeyCasPlugin(appData, callback);
return OK; return OK;
} }
///////////////////////////////////////////////////////////////////////////////
status_t ClearKeyCasFactory::createPlugin(
int32_t CA_system_id,
void *appData,
CasPluginCallbackExt callback,
CasPlugin **plugin) {
if (!isSystemIdSupported(CA_system_id)) {
return BAD_VALUE;
}
*plugin = new ClearKeyCasPlugin(appData, callback);
return OK;
}
////////////////////////////////////////////////////////////////////////////////
bool ClearKeyDescramblerFactory::isSystemIdSupported( bool ClearKeyDescramblerFactory::isSystemIdSupported(
int32_t CA_system_id) const { int32_t CA_system_id) const {
return CA_system_id == sClearKeySystemId; return CA_system_id == sClearKeySystemId;
@ -88,6 +101,12 @@ ClearKeyCasPlugin::ClearKeyCasPlugin(
ALOGV("CTOR"); ALOGV("CTOR");
} }
ClearKeyCasPlugin::ClearKeyCasPlugin(
void *appData, CasPluginCallbackExt callback)
: mCallbackExt(callback), mAppData(appData) {
ALOGV("CTOR");
}
ClearKeyCasPlugin::~ClearKeyCasPlugin() { ClearKeyCasPlugin::~ClearKeyCasPlugin() {
ALOGV("DTOR"); ALOGV("DTOR");
ClearKeySessionLibrary::get()->destroyPlugin(this); ClearKeySessionLibrary::get()->destroyPlugin(this);
@ -167,8 +186,27 @@ status_t ClearKeyCasPlugin::sendEvent(
// Echo the received event to the callback. // Echo the received event to the callback.
// Clear key plugin doesn't use any event, echo'ing for testing only. // Clear key plugin doesn't use any event, echo'ing for testing only.
if (mCallback != NULL) { if (mCallback != NULL) {
mCallback((void*)mAppData, event, arg, (uint8_t*)eventData.data(), eventData.size()); mCallback((void*)mAppData, event, arg, (uint8_t*)eventData.data(),
eventData.size());
} else if (mCallbackExt != NULL) {
mCallbackExt((void*)mAppData, event, arg, (uint8_t*)eventData.data(),
eventData.size(), NULL);
}
return OK;
}
status_t ClearKeyCasPlugin::sendSessionEvent(
const CasSessionId &sessionId, int32_t event,
int arg, const CasData &eventData) {
ALOGV("sendSessionEvent: sessionId=%s, event=%d, arg=%d",
sessionIdToString(sessionId).string(), event, arg);
// Echo the received event to the callback.
// Clear key plugin doesn't use any event, echo'ing for testing only.
if (mCallbackExt != NULL) {
mCallbackExt((void*)mAppData, event, arg, (uint8_t*)eventData.data(),
eventData.size(), &sessionId);
} }
return OK; return OK;
} }

@ -47,6 +47,11 @@ public:
void *appData, void *appData,
CasPluginCallback callback, CasPluginCallback callback,
CasPlugin **plugin) override; CasPlugin **plugin) override;
virtual status_t createPlugin(
int32_t CA_system_id,
void *appData,
CasPluginCallbackExt callback,
CasPlugin **plugin) override;
}; };
class ClearKeyDescramblerFactory : public DescramblerFactory { class ClearKeyDescramblerFactory : public DescramblerFactory {
@ -63,6 +68,7 @@ public:
class ClearKeyCasPlugin : public CasPlugin { class ClearKeyCasPlugin : public CasPlugin {
public: public:
ClearKeyCasPlugin(void *appData, CasPluginCallback callback); ClearKeyCasPlugin(void *appData, CasPluginCallback callback);
ClearKeyCasPlugin(void *appData, CasPluginCallbackExt callback);
virtual ~ClearKeyCasPlugin(); virtual ~ClearKeyCasPlugin();
virtual status_t setPrivateData( virtual status_t setPrivateData(
@ -85,6 +91,10 @@ public:
virtual status_t sendEvent( virtual status_t sendEvent(
int32_t event, int32_t arg, const CasData &eventData) override; int32_t event, int32_t arg, const CasData &eventData) override;
virtual status_t sendSessionEvent(
const CasSessionId &sessionId,
int32_t event, int32_t arg, const CasData &eventData) override;
virtual status_t provision(const String8 &str) override; virtual status_t provision(const String8 &str) override;
virtual status_t refreshEntitlements( virtual status_t refreshEntitlements(
@ -94,6 +104,7 @@ private:
Mutex mKeyFetcherLock; Mutex mKeyFetcherLock;
std::unique_ptr<KeyFetcher> mKeyFetcher; std::unique_ptr<KeyFetcher> mKeyFetcher;
CasPluginCallback mCallback; CasPluginCallback mCallback;
CasPluginCallbackExt mCallbackExt;
void* mAppData; void* mAppData;
}; };

@ -60,6 +60,19 @@ status_t MockCasFactory::createPlugin(
return OK; return OK;
} }
status_t MockCasFactory::createPlugin(
int32_t CA_system_id,
void* /*appData*/,
CasPluginCallbackExt /*callback*/,
CasPlugin **plugin) {
if (!isSystemIdSupported(CA_system_id)) {
return BAD_VALUE;
}
*plugin = new MockCasPlugin();
return OK;
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
bool MockDescramblerFactory::isSystemIdSupported(int32_t CA_system_id) const { bool MockDescramblerFactory::isSystemIdSupported(int32_t CA_system_id) const {
@ -170,6 +183,16 @@ status_t MockCasPlugin::sendEvent(
return OK; return OK;
} }
status_t MockCasPlugin::sendSessionEvent(
const CasSessionId &sessionId, int32_t event,
int /*arg*/, const CasData& /*eventData*/) {
ALOGV("sendSessionEvent: sessionId=%s, event=%d",
arrayToString(sessionId).string(), event);
Mutex::Autolock lock(mLock);
return OK;
}
status_t MockCasPlugin::provision(const String8 &str) { status_t MockCasPlugin::provision(const String8 &str) {
ALOGV("provision: provisionString=%s", str.string()); ALOGV("provision: provisionString=%s", str.string());
Mutex::Autolock lock(mLock); Mutex::Autolock lock(mLock);

@ -42,6 +42,11 @@ public:
void *appData, void *appData,
CasPluginCallback callback, CasPluginCallback callback,
CasPlugin **plugin) override; CasPlugin **plugin) override;
virtual status_t createPlugin(
int32_t CA_system_id,
void *appData,
CasPluginCallbackExt callback,
CasPlugin **plugin) override;
}; };
class MockDescramblerFactory : public DescramblerFactory { class MockDescramblerFactory : public DescramblerFactory {
@ -80,7 +85,11 @@ public:
virtual status_t sendEvent( virtual status_t sendEvent(
int32_t event, int32_t arg, const CasData &eventData) override; int32_t event, int32_t arg, const CasData &eventData) override;
virtual status_t provision(const String8 &str) override; virtual status_t sendSessionEvent(
const CasSessionId &sessionId,
int32_t event, int32_t arg, const CasData &eventData) override;
virtual status_t provision(const String8 &str) override;
virtual status_t refreshEntitlements( virtual status_t refreshEntitlements(
int32_t refreshType, const CasData &refreshData) override; int32_t refreshType, const CasData &refreshData) override;

Loading…
Cancel
Save