blob: d1e9f3d6c0f0d088418a3265097a24707e3f3bcd [file] [log] [blame]
package org.robolectric.shadows;
import android.webkit.MimeTypeMap;
import java.util.HashMap;
import java.util.Map;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Resetter;
import org.robolectric.shadow.api.Shadow;
@Implements(MimeTypeMap.class)
public class ShadowMimeTypeMap {
private final Map<String, String> extensionToMimeTypeMap = new HashMap<>();
private final Map<String, String> mimeTypeToExtensionMap = new HashMap<>();
private static volatile MimeTypeMap singleton = null;
private static final Object singletonLock = new Object();
@Implementation
protected static MimeTypeMap getSingleton() {
if (singleton == null) {
synchronized (singletonLock) {
if (singleton == null) {
singleton = Shadow.newInstanceOf(MimeTypeMap.class);
}
}
}
return singleton;
}
@Resetter
public static void reset() {
if (singleton != null) {
ShadowMimeTypeMap shadowMimeTypeMap = Shadow.extract(getSingleton());
shadowMimeTypeMap.clearMappings();
}
}
@Implementation
protected String getMimeTypeFromExtension(String extension) {
if (extensionToMimeTypeMap.containsKey(extension))
return extensionToMimeTypeMap.get(extension);
return null;
}
@Implementation
protected String getExtensionFromMimeType(String mimeType) {
if (mimeTypeToExtensionMap.containsKey(mimeType))
return mimeTypeToExtensionMap.get(mimeType);
return null;
}
public void addExtensionMimeTypMapping(String extension, String mimeType) {
extensionToMimeTypeMap.put(extension, mimeType);
mimeTypeToExtensionMap.put(mimeType, extension);
}
public void clearMappings() {
extensionToMimeTypeMap.clear();
mimeTypeToExtensionMap.clear();
}
@Implementation
protected boolean hasExtension(String extension) {
return extensionToMimeTypeMap.containsKey(extension);
}
@Implementation
protected boolean hasMimeType(String mimeType) {
return mimeTypeToExtensionMap.containsKey(mimeType);
}
}