From 6ddbf372cd1301a3f23e7ad834ab7c4e32c6c698 Mon Sep 17 00:00:00 2001 From: Zhihong Xu Date: Wed, 25 Sep 2013 18:55:01 -0700 Subject: Implement Robolectric ShadowTheme.resolveAttribute Change-Id: I04fff6a91176b3ab203ab8976a4c0b71a1ea0c08 --- .../java/com/xtremelabs/robolectric/Robolectric.java | 6 ++++++ .../robolectric/shadows/ShadowResources.java | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/com/xtremelabs/robolectric/Robolectric.java b/src/main/java/com/xtremelabs/robolectric/Robolectric.java index 101a9d782..1835da046 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; @@ -1028,6 +1030,10 @@ public class Robolectric { return (ShadowZoomButtonsController) shadowOf_(instance); } + public static ShadowTheme shadowOf(Theme instance) { + return (ShadowTheme) shadowOf_(instance); + } + @SuppressWarnings({"unchecked"}) public static 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 attrMap = new HashMap(); + @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); + } } } -- cgit v1.2.3