Make dataChangeCount part of BackupManagerServiceState.
PiperOrigin-RevId: 361537872
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowBackupManagerTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowBackupManagerTest.java
index 473c043..b7c8cfa 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowBackupManagerTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowBackupManagerTest.java
@@ -61,6 +61,10 @@
assertThat(shadowOf(backupManager).isDataChanged()).isTrue();
assertThat(shadowOf(backupManager).getDataChangedCount()).isEqualTo(i);
}
+
+ ShadowBackupManager.reset();
+ assertThat(shadowOf(backupManager).isDataChanged()).isFalse();
+ assertThat(shadowOf(backupManager).getDataChangedCount()).isEqualTo(0);
}
@Test
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBackupManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBackupManager.java
index 45567fa..42195f5 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBackupManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBackupManager.java
@@ -42,7 +42,6 @@
private static BackupManagerServiceState serviceState = new BackupManagerServiceState();
@RealObject private BackupManager realBackupManager;
- private int dataChangedCount;
private Context context;
@Resetter
@@ -59,17 +58,17 @@
@Implementation
protected void dataChanged() {
- dataChangedCount++;
+ serviceState.dataChangedCount.merge(context.getPackageName(), 1, Integer::sum);
}
/** Returns whether {@link #dataChanged()} was called. */
public boolean isDataChanged() {
- return dataChangedCount > 0;
+ return serviceState.dataChangedCount.containsKey(context.getPackageName());
}
/** Returns number of times {@link #dataChanged()} was called. */
public int getDataChangedCount() {
- return dataChangedCount;
+ return serviceState.dataChangedCount.getOrDefault(context.getPackageName(), 0);
}
@Implementation(minSdk = LOLLIPOP)
@@ -161,12 +160,12 @@
}
// Override method for SDK <= 28
- public int restoreSome(long token, IRestoreObserver observer, IBackupManagerMonitor monitor,
- String[] packages) throws RemoteException {
+ public int restoreSome(
+ long token, IRestoreObserver observer, IBackupManagerMonitor monitor, String[] packages)
+ throws RemoteException {
return restorePackages(token, observer, packages, monitor);
}
-
public int restorePackages(
long token, IRestoreObserver observer, String[] packages, IBackupManagerMonitor monitor)
throws RemoteException {
@@ -235,6 +234,7 @@
private static class BackupManagerServiceState {
boolean backupEnabled = true;
long lastRestoreToken = 0L;
+ final Map<String, Integer> dataChangedCount = new HashMap<>();
final Map<Long, List<String>> restoreData = new HashMap<>();
final Map<String, Long> restoredPackages = new HashMap<>();
}