1791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang/* 2791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * Copyright (C) 2017 The Android Open Source Project 3791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * 4791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 5791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * you may not use this file except in compliance with the License. 6791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * You may obtain a copy of the License at 7791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * 8791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * http://www.apache.org/licenses/LICENSE-2.0 9791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * 10791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * Unless required by applicable law or agreed to in writing, software 11791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * distributed under the License is distributed on an "AS IS" BASIS, 12791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * See the License for the specific language governing permissions and 14791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * limitations under the License. 15791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang */ 16791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 17791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#ifndef MOCK_CAS_PLUGIN_H_ 18791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#define MOCK_CAS_PLUGIN_H_ 19791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 20791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <media/cas/CasAPI.h> 21791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <media/cas/DescramblerAPI.h> 22791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <utils/Mutex.h> 23791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 24791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangextern "C" { 25791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang android::CasFactory *createCasFactory(); 26791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang android::DescramblerFactory *createDescramblerFactory(); 27791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang} 28791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 29791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangnamespace android { 30791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 31791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangclass MockCasFactory : public CasFactory { 32791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangpublic: 33791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang MockCasFactory() {} 34791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual ~MockCasFactory() {} 35791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 36791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual bool isSystemIdSupported( 37791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang int32_t CA_system_id) const override; 38791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t queryPlugins( 39791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang std::vector<CasPluginDescriptor> *descriptors) const override; 40791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t createPlugin( 41791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang int32_t CA_system_id, 42791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang uint64_t appData, 43791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang CasPluginCallback callback, 44791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang CasPlugin **plugin) override; 45791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang}; 46791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 47791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangclass MockDescramblerFactory : public DescramblerFactory { 48791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangpublic: 49791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang MockDescramblerFactory() {} 50791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual ~MockDescramblerFactory() {} 51791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 52791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual bool isSystemIdSupported( 53791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang int32_t CA_system_id) const override; 54791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t createPlugin( 55791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang int32_t CA_system_id, DescramblerPlugin **plugin) override; 56791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang}; 57791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 58791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangclass MockCasPlugin : public CasPlugin { 59791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangpublic: 60791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang MockCasPlugin(); 61791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual ~MockCasPlugin(); 62791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 63791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t setPrivateData( 64791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const CasData &data) override; 65791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 66a78c1cc9773532b1f9d066ed8fa0d9414c1bb8bbChong Zhang virtual status_t openSession(CasSessionId *sessionId) override; 67791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 68791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t closeSession( 69791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const CasSessionId &sessionId) override; 70791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 71791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t setSessionPrivateData( 72791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const CasSessionId &sessionId, 73791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const CasData &data) override; 74791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 75791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t processEcm( 76791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const CasSessionId &sessionId, const CasEcm &ecm) override; 77791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 78791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t processEmm(const CasEmm &emm) override; 79791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 80791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t sendEvent( 81791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang int32_t event, int32_t arg, const CasData &eventData) override; 82791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 83791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t provision(const String8 &str) override; 84791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 85791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t refreshEntitlements( 86791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang int32_t refreshType, const CasData &refreshData) override; 87791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 88791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangprivate: 89791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 90791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang Mutex mLock; 91791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang}; 92791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 93791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangclass MockDescramblerPlugin : public DescramblerPlugin { 94791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangpublic: 95791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang MockDescramblerPlugin() {} 96791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual ~MockDescramblerPlugin() {}; 97791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 98791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual bool requiresSecureDecoderComponent( 99791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const char *mime) const override; 100791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 101791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual status_t setMediaCasSession( 102791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const CasSessionId &sessionId) override; 103791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 104791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual ssize_t descramble( 105791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang bool secure, 106791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang ScramblingControl scramblingControl, 107791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang size_t numSubSamples, 108791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const SubSample *subSamples, 109791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const void *srcPtr, 110791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang int32_t srcOffset, 111791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang void *dstPtr, 112791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang int32_t dstOffset, 113791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang AString *errorDetailMsg) override; 114791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 115791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangprivate: 116791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang String8 subSamplesToString( 117791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang SubSample const *subSamples, 118791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang size_t numSubSamples) const; 119791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang String8 arrayToString(uint8_t const *array, size_t len) const; 120791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang}; 121791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang} // namespace android 122791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 123791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#endif // MOCK_CAS_PLUGIN_H_ 124