Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8403012 authored by Abhisek Devkota's avatar Abhisek Devkota Committed by Gerrit Code Review
Browse files

Merge "CM11 Themes: Use package name from AndroidManifest" into cm-11.0

parents 78850931 7087225c
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -962,6 +962,11 @@ public final class AssetManager {
     */
    public native final String getBasePackageName(int index);

    /**
     * {@hide}
     */
    public native final String getBaseResourcePackageName(int index);

    /**
     * {@hide}
     */
+14 −0
Original line number Diff line number Diff line
@@ -1840,6 +1840,18 @@ static jstring android_content_AssetManager_getBasePackageName(JNIEnv* env, jobj
        return JNI_FALSE;
    }

    String16 packageName(am->getBasePackageName(index));
    return env->NewString((const jchar*)packageName.string(), packageName.size());
}

static jstring android_content_AssetManager_getBaseResourcePackageName(JNIEnv* env, jobject clazz,
                                                                       jint index)
{
    AssetManager* am = assetManagerForJavaObject(env, clazz);
    if (am == NULL) {
        return JNI_FALSE;
    }

    String16 packageName(am->getResources().getBasePackageName(index));
    return env->NewString((const jchar*)packageName.string(), packageName.size());
}
@@ -1893,6 +1905,8 @@ static JNINativeMethod gAssetManagerMethods[] = {
        (void*) android_content_AssetManager_getBasePackageCount },
    { "getBasePackageName", "(I)Ljava/lang/String;",
        (void*) android_content_AssetManager_getBasePackageName },
    { "getBaseResourcePackageName", "(I)Ljava/lang/String;",
        (void*) android_content_AssetManager_getBaseResourcePackageName },
    { "getBasePackageId", "(I)I",
        (void*) android_content_AssetManager_getBasePackageId },
    { "addIconPath",   "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I",
+5 −0
Original line number Diff line number Diff line
@@ -243,6 +243,8 @@ public:
        Vector<String8>& targets, Vector<String8>& overlays,
        uint32_t** outData, size_t* outSize);

    String8 getBasePackageName(int index);

private:
    struct asset_path
    {
@@ -393,6 +395,9 @@ private:
    mutable ResTable* mResources;
    ResTable_config* mConfig;

    String8 mBasePackageName;
    int32_t mBasePackageIndex;

    /*
     * Cached data for "loose" files.  This lets us avoid poking at the
     * filesystem when searching for loose assets.  Each entry is the
+16 −1
Original line number Diff line number Diff line
@@ -174,7 +174,8 @@ int32_t AssetManager::getGlobalCount()
AssetManager::AssetManager(CacheMode cacheMode)
    : mLocale(NULL), mVendor(NULL),
      mResources(NULL), mConfig(new ResTable_config),
      mCacheMode(cacheMode), mCacheValid(false)
      mCacheMode(cacheMode), mCacheValid(false),
      mBasePackageIndex(-1)
{
    int count = android_atomic_inc(&gCount)+1;
    //ALOGI("Creating AssetManager %p #%d\n", this, count);
@@ -464,6 +465,20 @@ String8 AssetManager::getPkgName(const char *apkPath) {
        return pkgName;
    }

/**
 * Returns the base package name as defined in the AndroidManifest.xml
 */
String8 AssetManager::getBasePackageName(int index)
{
    if (index >= mAssetPaths.size()) return String8::empty();

    if (mBasePackageName.isEmpty() || mBasePackageIndex != index) {
        mBasePackageName = getPkgName(mAssetPaths[index].path.string());
        mBasePackageIndex = index;
    }
    return mBasePackageName;
}

String8 AssetManager::getOverlayResPath(const char* targetApkPath, const char* overlayApkPath)
{
    //Remove leading '/'