summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ruslan Tkhakokhov <rthakohov@google.com> 2021-03-01 14:53:36 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-03-01 14:53:36 +0000
commitb56fc740bb8ea51d6db11cdfdb92f108fc22bc65 (patch)
tree66ef674a20119f48acb7856002a3ecc76561d0df
parent7df4e1c5a4c02410d9739158c47cf92a9dd4cb4d (diff)
parent75ee2bf7f122aeb33ca6bdb466fb69873a6973c5 (diff)
Merge "Update D2D logic in line with new opt-out rules" into sc-dev
-rw-r--r--core/java/android/app/backup/BackupAgent.java4
-rw-r--r--core/java/android/app/backup/FullBackup.java17
-rw-r--r--core/tests/coretests/src/android/app/backup/BackupAgentTest.java8
-rw-r--r--packages/LocalTransport/src/com/android/localtransport/LocalTransport.java3
4 files changed, 19 insertions, 13 deletions
diff --git a/core/java/android/app/backup/BackupAgent.java b/core/java/android/app/backup/BackupAgent.java
index 85cfe835c28d..22492ccd0373 100644
--- a/core/java/android/app/backup/BackupAgent.java
+++ b/core/java/android/app/backup/BackupAgent.java
@@ -564,10 +564,6 @@ public abstract class BackupAgent extends ContextWrapper {
@VisibleForTesting
public IncludeExcludeRules getIncludeExcludeRules(FullBackup.BackupScheme backupScheme)
throws IOException, XmlPullParserException {
- if (isDeviceToDeviceMigration()) {
- return IncludeExcludeRules.emptyRules();
- }
-
Map<String, Set<PathWithRequiredFlags>> manifestIncludeMap;
ArraySet<PathWithRequiredFlags> manifestExcludeSet;
diff --git a/core/java/android/app/backup/FullBackup.java b/core/java/android/app/backup/FullBackup.java
index 3701ea825933..829b6cd43934 100644
--- a/core/java/android/app/backup/FullBackup.java
+++ b/core/java/android/app/backup/FullBackup.java
@@ -20,11 +20,15 @@ import static android.app.backup.BackupManager.OperationType;
import android.annotation.Nullable;
import android.annotation.StringDef;
+import android.app.compat.CompatChanges;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.res.XmlResourceParser;
+import android.os.Build;
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.os.storage.StorageManager;
@@ -96,6 +100,14 @@ public class FullBackup {
public static final String FLAG_REQUIRED_FAKE_CLIENT_SIDE_ENCRYPTION =
"fakeClientSideEncryption";
+ /**
+ * When this change is enabled, include / exclude rules specified via
+ * {@code android:fullBackupContent} are ignored during D2D transfers.
+ */
+ @ChangeId
+ @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S)
+ private static final long IGNORE_FULL_BACKUP_CONTENT_IN_D2D = 180523564L;
+
@StringDef({
ConfigSection.CLOUD_BACKUP,
ConfigSection.DEVICE_TRANSFER
@@ -527,7 +539,10 @@ public class FullBackup {
}
}
- // TODO(b/180523564): Ignore the old config for apps targeting Android S+ during D2D.
+ if (operationType == OperationType.MIGRATION
+ && CompatChanges.isChangeEnabled(IGNORE_FULL_BACKUP_CONTENT_IN_D2D)) {
+ return;
+ }
if (mFullBackupContent != 0) {
// Fall back to the old config.
diff --git a/core/tests/coretests/src/android/app/backup/BackupAgentTest.java b/core/tests/coretests/src/android/app/backup/BackupAgentTest.java
index ea903f2b61eb..37cf4700c1d0 100644
--- a/core/tests/coretests/src/android/app/backup/BackupAgentTest.java
+++ b/core/tests/coretests/src/android/app/backup/BackupAgentTest.java
@@ -57,14 +57,6 @@ public class BackupAgentTest {
}
@Test
- public void testGetIncludeExcludeRules_isMigration_returnsEmptyRules() throws Exception {
- mBackupAgent = getAgentForOperationType(OperationType.MIGRATION);
-
- IncludeExcludeRules rules = mBackupAgent.getIncludeExcludeRules(mBackupScheme);
- assertThat(rules).isEqualTo(IncludeExcludeRules.emptyRules());
- }
-
- @Test
public void testGetIncludeExcludeRules_isNotMigration_returnsRules() throws Exception {
PathWithRequiredFlags path = new PathWithRequiredFlags("path", /* requiredFlags */ 0);
Map<String, Set<PathWithRequiredFlags>> includePaths = Collections.singletonMap("test",
diff --git a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
index c9d8a8198ca4..139c8e59a148 100644
--- a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
+++ b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
@@ -162,6 +162,9 @@ public class LocalTransport extends BackupTransport {
if (mParameters.isFakeEncryptionFlag()) {
flags |= BackupAgent.FLAG_FAKE_CLIENT_SIDE_ENCRYPTION_ENABLED;
}
+ if (mParameters.isDeviceTransfer()) {
+ flags |= BackupAgent.FLAG_DEVICE_TO_DEVICE_TRANSFER;
+ }
return flags;
}