From 3001a035439d8134a7d70d796376d1dfbff3cdcd Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Thu, 19 Feb 2009 10:57:31 -0800 Subject: auto import from //branches/cupcake/...@132276 --- tests/AndroidTests/Android.mk | 2 +- tests/AndroidTests/DisabledTestApp/Android.mk | 2 +- tests/AndroidTests/EnabledTestApp/Android.mk | 2 +- tests/CoreTests/android/Android.mk | 2 +- tests/CoreTests/android/AndroidManifest.xml | 1 + tests/CoreTests/android/core/TestHandler.java | 174 ------- .../internal/telephony/gsm/GSMPhoneTest.java | 568 +++++++++------------ .../internal/telephony/gsm/GSMTestHandler.java | 118 +++++ .../internal/telephony/gsm/SMSDispatcherTest.java | 15 +- .../internal/telephony/gsm/SimPhoneBookTest.java | 11 +- tests/FrameworkTest/AndroidManifest.xml | 8 + .../listview/ListWithFirstScreenUnSelectable.java | 33 ++ .../ScrollingThroughListOfFocusablesTest.java | 13 +- .../ListWithFirstScreenUnSelectableTest.java | 64 +++ 14 files changed, 489 insertions(+), 524 deletions(-) delete mode 100644 tests/CoreTests/android/core/TestHandler.java create mode 100644 tests/CoreTests/com/android/internal/telephony/gsm/GSMTestHandler.java create mode 100644 tests/FrameworkTest/src/com/android/frameworktest/listview/ListWithFirstScreenUnSelectable.java create mode 100644 tests/FrameworkTest/tests/src/com/android/frameworktest/listview/arrowscroll/ListWithFirstScreenUnSelectableTest.java (limited to 'tests') diff --git a/tests/AndroidTests/Android.mk b/tests/AndroidTests/Android.mk index cf8ac94..f5e49d7 100644 --- a/tests/AndroidTests/Android.mk +++ b/tests/AndroidTests/Android.mk @@ -1,7 +1,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) -LOCAL_MODULE_TAGS := eng tests +LOCAL_MODULE_TAGS := tests LOCAL_JAVA_LIBRARIES := framework-tests android.test.runner diff --git a/tests/AndroidTests/DisabledTestApp/Android.mk b/tests/AndroidTests/DisabledTestApp/Android.mk index 814607d..a5daedf 100644 --- a/tests/AndroidTests/DisabledTestApp/Android.mk +++ b/tests/AndroidTests/DisabledTestApp/Android.mk @@ -1,7 +1,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) -LOCAL_MODULE_TAGS := eng tests +LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := $(call all-subdir-java-files) diff --git a/tests/AndroidTests/EnabledTestApp/Android.mk b/tests/AndroidTests/EnabledTestApp/Android.mk index 2de5c3b..4b986d3 100644 --- a/tests/AndroidTests/EnabledTestApp/Android.mk +++ b/tests/AndroidTests/EnabledTestApp/Android.mk @@ -1,7 +1,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) -LOCAL_MODULE_TAGS := eng tests +LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := $(call all-subdir-java-files) diff --git a/tests/CoreTests/android/Android.mk b/tests/CoreTests/android/Android.mk index 3b80228..e6b5c45 100644 --- a/tests/CoreTests/android/Android.mk +++ b/tests/CoreTests/android/Android.mk @@ -1,7 +1,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) -LOCAL_MODULE_TAGS := eng tests +LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := \ $(call all-subdir-java-files) diff --git a/tests/CoreTests/android/AndroidManifest.xml b/tests/CoreTests/android/AndroidManifest.xml index 8c642f4..4809f844 100644 --- a/tests/CoreTests/android/AndroidManifest.xml +++ b/tests/CoreTests/android/AndroidManifest.xml @@ -23,6 +23,7 @@ + diff --git a/tests/CoreTests/android/core/TestHandler.java b/tests/CoreTests/android/core/TestHandler.java deleted file mode 100644 index 4ff2e6e..0000000 --- a/tests/CoreTests/android/core/TestHandler.java +++ /dev/null @@ -1,174 +0,0 @@ -/* //device/java/android/com/android/tests/TestHandler.java -** -** Copyright 2007, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - -package android.core; - -import com.android.internal.os.HandlerHelper; -import android.os.HandlerInterface; -import android.os.Looper; -import android.os.Message; -import android.os.SystemClock; - -/** - * Naive class that implements a getNextMessage() - * by running a Handler in a new thread.

- *

- * This class blocks the Handler thread when the getNextMessage() thread - * is not in getNextMessage(). This allows the getNextMessage() thread to - * inspect state that is otherwise unguarded and would otherwise be prone to - * race conditions.

- *

- * Please note that both threads are allowed to run unsynchronized until - * the first message is posted to this handler. - *

