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

Commit 500ebeee authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7272808 from 2c34160c to sc-release

Change-Id: I0e6db695ced118ff100eaa248318a42317f7493f
parents 3e81f95e 2c34160c
Loading
Loading
Loading
Loading
+43 −53
Original line number Diff line number Diff line
@@ -271,6 +271,44 @@ droidstubs {
// from stub sources
/////////////////////////////////////////////////////////////////////

modules_public_stubs = [
    "android.net.ipsec.ike.stubs",
    "art.module.public.api.stubs",
    "conscrypt.module.public.api.stubs",
    "framework-appsearch.stubs",
    "framework-connectivity.stubs",
    "framework-graphics.stubs",
    "framework-media.stubs",
    "framework-mediaprovider.stubs",
    "framework-permission.stubs",
    "framework-permission-s.stubs",
    "framework-scheduling.stubs",
    "framework-sdkextensions.stubs",
    "framework-statsd.stubs",
    "framework-tethering.stubs",
    "framework-wifi.stubs",
    "i18n.module.public.api.stubs",
]

modules_system_stubs = [
    "android.net.ipsec.ike.stubs.system",
    "art.module.public.api.stubs", // Only has public stubs
    "conscrypt.module.public.api.stubs", // Only has public stubs
    "framework-appsearch.stubs.system",
    "framework-connectivity.stubs.system",
    "framework-graphics.stubs.system",
    "framework-media.stubs.system",
    "framework-mediaprovider.stubs.system",
    "framework-permission.stubs.system",
    "framework-permission-s.stubs.system",
    "framework-scheduling.stubs.system",
    "framework-sdkextensions.stubs.system",
    "framework-statsd.stubs.system",
    "framework-tethering.stubs.system",
    "framework-wifi.stubs.system",
    "i18n.module.public.api.stubs", // Only has public stubs
]

java_defaults {
    name: "android_defaults_stubs_current",
    libs: [ "stub-annotations" ],
@@ -302,23 +340,7 @@ java_defaults {
java_library_static {
    name: "android_stubs_current",
    srcs: [ ":api-stubs-docs-non-updatable" ],
    static_libs: [
        "android.net.ipsec.ike.stubs",
        "art.module.public.api.stubs",
        "conscrypt.module.public.api.stubs",
        "framework-appsearch.stubs",
        "framework-connectivity.stubs",
        "framework-graphics.stubs",
        "framework-media.stubs",
        "framework-mediaprovider.stubs",
        "framework-permission.stubs",
        "framework-permission-s.stubs",
        "framework-scheduling.stubs",
        "framework-sdkextensions.stubs",
        "framework-statsd.stubs",
        "framework-tethering.stubs",
        "framework-wifi.stubs",
        "i18n.module.public.api.stubs",
    static_libs: modules_public_stubs + [
        "private-stub-annotations-jar",
    ],
    defaults: ["android_defaults_stubs_current"],
@@ -327,23 +349,7 @@ java_library_static {
java_library_static {
    name: "android_system_stubs_current",
    srcs: [ ":system-api-stubs-docs-non-updatable" ],
    static_libs: [
        "android.net.ipsec.ike.stubs.system",
        "art.module.public.api.stubs",
        "conscrypt.module.public.api.stubs",
        "framework-appsearch.stubs.system",
        "framework-connectivity.stubs.system",
        "framework-graphics.stubs.system",
        "framework-media.stubs.system",
        "framework-mediaprovider.stubs.system",
        "framework-permission.stubs.system",
        "framework-permission-s.stubs.system",
        "framework-scheduling.stubs.system",
        "framework-sdkextensions.stubs.system",
        "framework-statsd.stubs.system",
        "framework-tethering.stubs.system",
        "framework-wifi.stubs.system",
        "i18n.module.public.api.stubs",
    static_libs: modules_system_stubs + [
        "private-stub-annotations-jar",
    ],
    defaults: [
@@ -366,25 +372,9 @@ java_library_static {
java_library_static {
    name: "android_test_stubs_current",
    srcs: [ ":test-api-stubs-docs-non-updatable" ],
    static_libs: [
    // Modules do not have test APIs, but we want to include their SystemApis, like we include
    // the SystemApi of framework-non-updatable-sources.
        "android.net.ipsec.ike.stubs.system",
        "art.module.public.api.stubs",
        "conscrypt.module.public.api.stubs",
        "framework-appsearch.stubs.system",
        "framework-connectivity.stubs.system",
        "framework-graphics.stubs.system",
        "framework-media.stubs.system",
        "framework-mediaprovider.stubs.system",
        "framework-permission.stubs.system",
        "framework-permission-s.stubs.system",
        "framework-scheduling.stubs.system",
        "framework-sdkextensions.stubs.system",
        "framework-statsd.stubs.system",
        "framework-tethering.stubs.system",
        "framework-wifi.stubs.system",
        "i18n.module.public.api.stubs",
    static_libs: modules_system_stubs + [
        "private-stub-annotations-jar",
    ],
    defaults: [
+23 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
@@ -1132,12 +1133,31 @@ public class AlarmManager {
    }

    /**
     * Called to check if the caller has permission to use alarms set via {@link }
     * @return
     * Called to check if the caller has the permission
     * {@link Manifest.permission#SCHEDULE_EXACT_ALARM}.
     *
     * Apps can start {@link android.provider.Settings#ACTION_REQUEST_SCHEDULE_EXACT_ALARM} to
     * request this from the user.
     *
     * @return {@code true} if the caller has the permission, {@code false} otherwise.
     * @see android.provider.Settings#ACTION_REQUEST_SCHEDULE_EXACT_ALARM
     */
    public boolean canScheduleExactAlarms() {
        return hasScheduleExactAlarm(mContext.getOpPackageName(), mContext.getUserId());
    }

    /**
     * Called to check if the given package in the given user has the permission
     * {@link Manifest.permission#SCHEDULE_EXACT_ALARM}.
     *
     * <p><em>Note: This is only for use by system components.</em>
     *
     * @hide
     */
    @TestApi
    public boolean hasScheduleExactAlarm(@NonNull String packageName, int userId) {
        try {
            return mService.canScheduleExactAlarms();
            return mService.hasScheduleExactAlarm(packageName, userId);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
+1 −1
Original line number Diff line number Diff line
@@ -41,6 +41,6 @@ interface IAlarmManager {
    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    AlarmManager.AlarmClockInfo getNextAlarmClock(int userId);
    long currentNetworkTimeMillis();
    boolean canScheduleExactAlarms();
    boolean hasScheduleExactAlarm(String packageName, int userId);
    int getConfigVersion();
}
+165 −207

File changed.

Preview size limit exceeded, changes collapsed.

+11 −0
Original line number Diff line number Diff line
@@ -111,6 +111,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.ConcurrentUtils;
import com.android.server.AlarmManagerInternal;
import com.android.server.JobSchedulerBackgroundThread;
import com.android.server.LocalServices;
import com.android.server.pm.parsing.pkg.AndroidPackage;
@@ -1191,6 +1192,10 @@ public class AppStandbyController
            if (mInjector.isWellbeingPackage(packageName)) {
                return STANDBY_BUCKET_WORKING_SET;
            }

            if (mInjector.hasScheduleExactAlarm(packageName, UserHandle.getUid(userId, appId))) {
                return STANDBY_BUCKET_WORKING_SET;
            }
        }

        // Check this last, as it can be the most expensive check
@@ -2007,6 +2012,7 @@ public class AppStandbyController
        private PowerManager mPowerManager;
        private IDeviceIdleController mDeviceIdleController;
        private CrossProfileAppsInternal mCrossProfileAppsInternal;
        private AlarmManagerInternal mAlarmManagerInternal;
        int mBootPhase;
        /**
         * The minimum amount of time required since the last user interaction before an app can be
@@ -2047,6 +2053,7 @@ public class AppStandbyController
                mBatteryManager = mContext.getSystemService(BatteryManager.class);
                mCrossProfileAppsInternal = LocalServices.getService(
                        CrossProfileAppsInternal.class);
                mAlarmManagerInternal = LocalServices.getService(AlarmManagerInternal.class);

                final ActivityManager activityManager =
                        (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
@@ -2110,6 +2117,10 @@ public class AppStandbyController
            return mWellbeingApp != null && mWellbeingApp.equals(packageName);
        }

        boolean hasScheduleExactAlarm(String packageName, int uid) {
            return mAlarmManagerInternal.hasScheduleExactAlarm(packageName, uid);
        }

        void updatePowerWhitelistCache() {
            try {
                // Don't call out to DeviceIdleController with the lock held.
Loading