Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b415361 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 8492734 from a79ac744 to tm-qpr1-release

Change-Id: I0a69dd480c7885ba6b53b72e4a386a7231f92327
parents 469d3a5c a79ac744
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.app.job;

import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
@@ -1332,6 +1333,7 @@ public class JobInfo implements Parcelable {
                builder.addCapability(NET_CAPABILITY_INTERNET);
                builder.addCapability(NET_CAPABILITY_VALIDATED);
                builder.removeCapability(NET_CAPABILITY_NOT_VPN);
                builder.removeCapability(NET_CAPABILITY_NOT_RESTRICTED);

                if (networkType == NETWORK_TYPE_ANY) {
                    // No other capabilities
+135 −0
Original line number Diff line number Diff line
@@ -2915,6 +2915,133 @@ public class AppOpsManager {
            true, // ACCESS_RESTRICTED_SETTINGS
    };

    /**
     * This specifies whether each option is only allowed to be read
     * by apps with manage appops permission.
     */
    private static boolean[] sOpRestrictRead = new boolean[] {
            false, // COARSE_LOCATION
            false, // FINE_LOCATION
            false, // GPS
            false, // VIBRATE
            false, // READ_CONTACTS
            false, // WRITE_CONTACTS
            false, // READ_CALL_LOG
            false, // WRITE_CALL_LOG
            false, // READ_CALENDAR
            false, // WRITE_CALENDAR
            false, // WIFI_SCAN
            false, // POST_NOTIFICATION
            false, // NEIGHBORING_CELLS
            false, // CALL_PHONE
            false, // READ_SMS
            false, // WRITE_SMS
            false, // RECEIVE_SMS
            false, // RECEIVE_EMERGENCY_BROADCAST
            false, // RECEIVE_MMS
            false, // RECEIVE_WAP_PUSH
            false, // SEND_SMS
            false, // READ_ICC_SMS
            false, // WRITE_ICC_SMS
            false, // WRITE_SETTINGS
            false, // SYSTEM_ALERT_WINDOW
            false, // ACCESS_NOTIFICATIONS
            false, // CAMERA
            false, // RECORD_AUDIO
            false, // PLAY_AUDIO
            false, // READ_CLIPBOARD
            false, // WRITE_CLIPBOARD
            false, // TAKE_MEDIA_BUTTONS
            false, // TAKE_AUDIO_FOCUS
            false, // AUDIO_MASTER_VOLUME
            false, // AUDIO_VOICE_VOLUME
            false, // AUDIO_RING_VOLUME
            false, // AUDIO_MEDIA_VOLUME
            false, // AUDIO_ALARM_VOLUME
            false, // AUDIO_NOTIFICATION_VOLUME
            false, // AUDIO_BLUETOOTH_VOLUME
            false, // WAKE_LOCK
            false, // MONITOR_LOCATION
            false, // MONITOR_HIGH_POWER_LOCATION
            false, // GET_USAGE_STATS
            false, // MUTE_MICROPHONE
            false, // TOAST_WINDOW
            false, // PROJECT_MEDIA
            false, // ACTIVATE_VPN
            false, // WRITE_WALLPAPER
            false, // ASSIST_STRUCTURE
            false, // ASSIST_SCREENSHOT
            false, // READ_PHONE_STATE
            false, // ADD_VOICEMAIL
            false, // USE_SIP
            false, // PROCESS_OUTGOING_CALLS
            false, // USE_FINGERPRINT
            false, // BODY_SENSORS
            false, // READ_CELL_BROADCASTS
            false, // MOCK_LOCATION
            false, // READ_EXTERNAL_STORAGE
            false, // WRITE_EXTERNAL_STORAGE
            false, // TURN_SCREEN_ON
            false, // GET_ACCOUNTS
            false, // RUN_IN_BACKGROUND
            false, // AUDIO_ACCESSIBILITY_VOLUME
            false, // READ_PHONE_NUMBERS
            false, // REQUEST_INSTALL_PACKAGES
            false, // PICTURE_IN_PICTURE
            false, // INSTANT_APP_START_FOREGROUND
            false, // ANSWER_PHONE_CALLS
            false, // RUN_ANY_IN_BACKGROUND
            false, // CHANGE_WIFI_STATE
            false, // REQUEST_DELETE_PACKAGES
            false, // BIND_ACCESSIBILITY_SERVICE
            false, // ACCEPT_HANDOVER
            false, // MANAGE_IPSEC_TUNNELS
            false, // START_FOREGROUND
            false, // BLUETOOTH_SCAN
            false, // USE_BIOMETRIC
            false, // ACTIVITY_RECOGNITION
            false, // SMS_FINANCIAL_TRANSACTIONS
            false, // READ_MEDIA_AUDIO
            false, // WRITE_MEDIA_AUDIO
            false, // READ_MEDIA_VIDEO
            false,  // WRITE_MEDIA_VIDEO
            false, // READ_MEDIA_IMAGES
            false,  // WRITE_MEDIA_IMAGES
            false,  // LEGACY_STORAGE
            false, // ACCESS_ACCESSIBILITY
            false, // READ_DEVICE_IDENTIFIERS
            false, // ACCESS_MEDIA_LOCATION
            false, // QUERY_ALL_PACKAGES
            false, // MANAGE_EXTERNAL_STORAGE
            false, // INTERACT_ACROSS_PROFILES
            false, // ACTIVATE_PLATFORM_VPN
            false, // LOADER_USAGE_STATS
            false, // deprecated operation
            false, // AUTO_REVOKE_PERMISSIONS_IF_UNUSED
            false, // AUTO_REVOKE_MANAGED_BY_INSTALLER
            false, // NO_ISOLATED_STORAGE
            false, // PHONE_CALL_MICROPHONE
            false, // PHONE_CALL_CAMERA
            false, // RECORD_AUDIO_HOTWORD
            false, // MANAGE_ONGOING_CALLS
            false, // MANAGE_CREDENTIALS
            false, // USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER
            false, // RECORD_AUDIO_OUTPUT
            false, // SCHEDULE_EXACT_ALARM
            false, // ACCESS_FINE_LOCATION_SOURCE
            false, // ACCESS_COARSE_LOCATION_SOURCE
            false, // MANAGE_MEDIA
            false, // BLUETOOTH_CONNECT
            false, // UWB_RANGING
            false, // ACTIVITY_RECOGNITION_SOURCE
            false, // BLUETOOTH_ADVERTISE
            false, // RECORD_INCOMING_PHONE_AUDIO
            false, // NEARBY_WIFI_DEVICES
            false, // OP_ESTABLISH_VPN_SERVICE
            false, // OP_ESTABLISH_VPN_MANAGER
            true, // ACCESS_RESTRICTED_SETTINGS
    };

    /**
     * Mapping from an app op name to the app op code.
     */
@@ -3142,6 +3269,14 @@ public class AppOpsManager {
        return "mode=" + mode;
    }

    /**
     * Retrieve whether the op can be read by apps with manage appops permission.
     * @hide
     */
    public static boolean opRestrictsRead(int op) {
        return sOpRestrictRead[op];
    }

    /**
     * Retrieve whether the op allows itself to be reset.
     * @hide
+0 −28
Original line number Diff line number Diff line
@@ -30,11 +30,9 @@ import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.util.Slog;
import android.view.autofill.AutofillManager;

import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicReference;

/**
 * Base class for maintaining global application state. You can provide your own
@@ -56,9 +54,6 @@ import java.util.concurrent.atomic.AtomicReference;
public class Application extends ContextWrapper implements ComponentCallbacks2 {
    private static final String TAG = "Application";

    /** Whether to enable the check to detect "duplicate application instances". */
    private static final boolean DEBUG_DUP_APP_INSTANCES = true;

    @UnsupportedAppUsage
    private ArrayList<ActivityLifecycleCallbacks> mActivityLifecycleCallbacks =
            new ArrayList<ActivityLifecycleCallbacks>();
@@ -72,9 +67,6 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 {
    @UnsupportedAppUsage
    public LoadedApk mLoadedApk;

    private static final AtomicReference<StackTrace> sConstructorStackTrace =
            new AtomicReference<>();

    public interface ActivityLifecycleCallbacks {

        /**
@@ -240,26 +232,6 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 {

    public Application() {
        super(null);
        if (DEBUG_DUP_APP_INSTANCES) {
            checkDuplicateInstances();
        }
    }

    private void checkDuplicateInstances() {
        // STOPSHIP: Delete this check b/221248960
        // Only run this check for gms-core.
        if (!"com.google.android.gms".equals(ActivityThread.currentOpPackageName())) {
            return;
        }

        final StackTrace previousStackTrace = sConstructorStackTrace.getAndSet(
                new StackTrace("Previous stack trace"));
        if (previousStackTrace == null) {
            // This is the first call.
            return;
        }
        Slog.wtf(TAG, "Application ctor called twice for " + this.getClass(),
                new StackTrace("Current stack trace", previousStackTrace));
    }

    private String getLoadedApkInfo() {
+2 −4
Original line number Diff line number Diff line
@@ -41,8 +41,7 @@ public abstract class DevicePolicyCache {
    /**
     * See {@link DevicePolicyManager#getScreenCaptureDisabled}
     */
    public abstract boolean isScreenCaptureAllowed(@UserIdInt int userHandle,
            boolean ownerCanAddInternalSystemWindow);
    public abstract boolean isScreenCaptureAllowed(@UserIdInt int userHandle);

    /**
     * Caches {@link DevicePolicyManager#getPasswordQuality(android.content.ComponentName)} of the
@@ -70,8 +69,7 @@ public abstract class DevicePolicyCache {
        private static final EmptyDevicePolicyCache INSTANCE = new EmptyDevicePolicyCache();

        @Override
        public boolean isScreenCaptureAllowed(int userHandle,
                boolean ownerCanAddInternalSystemWindow) {
        public boolean isScreenCaptureAllowed(int userHandle) {
            return true;
        }

+29 −9
Original line number Diff line number Diff line
@@ -421,6 +421,18 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
            return this;
        }

        /**
         * Set if BiometricPrompt is being used by the legacy fingerprint manager API.
         * @param sensorId sensor id
         * @return This builder.
         * @hide
         */
        @NonNull
        public Builder setIsForLegacyFingerprintManager(int sensorId) {
            mPromptInfo.setIsForLegacyFingerprintManager(sensorId);
            return this;
        }

        /**
         * Creates a {@link BiometricPrompt}.
         *
@@ -883,28 +895,36 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
            @NonNull @CallbackExecutor Executor executor,
            @NonNull AuthenticationCallback callback,
            int userId) {
        authenticateUserForOperation(cancel, executor, callback, userId, 0 /* operationId */);
        if (cancel == null) {
            throw new IllegalArgumentException("Must supply a cancellation signal");
        }
        if (executor == null) {
            throw new IllegalArgumentException("Must supply an executor");
        }
        if (callback == null) {
            throw new IllegalArgumentException("Must supply a callback");
        }

        authenticateInternal(0 /* operationId */, cancel, executor, callback, userId);
    }

    /**
     * Authenticates for the given user and keystore operation.
     * Authenticates for the given keystore operation.
     *
     * @param cancel An object that can be used to cancel authentication
     * @param executor An executor to handle callback events
     * @param callback An object to receive authentication events
     * @param userId The user to authenticate
     * @param operationId The keystore operation associated with authentication
     *
     * @return A requestId that can be used to cancel this operation.
     *
     * @hide
     */
    @RequiresPermission(USE_BIOMETRIC_INTERNAL)
    public long authenticateUserForOperation(
    @RequiresPermission(USE_BIOMETRIC)
    public long authenticateForOperation(
            @NonNull CancellationSignal cancel,
            @NonNull @CallbackExecutor Executor executor,
            @NonNull AuthenticationCallback callback,
            int userId,
            long operationId) {
        if (cancel == null) {
            throw new IllegalArgumentException("Must supply a cancellation signal");
@@ -916,7 +936,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
            throw new IllegalArgumentException("Must supply a callback");
        }

        return authenticateInternal(operationId, cancel, executor, callback, userId);
        return authenticateInternal(operationId, cancel, executor, callback, mContext.getUserId());
    }

    /**
@@ -1050,7 +1070,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
    private void cancelAuthentication(long requestId) {
        if (mService != null) {
            try {
                mService.cancelAuthentication(mToken, mContext.getOpPackageName(), requestId);
                mService.cancelAuthentication(mToken, mContext.getPackageName(), requestId);
            } catch (RemoteException e) {
                Log.e(TAG, "Unable to cancel authentication", e);
            }
@@ -1109,7 +1129,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
            }

            final long authId = mService.authenticate(mToken, operationId, userId,
                    mBiometricServiceReceiver, mContext.getOpPackageName(), promptInfo);
                    mBiometricServiceReceiver, mContext.getPackageName(), promptInfo);
            cancel.setOnCancelListener(new OnAuthenticationCancelListener(authId));
            return authId;
        } catch (RemoteException e) {
Loading