Test creating pending results with mutable implicit PendingIntent
Bug: 274078367
Test: atest PendingIntentTest
Change-Id: I181ab7e442e71f7b4432d87ce0ee6bcb666f636c
diff --git a/tests/app/src/android/app/cts/PendingIntentTest.java b/tests/app/src/android/app/cts/PendingIntentTest.java
index 270b352..1cc2e31 100644
--- a/tests/app/src/android/app/cts/PendingIntentTest.java
+++ b/tests/app/src/android/app/cts/PendingIntentTest.java
@@ -16,6 +16,7 @@
package android.app.cts;
+import android.app.Activity;
import android.app.PendingIntent;
import android.app.PendingIntent.CanceledException;
import android.app.stubs.MockActivity;
@@ -35,6 +36,8 @@
import android.os.SystemClock;
import android.test.AndroidTestCase;
+import androidx.test.platform.app.InstrumentationRegistry;
+
import com.android.compatibility.common.util.ShellIdentityUtils;
import com.android.compatibility.common.util.TestUtils;
@@ -60,6 +63,7 @@
private boolean mLooperStart;
private Looper mLooper;
private Handler mHandler;
+ private Activity mActivity;
@Override
protected void setUp() throws Exception {
@@ -516,6 +520,38 @@
}
+ public void testCreatePendingResult() {
+ Intent intent = new Intent(mContext, MockActivity.class)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mActivity = InstrumentationRegistry.getInstrumentation().startActivitySync(intent);
+ mIntent = new Intent();
+ mIntent.setClass(mContext, MockService.class);
+
+ // creating a mutable explicit PendingResult works fine
+ mPendingIntent = mActivity.createPendingResult(1, mIntent,
+ PendingIntent.FLAG_MUTABLE);
+
+ // make mIntent implicit
+ mIntent.setComponent(null);
+ mIntent.setPackage(null);
+
+ // creating an immutable implicit PendingResult works fine
+ mPendingIntent = mActivity.createPendingResult(1, mIntent,
+ PendingIntent.FLAG_IMMUTABLE);
+
+ // retrieving a mutable implicit PendingResult with NO_CREATE works fine
+ mPendingIntent = mActivity.createPendingResult(1, mIntent,
+ PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_NO_CREATE);
+
+ // creating a mutable implicit PendingResult with ALLOW_UNSAFE_IMPLICIT_INTENT works fine
+ mPendingIntent = mActivity.createPendingResult(1, mIntent,
+ PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT);
+
+ // creating a mutable implicit PendingResult works fine
+ mPendingIntent = mActivity.createPendingResult(1, mIntent,
+ PendingIntent.FLAG_MUTABLE);
+ }
+
public void testCancel() throws CanceledException {
mIntent = new Intent();
mIntent.setClass(mContext, MockService.class);