
org.robolectric.shadows.ShadowAssetManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of shadows-framework Show documentation
Show all versions of shadows-framework Show documentation
An alternative Android testing framework.
The newest version!
package org.robolectric.shadows;
import android.content.res.ApkAssets;
import android.content.res.AssetManager;
import android.util.ArraySet;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Ordering;
import java.nio.file.Path;
import java.util.Collection;
import java.util.List;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.ResourcesMode;
import org.robolectric.annotation.ResourcesMode.Mode;
import org.robolectric.config.ConfigurationRegistry;
import org.robolectric.res.android.AssetPath;
import org.robolectric.res.android.CppAssetManager;
import org.robolectric.res.android.ResTable;
import org.robolectric.res.android.String8;
import org.robolectric.util.reflector.Accessor;
import org.robolectric.util.reflector.Direct;
import org.robolectric.util.reflector.ForType;
import org.robolectric.util.reflector.Static;
public abstract class ShadowAssetManager {
public static final Ordering ATTRIBUTE_TYPE_PRECIDENCE =
Ordering.explicit(
"reference",
"color",
"boolean",
"integer",
"fraction",
"dimension",
"float",
"enum",
"flag",
"flags",
"string");
private static final Object resourcesModeLock = new Object();
private static Mode cachedResourcesMode;
public static class Picker extends ResourceModeShadowPicker {
public Picker() {
super(
ShadowArscAssetManager.class,
ShadowArscAssetManager9.class,
ShadowArscAssetManager10.class,
ShadowArscAssetManager14.class,
ShadowNativeAssetManager.class);
}
}
static ResourcesMode.Mode resourcesMode() {
synchronized (resourcesModeLock) {
if (cachedResourcesMode == null) {
cachedResourcesMode = ConfigurationRegistry.get(ResourcesMode.Mode.class);
}
}
return cachedResourcesMode;
}
abstract Collection getAllAssetDirs();
@VisibleForTesting
abstract long getNativePtr();
public abstract static class ArscBase extends ShadowAssetManager {
private ResTable compileTimeResTable;
/**
* @deprecated Avoid use.
*/
@Deprecated
public synchronized ResTable getCompileTimeResTable() {
if (compileTimeResTable == null) {
CppAssetManager compileTimeCppAssetManager = new CppAssetManager();
for (AssetPath assetPath : getAssetPaths()) {
if (assetPath.isSystem) {
compileTimeCppAssetManager.addDefaultAssets(
RuntimeEnvironment.compileTimeSystemResourcesFile);
} else {
compileTimeCppAssetManager.addAssetPath(new String8(assetPath.file), null, false);
}
}
compileTimeResTable = compileTimeCppAssetManager.getResources();
}
return compileTimeResTable;
}
abstract List getAssetPaths();
}
/** Accessor interface for {@link AssetManager}'s internals. */
@ForType(AssetManager.class)
interface _AssetManager_ {
@Direct
@Static
AssetManager getSystem();
@Static
@Accessor("sSystem")
void setSystem(AssetManager o);
@Accessor("mObject")
long getNativePtr();
}
/** Accessor interface for {@link AssetManager}'s internals added in API level 28. */
@ForType(AssetManager.class)
interface _AssetManager28_ extends _AssetManager_ {
@Static
@Accessor("sSystemApkAssets")
ApkAssets[] getSystemApkAssets();
@Static
@Accessor("sSystemApkAssets")
void setSystemApkAssets(ApkAssets[] apkAssets);
@Static
@Accessor("sSystemApkAssetsSet")
ArraySet getSystemApkAssetsSet();
@Static
@Accessor("sSystemApkAssetsSet")
void setSystemApkAssetsSet(ArraySet assetsSet);
ApkAssets[] getApkAssets();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy