aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhihong Xu <zhihongx@google.com>2013-09-25 18:55:01 -0700
committerZhihong Xu <zhihongx@google.com>2013-09-25 18:55:01 -0700
commit6ddbf372cd1301a3f23e7ad834ab7c4e32c6c698 (patch)
treef98f3cf1dc75162c4b28fc2d66fa3aa40db363a2
parentb0caab4eeb6c3335b1a7cfc1a15f2e3cd5f03553 (diff)
downloadrobolectric-6ddbf372cd1301a3f23e7ad834ab7c4e32c6c698.tar.gz
Implement Robolectric ShadowTheme.resolveAttribute
Change-Id: I04fff6a91176b3ab203ab8976a4c0b71a1ea0c08
-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 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, 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);
+ }
}
}