Skip to content

Commit

Permalink
Merge AP3A.240611.001
Browse files Browse the repository at this point in the history
Change-Id: Iba9350cead57a5fecaf337f49bfd745bbd57dd55
  • Loading branch information
Scott Lobdell committed Jun 25, 2024
2 parents adae8f3 + d568723 commit 00bf694
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 17 deletions.
2 changes: 1 addition & 1 deletion core/java/android/view/autofill/AutofillFeatureFlags.java
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,7 @@ public static boolean shouldFillFieldsFromCurrentSessionOnly() {
return DeviceConfig.getBoolean(
DeviceConfig.NAMESPACE_AUTOFILL,
DEVICE_CONFIG_FILL_FIELDS_FROM_CURRENT_SESSION_ONLY,
false);
true);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1894,6 +1894,10 @@ private void addActivityOptions(Bundle opts, @Nullable StageTaskListener launchT
// will be canceled.
options.setPendingIntentBackgroundActivityStartMode(MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
options.setPendingIntentBackgroundActivityLaunchAllowedByPermission(true);

// TODO (b/336477473): Disallow enter PiP when launching a task in split by default;
// this might have to be changed as more split-to-pip cujs are defined.
options.setDisallowEnterPictureInPictureWhileLaunching(true);
opts.putAll(options.toBundle());
}

Expand Down
6 changes: 3 additions & 3 deletions services/core/java/com/android/server/audio/AudioService.java
Original file line number Diff line number Diff line change
Expand Up @@ -10409,7 +10409,7 @@ public int requestAudioFocus(AudioAttributes aa, int durationHint, IBinder cb,
try {
if (!permissionOverridesCheck && mHardeningEnforcer.blockFocusMethod(uid,
HardeningEnforcer.METHOD_AUDIO_MANAGER_REQUEST_AUDIO_FOCUS,
clientId, durationHint, callingPackageName)) {
clientId, durationHint, callingPackageName, attributionTag, sdk)) {
final String reason = "Audio focus request blocked by hardening";
Log.w(TAG, reason);
mmi.set(MediaMetrics.Property.EARLY_RETURN, reason).record();
Expand All @@ -10421,7 +10421,7 @@ public int requestAudioFocus(AudioAttributes aa, int durationHint, IBinder cb,

mmi.record();
return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd,
clientId, callingPackageName, attributionTag, flags, sdk,
clientId, callingPackageName, flags, sdk,
forceFocusDuckingForAccessibility(aa, durationHint, uid), -1 /*testUid, ignored*/,
permissionOverridesCheck);
}
Expand All @@ -10439,7 +10439,7 @@ public int requestAudioFocusForTest(AudioAttributes aa, int durationHint, IBinde
return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
}
return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd,
clientId, callingPackageName, null, flags,
clientId, callingPackageName, flags,
sdk, false /*forceDuck*/, fakeUid, true /*permissionOverridesCheck*/);
}

Expand Down
24 changes: 19 additions & 5 deletions services/core/java/com/android/server/audio/HardeningEnforcer.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@

import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.media.AudioFocusRequest;
import android.media.AudioManager;
import android.os.Binder;
import android.os.Build;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Slog;
Expand Down Expand Up @@ -128,19 +130,28 @@ protected boolean blockVolumeMethod(int volumeMethod) {
* @param focusMethod name of the method to check, for logging purposes
* @param clientId id of the requester
* @param durationHint focus type being requested
* @param attributionTag attribution of the caller
* @param targetSdk target SDK of the caller
* @return false if the method call is allowed, true if it should be a no-op
*/
@SuppressWarnings("AndroidFrameworkCompatChange")
protected boolean blockFocusMethod(int callingUid, int focusMethod, @NonNull String clientId,
int durationHint, @NonNull String packageName) {
int durationHint, @NonNull String packageName, String attributionTag, int targetSdk) {
if (packageName.isEmpty()) {
packageName = getPackNameForUid(callingUid);
}

if (checkAppOp(AppOpsManager.OP_TAKE_AUDIO_FOCUS, callingUid, packageName)) {
if (noteOp(AppOpsManager.OP_TAKE_AUDIO_FOCUS, callingUid, packageName, attributionTag)) {
if (DEBUG) {
Slog.i(TAG, "blockFocusMethod pack:" + packageName + " NOT blocking");
}
return false;
} else if (targetSdk < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
if (DEBUG) {
Slog.i(TAG, "blockFocusMethod pack:" + packageName + " NOT blocking due to sdk="
+ targetSdk);
}
return false;
}

String errorMssg = "Focus request DENIED for uid:" + callingUid
Expand Down Expand Up @@ -169,14 +180,17 @@ private String getPackNameForUid(int uid) {
}

/**
* Checks the given op without throwing
* Notes the given op without throwing
* @param op the appOp code
* @param uid the calling uid
* @param packageName the package name of the caller
* @param attributionTag attribution of the caller
* @return return false if the operation is not allowed
*/
private boolean checkAppOp(int op, int uid, @NonNull String packageName) {
if (mAppOps.checkOpNoThrow(op, uid, packageName) != AppOpsManager.MODE_ALLOWED) {
private boolean noteOp(int op, int uid, @NonNull String packageName,
@Nullable String attributionTag) {
if (mAppOps.noteOpNoThrow(op, uid, packageName, attributionTag, null)
!= AppOpsManager.MODE_ALLOWED) {
return false;
}
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1082,7 +1082,6 @@ protected static int getFocusRampTimeMs(int focusGain, AudioAttributes attr) {
* @param fd
* @param clientId
* @param callingPackageName
* @param attributionTag
* @param flags
* @param sdk
* @param forceDuck only true if
Expand All @@ -1096,7 +1095,7 @@ protected static int getFocusRampTimeMs(int focusGain, AudioAttributes attr) {
*/
protected int requestAudioFocus(@NonNull AudioAttributes aa, int focusChangeHint, IBinder cb,
IAudioFocusDispatcher fd, @NonNull String clientId, @NonNull String callingPackageName,
String attributionTag, int flags, int sdk, boolean forceDuck, int testUid,
int flags, int sdk, boolean forceDuck, int testUid,
boolean permissionOverridesCheck) {
new MediaMetrics.Item(mMetricsId)
.setUid(Binder.getCallingUid())
Expand Down Expand Up @@ -1129,12 +1128,6 @@ protected int requestAudioFocus(@NonNull AudioAttributes aa, int focusChangeHint
return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
}

final int res = mAppOps.noteOp(AppOpsManager.OP_TAKE_AUDIO_FOCUS, Binder.getCallingUid(),
callingPackageName, attributionTag, null);
if (!permissionOverridesCheck && res != AppOpsManager.MODE_ALLOWED) {
return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
}

synchronized(mAudioFocusLock) {
// check whether a focus freeze is in place and filter
if (isFocusFrozenForTest()) {
Expand Down

0 comments on commit 00bf694

Please sign in to comment.