Revert "Merge BroadcastOptions and ActivityOptions PendingIntent..."
Revert "CTS for PendingIntent BroadcastOptions BAL improvement" Revert submission 15879527-component_options Reason for revert: DroidMonitor: Potential culprit for Bug 203407624 - verifying through Forrest before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted Reverted Changes: I256115361:CTS for PendingIntent BroadcastOptions BAL improve... Ic47b9fcd3:Merge BroadcastOptions and ActivityOptions Pending... Change-Id: Iba7699b65a1ce29cf340ed06c495cc2b2b0d9b1c
This commit is contained in:
@@ -4380,7 +4380,6 @@ package android.app {
|
||||
method @Nullable public android.graphics.Rect getLaunchBounds();
|
||||
method public int getLaunchDisplayId();
|
||||
method public boolean getLockTaskMode();
|
||||
method public boolean isPendingIntentBackgroundActivityLaunchAllowed();
|
||||
method public static android.app.ActivityOptions makeBasic();
|
||||
method public static android.app.ActivityOptions makeClipRevealAnimation(android.view.View, int, int, int, int);
|
||||
method public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int);
|
||||
@@ -4394,7 +4393,6 @@ package android.app {
|
||||
method public android.app.ActivityOptions setLaunchBounds(@Nullable android.graphics.Rect);
|
||||
method public android.app.ActivityOptions setLaunchDisplayId(int);
|
||||
method public android.app.ActivityOptions setLockTaskEnabled(boolean);
|
||||
method public void setPendingIntentBackgroundActivityLaunchAllowed(boolean);
|
||||
method public android.os.Bundle toBundle();
|
||||
method public void update(android.app.ActivityOptions);
|
||||
field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
|
||||
|
||||
@@ -687,11 +687,9 @@ package android.app {
|
||||
}
|
||||
|
||||
public class BroadcastOptions {
|
||||
method public boolean isPendingIntentBackgroundActivityLaunchAllowed();
|
||||
method public static android.app.BroadcastOptions makeBasic();
|
||||
method @RequiresPermission(android.Manifest.permission.START_ACTIVITIES_FROM_BACKGROUND) public void setBackgroundActivityStartsAllowed(boolean);
|
||||
method public void setDontSendToRestrictedApps(boolean);
|
||||
method public void setPendingIntentBackgroundActivityLaunchAllowed(boolean);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST, android.Manifest.permission.START_ACTIVITIES_FROM_BACKGROUND, android.Manifest.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND}) public void setTemporaryAppAllowlist(long, int, int, @Nullable String);
|
||||
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST, android.Manifest.permission.START_ACTIVITIES_FROM_BACKGROUND, android.Manifest.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND}) public void setTemporaryAppWhitelistDuration(long);
|
||||
method public android.os.Bundle toBundle();
|
||||
|
||||
@@ -69,7 +69,7 @@ import java.util.ArrayList;
|
||||
* {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle)
|
||||
* Context.startActivity(Intent, Bundle)} and related methods.
|
||||
*/
|
||||
public class ActivityOptions extends ComponentOptions {
|
||||
public class ActivityOptions {
|
||||
private static final String TAG = "ActivityOptions";
|
||||
|
||||
/**
|
||||
@@ -167,6 +167,14 @@ public class ActivityOptions extends ComponentOptions {
|
||||
*/
|
||||
public static final String KEY_SPLASH_SCREEN_THEME = "android.activity.splashScreenTheme";
|
||||
|
||||
/**
|
||||
* PendingIntent caller allows activity start even if PendingIntent creator is in background.
|
||||
* This only works if the PendingIntent caller is allowed to start background activities,
|
||||
* for example if it's in the foreground, or has BAL permission.
|
||||
* @hide
|
||||
*/
|
||||
public static final String KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED =
|
||||
"android.pendingIntent.backgroundActivityAllowed";
|
||||
/**
|
||||
* Callback for when the last frame of the animation is played.
|
||||
* @hide
|
||||
@@ -381,6 +389,12 @@ public class ActivityOptions extends ComponentOptions {
|
||||
/** @hide */
|
||||
public static final int ANIM_REMOTE_ANIMATION = 13;
|
||||
|
||||
/**
|
||||
* Default value for KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED.
|
||||
* @hide
|
||||
**/
|
||||
public static final boolean PENDING_INTENT_BAL_ALLOWED_DEFAULT = true;
|
||||
|
||||
private String mPackageName;
|
||||
private Rect mLaunchBounds;
|
||||
private int mAnimationType = ANIM_UNDEFINED;
|
||||
@@ -432,6 +446,7 @@ public class ActivityOptions extends ComponentOptions {
|
||||
private String mSplashScreenThemeResName;
|
||||
@SplashScreen.SplashScreenStyle
|
||||
private int mSplashScreenStyle;
|
||||
private boolean mPendingIntentBalAllowed = PENDING_INTENT_BAL_ALLOWED_DEFAULT;
|
||||
private boolean mRemoveWithTaskOrganizer;
|
||||
private boolean mLaunchedFromBubble;
|
||||
private boolean mTransientLaunch;
|
||||
@@ -1081,12 +1096,13 @@ public class ActivityOptions extends ComponentOptions {
|
||||
}
|
||||
|
||||
private ActivityOptions() {
|
||||
super();
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public ActivityOptions(Bundle opts) {
|
||||
super(opts);
|
||||
// If the remote side sent us bad parcelables, they won't get the
|
||||
// results they want, which is their loss.
|
||||
opts.setDefusable(true);
|
||||
|
||||
mPackageName = opts.getString(KEY_PACKAGE_NAME);
|
||||
try {
|
||||
@@ -1184,6 +1200,8 @@ public class ActivityOptions extends ComponentOptions {
|
||||
mRemoteTransition = opts.getParcelable(KEY_REMOTE_TRANSITION);
|
||||
mOverrideTaskTransition = opts.getBoolean(KEY_OVERRIDE_TASK_TRANSITION);
|
||||
mSplashScreenThemeResName = opts.getString(KEY_SPLASH_SCREEN_THEME);
|
||||
mPendingIntentBalAllowed = opts.getBoolean(KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED,
|
||||
PENDING_INTENT_BAL_ALLOWED_DEFAULT);
|
||||
mRemoveWithTaskOrganizer = opts.getBoolean(KEY_REMOVE_WITH_TASK_ORGANIZER);
|
||||
mLaunchedFromBubble = opts.getBoolean(KEY_LAUNCHED_FROM_BUBBLE);
|
||||
mTransientLaunch = opts.getBoolean(KEY_TRANSIENT_LAUNCH);
|
||||
@@ -1407,6 +1425,24 @@ public class ActivityOptions extends ComponentOptions {
|
||||
return mSplashScreenStyle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set PendingIntent activity is allowed to be started in the background if the caller
|
||||
* can start background activities.
|
||||
* @hide
|
||||
*/
|
||||
public void setPendingIntentBackgroundActivityLaunchAllowed(boolean allowed) {
|
||||
mPendingIntentBalAllowed = allowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get PendingIntent activity is allowed to be started in the background if the caller
|
||||
* can start background activities.
|
||||
* @hide
|
||||
*/
|
||||
public boolean isPendingIntentBackgroundActivityLaunchAllowed() {
|
||||
return mPendingIntentBalAllowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether the activity is to be launched into LockTask mode.
|
||||
*
|
||||
@@ -1832,9 +1868,8 @@ public class ActivityOptions extends ComponentOptions {
|
||||
* object; you must not modify it, but can supply it to the startActivity
|
||||
* methods that take an options Bundle.
|
||||
*/
|
||||
@Override
|
||||
public Bundle toBundle() {
|
||||
Bundle b = super.toBundle();
|
||||
Bundle b = new Bundle();
|
||||
if (mPackageName != null) {
|
||||
b.putString(KEY_PACKAGE_NAME, mPackageName);
|
||||
}
|
||||
@@ -1981,6 +2016,7 @@ public class ActivityOptions extends ComponentOptions {
|
||||
if (mSplashScreenThemeResName != null && !mSplashScreenThemeResName.isEmpty()) {
|
||||
b.putString(KEY_SPLASH_SCREEN_THEME, mSplashScreenThemeResName);
|
||||
}
|
||||
b.putBoolean(KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED, mPendingIntentBalAllowed);
|
||||
if (mRemoveWithTaskOrganizer) {
|
||||
b.putBoolean(KEY_REMOVE_WITH_TASK_ORGANIZER, mRemoveWithTaskOrganizer);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ import android.os.PowerExemptionManager.TempAllowListType;
|
||||
* {@hide}
|
||||
*/
|
||||
@SystemApi
|
||||
public class BroadcastOptions extends ComponentOptions {
|
||||
public class BroadcastOptions {
|
||||
private long mTemporaryAppAllowlistDuration;
|
||||
private @TempAllowListType int mTemporaryAppAllowlistType;
|
||||
private @ReasonCode int mTemporaryAppAllowlistReasonCode;
|
||||
@@ -43,6 +43,7 @@ public class BroadcastOptions extends ComponentOptions {
|
||||
private int mMaxManifestReceiverApiLevel = Build.VERSION_CODES.CUR_DEVELOPMENT;
|
||||
private boolean mDontSendToRestrictedApps = false;
|
||||
private boolean mAllowBackgroundActivityStarts;
|
||||
private boolean mPendingIntentBalAllowed = ActivityOptions.PENDING_INTENT_BAL_ALLOWED_DEFAULT;
|
||||
|
||||
/**
|
||||
* How long to temporarily put an app on the power allowlist when executing this broadcast
|
||||
@@ -78,6 +79,16 @@ public class BroadcastOptions extends ComponentOptions {
|
||||
private static final String KEY_DONT_SEND_TO_RESTRICTED_APPS =
|
||||
"android:broadcast.dontSendToRestrictedApps";
|
||||
|
||||
/**
|
||||
* PendingIntent caller allows activity start even if PendingIntent creator is in background.
|
||||
* This only works if the PendingIntent caller is allowed to start background activities,
|
||||
* for example if it's in the foreground, or has BAL permission.
|
||||
* TODO: Merge it with ActivityOptions.
|
||||
* @hide
|
||||
*/
|
||||
public static final String KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED =
|
||||
"android.pendingIntent.backgroundActivityAllowed";
|
||||
|
||||
/**
|
||||
* Corresponds to {@link #setBackgroundActivityStartsAllowed}.
|
||||
*/
|
||||
@@ -108,14 +119,12 @@ public class BroadcastOptions extends ComponentOptions {
|
||||
}
|
||||
|
||||
private BroadcastOptions() {
|
||||
super();
|
||||
resetTemporaryAppAllowlist();
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@TestApi
|
||||
public BroadcastOptions(@NonNull Bundle opts) {
|
||||
super(opts);
|
||||
// Match the logic in toBundle().
|
||||
if (opts.containsKey(KEY_TEMPORARY_APP_ALLOWLIST_DURATION)) {
|
||||
mTemporaryAppAllowlistDuration = opts.getLong(KEY_TEMPORARY_APP_ALLOWLIST_DURATION);
|
||||
@@ -132,6 +141,8 @@ public class BroadcastOptions extends ComponentOptions {
|
||||
mDontSendToRestrictedApps = opts.getBoolean(KEY_DONT_SEND_TO_RESTRICTED_APPS, false);
|
||||
mAllowBackgroundActivityStarts = opts.getBoolean(KEY_ALLOW_BACKGROUND_ACTIVITY_STARTS,
|
||||
false);
|
||||
mPendingIntentBalAllowed = opts.getBoolean(KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED,
|
||||
ActivityOptions.PENDING_INTENT_BAL_ALLOWED_DEFAULT);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -302,6 +313,26 @@ public class BroadcastOptions extends ComponentOptions {
|
||||
return mAllowBackgroundActivityStarts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set PendingIntent activity is allowed to be started in the background if the caller
|
||||
* can start background activities.
|
||||
* TODO: Merge it with ActivityOptions.
|
||||
* @hide
|
||||
*/
|
||||
public void setPendingIntentBackgroundActivityLaunchAllowed(boolean allowed) {
|
||||
mPendingIntentBalAllowed = allowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get PendingIntent activity is allowed to be started in the background if the caller
|
||||
* can start background activities.
|
||||
* TODO: Merge it with ActivityOptions.
|
||||
* @hide
|
||||
*/
|
||||
public boolean isPendingIntentBackgroundActivityLaunchAllowed() {
|
||||
return mPendingIntentBalAllowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the created options as a Bundle, which can be passed to
|
||||
* {@link android.content.Context#sendBroadcast(android.content.Intent)
|
||||
@@ -310,9 +341,8 @@ public class BroadcastOptions extends ComponentOptions {
|
||||
* object; you must not modify it, but can supply it to the sendBroadcast
|
||||
* methods that take an options Bundle.
|
||||
*/
|
||||
@Override
|
||||
public Bundle toBundle() {
|
||||
Bundle b = super.toBundle();
|
||||
Bundle b = new Bundle();
|
||||
if (isTemporaryAppAllowlistSet()) {
|
||||
b.putLong(KEY_TEMPORARY_APP_ALLOWLIST_DURATION, mTemporaryAppAllowlistDuration);
|
||||
b.putInt(KEY_TEMPORARY_APP_ALLOWLIST_TYPE, mTemporaryAppAllowlistType);
|
||||
@@ -331,6 +361,8 @@ public class BroadcastOptions extends ComponentOptions {
|
||||
if (mAllowBackgroundActivityStarts) {
|
||||
b.putBoolean(KEY_ALLOW_BACKGROUND_ACTIVITY_STARTS, true);
|
||||
}
|
||||
// TODO: Add API for BroadcastOptions and have a shared base class with ActivityOptions.
|
||||
b.putBoolean(KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED, mPendingIntentBalAllowed);
|
||||
return b.isEmpty() ? null : b;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.app;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public class ComponentOptions {
|
||||
|
||||
/**
|
||||
* Default value for KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED.
|
||||
* @hide
|
||||
**/
|
||||
public static final boolean PENDING_INTENT_BAL_ALLOWED_DEFAULT = true;
|
||||
|
||||
/**
|
||||
* PendingIntent caller allows activity start even if PendingIntent creator is in background.
|
||||
* This only works if the PendingIntent caller is allowed to start background activities,
|
||||
* for example if it's in the foreground, or has BAL permission.
|
||||
* @hide
|
||||
*/
|
||||
public static final String KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED =
|
||||
"android.pendingIntent.backgroundActivityAllowed";
|
||||
|
||||
private boolean mPendingIntentBalAllowed = PENDING_INTENT_BAL_ALLOWED_DEFAULT;
|
||||
|
||||
ComponentOptions() {
|
||||
}
|
||||
|
||||
ComponentOptions(Bundle opts) {
|
||||
// If the remote side sent us bad parcelables, they won't get the
|
||||
// results they want, which is their loss.
|
||||
opts.setDefusable(true);
|
||||
setPendingIntentBackgroundActivityLaunchAllowed(
|
||||
opts.getBoolean(KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED,
|
||||
PENDING_INTENT_BAL_ALLOWED_DEFAULT));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set PendingIntent activity is allowed to be started in the background if the caller
|
||||
* can start background activities.
|
||||
*/
|
||||
public void setPendingIntentBackgroundActivityLaunchAllowed(boolean allowed) {
|
||||
mPendingIntentBalAllowed = allowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get PendingIntent activity is allowed to be started in the background if the caller
|
||||
* can start background activities.
|
||||
*/
|
||||
public boolean isPendingIntentBackgroundActivityLaunchAllowed() {
|
||||
return mPendingIntentBalAllowed;
|
||||
}
|
||||
|
||||
public Bundle toBundle() {
|
||||
Bundle b = new Bundle();
|
||||
b.putBoolean(KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED, mPendingIntentBalAllowed);
|
||||
return b;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user