Merge "Add a sleep in testSetDismissMessage(), to allow enough time for the dialog to be dismissed. No failure in 20+ tests." into klp-modular-dev
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/streamquality/StreamingVideoActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/streamquality/StreamingVideoActivity.java
index d575e5f..66168a1 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/streamquality/StreamingVideoActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/streamquality/StreamingVideoActivity.java
@@ -91,35 +91,38 @@
                + "cid=0x271de9756065677e&fmt=13&user=android-device-test"),
         new Stream("MPEG4 SP Video, AAC Audio", "rtsp_mpeg4_aac",
                 "rtsp://v2.cache7.c.youtube.com/video.3gp?"
-                + "cid=0x271de9756065677e&fmt=13&user=android-device-test"),
+                + "cid=0x271de9756065677e&fmt=17&user=android-device-test"),
         new Stream("H264 Base Video, AAC Audio", "rtsp_h264_aac",
                 "rtsp://v2.cache7.c.youtube.com/video.3gp?"
-                + "cid=0x271de9756065677e&fmt=13&user=android-device-test"),
+                + "cid=0x271de9756065677e&fmt=18&user=android-device-test"),
     };
 
     private static final Stream[] HTTP_STREAMS = {
-        new Stream("H263 Video, AMR Audio", "http_h263_amr", "http://v20.lscache8.c.youtube.com/"
+        new Stream("H263 Video, AMR Audio", "http_h263_amr", "http://redirector.c.play.google.com/"
                 + "videoplayback?id=271de9756065677e"
                 + "&itag=13&ip=0.0.0.0&ipbits=0&expire=999999999999999999"
                 + "&sparams=ip,ipbits,expire,ip,ipbits,expire,id,itag"
                 + "&signature=372FA4C532AA49D14EAF049BCDA66460EEE161E9"
                 + ".6D8BF096B73B7A68A7032CA8685053CFB498D30A"
+                + "&source=youtube"
                 + "&key=test_key1&user=android-device-test"),
         new Stream("MPEG4 SP Video, AAC Audio", "http_mpeg4_aac",
-                "http://v20.lscache8.c.youtube.com/"
+                "http://redirector.c.play.google.com/"
                 + "videoplayback?id=271de9756065677e"
                 + "&itag=17&ip=0.0.0.0&ipbits=0&expire=999999999999999999"
                 + "&sparams=ip,ipbits,expire,ip,ipbits,expire,id,itag"
                 + "&signature=3DCD3F79E045F95B6AF661765F046FB0440FF016"
                 + ".06A42661B3AF6BAF046F012549CC9BA34EBC80A9"
+                + "&source=youtube"
                 + "&key=test_key1&user=android-device-test"),
         new Stream("H264 Base Video, AAC Audio", "http_h264_aac",
-                "http://v20.lscache8.c.youtube.com/"
+                "http://redirector.c.play.google.com/"
                 + "videoplayback?id=271de9756065677e"
                 + "&itag=18&ip=0.0.0.0&ipbits=0&expire=999999999999999999"
                 + "&sparams=ip,ipbits,expire,ip,ipbits,expire,id,itag"
                 + "&signature=1219C2B07AF0638C27916307A6093C0E43CB894E"
                 + ".126B6B916BD57157782738AA7C03E59F21DBC168"
+                + "&source=youtube"
                 + "&key=test_key1&user=android-device-test"),
     };
 
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 1d7b051..29caf33 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -669,7 +669,8 @@
         </activity>
 
         <activity android:name="android.app.cts.InstrumentationTestActivity"
-            android:label="InstrumentationTestActivity">
+                  android:theme="@style/Theme_NoSwipeDismiss"
+                  android:label="InstrumentationTestActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -861,7 +862,8 @@
         </activity>
 
         <activity android:name="android.app.cts.DialogStubActivity"
-            android:label="DialogStubActivity">
+                  android:theme="@style/Theme_NoSwipeDismiss"
+                  android:label="DialogStubActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
diff --git a/tests/expectations/knownfailures.txt b/tests/expectations/knownfailures.txt
index 781182d..7a80295 100644
--- a/tests/expectations/knownfailures.txt
+++ b/tests/expectations/knownfailures.txt
@@ -115,10 +115,6 @@
   bug: 15087784
 },
 {
-  name: "android.app.cts.DialogTest#testSetFeatureDrawableResource",
-  bug: 15135607
-},
-{
   name: "android.media.cts.MediaCodecListTest#testIsAVCBaselineProfileSupported",
   name: "android.media.cts.MediaCodecListTest#testIsH263BaselineProfileSupported",
   name: "android.media.cts.MediaCodecListTest#testIsM4VSimpleProfileSupported",
diff --git a/tests/res/values/styles.xml b/tests/res/values/styles.xml
index f8b56fd..e0110cc 100644
--- a/tests/res/values/styles.xml
+++ b/tests/res/values/styles.xml
@@ -138,4 +138,8 @@
         <item name="android:panelColorBackground">#ffffffff</item>
     </style>
 
+    <style name="Theme_NoSwipeDismiss">
+        <item name="android:windowSwipeToDismiss">false</item>
+    </style>
+
 </resources>
diff --git a/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java b/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
index f452f50..f2f859a 100644
--- a/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
+++ b/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
@@ -29,6 +29,7 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
+import android.os.HandlerThread;
 import android.os.SystemClock;
 import android.test.AndroidTestCase;
 import android.util.DisplayMetrics;
@@ -72,6 +73,8 @@
     private ImageReader mImageReader;
     private Surface mSurface;
     private ImageListener mImageListener;
+    private HandlerThread mCheckThread;
+    private Handler mCheckHandler;
 
     @Override
     protected void setUp() throws Exception {
@@ -80,11 +83,15 @@
         mDisplayManager = (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
         mHandler = new Handler(Looper.getMainLooper());
         mImageListener = new ImageListener();
+        // thread for image checking
+        mCheckThread = new HandlerThread("TestHandler");
+        mCheckThread.start();
+        mCheckHandler = new Handler(mCheckThread.getLooper());
 
         mImageReaderLock.lock();
         try {
             mImageReader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBA_8888, 2);
-            mImageReader.setOnImageAvailableListener(mImageListener, mHandler);
+            mImageReader.setOnImageAvailableListener(mImageListener, mCheckHandler);
             mSurface = mImageReader.getSurface();
         } finally {
             mImageReaderLock.unlock();
@@ -94,7 +101,6 @@
     @Override
     protected void tearDown() throws Exception {
         super.tearDown();
-
         mImageReaderLock.lock();
         try {
             mImageReader.close();
@@ -103,6 +109,7 @@
         } finally {
             mImageReaderLock.unlock();
         }
+        mCheckThread.quit();
     }
 
     /**
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
index 9f6a976..b1691c3 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
@@ -243,15 +243,19 @@
             }
         };
         // Consider only continuous mode sensors for testing registerListener.
-        if (sensor.getMinDelay() > 0) {
+        // For on-change sensors, call registerListener() so that the listener is associated
+        // with the sensor and flush(listener) can be called on it.
+        if (sensor.getMinDelay() >= 0) {
             Log.i(TAG, "testBatch " + sensor.getName());
             boolean result = mSensorManager.registerListener(listener, sensor,
                     SensorManager.SENSOR_DELAY_NORMAL, 10000000, handler);
             assertTrue("registerListener failed " + sensor.getName(), result);
-            // Wait for 25 events or 40 seconds.
-            boolean countZero = eventReceived.await(TIMEOUT_S, TimeUnit.SECONDS);
-            if (!countZero) {
-                fail("Timed out waiting for events from " + sensor.getName());
+            // Wait for 25 events or 40 seconds only for continuous mode sensors.
+            if (sensor.getMinDelay() > 0) {
+                boolean countZero = eventReceived.await(TIMEOUT_S, TimeUnit.SECONDS);
+                if (!countZero) {
+                    fail("Timed out waiting for events from " + sensor.getName());
+                }
             }
         }
 
diff --git a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
index fce343e..39c7b77 100644
--- a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
+++ b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
@@ -19,6 +19,7 @@
 import android.app.Presentation;
 import android.media.MediaCodec;
 import android.media.MediaCodecInfo;
+import android.media.MediaCodecList;
 import android.media.MediaFormat;
 import android.content.Context;
 import android.graphics.drawable.ColorDrawable;
@@ -150,6 +151,25 @@
         }
     }
 
+    private static boolean hasCodec(String mimeType) {
+        int numCodecs = MediaCodecList.getCodecCount();
+        for (int i = 0; i < numCodecs; i++) {
+            MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
+
+            if (!codecInfo.isEncoder()) {
+                continue;
+            }
+
+            String[] types = codecInfo.getSupportedTypes();
+            for (int j = 0; j < types.length; j++) {
+                if (types[j].equalsIgnoreCase(mimeType)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     /**
      * Prepares the encoder, decoder, and virtual display.
      */
@@ -159,6 +179,11 @@
         OutputSurface outputSurface = null;
         VirtualDisplay virtualDisplay = null;
 
+        // Don't run the test of the codec isn't present.
+        if (!hasCodec(MIME_TYPE)) {
+            return;
+        }
+
         try {
             // Encoded video resolution matches virtual display.
             MediaFormat encoderFormat = MediaFormat.createVideoFormat(MIME_TYPE, WIDTH, HEIGHT);
diff --git a/tests/tests/provider/src/android/provider/cts/Contacts_PeopleTest.java b/tests/tests/provider/src/android/provider/cts/Contacts_PeopleTest.java
index d634d30..e5085b8 100644
--- a/tests/tests/provider/src/android/provider/cts/Contacts_PeopleTest.java
+++ b/tests/tests/provider/src/android/provider/cts/Contacts_PeopleTest.java
@@ -28,10 +28,12 @@
 import android.net.Uri;
 import android.os.RemoteException;
 import android.provider.Contacts;
+import android.provider.Contacts.GroupMembership;
 import android.provider.Contacts.Groups;
 import android.provider.Contacts.GroupsColumns;
 import android.provider.Contacts.People;
 import android.test.InstrumentationTestCase;
+import android.util.Log;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -53,9 +55,6 @@
     private static final int PEOPLE_ID_INDEX = 0;
     private static final int PEOPLE_LAST_CONTACTED_INDEX = 1;
 
-    private static final int MEMBERSHIP_PERSON_ID_INDEX = 1;
-    private static final int MEMBERSHIP_GROUP_ID_INDEX = 5;
-
     private static final String[] GROUPS_PROJECTION = new String[] {
         Groups._ID,
         Groups.NAME
@@ -127,13 +126,19 @@
             mRowsAdded.add(People.addToMyContactsGroup(mContentResolver, personId));
             cursor = mProvider.query(Groups.CONTENT_URI, GROUPS_PROJECTION,
                     Groups.SYSTEM_ID + "='" + Groups.GROUP_MY_CONTACTS + "'", null, null, null);
-            cursor.moveToFirst();
+            assertTrue(cursor.moveToFirst());
             int groupId = cursor.getInt(GROUPS_ID_INDEX);
             cursor.close();
             cursor = People.queryGroups(mContentResolver, personId);
-            cursor.moveToFirst();
-            assertEquals(personId, cursor.getInt(MEMBERSHIP_PERSON_ID_INDEX));
-            assertEquals(groupId, cursor.getInt(MEMBERSHIP_GROUP_ID_INDEX));
+
+            int membershipGroupIdIndex =
+                    cursor.getColumnIndex(android.provider.Contacts.GroupMembership.GROUP_ID);
+            int membershipPersonIdIndex =
+                    cursor.getColumnIndex(android.provider.Contacts.GroupMembership.PERSON_ID);
+
+            assertTrue(cursor.moveToFirst());
+            assertEquals(personId, cursor.getInt(membershipPersonIdIndex));
+            assertEquals(groupId, cursor.getInt(membershipGroupIdIndex));
             cursor.close();
 
             // People: test_people_create, Group: Groups.GROUP_MY_CONTACTS
@@ -145,38 +150,38 @@
             cursor = mProvider.query(People.CONTENT_URI, PEOPLE_PROJECTION,
                     People.NAME + " = 'test_people_create'", null, null, null);
 
-            cursor.moveToFirst();
+            assertTrue(cursor.moveToFirst());
             personId = cursor.getInt(PEOPLE_ID_INDEX);
             mRowsAdded.add(ContentUris.withAppendedId(People.CONTENT_URI, personId));
             cursor.close();
             cursor = mProvider.query(Groups.CONTENT_URI, GROUPS_PROJECTION,
                     Groups.SYSTEM_ID + "='" + Groups.GROUP_MY_CONTACTS + "'", null, null, null);
-            cursor.moveToFirst();
+            assertTrue(cursor.moveToFirst());
             groupId = cursor.getInt(GROUPS_ID_INDEX);
             cursor.close();
             cursor = People.queryGroups(mContentResolver, personId);
-            cursor.moveToFirst();
-            assertEquals(personId, cursor.getInt(MEMBERSHIP_PERSON_ID_INDEX));
-            assertEquals(groupId, cursor.getInt(MEMBERSHIP_GROUP_ID_INDEX));
+            assertTrue(cursor.moveToFirst());
+            assertEquals(personId, cursor.getInt(membershipPersonIdIndex));
+            assertEquals(groupId, cursor.getInt(membershipGroupIdIndex));
             cursor.close();
 
             // People: test_people_1, Group: test_group_0
             cursor = mProvider.query(mPeopleRowsAdded.get(1), PEOPLE_PROJECTION,
                     null, null, null, null);
-            cursor.moveToFirst();
+            assertTrue(cursor.moveToFirst());
             personId = cursor.getInt(PEOPLE_ID_INDEX);
             cursor.close();
             cursor = mProvider.query(mGroupRowsAdded.get(0), GROUPS_PROJECTION,
                     null, null, null, null);
-            cursor.moveToFirst();
+            assertTrue(cursor.moveToFirst());
             groupId = cursor.getInt(GROUPS_ID_INDEX);
             cursor.close();
             mRowsAdded.add(People.addToGroup(mContentResolver, personId, groupId));
             cursor = People.queryGroups(mContentResolver, personId);
             boolean found = false;
             while (cursor.moveToNext()) {
-                assertEquals(personId, cursor.getInt(MEMBERSHIP_PERSON_ID_INDEX));
-                if (cursor.getInt(MEMBERSHIP_GROUP_ID_INDEX) == groupId) {
+                assertEquals(personId, cursor.getInt(membershipPersonIdIndex));
+                if (cursor.getInt(membershipGroupIdIndex) == groupId) {
                     found = true;
                     break;
                 }
@@ -188,7 +193,7 @@
             // People: test_people_2, Group: test_group_1
             cursor = mProvider.query(mPeopleRowsAdded.get(2), PEOPLE_PROJECTION,
                     null, null, null, null);
-            cursor.moveToFirst();
+            assertTrue(cursor.moveToFirst());
             personId = cursor.getInt(PEOPLE_ID_INDEX);
             cursor.close();
             String groupName = "test_group_1";
@@ -196,8 +201,8 @@
             cursor = People.queryGroups(mContentResolver, personId);
             List<Integer> groupIds = new ArrayList<Integer>();
             while (cursor.moveToNext()) {
-                assertEquals(personId, cursor.getInt(MEMBERSHIP_PERSON_ID_INDEX));
-                groupIds.add(cursor.getInt(MEMBERSHIP_GROUP_ID_INDEX));
+                assertEquals(personId, cursor.getInt(membershipPersonIdIndex));
+                groupIds.add(cursor.getInt(membershipGroupIdIndex));
             }
             cursor.close();
 
diff --git a/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java b/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
index 1d8a032..00171f9 100644
--- a/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
+++ b/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
@@ -30,6 +30,7 @@
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.WindowManager;
 import android.widget.TextView;
 import android.widget.TextView.BufferType;
 
@@ -68,6 +69,9 @@
 
         getInstrumentation().runOnMainSync(new Runnable() {
             public void run() {
+                getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
+                        WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+                
                 getActivity().setContentView(mTextView);
                 mTextView.setFocusable(true);
                 mTextView.requestFocus();
diff --git a/tests/tests/text/src/android/text/method/cts/KeyListenerTestCase.java b/tests/tests/text/src/android/text/method/cts/KeyListenerTestCase.java
index 4007f33..ef3d751 100644
--- a/tests/tests/text/src/android/text/method/cts/KeyListenerTestCase.java
+++ b/tests/tests/text/src/android/text/method/cts/KeyListenerTestCase.java
@@ -23,6 +23,7 @@
 import android.text.format.DateUtils;
 import android.text.method.cts.KeyListenerStubActivity;
 import android.text.method.KeyListener;
+import android.view.WindowManager;
 import android.widget.TextView;
 
 /**
@@ -63,6 +64,9 @@
         mInstrumentation = getInstrumentation();
         mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
 
+        mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
+                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+
         assertTrue(mActivity.waitForWindowFocus(5 * DateUtils.SECOND_IN_MILLIS));
     }