1791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang/* 2791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang * Copyright (C) 2014 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#ifndef JSON_ASSET_LOADER_H_ 17791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#define JSON_ASSET_LOADER_H_ 18791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 19791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <media/stagefright/foundation/ABase.h> 20791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <utils/KeyedVector.h> 21791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <utils/String8.h> 22791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include <utils/StrongPointer.h> 23791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include "protos/license_protos.pb.h" 24791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 25791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#include "jsmn.h" 26791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 27791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangnamespace android { 28791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangstruct ABuffer; 29791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 30791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangnamespace clearkeycas { 31791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 32791a1a206b56be8601a6fffd2614926e67d64790Chong Zhangclass JsonAssetLoader { 33791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang public: 34791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang JsonAssetLoader(); 35791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang virtual ~JsonAssetLoader(); 36791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 37791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang status_t extractAssetFromString( 38791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const String8& jsonAssetString, Asset *asset); 39791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 40791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang private: 41791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang Vector<jsmntok_t> mJsmnTokens; 42791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang Vector<String8> mJsonObjects; 43791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang Vector<String8> mTokens; 44791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 45791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang static sp<ABuffer> decodeBase64String( 46791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const String8& encodedText); 47791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang bool findKey(const String8& jsonObject, Asset *asset); 48791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang void findValue( 49791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const String8 &key, String8* value); 50791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang bool parseJsonObject( 51791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const String8& jsonObject, Vector<String8>* tokens); 52791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang bool parseJsonAssetString( 53791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang const String8& jsonString, Vector<String8>* jsonObjects); 54791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 55791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang DISALLOW_EVIL_CONSTRUCTORS(JsonAssetLoader); 56791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang}; 57791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 58791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang} // namespace clearkeycas 59791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang} // namespace android 60791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang 61791a1a206b56be8601a6fffd2614926e67d64790Chong Zhang#endif // JSON_ASSET_LOADER_H_ 62