1f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project/* 2f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 4f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * you may not use this file except in compliance with the License. 6f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * You may obtain a copy of the License at 7f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 8f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 10f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * See the License for the specific language governing permissions and 14f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * limitations under the License. 15f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project */ 16f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 17f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectpackage android.app.cts; 18f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 19f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.app.PendingIntent; 20f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.app.PendingIntent.CanceledException; 219bdd69b9a2abca592439124afdbe13cdf8c66903Stuart Scottimport android.app.stubs.MockReceiver; 229bdd69b9a2abca592439124afdbe13cdf8c66903Stuart Scottimport android.app.stubs.MockService; 239bdd69b9a2abca592439124afdbe13cdf8c66903Stuart Scottimport android.app.stubs.PendingIntentStubActivity; 24f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.content.Context; 25f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.content.Intent; 26f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.os.Bundle; 27f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.os.Handler; 288151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubachimport android.os.Looper; 29f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.os.Message; 30f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.os.Parcel; 313c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackbornimport android.os.SystemClock; 32f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.test.AndroidTestCase; 333c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackbornimport android.util.Log; 34f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 35f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectpublic class PendingIntentTest extends AndroidTestCase { 36f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 373c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn private static final int WAIT_TIME = 10000; 388151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private PendingIntent mPendingIntent; 398151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private Intent mIntent; 408151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private Context mContext; 418151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private boolean mFinishResult; 428151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private boolean mHandleResult; 438151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private String mResultAction; 448151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private PendingIntent.OnFinished mFinish; 458151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private boolean mLooperStart; 468151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private Looper mLooper; 478151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach private Handler mHandler; 48f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 49f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project @Override 50f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project protected void setUp() throws Exception { 51f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project super.setUp(); 52f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mContext = getContext(); 538151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mFinish = new PendingIntent.OnFinished() { 548151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void onSendFinished(PendingIntent pi, Intent intent, int resultCode, 558151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach String resultData, Bundle resultExtras) { 563c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn synchronized (mFinish) { 573c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mFinishResult = true; 583c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn if (intent != null) { 593c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mResultAction = intent.getAction(); 603c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 613c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mFinish.notifyAll(); 628151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach } 638151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach } 648151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach }; 658151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 668151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach new Thread() { 678151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach @Override 688151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void run() { 698151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach Looper.prepare(); 708151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mLooper = Looper.myLooper(); 718151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mLooperStart = true; 728151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach Looper.loop(); 738151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach } 748151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach }.start(); 758151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach while (!mLooperStart) { 768151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach Thread.sleep(50); 778151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach } 788151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mHandler = new Handler(mLooper) { 798151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach @Override 808151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void dispatchMessage(Message msg) { 813c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn synchronized (mFinish) { 823c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mHandleResult = true; 833c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 848151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach super.dispatchMessage(msg); 858151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach } 868151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 878151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach @Override 888151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public boolean sendMessageAtTime(Message msg, long uptimeMillis) { 893c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn synchronized (mFinish) { 903c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mHandleResult = true; 913c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 928151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach return super.sendMessageAtTime(msg, uptimeMillis); 938151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach } 948151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 958151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach @Override 968151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void handleMessage(Message msg) { 973c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn synchronized (mFinish) { 983c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mHandleResult = true; 993c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 1008151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach super.handleMessage(msg); 1018151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach } 1028151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach }; 103f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 104f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1058151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach @Override 1068151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach protected void tearDown() throws Exception { 1078151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach super.tearDown(); 1088151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mLooper.quit(); 109f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 110f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1113c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn private void prepareFinish() { 1123c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn synchronized (mFinish) { 1133c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mFinishResult = false; 1143c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mHandleResult = false; 1153c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 1163c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 1173c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 1183c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn public boolean waitForFinish(long timeout) { 1193c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn long now = SystemClock.elapsedRealtime(); 1203c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn final long endTime = now + timeout; 1213c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn synchronized (mFinish) { 1223c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn while (!mFinishResult && now < endTime) { 1233c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn try { 1243c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mFinish.wait(endTime - now); 1253c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } catch (InterruptedException e) { 1263c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 1273c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn now = SystemClock.elapsedRealtime(); 1283c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 1293c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn return mFinishResult; 1303c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 1313c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 1323c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 1338151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testGetActivity() throws InterruptedException, CanceledException { 1343c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn PendingIntentStubActivity.prepare(); 135f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = null; 136f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 137f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 13815f32be88e1f5185b3c40661f2150f740b047d01Chenjie Luo mIntent.setClass(mContext, PendingIntentStubActivity.class); 139f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 140f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 141f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 142f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(mContext.getPackageName(), mPendingIntent.getTargetPackage()); 143f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1448151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(); 145f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1463c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn PendingIntentStubActivity.waitForCreate(WAIT_TIME); 147f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertNotNull(mPendingIntent); 14815f32be88e1f5185b3c40661f2150f740b047d01Chenjie Luo assertEquals(PendingIntentStubActivity.status, PendingIntentStubActivity.ON_CREATE); 149f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 150f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // test getActivity return null 151f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.cancel(); 152f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 153f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_NO_CREATE); 154f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertNull(mPendingIntent); 155f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 156f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 157f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_ONE_SHOT); 158f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 159f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project pendingIntentSendError(mPendingIntent); 160f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 161f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 162f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project private void pendingIntentSendError(PendingIntent pendingIntent) { 163f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project try { 164f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // From the doc send function will throw CanceledException if the PendingIntent 165f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // is no longer allowing more intents to be sent through it. So here call it twice then 166f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // a CanceledException should be caught. 167f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.send(); 168f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.send(); 169f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project fail("CanceledException expected, but not thrown"); 170f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } catch (PendingIntent.CanceledException e) { 1718151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach // expected 172f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 173f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 174f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1758151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testGetBroadcast() throws InterruptedException, CanceledException { 1763c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 177f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(MockReceiver.MOCKACTION); 178f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setClass(mContext, MockReceiver.class); 179f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 180f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 181f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1828151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(); 183f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1843c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.waitForReceive(WAIT_TIME); 185f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 186f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 187f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // test getBroadcast return null 188f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.cancel(); 189f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 190f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_NO_CREATE); 191f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertNull(mPendingIntent); 192f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 193f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 194f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_ONE_SHOT); 195f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 196f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project pendingIntentSendError(mPendingIntent); 197f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 198f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1998151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testGetService() throws InterruptedException, CanceledException { 2003c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockService.prepareStart(); 201f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 202f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setClass(mContext, MockService.class); 203f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getService(mContext, 1, mIntent, 204f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 205f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2068151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(); 207f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2083c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockService.waitForStart(WAIT_TIME); 209f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertTrue(MockService.result); 210f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 211f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // test getService return null 212f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.cancel(); 213f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getService(mContext, 1, mIntent, 214f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_NO_CREATE); 215f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertNull(mPendingIntent); 216f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2178151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getService(mContext, 1, mIntent, 2188151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach PendingIntent.FLAG_ONE_SHOT); 219f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 220f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project pendingIntentSendError(mPendingIntent); 221f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 222f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2233c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn public void testStartServiceOnFinishedHandler() throws InterruptedException, CanceledException { 2243c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockService.prepareStart(); 2253c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 2263c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mIntent = new Intent(); 2273c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mIntent.setClass(mContext, MockService.class); 2283c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent = PendingIntent.getService(mContext, 1, mIntent, 2293c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn PendingIntent.FLAG_CANCEL_CURRENT); 2303c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2313c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent.send(mContext, 1, null, mFinish, null); 2323c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2333c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockService.waitForStart(WAIT_TIME); 2343c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn waitForFinish(WAIT_TIME); 2353c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertTrue(MockService.result); 2363c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2373c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertTrue(mFinishResult); 2383c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertFalse(mHandleResult); 2393c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent.cancel(); 2403c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2413c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockService.prepareStart(); 2423c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 2433c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mIntent = new Intent(); 2443c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mIntent.setClass(mContext, MockService.class); 2453c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent = PendingIntent.getService(mContext, 1, mIntent, 2463c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn PendingIntent.FLAG_CANCEL_CURRENT); 2473c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2483c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent.send(mContext, 1, null, mFinish, mHandler); 2493c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2503c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockService.waitForStart(WAIT_TIME); 2513c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn waitForFinish(WAIT_TIME); 2523c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertTrue(MockService.result); 2533c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2543c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertTrue(mFinishResult); 2553c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertTrue(mHandleResult); 2563c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent.cancel(); 2573c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2583c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 2593c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 2608151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testCancel() throws CanceledException { 261f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 262f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setClass(mContext, MockService.class); 263f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 264f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 265f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2668151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(); 267f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 268f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.cancel(); 269f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project pendingIntentSendShouldFail(mPendingIntent); 270f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 271f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 272f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project private void pendingIntentSendShouldFail(PendingIntent pendingIntent) { 273f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project try { 274f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project pendingIntent.send(); 275f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project fail("CanceledException expected, but not thrown"); 276f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } catch (CanceledException e) { 277f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // expected 278f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 279f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 280f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2818151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testSend() throws InterruptedException, CanceledException { 2823c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, -1); 283f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 284f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setAction(MockReceiver.MOCKACTION); 285f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setClass(mContext, MockReceiver.class); 286f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 287f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 288f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2898151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(); 290f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2913c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.waitForReceive(WAIT_TIME); 292f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 293f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // send function to send default code 0 294f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, MockReceiver.sResultCode); 295f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 296f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.cancel(); 297f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 298f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project pendingIntentSendShouldFail(mPendingIntent); 299f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 300f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3018151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testSendWithParamInt() throws InterruptedException, CanceledException { 302f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(MockReceiver.MOCKACTION); 303f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setClass(mContext, MockReceiver.class); 304f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 305f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 3063c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 3078151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach // send result code 1. 3088151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(1); 3093c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.waitForReceive(WAIT_TIME); 3108151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 311f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3128151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach // assert the result code 3138151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(1, MockReceiver.sResultCode); 3148151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(mResultAction, null); 315f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3163c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 3178151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach // send result code 2 3188151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(2); 3193c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.waitForReceive(WAIT_TIME); 3208151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 3218151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 3228151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 3238151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach // assert the result code 3248151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(2, MockReceiver.sResultCode); 3258151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(MockReceiver.sAction, MockReceiver.MOCKACTION); 3268151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertNull(mResultAction); 327f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.cancel(); 328f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project pendingIntentSendShouldFail(mPendingIntent); 329f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 330f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3318151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testSendWithParamContextIntIntent() throws InterruptedException, CanceledException { 332f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(MockReceiver.MOCKACTION); 333f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setClass(mContext, MockReceiver.class); 334f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3353c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 336f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3378151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 338f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3398151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(mContext, 1, null); 3403c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.waitForReceive(WAIT_TIME); 341f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3428151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 3438151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(1, MockReceiver.sResultCode); 3448151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.cancel(); 345f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3468151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 3473c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 348f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3498151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(mContext, 2, mIntent); 3503c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.waitForReceive(WAIT_TIME); 3518151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 3528151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(2, MockReceiver.sResultCode); 3538151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.cancel(); 354f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 355f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3568151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testSendWithParamIntOnFinishedHandler() throws InterruptedException, 3578151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach CanceledException { 358f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(MockReceiver.MOCKACTION); 359f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setClass(mContext, MockReceiver.class); 360f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3618151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 3623c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 3633c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 3648151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 3658151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(1, null, null); 3663c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.waitForReceive(WAIT_TIME); 3678151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertFalse(mFinishResult); 3688151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertFalse(mHandleResult); 3698151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 3708151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 3718151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach // assert result code 3728151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(1, MockReceiver.sResultCode); 3738151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.cancel(); 374f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3758151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 3763c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 3773c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 3788151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 3798151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(2, mFinish, null); 3803c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn waitForFinish(WAIT_TIME); 3818151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertTrue(mFinishResult); 3828151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertFalse(mHandleResult); 3838151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 3848151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 3858151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach // assert result code 3868151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(2, MockReceiver.sResultCode); 3878151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.cancel(); 3888151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 3893c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 3903c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 3918151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 3928151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(3, mFinish, mHandler); 3933c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn waitForFinish(WAIT_TIME); 3948151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertTrue(mHandleResult); 3958151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertTrue(mFinishResult); 3968151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 3978151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 3988151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach // assert result code 3998151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(3, MockReceiver.sResultCode); 4008151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.cancel(); 401f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 402f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 4038151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach public void testSendWithParamContextIntIntentOnFinishedHandler() throws InterruptedException, 4048151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach CanceledException { 405f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(MockReceiver.MOCKACTION); 406f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent.setAction(MockReceiver.MOCKACTION); 407f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 4088151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 4093c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 4103c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 4118151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(mContext, 1, mIntent, null, null); 4123c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.waitForReceive(WAIT_TIME); 4138151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertFalse(mFinishResult); 4148151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertFalse(mHandleResult); 4158151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertNull(mResultAction); 4163c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 4178151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.cancel(); 4188151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach 4198151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 4203c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 4213c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 4228151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(mContext, 1, mIntent, mFinish, null); 4233c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn waitForFinish(WAIT_TIME); 4248151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertTrue(mFinishResult); 4258151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(mResultAction, MockReceiver.MOCKACTION); 4268151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertFalse(mHandleResult); 4273c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 4288151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.cancel(); 429f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 4308151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 4313c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 4323c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 4338151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.send(mContext, 1, mIntent, mFinish, mHandler); 4343c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn waitForFinish(WAIT_TIME); 4358151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertTrue(mHandleResult); 4368151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertEquals(mResultAction, MockReceiver.MOCKACTION); 4378151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach assertTrue(mFinishResult); 4383c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertEquals(MockReceiver.MOCKACTION, MockReceiver.sAction); 4393c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent.cancel(); 4403c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn } 4413c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 4423c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 4433c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn public void testSendNoReceiverOnFinishedHandler() throws InterruptedException, 4443c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn CanceledException { 4453c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn // This action won't match anything, so no receiver will run but we should 4463c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn // still get a finish result. 4473c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn final String BAD_ACTION = MockReceiver.MOCKACTION + "_bad"; 4483c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mIntent = new Intent(BAD_ACTION); 4493c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mIntent.setAction(BAD_ACTION); 4503c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 4513c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 4523c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 4533c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 4543c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent.send(mContext, 1, mIntent, mFinish, null); 4553c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn waitForFinish(WAIT_TIME); 4563c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertTrue(mFinishResult); 4573c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertEquals(mResultAction, BAD_ACTION); 4583c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertFalse(mHandleResult); 4593c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertNull(MockReceiver.sAction); 4603c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent.cancel(); 4613c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn 4623c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 4633c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn MockReceiver.prepareReceive(null, 0); 4643c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn prepareFinish(); 4653c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn mPendingIntent.send(mContext, 1, mIntent, mFinish, mHandler); 4663c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn waitForFinish(WAIT_TIME); 4673c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertTrue(mHandleResult); 4683c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertEquals(mResultAction, BAD_ACTION); 4693c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertTrue(mFinishResult); 4703c1b3bfcfbd1b7171c6d0212734adbfbca54d9aeDianne Hackborn assertNull(MockReceiver.sAction); 4718151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach mPendingIntent.cancel(); 472f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 473f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 474f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testGetTargetPackage() { 475f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 476f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 477f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 478f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(mContext.getPackageName(), mPendingIntent.getTargetPackage()); 479f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 480f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 481f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testEquals() { 482f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 483f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 484f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 485f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 486f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent target = PendingIntent.getActivity(mContext, 1, mIntent, 487f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 488f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 489f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertFalse(mPendingIntent.equals(target)); 490f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertFalse(mPendingIntent.hashCode() == target.hashCode()); 491f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 1); 492f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 493f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project target = PendingIntent.getActivity(mContext, 1, mIntent, 1); 494f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertTrue(mPendingIntent.equals(target)); 495f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 496f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(MockReceiver.MOCKACTION); 497f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project target = PendingIntent.getBroadcast(mContext, 1, mIntent, 1); 498f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertFalse(mPendingIntent.equals(target)); 499f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertFalse(mPendingIntent.hashCode() == target.hashCode()); 500f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 501f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 1); 502f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project target = PendingIntent.getActivity(mContext, 1, mIntent, 1); 503f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 504f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertTrue(mPendingIntent.equals(target)); 505f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(mPendingIntent.hashCode(), target.hashCode()); 506f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 507f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 508f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testDescribeContents() { 509f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 510f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 511f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 5128151e7cd7f60ed986a2132dd0aec271e5fd77b40Phil Dubach final int expected = 0; 513f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(expected, mPendingIntent.describeContents()); 514f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 515f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 516f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testWriteToParcel() { 517f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 518f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 519f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 520f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project Parcel parcel = Parcel.obtain(); 521f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 522f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent.writeToParcel(parcel, 0); 523f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project parcel.setDataPosition(0); 524f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent pendingIntent = PendingIntent.CREATOR.createFromParcel(parcel); 525f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertTrue(mPendingIntent.equals(pendingIntent)); 526f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 527f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 528f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testReadAndWritePendingIntentOrNullToParcel() { 529f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mIntent = new Intent(); 530f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = PendingIntent.getActivity(mContext, 1, mIntent, 531f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.FLAG_CANCEL_CURRENT); 532f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertNotNull(mPendingIntent.toString()); 533f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 534f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project Parcel parcel = Parcel.obtain(); 535f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.writePendingIntentOrNullToParcel(mPendingIntent, parcel); 536f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project parcel.setDataPosition(0); 537f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent target = PendingIntent.readPendingIntentOrNullFromParcel(parcel); 538f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(mPendingIntent, target); 539f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(mPendingIntent.getTargetPackage(), target.getTargetPackage()); 540f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 541f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mPendingIntent = null; 542f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project parcel = Parcel.obtain(); 543f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project PendingIntent.writePendingIntentOrNullToParcel(mPendingIntent, parcel); 544f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project target = PendingIntent.readPendingIntentOrNullFromParcel(parcel); 545f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertNull(target); 546f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 547f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 548f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project} 549