diff options
author | Farand Koo <farand@google.com> | 2013-05-07 10:24:55 -0700 |
---|---|---|
committer | Farand Koo <farand@google.com> | 2013-05-09 11:41:11 -0700 |
commit | 18f30a45c8b66060e65bd95a2c2690161cfb1644 (patch) | |
tree | b4da3a559cbc2cf1bdab177f17391c37db2af775 | |
parent | ac7845ae66b3839e20a3d43dd72fc50722cf2285 (diff) | |
download | robolectric-18f30a45c8b66060e65bd95a2c2690161cfb1644.tar.gz |
Add support for View.setFilterTouchesWhenObscured()
Change-Id: I97a19bbe0ec4e021a22760cfade9c81e1346184c
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> |