aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFarand Koo <farand@google.com>2013-05-07 10:24:55 -0700
committerFarand Koo <farand@google.com>2013-05-09 11:41:11 -0700
commit18f30a45c8b66060e65bd95a2c2690161cfb1644 (patch)
treeb4da3a559cbc2cf1bdab177f17391c37db2af775
parentac7845ae66b3839e20a3d43dd72fc50722cf2285 (diff)
downloadrobolectric-18f30a45c8b66060e65bd95a2c2690161cfb1644.tar.gz
Add support for View.setFilterTouchesWhenObscured()
Change-Id: I97a19bbe0ec4e021a22760cfade9c81e1346184c
-rw-r--r--src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java17
-rw-r--r--src/test/java/com/xtremelabs/robolectric/R.java5
-rw-r--r--src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java26
-rw-r--r--src/test/resources/res/layout/views.xml23
4 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java
index 45022bca7..76dfa78f7 100644
--- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java
+++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java
@@ -52,6 +52,7 @@ public class ShadowView {
private Object tag;
private boolean enabled = true;
private int visibility = View.VISIBLE;
+ private boolean filterTouchesWhenObscured = false;
int left;
int top;
int right;
@@ -105,6 +106,7 @@ public class ShadowView {
public void applyAttributes() {
applyIdAttribute();
applyVisibilityAttribute();
+ applyFilterTouchesWhenObscuredAttribute();
applyEnabledAttribute();
applyBackgroundAttribute();
applyTagAttribute();
@@ -295,6 +297,16 @@ public class ShadowView {
}
@Implementation
+ public boolean getFilterTouchesWhenObscured() {
+ return filterTouchesWhenObscured;
+ }
+
+ @Implementation
+ public void setFilterTouchesWhenObscured(boolean enabled) {
+ this.filterTouchesWhenObscured = enabled;
+ }
+
+ @Implementation
public void setSelected(boolean selected) {
this.selected = selected;
}
@@ -793,6 +805,11 @@ public class ShadowView {
}
}
+ private void applyFilterTouchesWhenObscuredAttribute() {
+ setFilterTouchesWhenObscured(attributeSet.getAttributeBooleanValue(
+ "android", "filterTouchesWhenObscured", false));
+ }
+
private void applyEnabledAttribute() {
setEnabled(attributeSet.getAttributeBooleanValue("android", "enabled", true));
}
diff --git a/src/test/java/com/xtremelabs/robolectric/R.java b/src/test/java/com/xtremelabs/robolectric/R.java
index 34c818075..7a0916019 100644
--- a/src/test/java/com/xtremelabs/robolectric/R.java
+++ b/src/test/java/com/xtremelabs/robolectric/R.java
@@ -54,6 +54,10 @@ public final class R {
public static final int fragment = nextId++;
public static final int dynamic_fragment_container = nextId++;
public static final int content_view = nextId++;
+
+ public static final int default_view = nextId++;
+ public static final int filter_touches_false_view = nextId++;
+ public static final int filter_touches_true_view = nextId++;
}
public static final class string {
@@ -119,6 +123,7 @@ public final class R {
public static final int tab_activity = nextId++;
public static final int different_screen_sizes = nextId++;
public static final int fragment_activity = nextId++;
+ public static final int views = nextId++;
}
public static final class raw {
diff --git a/src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java b/src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java
index 83378d341..6a62b4c4e 100644
--- a/src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java
@@ -379,6 +379,32 @@ public class ViewTest {
assertThat(view2.getMeasuredWidth(), equalTo(800));
}
+ @Test
+ public void testFilterTouchesWhenObscured() {
+ assertFalse(view.getFilterTouchesWhenObscured());
+
+ view.setFilterTouchesWhenObscured(true);
+ assertTrue(view.getFilterTouchesWhenObscured());
+
+ view.setFilterTouchesWhenObscured(false);
+ assertFalse(view.getFilterTouchesWhenObscured());
+ }
+
+ @Test
+ public void testFilterTouchesWhenObscuredWhenLoadedFromXml() {
+ LinearLayout root = new LinearLayout(null);
+ ShadowView.inflate(new Activity(), R.layout.views, root);
+
+ View defaultView = root.findViewById(R.id.default_view);
+ assertFalse(defaultView.getFilterTouchesWhenObscured());
+
+ View filterFalseView = root.findViewById(R.id.filter_touches_false_view);
+ assertFalse(filterFalseView.getFilterTouchesWhenObscured());
+
+ View filterTrueView = root.findViewById(R.id.filter_touches_true_view);
+ assertTrue(filterTrueView.getFilterTouchesWhenObscured());
+ }
+
private static class TestAnimation extends Animation {
}
diff --git a/src/test/resources/res/layout/views.xml b/src/test/resources/res/layout/views.xml
new file mode 100644
index 000000000..12f0a38ad
--- /dev/null
+++ b/src/test/resources/res/layout/views.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" >
+
+ <View
+ android:id="@+id/default_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+ <View
+ android:id="@+id/filter_touches_false_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:filterTouchesWhenObscured="false" />
+
+ <View
+ android:id="@+id/filter_touches_true_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:filterTouchesWhenObscured="true" />
+
+</LinearLayout>