- * Please call hh.looper.quit() when done to clean this up - */ -public class TestHandler implements Runnable, HandlerInterface { - //***** Instance Variables - - public HandlerHelper hh; - public Looper looper; - - Runnable setupRoutine; - Message nextMessage; - long failTimeoutMillis; - boolean waitBeforeReturning = true; - - //***** Class Methods - - public static TestHandler create() { - return create("TestHandler", null); - } - - public static TestHandler create(String name) { - return create(name, null); - } - - public static TestHandler create(String name, Runnable doSetup) { - TestHandler ret; - - ret = new TestHandler(); - - ret.setupRoutine = doSetup; - - synchronized (ret) { - new Thread(ret, name).start(); - while (ret.looper == null) { - try { - ret.wait(); - } catch (InterruptedException ex) { - } - } - } - - return ret; - } - - //***** Public Methods - - /** - * Maximum time to wait for a message before failing - * by throwing exception - */ - public void setFailTimeoutMillis(long msec) { - failTimeoutMillis = msec; - } - - /** - * Waits for the next message to be sent to this handler and returns it. - * Blocks the Handler's looper thread until another call to getNextMessage() - * is made - */ - - public Message getNextMessage() { - Message ret; - - synchronized (this) { - long time = SystemClock.uptimeMillis(); - - waitBeforeReturning = false; - this.notifyAll(); - - try { - while (nextMessage == null) { - if (failTimeoutMillis > 0 - && ((SystemClock.uptimeMillis() - time) - > failTimeoutMillis)) { - throw new RuntimeException("Timeout exceeded exceeded"); - } - - try { - this.wait(failTimeoutMillis); - } catch (InterruptedException ex) { - } - } - ret = nextMessage; - nextMessage = null; - } finally { - waitBeforeReturning = true; - } - } - - return ret; - } - - //***** Overridden from Runnable - - public void run() { - Looper.prepare(); - hh = new HandlerHelper(this); - - if (setupRoutine != null) { - setupRoutine.run(); - } - - synchronized (this) { - looper = Looper.myLooper(); - this.notify(); - } - - Looper.loop(); - } - - //***** HandlerHelper implementation - - public void handleMessage(Message msg) { - synchronized (this) { - while (nextMessage != null) { - try { - this.wait(); - } catch (InterruptedException ex) { - } - } - - // msg will be recycled when this method returns. - // so we need to make a copy of it. - nextMessage = Message.obtain(); - nextMessage.copyFrom(msg); - this.notifyAll(); - - while (waitBeforeReturning) { - try { - this.wait(); - } catch (InterruptedException ex) { - } - } - } - } -} - - diff --git a/tests/CoreTests/com/android/internal/telephony/gsm/GSMPhoneTest.java b/tests/CoreTests/com/android/internal/telephony/gsm/GSMPhoneTest.java index ec9b3ef..7107412 100644 --- a/tests/CoreTests/com/android/internal/telephony/gsm/GSMPhoneTest.java +++ b/tests/CoreTests/com/android/internal/telephony/gsm/GSMPhoneTest.java @@ -9,19 +9,23 @@ * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * WITHOUT WARRANTIES OR CONDITIONS OF GSMTestHandler.ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.telephony.gsm; -import android.core.TestHandler; import android.os.AsyncResult; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Looper; import android.os.Message; +import android.os.Process; import android.telephony.ServiceState; import android.test.AndroidTestCase; import android.test.PerformanceTestCase; +import android.util.Log; import com.android.internal.telephony.Call; import com.android.internal.telephony.CallStateException; @@ -29,15 +33,22 @@ import com.android.internal.telephony.Connection; import com.android.internal.telephony.MmiCode; import com.android.internal.telephony.Phone; import com.android.internal.telephony.TestPhoneNotifier; +import com.android.internal.telephony.gsm.CallFailCause; +import com.android.internal.telephony.gsm.GSMPhone; +import com.android.internal.telephony.gsm.GSMTestHandler; +import com.android.internal.telephony.gsm.GsmMmiCode; +import com.android.internal.telephony.gsm.SuppServiceNotification; import com.android.internal.telephony.test.SimulatedCommands; import com.android.internal.telephony.test.SimulatedRadioControl; import java.util.List; + public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase { private SimulatedRadioControl mRadioControl; - private TestHandler mTestHandler; private GSMPhone mGSMPhone; + private GSMTestHandler mGSMTestHandler; + private Handler mHandler; private static final int EVENT_PHONE_STATE_CHANGED = 1; private static final int EVENT_DISCONNECT = 2; @@ -51,78 +62,65 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase private static final int EVENT_IN_SERVICE = 10; private static final int SUPP_SERVICE_FAILED = 11; private static final int SERVICE_STATE_CHANGED = 12; - - private static final int FAIL_TIMEOUT_MILLIS = 5 * 1000; + private static final int EVENT_OEM_RIL_MESSAGE = 13; + public static final int ANY_MESSAGE = -1; @Override protected void setUp() throws Exception { super.setUp(); + mGSMTestHandler = new GSMTestHandler(mContext); + + mGSMTestHandler.start(); + synchronized (mGSMTestHandler) { + do { + mGSMTestHandler.wait(); + } while (mGSMTestHandler.getGSMPhone() == null); + } + + mGSMPhone = mGSMTestHandler.getGSMPhone(); + mRadioControl = mGSMTestHandler.getSimulatedCommands(); + + mHandler = mGSMTestHandler.getHandler(); + mGSMPhone.registerForPhoneStateChanged(mHandler, EVENT_PHONE_STATE_CHANGED, null); + mGSMPhone.registerForNewRingingConnection(mHandler, EVENT_RINGING, null); + mGSMPhone.registerForDisconnect(mHandler, EVENT_DISCONNECT, null); + + mGSMPhone.setOnPostDialCharacter(mHandler, EVENT_POST_DIAL, null); - mTestHandler = TestHandler.create("GSMPhoneTest TestHandler", - new Runnable() { - public void run() { - SimulatedCommands sc = new SimulatedCommands(); - mRadioControl = sc; - mGSMPhone = new GSMPhone( - mContext, sc, - new TestPhoneNotifier(), - true); - - } - } - ); - - mTestHandler.setFailTimeoutMillis(FAIL_TIMEOUT_MILLIS); - mGSMPhone.registerForPhoneStateChanged(mTestHandler.hh, EVENT_PHONE_STATE_CHANGED, null); - mGSMPhone.registerForNewRingingConnection(mTestHandler.hh, EVENT_RINGING, null); - mGSMPhone.registerForDisconnect(mTestHandler.hh, EVENT_DISCONNECT, null); - - mGSMPhone.setOnPostDialCharacter(mTestHandler.hh, EVENT_POST_DIAL, null); - - mGSMPhone.registerForSuppServiceNotification(mTestHandler.hh, EVENT_SSN, null); - mGSMPhone.registerForMmiInitiate(mTestHandler.hh, EVENT_MMI_INITIATE, null); - mGSMPhone.registerForMmiComplete(mTestHandler.hh, EVENT_MMI_COMPLETE, null); - mGSMPhone.registerForSuppServiceFailed(mTestHandler.hh, SUPP_SERVICE_FAILED, null); - - mGSMPhone.registerForServiceStateChanged(mTestHandler.hh, SERVICE_STATE_CHANGED, null); + mGSMPhone.registerForSuppServiceNotification(mHandler, EVENT_SSN, null); + mGSMPhone.registerForMmiInitiate(mHandler, EVENT_MMI_INITIATE, null); + mGSMPhone.registerForMmiComplete(mHandler, EVENT_MMI_COMPLETE, null); + mGSMPhone.registerForSuppServiceFailed(mHandler, SUPP_SERVICE_FAILED, null); + + mGSMPhone.registerForServiceStateChanged(mHandler, SERVICE_STATE_CHANGED, null); // wait until we get phone in both voice and data service Message msg; ServiceState state; + do { - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != SERVICE_STATE_CHANGED); - state = (ServiceState) ((AsyncResult) msg.obj).result; + msg = mGSMTestHandler.waitForMessage(SERVICE_STATE_CHANGED); + assertNotNull("Message Time Out", msg); + state = (ServiceState) ((AsyncResult) msg.obj).result; } while (state.getState() != ServiceState.STATE_IN_SERVICE); - } @Override protected void tearDown() throws Exception { - mGSMPhone.unregisterForPhoneStateChanged(mTestHandler.hh); - mGSMPhone.unregisterForNewRingingConnection(mTestHandler.hh); - mGSMPhone.unregisterForDisconnect(mTestHandler.hh); - mGSMPhone.setOnPostDialCharacter(null, 0, null); - mGSMPhone.unregisterForSuppServiceNotification(mTestHandler.hh); - mGSMPhone.unregisterForMmiInitiate(mTestHandler.hh); - mGSMPhone.unregisterForMmiComplete(mTestHandler.hh); - mRadioControl.shutdown(); - mTestHandler.hh.sendMessage(mTestHandler.hh.obtainMessage(EVENT_DONE)); - - Message msg; - - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DONE); - - mTestHandler.looper.quit(); + mGSMPhone.unregisterForPhoneStateChanged(mHandler); + mGSMPhone.unregisterForNewRingingConnection(mHandler); + mGSMPhone.unregisterForDisconnect(mHandler); + mGSMPhone.setOnPostDialCharacter(mHandler, 0, null); + mGSMPhone.unregisterForSuppServiceNotification(mHandler); + mGSMPhone.unregisterForMmiInitiate(mHandler); + mGSMPhone.unregisterForMmiComplete(mHandler); mGSMPhone = null; mRadioControl = null; - mTestHandler = null; + mHandler = null; + mGSMTestHandler.cleanup(); super.tearDown(); } @@ -136,7 +134,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase return false; } - + //This test is causing the emulator screen to turn off. I don't understand //why, but I'm removing it until we can figure it out. public void brokenTestGeneral() throws Exception { @@ -167,19 +165,16 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_PHONE_STATE_CHANGED); + msg = mGSMTestHandler.waitForMessage(EVENT_PHONE_STATE_CHANGED); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); assertEquals(Call.State.DIALING, mGSMPhone.getForegroundCall().getState()); assertTrue(mGSMPhone.getForegroundCall().isDialingOrAlerting()); - /* - do { - th.getNextMessage(); - } while (phone.getForegroundCall().getConnections().size() == 0); - */ + /*do { + mGSMTestHandler.waitForMessage(ANY_MESSAGE); + } while (mGSMPhone.getForegroundCall().getConnections().size() == 0);*/ assertEquals(0, mGSMPhone.getRingingCall().getConnections().size()); assertEquals(1, mGSMPhone.getForegroundCall().getConnections().size()); @@ -206,7 +201,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.progressConnectingCallState(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ALERTING); @@ -234,7 +229,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.progressConnectingCallState(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); @@ -259,9 +254,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // One disconnected connection mGSMPhone.getForegroundCall().hangup(); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); + msg = mGSMTestHandler.waitForMessage(EVENT_DISCONNECT); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -311,9 +305,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_RINGING); + msg = mGSMTestHandler.waitForMessage(EVENT_RINGING); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); assertTrue(mGSMPhone.getRingingCall().isRinging()); @@ -347,7 +340,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.acceptCall(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getRingingCall().getConnections().size() == 1); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); @@ -382,10 +375,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase fail("unexpected ex"); } - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); - + msg = mGSMTestHandler.waitForMessage(EVENT_DISCONNECT); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -444,7 +435,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getRingingCall().getConnections().isEmpty()); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); @@ -471,7 +462,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.rejectCall(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.IDLE); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -525,7 +516,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getRingingCall().getConnections().isEmpty()); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); @@ -539,7 +530,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerHangupForeground(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.IDLE); assertEquals(Connection.DisconnectCause.INCOMING_MISSED, cn.getDisconnectCause()); @@ -549,7 +540,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.RINGING); @@ -559,7 +550,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.acceptCall(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.OFFHOOK); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -569,7 +560,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.switchHoldingAndActive(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() == Call.State.IDLE); @@ -580,7 +571,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.switchHoldingAndActive(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() == Call.State.HOLDING); @@ -592,7 +583,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerHangupAll(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.IDLE); assertEquals(Call.State.DISCONNECTED, mGSMPhone.getForegroundCall().getState()); @@ -603,13 +594,13 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.RINGING); mGSMPhone.rejectCall(); do { - msg = mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (msg.what != EVENT_DISCONNECT); ar = (AsyncResult) msg.obj; @@ -624,7 +615,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.RINGING); cn = mGSMPhone.getRingingCall().getEarliestConnection(); @@ -632,7 +623,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.acceptCall(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.OFFHOOK); assertEquals(Connection.DisconnectCause.NOT_DISCONNECTED, cn.getDisconnectCause()); @@ -647,7 +638,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase } do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.DISCONNECTED); @@ -661,7 +652,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.dial("+13125551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.OFFHOOK); assertTrue(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -672,7 +663,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // One ACTIVE call do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -682,7 +673,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.RINGING); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -692,7 +683,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.acceptCall(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.OFFHOOK); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -706,7 +697,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.conference(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() != Call.State.IDLE); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -720,7 +711,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.switchHoldingAndActive(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() != Call.State.HOLDING); @@ -734,7 +725,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005558355"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.RINGING); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -750,7 +741,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.getBackgroundCall().hangup(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() != Call.State.DISCONNECTED); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); @@ -763,7 +754,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.rejectCall(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.IDLE); assertFalse(mGSMPhone.getForegroundCall().isDialingOrAlerting()); @@ -782,10 +773,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase Connection cn = mGSMPhone.dial("+13125551212"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); - + msg = mGSMTestHandler.waitForMessage(EVENT_DISCONNECT); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); assertEquals(Connection.DisconnectCause.NORMAL, cn.getDisconnectCause()); @@ -812,7 +801,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.dial("+13125551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.DIALING); @@ -820,10 +809,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.getForegroundCall().hangup(); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); - + msg = mGSMTestHandler.waitForMessage(EVENT_DISCONNECT); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); assertEquals(Call.State.DISCONNECTED, mGSMPhone.getForegroundCall().getState()); @@ -833,13 +820,13 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.dial("+13125551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.OFFHOOK); mRadioControl.progressConnectingCallState(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ALERTING); @@ -847,9 +834,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.getForegroundCall().hangup(); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); + msg = mGSMTestHandler.waitForMessage(EVENT_DISCONNECT); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); @@ -867,10 +853,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.resumeResponses(); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); - + msg = mGSMTestHandler.waitForMessage(EVENT_DISCONNECT); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); assertEquals(Call.State.DISCONNECTED, mGSMPhone.getForegroundCall().getState()); @@ -883,13 +867,13 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.dial("+13125551212"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getConnections().isEmpty()); mRadioControl.shutdown(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); mGSMPhone.clearDisconnected(); } while (!mGSMPhone.getForegroundCall().getConnections().isEmpty()); } @@ -902,7 +886,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase do { mRadioControl.progressConnectingCallState(); - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -912,9 +896,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_RINGING); + msg = mGSMTestHandler.waitForMessage(EVENT_RINGING); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); assertTrue(mGSMPhone.getRingingCall().isRinging()); @@ -927,7 +910,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("0"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getRingingCall().getState() == Call.State.WAITING); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); @@ -940,7 +923,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.switchHoldingAndActive(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() == Call.State.IDLE); @@ -952,7 +935,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("0"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() == Call.State.HOLDING); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); @@ -968,7 +951,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase do { mRadioControl.progressConnectingCallState(); - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -979,7 +962,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); do { - msg = mTestHandler.getNextMessage(); + msg = mGSMTestHandler.waitForMessage(ANY_MESSAGE); + assertNotNull("Message Time Out", msg); } while (msg.what != EVENT_RINGING); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); @@ -994,7 +978,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("1"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getRingingCall().getState() == Call.State.WAITING); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); @@ -1008,7 +992,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.switchHoldingAndActive(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() == Call.State.IDLE); assertEquals(Call.State.IDLE, mGSMPhone.getForegroundCall().getState()); @@ -1019,7 +1003,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("1"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() != Call.State.IDLE); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); @@ -1033,9 +1017,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("16505550100"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_RINGING); + msg = mGSMTestHandler.waitForMessage(EVENT_RINGING); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); assertTrue(mGSMPhone.getRingingCall().isRinging()); @@ -1048,7 +1031,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("12"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() == Call.State.ACTIVE); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); @@ -1060,7 +1043,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.acceptCall(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getState() != Phone.State.OFFHOOK); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); @@ -1075,7 +1058,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase do { mRadioControl.progressConnectingCallState(); - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE || mGSMPhone.getBackgroundCall().getState() != Call.State.HOLDING); @@ -1086,20 +1069,20 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // have the gsm index of 2 // Simulate entering "11" followed by SEND: release the call with - // gsm index equals to 1. This should not be allowed, and a + // gsm index equals to 1. This should not be allowed, and a // Supplementary Service notification must be received. mGSMPhone.handleInCallMmiCommands("11"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg != null && msg.what != SUPP_SERVICE_FAILED); + + msg = mGSMTestHandler.waitForMessage(SUPP_SERVICE_FAILED); + assertNotNull("Message Time Out", msg); assertFalse("IncallMmiCallWaiting: command should not work on holding call", msg == null); - + // Simulate entering "12" followed by SEND: release the call with // gsm index equals to 2. mGSMPhone.handleInCallMmiCommands("12"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() == Call.State.ACTIVE); assertEquals(Call.State.DISCONNECTED, mGSMPhone.getForegroundCall().getState()); @@ -1108,9 +1091,9 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Simulate entering 1 followed by SEND: release all active calls // (if any exist) and accepts the other (held or waiting) call. mGSMPhone.handleInCallMmiCommands("1"); - + do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() != Call.State.IDLE); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); @@ -1124,7 +1107,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("11"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() == Call.State.ACTIVE); assertEquals(Call.State.DISCONNECTED, mGSMPhone.getForegroundCall().getState()); @@ -1139,7 +1122,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase do { mRadioControl.progressConnectingCallState(); - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1149,9 +1132,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerRing("18005551212"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_RINGING); + msg = mGSMTestHandler.waitForMessage(EVENT_RINGING); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); assertTrue(mGSMPhone.getRingingCall().isRinging()); @@ -1166,7 +1148,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("2"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getRingingCall().getState() == Call.State.WAITING); @@ -1184,9 +1166,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // swap the active and holding calls mGSMPhone.handleInCallMmiCommands("2"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_PHONE_STATE_CHANGED); + msg = mGSMTestHandler.waitForMessage(EVENT_PHONE_STATE_CHANGED); + assertNotNull("Message Time Out", msg); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); assertEquals("13125551212", @@ -1199,7 +1180,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.conference(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() != Call.State.IDLE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1212,20 +1193,19 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Simulate entering "23" followed by SEND: places all active call // on hold except call 3. This should fail and a supplementary service // failed notification should be received. - + mGSMPhone.handleInCallMmiCommands("23"); - - do { - msg = mTestHandler.getNextMessage(); - } while (msg != null && msg.what != SUPP_SERVICE_FAILED); + + msg = mGSMTestHandler.waitForMessage(SUPP_SERVICE_FAILED); + assertNotNull("Message Time Out", msg); assertFalse("IncallMmiCallHold: separate should have failed!", msg == null); - + // Simulate entering "21" followed by SEND: places all active call // on hold except call 1. mGSMPhone.handleInCallMmiCommands("21"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() == Call.State.IDLE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1242,7 +1222,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase do { mRadioControl.progressConnectingCallState(); - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1253,7 +1233,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase do { mRadioControl.progressConnectingCallState(); - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1262,7 +1242,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("3"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() != Call.State.IDLE); assertEquals(Phone.State.OFFHOOK, mGSMPhone.getState()); @@ -1282,7 +1262,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase do { mRadioControl.progressConnectingCallState(); - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1297,7 +1277,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase do { mRadioControl.progressConnectingCallState(); - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1310,7 +1290,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.conference(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getBackgroundCall().getState() != Call.State.IDLE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1326,9 +1306,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // of 7 mRadioControl.triggerRing("18005551212"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_RINGING); + msg = mGSMTestHandler.waitForMessage(EVENT_RINGING); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.RINGING, mGSMPhone.getState()); assertTrue(mGSMPhone.getRingingCall().isRinging()); @@ -1341,7 +1320,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.acceptCall(); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getRingingCall().getState() != Call.State.IDLE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1354,7 +1333,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("17"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() == Call.State.ACTIVE); assertEquals(Call.State.DISCONNECTED, mGSMPhone.getForegroundCall().getState()); @@ -1366,7 +1345,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("1"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() != Call.State.ACTIVE); assertEquals(Call.State.ACTIVE, mGSMPhone.getForegroundCall().getState()); @@ -1375,7 +1354,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.handleInCallMmiCommands("16"); do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (mGSMPhone.getForegroundCall().getState() == Call.State.ACTIVE); assertEquals(Call.State.DISCONNECTED, mGSMPhone.getForegroundCall().getState()); @@ -1389,53 +1368,44 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.dial("+13125551212,1234;5N8xx"); - do { - msg = mTestHandler.getNextMessage(); - mRadioControl.progressConnectingToActive(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) (msg.obj); cn = (Connection) (ar.result); assertEquals(',', msg.arg1); assertEquals("1234;5N8", cn.getRemainingPostDialString()); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals('1', msg.arg1); ar = (AsyncResult) (msg.obj); assertEquals(Connection.PostDialState.STARTED, ar.userObj); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals('2', msg.arg1); ar = (AsyncResult) (msg.obj); assertEquals(Connection.PostDialState.STARTED, ar.userObj); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals('3', msg.arg1); ar = (AsyncResult) (msg.obj); assertEquals(Connection.PostDialState.STARTED, ar.userObj); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals('4', msg.arg1); ar = (AsyncResult) (msg.obj); assertEquals(Connection.PostDialState.STARTED, ar.userObj); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals(';', msg.arg1); ar = (AsyncResult) (msg.obj); cn = (Connection) (ar.result); @@ -1443,18 +1413,15 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase assertEquals(Connection.PostDialState.WAIT, ar.userObj); cn.proceedAfterWaitChar(); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals('5', msg.arg1); ar = (AsyncResult) (msg.obj); assertEquals(Connection.PostDialState.STARTED, ar.userObj); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); assertEquals('N', msg.arg1); ar = (AsyncResult) (msg.obj); cn = (Connection) (ar.result); @@ -1462,27 +1429,22 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase assertEquals(Connection.PostDialState.WILD, ar.userObj); cn.proceedAfterWildChar(",6;7"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) (msg.obj); cn = (Connection) (ar.result); assertEquals(',', msg.arg1); assertEquals("6;78", cn.getRemainingPostDialString()); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals('6', msg.arg1); ar = (AsyncResult) (msg.obj); assertEquals(Connection.PostDialState.STARTED, ar.userObj); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals(';', msg.arg1); ar = (AsyncResult) (msg.obj); cn = (Connection) (ar.result); @@ -1490,28 +1452,21 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase assertEquals(Connection.PostDialState.WAIT, ar.userObj); cn.proceedAfterWaitChar(); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals('7', msg.arg1); ar = (AsyncResult) (msg.obj); assertEquals(Connection.PostDialState.STARTED, ar.userObj); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals('8', msg.arg1); ar = (AsyncResult) (msg.obj); assertEquals(Connection.PostDialState.STARTED, ar.userObj); // Bogus chars at end should be ignored - - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals(0, msg.arg1); ar = (AsyncResult) (msg.obj); cn = (Connection) (ar.result); @@ -1530,16 +1485,11 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.progressConnectingToActive(); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); + assertNotNull("Message Time Out", msg); assertEquals(',', msg.arg1); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_POST_DIAL); - + msg = mGSMTestHandler.waitForMessage(EVENT_POST_DIAL); assertEquals('N', msg.arg1); ar = (AsyncResult) (msg.obj); cn = (Connection) (ar.result); @@ -1567,16 +1517,13 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Normally these failure conditions would happen in DIALING // not ALERTING do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (cn.getState() == Call.State.DIALING); mRadioControl.triggerHangupAll(); - - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); - + msg = mGSMTestHandler.waitForMessage(EVENT_DISCONNECT); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); assertEquals(Connection.DisconnectCause.NORMAL, cn.getDisconnectCause()); @@ -1608,16 +1555,13 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Normally these failure conditions would happen in DIALING // not ALERTING do { - mTestHandler.getNextMessage(); + assertNotNull("Message Time Out", mGSMTestHandler.waitForMessage(ANY_MESSAGE)); } while (cn.getState() == Call.State.DIALING); mRadioControl.triggerHangupAll(); - - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); - + msg = mGSMTestHandler.waitForMessage(EVENT_DISCONNECT); + assertNotNull("Message Time Out", msg); assertEquals(Phone.State.IDLE, mGSMPhone.getState()); assertEquals(Connection.DisconnectCause.BUSY, cn.getDisconnectCause()); @@ -1650,7 +1594,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Normally these failure conditions would happen in DIALING // not ALERTING do { - mTestHandler.getNextMessage(); + msg = mGSMTestHandler.waitForMessage(ANY_MESSAGE); + assertNotNull("Message Time Out", msg); } while (cn.getState() == Call.State.DIALING); @@ -1659,7 +1604,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Unlike the while loops above, this one waits // for a "phone state changed" message back to "idle" do { - msg = mTestHandler.getNextMessage(); + msg = mGSMTestHandler.waitForMessage(ANY_MESSAGE); + assertNotNull("Message Time Out", msg); } while (!(msg.what == EVENT_PHONE_STATE_CHANGED && mGSMPhone.getState() == Phone.State.IDLE)); @@ -1696,10 +1642,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mRadioControl.triggerSsn(type, code); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_SSN); - + msg = mGSMTestHandler.waitForMessage(EVENT_SSN); + assertNotNull("Message Time Out", msg); AsyncResult ar = (AsyncResult) msg.obj; assertNull(ar.exception); @@ -1714,7 +1658,7 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase public void testUssd() throws Exception { // Quick hack to work around a race condition in this test: // We may initiate a USSD MMI before GSMPhone receives its initial - // EVENT_RADIO_OFF_OR_NOT_AVAILABLE event. When the phone sees this + // GSMTestHandler.EVENT_RADIO_OFF_OR_NOT_AVAILABLE event. When the phone sees this // event, it will cancel the just issued USSD MMI, which we don't // want. So sleep a little first. try { @@ -1735,10 +1679,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Receive an incoming NOTIFY mRadioControl.triggerIncomingUssd("0", "NOTIFY message"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_COMPLETE); - + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_COMPLETE); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) msg.obj; mmi = (MmiCode) ar.result; @@ -1746,29 +1688,23 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Receive a REQUEST and send response mRadioControl.triggerIncomingUssd("1", "REQUEST Message"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_COMPLETE); + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_COMPLETE); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) msg.obj; mmi = (MmiCode) ar.result; assertTrue(mmi.isUssdRequest()); mGSMPhone.sendUssdResponse("## TEST: TEST_GSMPhone responding..."); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_INITIATE); - + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_INITIATE); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) msg.obj; mmi = (MmiCode) ar.result; GsmMmiCode gsmMmi = (GsmMmiCode) mmi; assertTrue(gsmMmi.isPendingUSSD()); - - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_COMPLETE); - + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_COMPLETE); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) msg.obj; mmi = (MmiCode) ar.result; @@ -1777,19 +1713,16 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // Receive a REQUEST and cancel mRadioControl.triggerIncomingUssd("1", "REQUEST Message"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_COMPLETE); + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_COMPLETE); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) msg.obj; mmi = (MmiCode) ar.result; assertTrue(mmi.isUssdRequest()); mmi.cancel(); - - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_COMPLETE); + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_COMPLETE); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) msg.obj; mmi = (MmiCode) ar.result; @@ -1808,13 +1741,11 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase mGSMPhone.dial("#646#"); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_INITIATE); + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_INITIATE); + assertNotNull("Message Time Out", msg); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_COMPLETE); + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_COMPLETE); + assertNotNull("Message Time Out", msg); ar = (AsyncResult) msg.obj; mmi = (MmiCode) ar.result; @@ -1842,13 +1773,11 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase assertTrue(mmi.isCancelable()); mmi.cancel(); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_INITIATE); + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_INITIATE); + assertNotNull("Message Time Out", msg); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_COMPLETE); + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_COMPLETE); + assertNotNull("Message Time Out", msg); AsyncResult ar = (AsyncResult) msg.obj; mmi = (MmiCode) ar.result; @@ -1867,11 +1796,10 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // null byte array - mGSMPhone.invokeOemRilRequestRaw(null, mTestHandler.hh.obtainMessage(999)); + mGSMPhone.invokeOemRilRequestRaw(null, mHandler.obtainMessage(EVENT_OEM_RIL_MESSAGE)); - do { - msg = mTestHandler.getNextMessage(); - } while (!(msg.what == 999)); + msg = mGSMTestHandler.waitForMessage(EVENT_OEM_RIL_MESSAGE); + assertNotNull("Message Time Out", msg); ar = ((AsyncResult) msg.obj); @@ -1880,11 +1808,10 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // empty byte array - mGSMPhone.invokeOemRilRequestRaw(new byte[0], mTestHandler.hh.obtainMessage(999)); + mGSMPhone.invokeOemRilRequestRaw(new byte[0], mHandler.obtainMessage(EVENT_OEM_RIL_MESSAGE)); - do { - msg = mTestHandler.getNextMessage(); - } while (!(msg.what == 999)); + msg = mGSMTestHandler.waitForMessage(EVENT_OEM_RIL_MESSAGE); + assertNotNull("Message Time Out", msg); ar = ((AsyncResult) msg.obj); @@ -1894,11 +1821,10 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // byte array with data mGSMPhone.invokeOemRilRequestRaw("Hello".getBytes("utf-8"), - mTestHandler.hh.obtainMessage(999)); + mHandler.obtainMessage(EVENT_OEM_RIL_MESSAGE)); - do { - msg = mTestHandler.getNextMessage(); - } while (!(msg.what == 999)); + msg = mGSMTestHandler.waitForMessage(EVENT_OEM_RIL_MESSAGE); + assertNotNull("Message Time Out", msg); ar = ((AsyncResult) msg.obj); @@ -1907,11 +1833,10 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // null strings - mGSMPhone.invokeOemRilRequestStrings(null, mTestHandler.hh.obtainMessage(999)); + mGSMPhone.invokeOemRilRequestStrings(null, mHandler.obtainMessage(EVENT_OEM_RIL_MESSAGE)); - do { - msg = mTestHandler.getNextMessage(); - } while (!(msg.what == 999)); + msg = mGSMTestHandler.waitForMessage(EVENT_OEM_RIL_MESSAGE); + assertNotNull("Message Time Out", msg); ar = ((AsyncResult) msg.obj); @@ -1921,11 +1846,10 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase // empty byte array mGSMPhone.invokeOemRilRequestStrings(new String[0], - mTestHandler.hh.obtainMessage(999)); + mHandler.obtainMessage(EVENT_OEM_RIL_MESSAGE)); - do { - msg = mTestHandler.getNextMessage(); - } while (!(msg.what == 999)); + msg = mGSMTestHandler.waitForMessage(EVENT_OEM_RIL_MESSAGE); + assertNotNull("Message Time Out", msg); ar = ((AsyncResult) msg.obj); @@ -1938,11 +1862,10 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase s[0] = "Hello"; - mGSMPhone.invokeOemRilRequestStrings(s, mTestHandler.hh.obtainMessage(999)); + mGSMPhone.invokeOemRilRequestStrings(s, mHandler.obtainMessage(EVENT_OEM_RIL_MESSAGE)); - do { - msg = mTestHandler.getNextMessage(); - } while (!(msg.what == 999)); + msg = mGSMTestHandler.waitForMessage(EVENT_OEM_RIL_MESSAGE); + assertNotNull("Message Time Out", msg); ar = ((AsyncResult) msg.obj); @@ -1976,21 +1899,15 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase private void runValidMmi(String dialString, boolean cancelable) throws CallStateException { Connection c = mGSMPhone.dial(dialString); assertNull(c); - - Message msg; - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_INITIATE); - + Message msg = mGSMTestHandler.waitForMessage(EVENT_MMI_INITIATE); + assertNotNull("Message Time Out", msg); // Should not be cancelable. AsyncResult ar = (AsyncResult) msg.obj; MmiCode mmi = (MmiCode) ar.result; assertEquals(cancelable, mmi.isCancelable()); - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_MMI_COMPLETE); - + msg = mGSMTestHandler.waitForMessage(EVENT_MMI_COMPLETE); + assertNotNull("Message Time Out", msg); } private void runValidMmiWithConnect(String dialString) throws CallStateException { @@ -2006,11 +1923,8 @@ public class GSMPhoneTest extends AndroidTestCase implements PerformanceTestCase cn.hangup(); mRadioControl.resumeResponses(); + assertNotNull(mGSMTestHandler.waitForMessage(EVENT_DISCONNECT)); - Message msg; - do { - msg = mTestHandler.getNextMessage(); - } while (msg.what != EVENT_DISCONNECT); } private void runNotMmi(String dialString) throws CallStateException { diff --git a/tests/CoreTests/com/android/internal/telephony/gsm/GSMTestHandler.java b/tests/CoreTests/com/android/internal/telephony/gsm/GSMTestHandler.java new file mode 100644 index 0000000..fb8a5d9 --- /dev/null +++ b/tests/CoreTests/com/android/internal/telephony/gsm/GSMTestHandler.java @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.telephony.gsm; + +import android.content.Context; + +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Looper; +import android.os.Message; +import android.util.Log; + +import com.android.internal.telephony.gsm.GSMPhone; +import com.android.internal.telephony.test.SimulatedCommands; +import com.android.internal.telephony.TestPhoneNotifier; + +/** + * This class creates a HandlerThread which waits for the various messages. + */ +public class GSMTestHandler extends HandlerThread implements Handler.Callback { + + private Handler mHandler; + private Message mCurrentMessage; + + private Boolean mMsgConsumed; + private SimulatedCommands sc; + private GSMPhone mGSMPhone; + private Context mContext; + + private static final int FAIL_TIMEOUT_MILLIS = 5 * 1000; + + public GSMTestHandler(Context context) { + super("GSMPhoneTest"); + mMsgConsumed = false; + mContext = context; + } + + @Override + protected void onLooperPrepared() { + sc = new SimulatedCommands(); + mGSMPhone = new GSMPhone(mContext, sc, new TestPhoneNotifier(), true); + mHandler = new Handler(getLooper(), this); + synchronized (this) { + notifyAll(); + } + } + + public boolean handleMessage(Message msg) { + synchronized (this) { + mCurrentMessage = msg; + this.notifyAll(); + while(!mMsgConsumed) { + try { + this.wait(); + } catch (InterruptedException e) {} + } + mMsgConsumed = false; + } + return true; + } + + + public void cleanup() { + Looper looper = getLooper(); + if (looper != null) looper.quit(); + mHandler = null; + } + + public Handler getHandler() { + return mHandler; + } + + public SimulatedCommands getSimulatedCommands() { + return sc; + } + + public GSMPhone getGSMPhone() { + return mGSMPhone; + } + + public Message waitForMessage(int code) { + Message msg; + while(true) { + msg = null; + synchronized (this) { + try { + this.wait(FAIL_TIMEOUT_MILLIS); + } catch (InterruptedException e) { + } + + // Check if timeout has occurred. + if (mCurrentMessage != null) { + // Consume the message + msg = Message.obtain(); + msg.copyFrom(mCurrentMessage); + mCurrentMessage = null; + mMsgConsumed = true; + this.notifyAll(); + } + } + if (msg == null || code == GSMPhoneTest.ANY_MESSAGE || msg.what == code) return msg; + } + } +} diff --git a/tests/CoreTests/com/android/internal/telephony/gsm/SMSDispatcherTest.java b/tests/CoreTests/com/android/internal/telephony/gsm/SMSDispatcherTest.java index 84974ef..6db230f 100644 --- a/tests/CoreTests/com/android/internal/telephony/gsm/SMSDispatcherTest.java +++ b/tests/CoreTests/com/android/internal/telephony/gsm/SMSDispatcherTest.java @@ -16,7 +16,6 @@ package com.android.internal.telephony.gsm; -import android.core.TestHandler; import android.test.suitebuilder.annotation.MediumTest; import com.android.internal.telephony.TestPhoneNotifier; import com.android.internal.telephony.test.SimulatedCommands; @@ -38,24 +37,24 @@ public class SMSDispatcherTest extends AndroidTestCase { Iterator elements; String[] lines = new String[2]; - - lines[0] = "+CMT: ,158"; + + lines[0] = "+CMT: ,158"; lines[1] = "07914140279510F6440A8111110301003BF56080426101748A8C0B05040B" + "8423F000035502010106276170706C69636174696F6E2F766E642E776170" + "2E6D6D732D6D65737361676500AF848D0185B4848C8298524F347839776F" + "7547514D4141424C3641414141536741415A4B554141414141008D908918" + "802B31363530323438363137392F545950453D504C4D4E008A808E028000" + "88058103093A8083687474703A2F2F36"; - + sms = SmsMessage.newFromCMT(lines); header = sms.getUserDataHeader(); assertNotNull(header); assertNotNull(sms.getUserData()); - + elements = header.getElements().iterator(); assertNotNull(elements); } - + @MediumTest public void testCMT2() throws Exception { SmsMessage sms; @@ -63,7 +62,7 @@ public class SMSDispatcherTest extends AndroidTestCase { Iterator elements; String[] lines = new String[2]; - + lines[0] = "+CMT: ,77"; lines[1] = "07914140279510F6440A8111110301003BF56080426101848A3B0B05040B8423F" @@ -75,7 +74,7 @@ public class SMSDispatcherTest extends AndroidTestCase { System.out.println("header = " + header); assertNotNull(header); assertNotNull(sms.getUserData()); - + elements = header.getElements().iterator(); assertNotNull(elements); } diff --git a/tests/CoreTests/com/android/internal/telephony/gsm/SimPhoneBookTest.java b/tests/CoreTests/com/android/internal/telephony/gsm/SimPhoneBookTest.java index 53fdd51..db55bca 100644 --- a/tests/CoreTests/com/android/internal/telephony/gsm/SimPhoneBookTest.java +++ b/tests/CoreTests/com/android/internal/telephony/gsm/SimPhoneBookTest.java @@ -16,7 +16,6 @@ package com.android.internal.telephony.gsm; -import android.core.TestHandler; import android.os.ServiceManager; import android.test.suitebuilder.annotation.Suppress; @@ -48,21 +47,21 @@ public class SimPhoneBookTest extends TestCase { AdnRecord originalAdn = null; // We need to maintain the state of the SIM before and after the test. // Since this test doesn't mock the SIM we try to get a valid ADN record, - // for 3 tries and if this fails, we bail out. + // for 3 tries and if this fails, we bail out. for (adnIndex = 3 ; adnIndex >= 1; adnIndex--) { listIndex = adnIndex - 1; // listIndex is zero based. originalAdn = adnRecordList.get(listIndex); assertNotNull("Original Adn is Null.", originalAdn); assertNotNull("Original Adn alpha tag is null.", originalAdn.getAlphaTag()); assertNotNull("Original Adn number is null.", originalAdn.getNumber()); - - if (originalAdn.getNumber().length() > 0 && - originalAdn.getAlphaTag().length() > 0) { + + if (originalAdn.getNumber().length() > 0 && + originalAdn.getAlphaTag().length() > 0) { break; } } if (adnIndex == 0) return; - + AdnRecord emptyAdn = new AdnRecord("", ""); AdnRecord firstAdn = new AdnRecord("John", "4085550101"); AdnRecord secondAdn = new AdnRecord("Andy", "6505550102"); diff --git a/tests/FrameworkTest/AndroidManifest.xml b/tests/FrameworkTest/AndroidManifest.xml index c0824c0..c70302b 100644 --- a/tests/FrameworkTest/AndroidManifest.xml +++ b/tests/FrameworkTest/AndroidManifest.xml @@ -571,6 +571,14 @@ + + + + + + + + diff --git a/tests/FrameworkTest/src/com/android/frameworktest/listview/ListWithFirstScreenUnSelectable.java b/tests/FrameworkTest/src/com/android/frameworktest/listview/ListWithFirstScreenUnSelectable.java new file mode 100644 index 0000000..4ad72fd --- /dev/null +++ b/tests/FrameworkTest/src/com/android/frameworktest/listview/ListWithFirstScreenUnSelectable.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.frameworktest.listview; + +import com.android.frameworktest.util.ListScenario; + +/** + * The first item is unselectable, and takes up the whole screen. + */ +public class ListWithFirstScreenUnSelectable extends ListScenario { + + @Override + protected void init(Params params) { + params.setItemScreenSizeFactor(1.2) + .setNumItems(2) + .setPositionsUnselectable(0); + + } +} diff --git a/tests/FrameworkTest/tests/src/com/android/frameworktest/focus/ScrollingThroughListOfFocusablesTest.java b/tests/FrameworkTest/tests/src/com/android/frameworktest/focus/ScrollingThroughListOfFocusablesTest.java index 2134e04..07916ee 100644 --- a/tests/FrameworkTest/tests/src/com/android/frameworktest/focus/ScrollingThroughListOfFocusablesTest.java +++ b/tests/FrameworkTest/tests/src/com/android/frameworktest/focus/ScrollingThroughListOfFocusablesTest.java @@ -87,9 +87,12 @@ public class ScrollingThroughListOfFocusablesTest extends InstrumentationTestCas assertEquals(0, mListView.getSelectedItemPosition()); InternalSelectionView view = (InternalSelectionView) mListView.getSelectedView(); - assertEquals("bottom of view should be just above fading edge", - mListView.getBottom() - mListView.getVerticalFadingEdgeLength(), - view.getBottom()); + + // 1 pixel tolerance in case height / 4 is not an even number + final int fadingEdge = mListView.getBottom() - mListView.getVerticalFadingEdgeLength(); + assertTrue("bottom of view should be just above fading edge", + view.getBottom() >= fadingEdge - 1 && + view.getBottom() <= fadingEdge); } @@ -138,9 +141,9 @@ public class ScrollingThroughListOfFocusablesTest extends InstrumentationTestCas view.getRectForRow(mTempRect, mNumRowsPerItem - 1); mListView.offsetDescendantRectToMyCoords(view, mTempRect); - assertEquals("bottom of last row of last item should be at " + + assertTrue("bottom of last row of last item should be at " + "the bottom of the list view (no fading edge)", - mListView.getBottom(), mTempRect.bottom); + mListView.getBottom() - mListView.getVerticalFadingEdgeLength() < mTempRect.bottom); } @LargeTest diff --git a/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/arrowscroll/ListWithFirstScreenUnSelectableTest.java b/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/arrowscroll/ListWithFirstScreenUnSelectableTest.java new file mode 100644 index 0000000..307c39d --- /dev/null +++ b/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/arrowscroll/ListWithFirstScreenUnSelectableTest.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.frameworktest.listview.arrowscroll; + +import com.android.frameworktest.listview.ListWithFirstScreenUnSelectable; +import android.test.ActivityInstrumentationTestCase2; +import android.view.KeyEvent; +import android.widget.ListView; +import android.widget.AdapterView; + +public class ListWithFirstScreenUnSelectableTest + extends ActivityInstrumentationTestCase2 { + private ListView mListView; + + public ListWithFirstScreenUnSelectableTest() { + super("com.android.frameworktest", ListWithFirstScreenUnSelectable.class); + } + + protected void setUp() throws Exception { + super.setUp(); + + setActivityInitialTouchMode(true); + + mListView = getActivity().getListView(); + } + + public void testPreconditions() { + assertTrue(mListView.isInTouchMode()); + assertEquals(1, mListView.getChildCount()); + assertFalse(mListView.getAdapter().isEnabled(0)); + assertEquals(AdapterView.INVALID_POSITION, mListView.getSelectedItemPosition()); + } + + public void testRessurectSelection() { + sendKeys(KeyEvent.KEYCODE_SPACE); + assertEquals(AdapterView.INVALID_POSITION, mListView.getSelectedItemPosition()); + } + + public void testScrollUpDoesNothing() { + sendKeys(KeyEvent.KEYCODE_DPAD_UP); + assertEquals(AdapterView.INVALID_POSITION, mListView.getSelectedItemPosition()); + assertEquals(1, mListView.getChildCount()); + assertEquals(0, mListView.getFirstVisiblePosition()); + } + + public void testScrollDownPansNextItemOn() { + sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); + assertEquals(2, mListView.getChildCount()); + } +} -- cgit v1.1