Merge "Add autobackup XML support for test BackupTransport flag" into pi-dev
diff --git a/core/java/android/app/backup/FullBackup.java b/core/java/android/app/backup/FullBackup.java
index fb1c2d0..b7a8da5 100644
--- a/core/java/android/app/backup/FullBackup.java
+++ b/core/java/android/app/backup/FullBackup.java
@@ -84,6 +84,8 @@
 
     public static final String FLAG_REQUIRED_CLIENT_SIDE_ENCRYPTION = "clientSideEncryption";
     public static final String FLAG_REQUIRED_DEVICE_TO_DEVICE_TRANSFER = "deviceToDeviceTransfer";
+    public static final String FLAG_REQUIRED_FAKE_CLIENT_SIDE_ENCRYPTION =
+            "fakeClientSideEncryption";
 
     /**
      * @hide
@@ -600,6 +602,8 @@
                     case FLAG_REQUIRED_DEVICE_TO_DEVICE_TRANSFER:
                         flags |= BackupAgent.FLAG_DEVICE_TO_DEVICE_TRANSFER;
                         break;
+                    case FLAG_REQUIRED_FAKE_CLIENT_SIDE_ENCRYPTION:
+                        flags |= BackupAgent.FLAG_FAKE_CLIENT_SIDE_ENCRYPTION_ENABLED;
                     default:
                         Log.w(TAG, "Unrecognized requiredFlag provided, value: \"" + f + "\"");
                 }
diff --git a/core/tests/coretests/src/android/app/backup/FullBackupTest.java b/core/tests/coretests/src/android/app/backup/FullBackupTest.java
index 58ee7a7..5db416b 100644
--- a/core/tests/coretests/src/android/app/backup/FullBackupTest.java
+++ b/core/tests/coretests/src/android/app/backup/FullBackupTest.java
@@ -16,9 +16,6 @@
 
 package android.app.backup;
 
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
 import android.app.backup.FullBackup.BackupScheme.PathWithRequiredFlags;
 import android.content.Context;
 import android.support.test.filters.LargeTest;
@@ -102,6 +99,28 @@
                 include.getRequiredFlags());
     }
 
+    public void testParseBackupSchemeFromXml_onlyIncludeRequireFakeEncryptionFlag()
+            throws Exception {
+        mXpp.setInput(new StringReader(
+                "<full-backup-content>"
+                        + "<include path=\"onlyInclude.txt\" domain=\"file\""
+                        + " requireFlags=\"fakeClientSideEncryption\"/>"
+                        + "</full-backup-content>"));
+
+        FullBackup.BackupScheme bs = FullBackup.getBackupSchemeForTest(mContext);
+        bs.parseBackupSchemeFromXmlLocked(mXpp, excludesSet, includeMap);
+
+        Set<PathWithRequiredFlags> fileDomainIncludes = includeMap.get(FullBackup.FILES_TREE_TOKEN);
+        assertEquals("Didn't find expected file domain include.", 1, fileDomainIncludes.size());
+        PathWithRequiredFlags include = fileDomainIncludes.iterator().next();
+        assertEquals("Invalid path parsed for <include/>",
+                new File(mContext.getFilesDir(), "onlyInclude.txt").getCanonicalPath(),
+                include.getPath());
+        assertEquals("Invalid requireFlags parsed for <include/>",
+                BackupAgent.FLAG_FAKE_CLIENT_SIDE_ENCRYPTION_ENABLED,
+                include.getRequiredFlags());
+    }
+
     public void testparseBackupSchemeFromXml_onlyIncludeRequireD2DFlag() throws Exception {
         mXpp.setInput(new StringReader(
                 "<full-backup-content>" +