aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhihong Xu <zhihongx@google.com>2013-10-07 20:31:55 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-10-07 20:31:55 +0000
commit867745e362d24379556615664fcb3413f5daf165 (patch)
treebafed0ff0d7405128f572261416952f497b2c31a
parent1abb5d1040bfd6776126c58bdc9d7ffc81545724 (diff)
parent6ddbf372cd1301a3f23e7ad834ab7c4e32c6c698 (diff)
downloadrobolectric-867745e362d24379556615664fcb3413f5daf165.tar.gz
Merge "Implement Robolectric ShadowTheme.resolveAttribute"
-rw-r--r--src/main/java/com/xtremelabs/robolectric/Robolectric.java6
-rw-r--r--src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java18
2 files changed, 24 insertions, 0 deletions
diff --git a/src/main/java/com/xtremelabs/robolectric/Robolectric.java b/src/main/java/com/xtremelabs/robolectric/Robolectric.java
index 1b261c6c7..0d420b72d 100644
--- a/src/main/java/com/xtremelabs/robolectric/Robolectric.java
+++ b/src/main/java/com/xtremelabs/robolectric/Robolectric.java
@@ -21,6 +21,7 @@ import android.content.pm.Signature;
import android.content.res.AssetManager;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.content.res.Resources.Theme;
import android.database.CursorWrapper;
import android.database.sqlite.*;
import android.graphics.*;
@@ -68,6 +69,7 @@ import android.widget.*;
import com.xtremelabs.robolectric.bytecode.RobolectricInternals;
import com.xtremelabs.robolectric.bytecode.ShadowWrangler;
import com.xtremelabs.robolectric.shadows.*;
+import com.xtremelabs.robolectric.shadows.ShadowResources.ShadowTheme;
import com.xtremelabs.robolectric.tester.org.apache.http.FakeHttpLayer;
import com.xtremelabs.robolectric.tester.org.apache.http.HttpRequestInfo;
import com.xtremelabs.robolectric.tester.org.apache.http.RequestMatcher;
@@ -1029,6 +1031,10 @@ public class Robolectric {
return (ShadowZoomButtonsController) shadowOf_(instance);
}
+ public static ShadowTheme shadowOf(Theme instance) {
+ return (ShadowTheme) shadowOf_(instance);
+ }
+
@SuppressWarnings({"unchecked"})
public static <P, R> P shadowOf_(R instance) {
return (P) ShadowWrangler.getInstance().shadowOf(instance);
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java
index a9323ad64..12e6ea13b 100644
--- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java
+++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java
@@ -10,6 +10,7 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.NinePatchDrawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
+import android.util.TypedValue;
import android.view.Display;
import com.xtremelabs.robolectric.Robolectric;
import com.xtremelabs.robolectric.internal.Implementation;
@@ -19,6 +20,7 @@ import com.xtremelabs.robolectric.res.ResourceExtractor;
import com.xtremelabs.robolectric.res.ResourceLoader;
import java.io.InputStream;
+import java.util.HashMap;
import java.util.Locale;
import static com.xtremelabs.robolectric.Robolectric.newInstanceOf;
@@ -210,6 +212,8 @@ public class ShadowResources {
@Implements(Resources.Theme.class)
public static class ShadowTheme {
+ HashMap<Integer, TypedValue> attrMap = new HashMap<Integer, TypedValue>();
+
@Implementation
public TypedArray obtainStyledAttributes(int[] attrs) {
return obtainStyledAttributes(0, attrs);
@@ -224,5 +228,19 @@ public class ShadowResources {
public TypedArray obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) {
return newInstanceOf(TypedArray.class);
}
+
+ @Implementation
+ public boolean resolveAttribute (int resid, TypedValue outValue, boolean resolveRefs) {
+ TypedValue foundValue = attrMap.get(resid);
+ if (foundValue != null) {
+ outValue.setTo(foundValue);
+ return true;
+ }
+ return false;
+ }
+
+ public void setAttribue(int attrId, TypedValue value) {
+ attrMap.put(attrId, value);
+ }
}
}