1 package org.robolectric.shadows; 2 3 import static org.robolectric.util.reflector.Reflector.reflector; 4 5 import android.content.res.AssetManager.AssetInputStream; 6 import org.robolectric.annotation.Implements; 7 import org.robolectric.annotation.RealObject; 8 import org.robolectric.res.android.Asset; 9 import org.robolectric.res.android.Registries; 10 import org.robolectric.shadows.ShadowAssetInputStream.Picker; 11 import org.robolectric.util.reflector.ForType; 12 13 @SuppressWarnings("UnusedDeclaration") 14 @Implements(value = AssetInputStream.class, shadowPicker = Picker.class) 15 public class ShadowArscAssetInputStream extends ShadowAssetInputStream { 16 17 @RealObject private AssetInputStream realObject; 18 getAsset()19 private Asset getAsset() { 20 long assetPtr = reflector(_AssetInputStream_.class, realObject).getNativeAsset(); 21 return Registries.NATIVE_ASSET_REGISTRY.getNativeObject(assetPtr); 22 } 23 24 @Override isNinePatch()25 boolean isNinePatch() { 26 Asset asset = getAsset(); 27 return asset != null && asset.isNinePatch(); 28 } 29 30 /** Accessor interface for {@link AssetInputStream}'s internals. */ 31 @ForType(AssetInputStream.class) 32 private interface _AssetInputStream_ { getAssetInt()33 int getAssetInt(); 34 getNativeAsset()35 long getNativeAsset(); 36 } 37 } 38