summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAl Sutton <alsutton@google.com>2020-01-23 07:31:51 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-01-23 07:31:51 +0000
commitc8f1f33ed47ca97fecf058c61ba1b890809812f0 (patch)
tree94f409ac0dca2c36a38b8ab9fe738a9d400d5051
parent89b8707267f2c5e692c6c6933669ca223922cd65 (diff)
parent27c64a3bed785f1bd4bda4896b4df0807d0804d2 (diff)
Merge "Add feature flag for "no data" backup calls"
-rw-r--r--core/java/android/util/FeatureFlagUtils.java6
-rw-r--r--services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java7
-rw-r--r--services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java10
3 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index eb4af1c2a979..06fccaf8ea81 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -44,6 +44,9 @@ public class FeatureFlagUtils {
public static final String SETTINGS_FUSE_FLAG = "settings_fuse";
public static final String NOTIF_CONVO_BYPASS_SHORTCUT_REQ =
"settings_notif_convo_bypass_shortcut_req";
+ /** @hide */
+ public static final String BACKUP_NO_KV_DATA_CHANGE_CALLS =
+ "backup_enable_no_data_notification_calls";
private static final Map<String, String> DEFAULT_FLAGS;
@@ -62,6 +65,9 @@ public class FeatureFlagUtils {
DEFAULT_FLAGS.put("settings_controller_loading_enhancement", "false");
DEFAULT_FLAGS.put("settings_conditionals", "false");
DEFAULT_FLAGS.put(NOTIF_CONVO_BYPASS_SHORTCUT_REQ, "true");
+
+ // Disabled until backup transports support it.
+ DEFAULT_FLAGS.put(BACKUP_NO_KV_DATA_CHANGE_CALLS, "false");
}
/**
diff --git a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
index 5e10916c4491..0bcf45d4a526 100644
--- a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
+++ b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
@@ -47,6 +47,7 @@ import android.os.RemoteException;
import android.os.SELinux;
import android.os.UserHandle;
import android.os.WorkSource;
+import android.util.FeatureFlagUtils;
import android.util.Log;
import com.android.internal.annotations.GuardedBy;
@@ -399,6 +400,12 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable {
* the transport have no data.
*/
private void informTransportOfUnchangedApps(Set<String> appsBackedUp) {
+ // If the feautre is not enabled then we just exit early.
+ if (!FeatureFlagUtils.isEnabled(mBackupManagerService.getContext(),
+ FeatureFlagUtils.BACKUP_NO_KV_DATA_CHANGE_CALLS)) {
+ return;
+ }
+
String[] succeedingPackages = getSucceedingPackages();
if (succeedingPackages == null) {
// Nothing is succeeding, so end early.
diff --git a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
index ec56e1ebc8e0..62ff3a1c2126 100644
--- a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
@@ -96,6 +96,7 @@ import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.platform.test.annotations.Presubmit;
+import android.util.FeatureFlagUtils;
import android.util.Pair;
import com.android.internal.backup.IBackupTransport;
@@ -258,6 +259,9 @@ public class KeyValueBackupTaskTest {
public void tearDown() throws Exception {
ShadowBackupDataInput.reset();
ShadowApplicationPackageManager.reset();
+ // False by default.
+ FeatureFlagUtils.setEnabled(
+ mContext, FeatureFlagUtils.BACKUP_NO_KV_DATA_CHANGE_CALLS, false);
}
@Test
@@ -2344,6 +2348,9 @@ public class KeyValueBackupTaskTest {
@Test
public void testRunTask_whenNoDataToBackupOnFirstBackup_doesNotTellTransportOfBackup()
throws Exception {
+ FeatureFlagUtils.setEnabled(
+ mContext, FeatureFlagUtils.BACKUP_NO_KV_DATA_CHANGE_CALLS, true);
+
TransportMock transportMock = setUpInitializedTransport(mTransport);
mBackupManagerService.setCurrentToken(0L);
when(transportMock.transport.getCurrentRestoreSet()).thenReturn(1234L);
@@ -2361,6 +2368,9 @@ public class KeyValueBackupTaskTest {
@Test
public void testRunTask_whenBackupHasCompletedAndThenNoDataChanges_transportGetsNotified()
throws Exception {
+ FeatureFlagUtils.setEnabled(
+ mContext, FeatureFlagUtils.BACKUP_NO_KV_DATA_CHANGE_CALLS, true);
+
TransportMock transportMock = setUpInitializedTransport(mTransport);
when(transportMock.transport.getCurrentRestoreSet()).thenReturn(1234L);
when(transportMock.transport.isAppEligibleForBackup(