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

Commit 67b8460d authored by Sarp Misoglu's avatar Sarp Misoglu
Browse files

Add restricted mode logic to LocalTransport

We need LocalTransport to implement
getPackagesThatShouldNotUseRestrictedMode to be able to test it.

Bug: 376661510
Bug: 379086316
Flag: TEST_ONLY
Test: CtsBackupTestCases
Change-Id: I34bfcbd675f3a2ecf6fb63629fd9e15e96522001
parent dd413e96
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -16,8 +16,10 @@

package com.android.localtransport;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.backup.BackupAgent;
import android.app.backup.BackupAnnotations;
import android.app.backup.BackupDataInput;
import android.app.backup.BackupDataOutput;
import android.app.backup.BackupManagerMonitor;
@@ -52,6 +54,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * Backup transport for stashing stuff into a known location on disk, and
@@ -939,4 +942,15 @@ public class LocalTransport extends BackupTransport {
            }
        }
    }

    @NonNull
    @Override
    public List<String> getPackagesThatShouldNotUseRestrictedMode(
            @NonNull List<String> packageNames,
            @BackupAnnotations.OperationType int operationType) {
        if (DEBUG) {
            Log.d(TAG, "No restricted mode packages: " + mParameters.noRestrictedModePackages());
        }
        return mParameters.noRestrictedModePackages();
    }
}
+17 −2
Original line number Diff line number Diff line
@@ -16,26 +16,33 @@

package com.android.localtransport;

import android.util.KeyValueSettingObserver;
import android.content.ContentResolver;
import android.os.Handler;
import android.provider.Settings;
import android.util.KeyValueListParser;
import android.util.KeyValueSettingObserver;

import java.util.Arrays;
import java.util.List;

public class LocalTransportParameters extends KeyValueSettingObserver {
    private static final String TAG = "LocalTransportParams";
    private static final String SETTING = Settings.Secure.BACKUP_LOCAL_TRANSPORT_PARAMETERS;
    private static final String KEY_FAKE_ENCRYPTION_FLAG = "fake_encryption_flag";
    private static final String KEY_NON_INCREMENTAL_ONLY = "non_incremental_only";
    private static final String KEY_IS_DEVICE_TRANSFER = "is_device_transfer";
    private static final String KEY_IS_ENCRYPTED = "is_encrypted";
    private static final String KEY_LOG_AGENT_RESULTS = "log_agent_results";
    // This needs to be a list of package names separated by semicolons. For example:
    // "com.package1;com.package2;com.package3". We can't use commas because the base class uses
    // commas to split Key/Value pairs.
    private static final String KEY_NO_RESTRICTED_MODE_PACKAGES = "no_restricted_mode_packages";

    private boolean mFakeEncryptionFlag;
    private boolean mIsNonIncrementalOnly;
    private boolean mIsDeviceTransfer;
    private boolean mIsEncrypted;
    private boolean mLogAgentResults;
    private String mNoRestrictedModePackages;

    public LocalTransportParameters(Handler handler, ContentResolver resolver) {
        super(handler, resolver, Settings.Secure.getUriFor(SETTING));
@@ -61,6 +68,13 @@ public class LocalTransportParameters extends KeyValueSettingObserver {
        return mLogAgentResults;
    }

    List<String> noRestrictedModePackages() {
        if (mNoRestrictedModePackages == null) {
            return List.of();
        }
        return Arrays.stream(mNoRestrictedModePackages.split(";")).toList();
    }

    public String getSettingValue(ContentResolver resolver) {
        return Settings.Secure.getString(resolver, SETTING);
    }
@@ -71,5 +85,6 @@ public class LocalTransportParameters extends KeyValueSettingObserver {
        mIsDeviceTransfer = parser.getBoolean(KEY_IS_DEVICE_TRANSFER, false);
        mIsEncrypted = parser.getBoolean(KEY_IS_ENCRYPTED, false);
        mLogAgentResults = parser.getBoolean(KEY_LOG_AGENT_RESULTS, /* def */ false);
        mNoRestrictedModePackages = parser.getString(KEY_NO_RESTRICTED_MODE_PACKAGES, /* def */ "");
    }
}