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_SESSION_LIBRARY_H_ 18791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#define MOCK_CAS_SESSION_LIBRARY_H_ 19791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 20791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <media/cas/CasAPI.h> 21791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <media/stagefright/foundation/ABase.h> 22791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <utils/KeyedVector.h> 23791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <utils/Mutex.h> 24791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <utils/RefBase.h> 25791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 26791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangnamespace android { 27791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 28791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangclass MockCasSession : public RefBase { 29791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangpublic: 30a78c1cc9773532b1f9d066ed8fa0d9414c1bb8bbChong Zhang explicit MockCasSession(CasPlugin *plugin) : mPlugin(plugin) {} 31791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual ~MockCasSession() {} 32791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 33791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangprivate: 34791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang friend class MockSessionLibrary; 35791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 36a78c1cc9773532b1f9d066ed8fa0d9414c1bb8bbChong Zhang CasPlugin* mPlugin; 37a78c1cc9773532b1f9d066ed8fa0d9414c1bb8bbChong Zhang 38a78c1cc9773532b1f9d066ed8fa0d9414c1bb8bbChong Zhang CasPlugin* getPlugin() const { return mPlugin; } 39791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 40791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang DISALLOW_EVIL_CONSTRUCTORS(MockCasSession); 41791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang}; 42791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 43791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangclass MockSessionLibrary { 44791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangpublic: 45791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang static MockSessionLibrary* get(); 46791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 47a78c1cc9773532b1f9d066ed8fa0d9414c1bb8bbChong Zhang status_t addSession(CasPlugin *plugin, CasSessionId *sessionId); 48791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 49791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang sp<MockCasSession> findSession(const CasSessionId& sessionId); 50791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 51791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang void destroySession(const CasSessionId& sessionId); 52791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 53791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang void destroyPlugin(CasPlugin *plugin); 54791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 55791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangprivate: 56791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang static Mutex sSingletonLock; 57791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang static MockSessionLibrary* sSingleton; 58791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 59791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang Mutex mSessionsLock; 60791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang uint32_t mNextSessionId; 61791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang KeyedVector<CasSessionId, sp<MockCasSession> > mIDToSessionMap; 62791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 63791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang MockSessionLibrary(); 64791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang DISALLOW_EVIL_CONSTRUCTORS(MockSessionLibrary); 65791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang}; 66791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang} // namespace android 67791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 68791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#endif // MOCK_CAS_SESSION_LIBRARY_H_ 69