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

Commit 61978f2d authored by Andrea Zilio's avatar Andrea Zilio Committed by Android (Google) Code Review
Browse files

Merge "Allow disabling framework Backup scheduling"

parents b2c5e952 8094d4da
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -195,10 +195,35 @@ public class Bmgr {
            return;
        }

        if ("scheduling".equals(op)) {
            setSchedulingEnabled(userId);
            return;
        }

        System.err.println("Unknown command");
        showUsage();
    }

    private void setSchedulingEnabled(int userId) {
        String arg = nextArg();
        if (arg == null) {
            showUsage();
            return;
        }

        try {
            boolean enable = Boolean.parseBoolean(arg);
            mBmgr.setFrameworkSchedulingEnabledForUser(userId, enable);
            System.out.println(
                    "Backup scheduling is now "
                            + (enable ? "enabled" : "disabled")
                            + " for user "
                            + userId);
        } catch (RemoteException e) {
            handleRemoteException(e);
        }
    }

    private void handleRemoteException(RemoteException e) {
        System.err.println(e.toString());
        System.err.println(BMGR_NOT_RUNNING_ERR);
@@ -944,6 +969,7 @@ public class Bmgr {
        System.err.println("       bmgr activate BOOL");
        System.err.println("       bmgr activated");
        System.err.println("       bmgr autorestore BOOL");
        System.err.println("       bmgr scheduling BOOL");
        System.err.println("");
        System.err.println("The '--user' option specifies the user on which the operation is run.");
        System.err.println("It must be the first argument before the operation.");
@@ -1021,6 +1047,9 @@ public class Bmgr {
        System.err.println("");
        System.err.println("The 'autorestore' command enables or disables automatic restore when");
        System.err.println("a new package is installed.");
        System.err.println("");
        System.err.println("The 'scheduling' command enables or disables backup scheduling in the");
        System.err.println("framework.");
    }

    private static class BackupMonitor extends IBackupManagerMonitor.Stub {
+27 −3
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package android.app.backup;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
@@ -38,8 +37,6 @@ import android.os.UserHandle;
import android.util.Log;
import android.util.Pair;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;

/**
@@ -409,6 +406,33 @@ public class BackupManager {
        }
    }

    /**
     * Enable/disable the framework backup scheduling entirely for the current user. When disabled,
     * no Key/Value or Full backup jobs will be scheduled by the Android framework.
     *
     * <p>Note: This does not disable backups: only their scheduling is affected and backups can
     * still be triggered manually.
     *
     * <p>Callers must hold the android.permission.BACKUP permission to use this method.
     *
     * @hide
     */
    @RequiresPermission(allOf = {android.Manifest.permission.BACKUP,
            android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}, conditional = true)
    public void setFrameworkSchedulingEnabled(boolean isEnabled) {
        checkServiceBinder();
        if (sService == null) {
            Log.e(TAG, "setFrameworkSchedulingEnabled() couldn't connect");
            return;
        }

        try {
            sService.setFrameworkSchedulingEnabledForUser(mContext.getUserId(), isEnabled);
        } catch (RemoteException e) {
            Log.e(TAG, "setFrameworkSchedulingEnabled() couldn't connect");
        }
    }

    /**
     * Report whether the backup mechanism is currently enabled.
     *
+16 −0
Original line number Diff line number Diff line
@@ -155,6 +155,22 @@ interface IBackupManager {
     */
    void setBackupEnabledForUser(int userId, boolean isEnabled);


    /**
     * Enable/disable the framework backup scheduling entirely. When disabled, no Key/Value or Full
     * backup jobs will be scheduled by the Android framework.
     *
     * <p>Note: This does not disable backups: only their scheduling is affected and backups can
     * still be triggered manually.
     *
     * <p>Callers must hold the android.permission.BACKUP permission to use this method. If
     * {@code userId} is different from the calling user id, then the caller must additionally hold
     * the android.permission.INTERACT_ACROSS_USERS_FULL permission.
     *
     * @param userId The user for which backup scheduling should be enabled/disabled.
     */
    void setFrameworkSchedulingEnabledForUser(int userId, boolean isEnabled);

    /**
     * {@link android.app.backup.IBackupManager.setBackupEnabledForUser} for the calling user id.
     */
+6 −0
Original line number Diff line number Diff line
@@ -8659,6 +8659,12 @@ public final class Settings {
        @Readable
        public static final String BACKUP_AUTO_RESTORE = "backup_auto_restore";
        /**
         * Controls whether framework backup scheduling is enabled.
         * @hide
         */
        public static final String BACKUP_SCHEDULING_ENABLED = "backup_scheduling_enabled";
        /**
         * Indicates whether settings backup has been fully provisioned.
         * Type: int ( 0 = unprovisioned, 1 = fully provisioned )
+1 −0
Original line number Diff line number Diff line
@@ -695,6 +695,7 @@ public class SettingsBackupTest {
                 Settings.Secure.BACKUP_AUTO_RESTORE,
                 Settings.Secure.BACKUP_ENABLED,
                 Settings.Secure.BACKUP_PROVISIONED,
                 Settings.Secure.BACKUP_SCHEDULING_ENABLED,
                 Settings.Secure.BACKUP_TRANSPORT,
                 Settings.Secure.CALL_SCREENING_DEFAULT_COMPONENT,
                 Settings.Secure.CAMERA_LIFT_TRIGGER_ENABLED, // Candidate for backup?
Loading