Merge "add a test for LOAD_EFFECT_LIBRARY Binder call" into klp-dev
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/LeakTest.java b/tests/tests/renderscript/src/android/renderscript/cts/LeakTest.java
index 7662ffd..ce9153b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/LeakTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/LeakTest.java
@@ -55,7 +55,7 @@
Allocation A = Allocation.createTyped(mRS, t);
leak.set_a(A);
A = null;
- System.gc();
+ //System.gc();
leak.destroy();
mRS.finish();
}
diff --git a/tests/tests/widget/src/android/widget/cts/ListViewTest.java b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
index d2bd4f4..7af8c2e 100644
--- a/tests/tests/widget/src/android/widget/cts/ListViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
@@ -44,6 +44,9 @@
import android.widget.ListView;
import android.widget.TextView;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import junit.framework.Assert;
@@ -745,4 +748,94 @@
return new MockView(getContext());
}
}
+
+ public void testTransientStateUnstableIds() throws Exception {
+ final ListView listView = mListView;
+ final ArrayList<String> items = new ArrayList<String>(Arrays.asList(mCountryList));
+ final ArrayAdapter<String> adapter = new ArrayAdapter<String>(mActivity,
+ android.R.layout.simple_list_item_1, items);
+
+ mInstrumentation.runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ listView.setAdapter(adapter);
+ }
+ });
+ mInstrumentation.waitForIdleSync();
+
+ final View oldItem = listView.getChildAt(2);
+ final CharSequence oldText = ((TextView) oldItem.findViewById(android.R.id.text1))
+ .getText();
+ oldItem.setHasTransientState(true);
+
+ mInstrumentation.runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ adapter.remove(adapter.getItem(0));
+ adapter.notifyDataSetChanged();
+ }
+ });
+ mInstrumentation.waitForIdleSync();
+
+ final View newItem = listView.getChildAt(2);
+ final CharSequence newText = ((TextView) newItem.findViewById(android.R.id.text1))
+ .getText();
+
+ Assert.assertFalse(oldText.equals(newText));
+ }
+
+ public void testTransientStateStableIds() throws Exception {
+ final ListView listView = mListView;
+ final ArrayList<String> items = new ArrayList<String>(Arrays.asList(mCountryList));
+ final StableArrayAdapter<String> adapter = new StableArrayAdapter<String>(mActivity,
+ android.R.layout.simple_list_item_1, items);
+
+ mInstrumentation.runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ listView.setAdapter(adapter);
+ }
+ });
+ mInstrumentation.waitForIdleSync();
+
+ final Object tag = new Object();
+ final View oldItem = listView.getChildAt(2);
+ final CharSequence oldText = ((TextView) oldItem.findViewById(android.R.id.text1))
+ .getText();
+ oldItem.setHasTransientState(true);
+ oldItem.setTag(tag);
+
+ mInstrumentation.runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ adapter.remove(adapter.getItem(0));
+ adapter.notifyDataSetChanged();
+ }
+ });
+ mInstrumentation.waitForIdleSync();
+
+ final View newItem = listView.getChildAt(1);
+ final CharSequence newText = ((TextView) newItem.findViewById(android.R.id.text1))
+ .getText();
+
+ Assert.assertTrue(newItem.hasTransientState());
+ Assert.assertEquals(oldText, newText);
+ Assert.assertEquals(tag, newItem.getTag());
+ }
+
+ private static class StableArrayAdapter<T> extends ArrayAdapter<T> {
+ public StableArrayAdapter(Context context, int resource, List<T> objects) {
+ super(context, resource, objects);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return getItem(position).hashCode();
+ }
+
+ @Override
+ public boolean hasStableIds() {
+ return true;
+ }
+ }
}