Home | History | Annotate | Download | only in shadows
      1 package org.robolectric.shadows;
      2 
      3 import android.content.res.AssetManager;
      4 import java.util.Collection;
      5 import java.util.List;
      6 import org.robolectric.RuntimeEnvironment;
      7 import org.robolectric.res.FsFile;
      8 import org.robolectric.res.android.AssetPath;
      9 import org.robolectric.res.android.CppAssetManager;
     10 import org.robolectric.res.android.ResTable;
     11 import org.robolectric.res.android.String8;
     12 import org.robolectric.shadow.api.Shadow;
     13 
     14 abstract public class ShadowAssetManager {
     15 
     16   public static class Picker extends ResourceModeShadowPicker<ShadowAssetManager> {
     17 
     18     public Picker() {
     19       super(ShadowLegacyAssetManager.class,
     20               ShadowArscAssetManager.class,
     21               ShadowArscAssetManager9.class
     22               // BEGIN-INTERNAL
     23               ,ShadowArscAssetManager10.class
     24               // END-INTERNAL
     25       );
     26     }
     27   }
     28 
     29   /**
     30    * @deprecated Avoid use.
     31    */
     32   @Deprecated
     33   public static boolean useLegacy() {
     34     return RuntimeEnvironment.useLegacyResources();
     35   }
     36 
     37   /**
     38    * @deprecated Avoid use.
     39    */
     40   @Deprecated
     41   static ShadowLegacyAssetManager legacyShadowOf(AssetManager assetManager) {
     42     return (ShadowLegacyAssetManager) Shadow.extract(assetManager);
     43   }
     44 
     45   abstract Collection<FsFile> getAllAssetDirs();
     46 
     47   public abstract static class ArscBase extends ShadowAssetManager {
     48     private ResTable compileTimeResTable;
     49 
     50     /**
     51      * @deprecated Avoid use.
     52      */
     53     @Deprecated
     54     synchronized public ResTable getCompileTimeResTable() {
     55       if (compileTimeResTable == null) {
     56         CppAssetManager compileTimeCppAssetManager = new CppAssetManager();
     57         for (AssetPath assetPath : getAssetPaths()) {
     58           if (assetPath.isSystem) {
     59             compileTimeCppAssetManager.addDefaultAssets(
     60                 RuntimeEnvironment.compileTimeSystemResourcesFile.getPath());
     61           } else {
     62             compileTimeCppAssetManager.addAssetPath(new String8(assetPath.file.getPath()), null, false);
     63           }
     64         }
     65         compileTimeResTable = compileTimeCppAssetManager.getResources();
     66       }
     67 
     68       return compileTimeResTable;
     69     }
     70 
     71     abstract List<AssetPath> getAssetPaths();
     72   }
     73 }
     74