19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.app.activity; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.Activity; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.BroadcastReceiver; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ComponentName; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.IntentFilter; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Binder; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Handler; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Message; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.PerformanceTestCase; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass MyBadParcelable implements Parcelable { 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MyBadParcelable() { 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel out, int flags) { 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString("I am bad"); 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<MyBadParcelable> CREATOR 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<MyBadParcelable>() { 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MyBadParcelable createFromParcel(Parcel in) { 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new MyBadParcelable(in); 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MyBadParcelable[] newArray(int size) { 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new MyBadParcelable[size]; 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MyBadParcelable(Parcel in) { 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String nm = in.readString(); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class LaunchpadActivity extends Activity { 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface CallingTest extends PerformanceTestCase.Intermediates { 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void startTiming(boolean realTime); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void addIntermediate(String name); 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void addIntermediate(String name, long timeInNS); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void finishTiming(boolean realTime); 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void activityFinished(int resultCode, Intent data, 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RuntimeException where); 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Also used as the Binder interface descriptor string in these tests 741a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen public static final String LAUNCH = "com.android.frameworks.coretests.activity.LAUNCH"; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String FORWARD_RESULT = 771a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.FORWARD_RESULT"; 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String RETURNED_RESULT = 791a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.RETURNED_RESULT"; 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BAD_PARCELABLE = 821a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "comcom.android.frameworks.coretests.activity.BAD_PARCELABLE"; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int LAUNCHED_RESULT = 1; 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FORWARDED_RESULT = 2; 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIFECYCLE_BASIC = 881a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.LIFECYCLE_BASIC"; 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIFECYCLE_SCREEN = 901a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.LIFECYCLE_SCREEN"; 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIFECYCLE_DIALOG = 921a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.LIFECYCLE_DIALOG"; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIFECYCLE_FINISH_CREATE = 941a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.LIFECYCLE_FINISH_CREATE"; 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIFECYCLE_FINISH_START = 961a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.LIFECYCLE_FINISH_START"; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_REGISTERED = 991a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_REGISTERED"; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_LOCAL = 1011a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_LOCAL"; 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_REMOTE = 1031a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_REMOTE"; 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_ALL = 1051a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_ALL"; 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_REPEAT = 1071a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_REPEAT"; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_MULTI = 1091a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_MULTI"; 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_ABORT = 1111a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_ABORT"; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_STICKY1 = 1141a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_STICKY1"; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String BROADCAST_STICKY2 = 1161a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen "com.android.frameworks.coretests.activity.BROADCAST_STICKY2"; 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String RECEIVER_REG = "receiver-reg"; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String RECEIVER_LOCAL = "receiver-local"; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String RECEIVER_REMOTE = "receiver-remote"; 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String RECEIVER_ABORT = "receiver-abort"; 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DATA_1 = "one"; 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DATA_2 = "two"; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ON_START = "onStart"; 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ON_RESTART = "onRestart"; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ON_RESUME = "onResume"; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ON_FREEZE = "onSaveInstanceState"; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ON_PAUSE = "onPause"; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ON_STOP = "onStop"; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ON_DESTROY = "onDestroy"; 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DO_FINISH = "finish"; 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DO_LOCAL_SCREEN = "local-screen"; 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DO_LOCAL_DIALOG = "local-dialog"; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mBadParcelable = false; 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mStarted = false; 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private long mStartTime; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mResultCode = RESULT_CANCELED; 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Intent mData = (new Intent()).setAction("No result received"); 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private RuntimeException mResultStack = null; 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String[] mExpectedLifecycle = null; 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mNextLifecycle; 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String[] mExpectedReceivers = null; 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mNextReceiver; 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String[] mExpectedData = null; 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean[] mReceivedData = null; 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean mReceiverRegistered = false; 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static CallingTest sCallingTest = null; 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void setCallingTest(CallingTest ct) { 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest = ct; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public LaunchpadActivity() { 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mStartTime = System.currentTimeMillis(); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onCreate(Bundle icicle) { 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onCreate(icicle); 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String action = getIntent().getAction(); 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ActivityTests.DEBUG_LIFECYCLE) Log.v("test", "CREATE lauchpad " 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) + ": " + getIntent()); 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (LIFECYCLE_BASIC.equals(action)) { 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedLifecycle(new String[]{ON_START, ON_RESUME, 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DO_FINISH, ON_PAUSE, ON_STOP, ON_DESTROY}); 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (LIFECYCLE_SCREEN.equals(action)) { 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedLifecycle(new String[]{ON_START, ON_RESUME, 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DO_LOCAL_SCREEN, ON_FREEZE, ON_PAUSE, ON_STOP, 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ON_RESTART, ON_START, ON_RESUME, 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DO_FINISH, ON_PAUSE, ON_STOP, ON_DESTROY}); 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (LIFECYCLE_DIALOG.equals(action)) { 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedLifecycle(new String[]{ON_START, ON_RESUME, 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DO_LOCAL_DIALOG, ON_FREEZE, ON_PAUSE, ON_RESUME, 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DO_FINISH, ON_PAUSE, ON_STOP, ON_DESTROY}); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (LIFECYCLE_FINISH_CREATE.equals(action)) { 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // This one behaves a little differently when running in a group. 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (getParent() == null) { 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedLifecycle(new String[]{ON_DESTROY}); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedLifecycle(new String[]{ON_START, ON_STOP, ON_DESTROY}); 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finish(); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (LIFECYCLE_FINISH_START.equals(action)) { 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedLifecycle(new String[]{ON_START, DO_FINISH, 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ON_STOP, ON_DESTROY}); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onStart() { 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onStart(); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ActivityTests.DEBUG_LIFECYCLE) Log.v("test", "START lauchpad " 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) + ": " + getIntent()); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project checkLifecycle(ON_START); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onRestart() { 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onStart(); 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project checkLifecycle(ON_RESTART); 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onResume() { 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onResume(); 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ActivityTests.DEBUG_LIFECYCLE) Log.v("test", "RESUME lauchpad " 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) + ": " + getIntent()); 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project checkLifecycle(ON_RESUME); 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!mStarted) { 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mStarted = true; 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHandler.postDelayed(mTimeout, 5 * 1000); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String action = getIntent().getAction(); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.startTiming(true); 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (LAUNCH.equals(action)) { 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = getIntent(); 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.setFlags(0); 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.setComponent((ComponentName) 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.getParcelableExtra("component")); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //System.out.println("*** Launchpad is starting: comp=" + intent.component); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project startActivityForResult(intent, LAUNCHED_RESULT); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (FORWARD_RESULT.equals(action)) { 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = getIntent(); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.setFlags(0); 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.setClass(this, LocalScreen.class); 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project startActivityForResult(intent, FORWARDED_RESULT); 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BAD_PARCELABLE.equals(action)) { 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mBadParcelable = true; 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = getIntent(); 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.setFlags(0); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.setClass(this, LocalScreen.class); 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project startActivityForResult(intent, LAUNCHED_RESULT); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BROADCAST_REGISTERED.equals(action)) { 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedReceivers(new String[]{RECEIVER_REG}); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project registerMyReceiver(new IntentFilter(BROADCAST_REGISTERED)); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.addIntermediate("after-register"); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendBroadcast(makeBroadcastIntent(BROADCAST_REGISTERED)); 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BROADCAST_LOCAL.equals(action)) { 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedReceivers(new String[]{RECEIVER_LOCAL}); 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendBroadcast(makeBroadcastIntent(BROADCAST_LOCAL)); 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BROADCAST_REMOTE.equals(action)) { 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedReceivers(new String[]{RECEIVER_REMOTE}); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendBroadcast(makeBroadcastIntent(BROADCAST_REMOTE)); 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BROADCAST_ALL.equals(action)) { 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedReceivers(new String[]{ 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL}); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project registerMyReceiver(new IntentFilter(BROADCAST_ALL)); 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.addIntermediate("after-register"); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BROADCAST_MULTI.equals(action)) { 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedReceivers(new String[]{ 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL, 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL, 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL, 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_LOCAL, RECEIVER_REMOTE, 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_LOCAL, RECEIVER_REMOTE, 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL, 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL, 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL, 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_LOCAL, 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_LOCAL}); 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project registerMyReceiver(new IntentFilter(BROADCAST_ALL)); 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.addIntermediate("after-register"); 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_LOCAL), null); 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_REMOTE), null); 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_LOCAL), null); 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_REMOTE), null); 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null); 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null); 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null); 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_REPEAT), null); 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BROADCAST_ABORT.equals(action)) { 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedReceivers(new String[]{ 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RECEIVER_REMOTE, RECEIVER_ABORT}); 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project registerMyReceiver(new IntentFilter(BROADCAST_ABORT)); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.addIntermediate("after-register"); 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ABORT), null); 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BROADCAST_STICKY1.equals(action)) { 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedReceivers(new String[]{RECEIVER_REG}); 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedData(new String[]{DATA_1}); 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project registerMyReceiver(new IntentFilter(BROADCAST_STICKY1)); 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.addIntermediate("after-register"); 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (BROADCAST_STICKY2.equals(action)) { 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedReceivers(new String[]{RECEIVER_REG, RECEIVER_REG}); 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setExpectedData(new String[]{DATA_1, DATA_2}); 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IntentFilter filter = new IntentFilter(BROADCAST_STICKY1); 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project filter.addAction(BROADCAST_STICKY2); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project registerMyReceiver(filter); 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.addIntermediate("after-register"); 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onSaveInstanceState(Bundle icicle) { 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onSaveInstanceState(icicle); 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project checkLifecycle(ON_FREEZE); 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mBadParcelable) { 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project icicle.putParcelable("baddy", new MyBadParcelable()); 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onPause() { 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onPause(); 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ActivityTests.DEBUG_LIFECYCLE) Log.v("test", "PAUSE lauchpad " 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) + ": " + getIntent()); 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project checkLifecycle(ON_PAUSE); 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onStop() { 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onStop(); 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ActivityTests.DEBUG_LIFECYCLE) Log.v("test", "STOP lauchpad " 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) + ": " + getIntent()); 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project checkLifecycle(ON_STOP); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onActivityResult(int requestCode, int resultCode, 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent data) { 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (requestCode) { 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case LAUNCHED_RESULT: 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.finishTiming(true); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishWithResult(resultCode, data); 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case FORWARDED_RESULT: 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.finishTiming(true); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RETURNED_RESULT.equals(data.getAction())) { 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishWithResult(resultCode, data); 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishWithResult(RESULT_CANCELED, (new Intent()).setAction( 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Bad data returned: " + data)); 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.finishTiming(true); 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishWithResult(RESULT_CANCELED, (new Intent()).setAction( 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Unexpected request code: " + requestCode)); 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onDestroy() { 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onDestroy(); 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ActivityTests.DEBUG_LIFECYCLE) Log.v("test", "DESTROY lauchpad " 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) + ": " + getIntent()); 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project checkLifecycle(ON_DESTROY); 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.activityFinished(mResultCode, mData, mResultStack); 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void setExpectedLifecycle(String[] lifecycle) { 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mExpectedLifecycle = lifecycle; 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextLifecycle = 0; 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void checkLifecycle(String where) { 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mExpectedLifecycle == null) return; 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNextLifecycle >= mExpectedLifecycle.length) { 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad("Activity lifecycle incorrect: received " + where 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " but don't expect any more calls"); 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mExpectedLifecycle = null; 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!mExpectedLifecycle[mNextLifecycle].equals(where)) { 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad("Activity lifecycle incorrect: received " + where 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " but expected " + mExpectedLifecycle[mNextLifecycle] 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " at " + mNextLifecycle); 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mExpectedLifecycle = null; 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextLifecycle++; 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNextLifecycle >= mExpectedLifecycle.length) { 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setTestResult(RESULT_OK, null); 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String next = mExpectedLifecycle[mNextLifecycle]; 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (where.equals(ON_DESTROY)) { 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad("Activity lifecycle incorrect: received " + where 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " but expected more actions (next is " + next + ")"); 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mExpectedLifecycle = null; 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (next.equals(DO_FINISH)) { 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextLifecycle++; 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNextLifecycle >= mExpectedLifecycle.length) { 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setTestResult(RESULT_OK, null); 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!isFinishing()) { 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finish(); 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (next.equals(DO_LOCAL_SCREEN)) { 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextLifecycle++; 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = new Intent(TestedScreen.WAIT_BEFORE_FINISH); 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.setClass(this, LocalScreen.class); 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project startActivity(intent); 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (next.equals(DO_LOCAL_DIALOG)) { 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextLifecycle++; 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = new Intent(TestedScreen.WAIT_BEFORE_FINISH); 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.setClass(this, LocalDialog.class); 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project startActivity(intent); 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void setExpectedReceivers(String[] receivers) { 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mExpectedReceivers = receivers; 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextReceiver = 0; 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void setExpectedData(String[] data) { 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mExpectedData = data; 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mReceivedData = new boolean[data.length]; 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Intent makeBroadcastIntent(String action) { 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = new Intent(action, null); 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.putExtra("caller", mCallTarget); 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return intent; 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void finishGood() { 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishWithResult(RESULT_OK, null); 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void finishBad(String error) { 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishWithResult(RESULT_CANCELED, (new Intent()).setAction(error)); 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void finishWithResult(int resultCode, Intent data) { 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setTestResult(resultCode, data); 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finish(); 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void setTestResult(int resultCode, Intent data) { 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHandler.removeCallbacks(mTimeout); 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unregisterMyReceiver(); 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mResultCode = resultCode; 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mData = data; 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mResultStack = new RuntimeException("Original error was here"); 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mResultStack.fillInStackTrace(); 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void registerMyReceiver(IntentFilter filter) { 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mReceiverRegistered = true; 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //System.out.println("Registering: " + mReceiver); 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project registerReceiver(mReceiver, filter); 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unregisterMyReceiver() { 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mReceiverRegistered) { 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mReceiverRegistered = false; 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //System.out.println("Unregistering: " + mReceiver); 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unregisterReceiver(mReceiver); 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Handler mHandler = new Handler() { 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void handleMessage(Message msg) { 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int GOT_RECEIVE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION; 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int ERROR_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 1; 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Binder mCallTarget = new Binder() { 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean onTransact(int code, Parcel data, Parcel reply, int flags) { 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.setDataPosition(0); 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(LaunchpadActivity.LAUNCH); 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (code == GOT_RECEIVE_TRANSACTION) { 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String name = data.readString(); 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gotReceive(name, null); 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (code == ERROR_TRANSACTION) { 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad(data.readString()); 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final void gotReceive(String name, Intent intent) { 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (this) { 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //System.out.println("Got receive: " + name); 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //System.out.println(mNextReceiver + " in " + mExpectedReceivers); 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //new RuntimeException("stack").printStackTrace(); 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.addIntermediate(mNextReceiver + "-" + name); 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mExpectedData != null) { 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int n = mExpectedData.length; 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i; 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean prev = false; 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (i = 0; i < n; i++) { 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mExpectedData[i].equals(intent.getStringExtra("test"))) { 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mReceivedData[i]) { 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project prev = true; 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project continue; 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mReceivedData[i] = true; 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (i >= n) { 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (prev) { 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad("Receive got data too many times: " 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + intent.getStringExtra("test")); 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad("Receive got unexpected data: " 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + intent.getStringExtra("test")); 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNextReceiver >= mExpectedReceivers.length) { 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad("Got too many onReceiveIntent() calls!"); 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// System.out.println("Too many intents received: now at " 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// + mNextReceiver + ", expect list: " 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// + Arrays.toString(mExpectedReceivers)); 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (!mExpectedReceivers[mNextReceiver].equals(name)) { 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad("Receive out of order: got " + name + " but expected " 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + mExpectedReceivers[mNextReceiver] + " at " 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + mNextReceiver); 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextReceiver++; 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNextReceiver == mExpectedReceivers.length) { 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHandler.post(mUnregister); 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Runnable mUnregister = new Runnable() { 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void run() { 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mReceiverRegistered) { 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.addIntermediate("before-unregister"); 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unregisterMyReceiver(); 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sCallingTest.finishTiming(true); 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishGood(); 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Runnable mTimeout = new Runnable() { 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void run() { 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i("foo", "**** TIMEOUT"); 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String msg = "Timeout"; 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mExpectedReceivers != null 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && mNextReceiver < mExpectedReceivers.length) { 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project msg = msg + " waiting for " + mExpectedReceivers[mNextReceiver]; 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project finishBad(msg); 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private BroadcastReceiver mReceiver = new BroadcastReceiver() { 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void onReceive(Context context, Intent intent) { 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //System.out.println("Receive in: " + this + ": " + intent); 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gotReceive(RECEIVER_REG, intent); 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589