Merge "Fix issue 2676107."
diff --git a/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java b/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java
index 7b14db7..f0f4b6f 100755
--- a/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java
+++ b/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.PackageManager;
 import android.telephony.SmsManager;
 import android.telephony.TelephonyManager;
 import android.test.AndroidTestCase;
@@ -71,9 +72,15 @@
                 Log.w(LOG_TAG, "wait for sms interrupted");
             }
         }
-        assertTrue("Sms not sent successfully, test environment problem?",
-                receiver.isMessageSent());
-        assertFalse("Sms received without proper permissions", receiver.isSmsReceived());
+
+        PackageManager packageManager = getContext().getPackageManager();
+        if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            assertTrue("Sms not sent successfully, test environment problem?",
+                    receiver.isMessageSent());
+            assertFalse("Sms received without proper permissions", receiver.isSmsReceived());
+        } else {
+            assertFalse(receiver.isMessageSent());
+        }
     }
 
     private void sendSMSToSelf() {
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
index a97aa96..25c75e2 100644
--- a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
@@ -16,23 +16,25 @@
 
 package android.telephony.cts;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
 
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.PackageManager;
 import android.os.SystemClock;
-import android.telephony.TelephonyManager;
 import android.telephony.SmsManager;
+import android.telephony.TelephonyManager;
 import android.test.AndroidTestCase;
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * Tests for {@link android.telephony.SmsManager}.
@@ -126,6 +128,8 @@
         )
     })
     public void testSendMessages() throws InterruptedException {
+        PackageManager packageManager = getContext().getPackageManager();
+        boolean hasTelephony = packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
 
         mSendIntent = new Intent(SMS_SEND_ACTION);
         mDeliveryIntent = new Intent(SMS_DELIVERY_ACTION);
@@ -144,7 +148,7 @@
         sendTextMessage(mDestAddr, mDestAddr, mSentIntent, mDeliveredIntent);
         assertTrue(mSendReceiver.waitForCalls(1, TIME_OUT));
         if (mDeliveryReportSupported) {
-            assertTrue(mDeliveryReceiver.waitForCalls(1, TIME_OUT));
+            assertEquals(hasTelephony, mDeliveryReceiver.waitForCalls(1, TIME_OUT));
         }
 
         if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
@@ -160,7 +164,7 @@
         sendDataMessage(mDestAddr, port, data, mSentIntent, mDeliveredIntent);
         assertTrue(mSendReceiver.waitForCalls(1, TIME_OUT));
         if (mDeliveryReportSupported) {
-            assertTrue(mDeliveryReceiver.waitForCalls(1, TIME_OUT));
+            assertEquals(hasTelephony, mDeliveryReceiver.waitForCalls(1, TIME_OUT));
         }
 
         // send multi parts text sms
@@ -176,7 +180,7 @@
         sendMultiPartTextMessage(mDestAddr, parts, sentIntents, deliveryIntents);
         assertTrue(mSendReceiver.waitForCalls(numParts, TIME_OUT));
         if (mDeliveryReportSupported) {
-            assertTrue(mDeliveryReceiver.waitForCalls(numParts, TIME_OUT));
+            assertEquals(hasTelephony, mDeliveryReceiver.waitForCalls(numParts, TIME_OUT));
         }
     }
 
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index c31b7e9..4b30658 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -46,9 +46,8 @@
 import android.util.Log;
 import android.util.SparseArray;
 import android.util.Xml;
-import android.view.ContextMenu;
-import android.view.ContextMenu.ContextMenuInfo;
 import android.view.ActionMode;
+import android.view.ContextMenu;
 import android.view.Display;
 import android.view.HapticFeedbackConstants;
 import android.view.KeyEvent;
@@ -56,6 +55,11 @@
 import android.view.SoundEffectConstants;
 import android.view.TouchDelegate;
 import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.view.WindowManagerImpl;
+import android.view.ContextMenu.ContextMenuInfo;
 import android.view.View.BaseSavedState;
 import android.view.View.OnClickListener;
 import android.view.View.OnCreateContextMenuListener;
@@ -63,10 +67,6 @@
 import android.view.View.OnKeyListener;
 import android.view.View.OnLongClickListener;
 import android.view.View.OnTouchListener;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.view.ViewParent;
-import android.view.WindowManagerImpl;
 import android.view.animation.AlphaAnimation;
 import android.view.animation.Animation;
 import android.view.animation.cts.DelayedCheck;
@@ -2681,8 +2681,11 @@
         runTestOnUiThread(new Runnable() {
             public void run() {
                 view.setFocusable(true);
+                view.requestFocus();
             }
         });
+        getInstrumentation().waitForIdleSync();
+        assertTrue(view.isFocused());
 
         KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU);
         getInstrumentation().sendKeySync(event);
@@ -3082,8 +3085,11 @@
         runTestOnUiThread(new Runnable() {
             public void run() {
                 view.setFocusable(true);
+                view.requestFocus();
             }
         });
+        getInstrumentation().waitForIdleSync();
+        assertTrue(view.isFocused());
 
         KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_0);
         getInstrumentation().sendKeySync(event);
diff --git a/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java b/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
index 0b436b2..8d8e4c2 100644
--- a/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
+++ b/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
@@ -113,10 +113,13 @@
         mInstrumentation.runOnMainSync(new Runnable() {
             public void run() {
                 mDialerFilter.setMode(DialerFilter.DIGITS_ONLY);
+                mDialerFilter.requestFocus();
             }
         });
         mInstrumentation.waitForIdleSync();
 
+        assertTrue(mDialerFilter.hasFocus());
+
         mInstrumentation.sendStringSync("123");
         assertEquals("", mDialerFilter.getLetters().toString());
         assertEquals("123", mDialerFilter.getDigits().toString());