Home | History | Annotate | Download | only in shadows
      1 package org.robolectric.shadows;
      2 
      3 import android.webkit.MimeTypeMap;
      4 import java.util.HashMap;
      5 import java.util.Map;
      6 import org.robolectric.Shadows;
      7 import org.robolectric.annotation.Implementation;
      8 import org.robolectric.annotation.Implements;
      9 import org.robolectric.annotation.Resetter;
     10 import org.robolectric.shadow.api.Shadow;
     11 
     12 @Implements(MimeTypeMap.class)
     13 public class ShadowMimeTypeMap {
     14   private final Map<String, String> extensionToMimeTypeMap = new HashMap<>();
     15   private final Map<String, String> mimeTypeToExtensionMap = new HashMap<>();
     16   private static volatile MimeTypeMap singleton = null;
     17   private static final Object singletonLock = new Object();
     18 
     19   @Implementation
     20   public static MimeTypeMap getSingleton() {
     21     if (singleton == null) {
     22       synchronized (singletonLock) {
     23         if (singleton == null) {
     24           singleton = Shadow.newInstanceOf(MimeTypeMap.class);
     25         }
     26       }
     27     }
     28 
     29     return singleton;
     30   }
     31 
     32   @Resetter
     33   public static void reset() {
     34     if (singleton != null) {
     35       Shadows.shadowOf(getSingleton()).clearMappings();
     36     }
     37   }
     38 
     39   @Implementation
     40   public String getMimeTypeFromExtension(String extension) {
     41     if (extensionToMimeTypeMap.containsKey(extension))
     42       return extensionToMimeTypeMap.get(extension);
     43 
     44     return null;
     45   }
     46 
     47   @Implementation
     48   public String getExtensionFromMimeType(String mimeType) {
     49     if (mimeTypeToExtensionMap.containsKey(mimeType))
     50       return mimeTypeToExtensionMap.get(mimeType);
     51 
     52     return null;
     53   }
     54 
     55   public void addExtensionMimeTypMapping(String extension, String mimeType) {
     56     extensionToMimeTypeMap.put(extension, mimeType);
     57     mimeTypeToExtensionMap.put(mimeType, extension);
     58   }
     59 
     60   public void clearMappings() {
     61     extensionToMimeTypeMap.clear();
     62     mimeTypeToExtensionMap.clear();
     63   }
     64 
     65   @Implementation
     66   public boolean hasExtension(String extension) {
     67     return extensionToMimeTypeMap.containsKey(extension);
     68   }
     69 
     70   @Implementation
     71   public boolean hasMimeType(String mimeType) {
     72     return mimeTypeToExtensionMap.containsKey(mimeType);
     73   }
     74 }
     75