All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robolectric.shadows.ShadowSystemProperties Maven / Gradle / Ivy

package org.robolectric.shadows;

import android.os.SystemProperties;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * Shadow for {@link android.os.SystemProperties}.
 */
@Implements(value = SystemProperties.class, isInAndroidSdk = false)
public class ShadowSystemProperties {
  private static final Map VALUES = new HashMap<>();
  private static final Set alreadyWarned = new HashSet<>();

  static {
    VALUES.put("ro.build.version.release", "2.2");
    VALUES.put("ro.build.version.incremental", "0");
    VALUES.put("ro.build.version.sdk", 8);
    VALUES.put("ro.build.date.utc", 1277708400000L);  // Jun 28, 2010
    VALUES.put("ro.debuggable", 0);
    VALUES.put("ro.secure", 1);
    VALUES.put("ro.product.cpu.abilist", "armeabi-v7a");
    VALUES.put("ro.product.cpu.abilist32", "armeabi-v7a,armeabi");
    VALUES.put("ro.product.cpu.abilist64", "armeabi-v7a,armeabi");
    VALUES.put("ro.build.fingerprint", "robolectric");
    VALUES.put("ro.build.version.all_codenames", "REL");
    VALUES.put("log.closeguard.Animation", false);
    VALUES.put("debug.choreographer.vsync", false); // disable vsync for Choreographer
  }

  @Implementation
  public static String get(String key) {
    Object o = VALUES.get(key);
    if (o == null) {
      warnUnknown(key);
      return "";
    }
    return o.toString();
  }

  @Implementation
  public static String get(String key, String def) {
    Object value = VALUES.get(key);
    return value == null ? def : value.toString();
  }

  @Implementation
  public static int getInt(String key, int def) {
    Object value = VALUES.get(key);
    return value == null ? def : (Integer) value;
  }

  @Implementation
  public static long getLong(String key, long def) {
    Object value = VALUES.get(key);
    return value == null ? def : (Long) value;
  }

  @Implementation
  public static boolean getBoolean(String key, boolean def) {
    Object value = VALUES.get(key);
    return value == null ? def : (Boolean) value;
  }

  synchronized private static void warnUnknown(String key) {
    if (alreadyWarned.add(key)) {
      System.err.println("WARNING: no system properties value for " + key);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy