Loading services/backup/java/com/android/server/backup/BackupManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -497,6 +497,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { mDataDir = dataDir; } @Nullable public DataChangedJournal getJournal() { return mJournal; } Loading services/backup/java/com/android/server/backup/DataChangedJournal.java +15 −10 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; /** * A journal of packages that have indicated that their data has changed (and therefore should be Loading Loading @@ -64,12 +66,12 @@ public class DataChangedJournal { } /** * Invokes {@link Consumer#accept(String)} with every package name in the journal file. * Invokes {@link Consumer#accept(Object)} with every package name in the journal file. * * @param consumer The callback. * @throws IOException If there is an IO error reading from the file. */ public void forEach(Consumer consumer) throws IOException { public void forEach(Consumer<String> consumer) throws IOException { try ( BufferedInputStream bufferedInputStream = new BufferedInputStream( new FileInputStream(mFile), BUFFER_SIZE_BYTES); Loading @@ -82,6 +84,17 @@ public class DataChangedJournal { } } /** * Returns a list with the packages in this journal. * * @throws IOException If there is an IO error reading from the file. */ public List<String> getPackages() throws IOException { List<String> packages = new ArrayList<>(); forEach(packages::add); return packages; } /** * Deletes the journal from the filesystem. * Loading Loading @@ -109,14 +122,6 @@ public class DataChangedJournal { return mFile.toString(); } /** * Consumer for iterating over package names in the journal. */ @FunctionalInterface public interface Consumer { void accept(String packageName); } /** * Creates a new journal with a random file name in the given journal directory. * Loading services/backup/java/com/android/server/backup/internal/PerformBackupTask.java +10 −3 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import android.util.EventLog; import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.backup.IBackupTransport; import com.android.internal.util.Preconditions; import com.android.server.AppWidgetBackupBridge; Loading Loading @@ -112,6 +113,11 @@ import java.util.concurrent.CountDownLatch; */ public class PerformBackupTask implements BackupRestoreTask { private static final String TAG = "PerformBackupTask"; private static final String BLANK_STATE_FILE_NAME = "blank_state"; @VisibleForTesting public static final String STAGING_FILE_SUFFIX = ".data"; @VisibleForTesting public static final String NEW_STATE_FILE_SUFFIX = ".new"; private BackupManagerService backupManagerService; private final Object mCancelLock = new Object(); Loading Loading @@ -651,10 +657,11 @@ public class PerformBackupTask implements BackupRestoreTask { } backupManagerService.addBackupTrace("invoking " + packageName); File blankStateName = new File(mStateDir, "blank_state"); File blankStateName = new File(mStateDir, BLANK_STATE_FILE_NAME); mSavedStateName = new File(mStateDir, packageName); mBackupDataName = new File(backupManagerService.getDataDir(), packageName + ".data"); mNewStateName = new File(mStateDir, packageName + ".new"); mBackupDataName = new File(backupManagerService.getDataDir(), packageName + STAGING_FILE_SUFFIX); mNewStateName = new File(mStateDir, packageName + NEW_STATE_FILE_SUFFIX); if (MORE_DEBUG) Slog.d(TAG, "data file: " + mBackupDataName); mSavedState = null; Loading services/robotests/src/com/android/server/backup/PerformBackupTaskTest.java +479 −166 File changed.Preview size limit exceeded, changes collapsed. Show changes services/robotests/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.server.backup.restore; import static com.android.server.backup.testing.BackupManagerServiceTestUtils.createBackupWakeLock; import static com.android.server.backup.testing.BackupManagerServiceTestUtils.setUpBackupManagerServiceBasics; import static com.android.server.backup.testing.BackupManagerServiceTestUtils.startBackupThreadAndGetLooper; import static com.android.server.backup.testing.TestUtils.assertEventLogged; import static com.android.server.backup.testing.TestUtils.assertEventNotLogged; import static com.android.server.backup.testing.TransportData.backupTransport; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -210,7 +213,7 @@ public class ActiveRestoreSessionTest { mShadowBackupLooper.runToEndOfTasks(); assertThat(result).isEqualTo(0); verify(mObserver).restoreSetsAvailable(aryEq(new RestoreSet[0])); assertThat(ShadowEventLog.hasEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE)).isFalse(); assertEventNotLogged(EventLogTags.RESTORE_TRANSPORT_FAILURE); } @Test Loading @@ -225,7 +228,7 @@ public class ActiveRestoreSessionTest { mShadowBackupLooper.runToEndOfTasks(); assertThat(result).isEqualTo(0); verify(mObserver).restoreSetsAvailable(isNull()); assertThat(ShadowEventLog.hasEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE)).isTrue(); assertEventLogged(EventLogTags.RESTORE_TRANSPORT_FAILURE); verify(mTransportManager) .disposeOfTransportClient(eq(transportMock.transportClient), any()); assertThat(mWakeLock.isHeld()).isFalse(); Loading Loading
services/backup/java/com/android/server/backup/BackupManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -497,6 +497,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { mDataDir = dataDir; } @Nullable public DataChangedJournal getJournal() { return mJournal; } Loading
services/backup/java/com/android/server/backup/DataChangedJournal.java +15 −10 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; /** * A journal of packages that have indicated that their data has changed (and therefore should be Loading Loading @@ -64,12 +66,12 @@ public class DataChangedJournal { } /** * Invokes {@link Consumer#accept(String)} with every package name in the journal file. * Invokes {@link Consumer#accept(Object)} with every package name in the journal file. * * @param consumer The callback. * @throws IOException If there is an IO error reading from the file. */ public void forEach(Consumer consumer) throws IOException { public void forEach(Consumer<String> consumer) throws IOException { try ( BufferedInputStream bufferedInputStream = new BufferedInputStream( new FileInputStream(mFile), BUFFER_SIZE_BYTES); Loading @@ -82,6 +84,17 @@ public class DataChangedJournal { } } /** * Returns a list with the packages in this journal. * * @throws IOException If there is an IO error reading from the file. */ public List<String> getPackages() throws IOException { List<String> packages = new ArrayList<>(); forEach(packages::add); return packages; } /** * Deletes the journal from the filesystem. * Loading Loading @@ -109,14 +122,6 @@ public class DataChangedJournal { return mFile.toString(); } /** * Consumer for iterating over package names in the journal. */ @FunctionalInterface public interface Consumer { void accept(String packageName); } /** * Creates a new journal with a random file name in the given journal directory. * Loading
services/backup/java/com/android/server/backup/internal/PerformBackupTask.java +10 −3 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import android.util.EventLog; import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.backup.IBackupTransport; import com.android.internal.util.Preconditions; import com.android.server.AppWidgetBackupBridge; Loading Loading @@ -112,6 +113,11 @@ import java.util.concurrent.CountDownLatch; */ public class PerformBackupTask implements BackupRestoreTask { private static final String TAG = "PerformBackupTask"; private static final String BLANK_STATE_FILE_NAME = "blank_state"; @VisibleForTesting public static final String STAGING_FILE_SUFFIX = ".data"; @VisibleForTesting public static final String NEW_STATE_FILE_SUFFIX = ".new"; private BackupManagerService backupManagerService; private final Object mCancelLock = new Object(); Loading Loading @@ -651,10 +657,11 @@ public class PerformBackupTask implements BackupRestoreTask { } backupManagerService.addBackupTrace("invoking " + packageName); File blankStateName = new File(mStateDir, "blank_state"); File blankStateName = new File(mStateDir, BLANK_STATE_FILE_NAME); mSavedStateName = new File(mStateDir, packageName); mBackupDataName = new File(backupManagerService.getDataDir(), packageName + ".data"); mNewStateName = new File(mStateDir, packageName + ".new"); mBackupDataName = new File(backupManagerService.getDataDir(), packageName + STAGING_FILE_SUFFIX); mNewStateName = new File(mStateDir, packageName + NEW_STATE_FILE_SUFFIX); if (MORE_DEBUG) Slog.d(TAG, "data file: " + mBackupDataName); mSavedState = null; Loading
services/robotests/src/com/android/server/backup/PerformBackupTaskTest.java +479 −166 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/robotests/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.server.backup.restore; import static com.android.server.backup.testing.BackupManagerServiceTestUtils.createBackupWakeLock; import static com.android.server.backup.testing.BackupManagerServiceTestUtils.setUpBackupManagerServiceBasics; import static com.android.server.backup.testing.BackupManagerServiceTestUtils.startBackupThreadAndGetLooper; import static com.android.server.backup.testing.TestUtils.assertEventLogged; import static com.android.server.backup.testing.TestUtils.assertEventNotLogged; import static com.android.server.backup.testing.TransportData.backupTransport; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -210,7 +213,7 @@ public class ActiveRestoreSessionTest { mShadowBackupLooper.runToEndOfTasks(); assertThat(result).isEqualTo(0); verify(mObserver).restoreSetsAvailable(aryEq(new RestoreSet[0])); assertThat(ShadowEventLog.hasEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE)).isFalse(); assertEventNotLogged(EventLogTags.RESTORE_TRANSPORT_FAILURE); } @Test Loading @@ -225,7 +228,7 @@ public class ActiveRestoreSessionTest { mShadowBackupLooper.runToEndOfTasks(); assertThat(result).isEqualTo(0); verify(mObserver).restoreSetsAvailable(isNull()); assertThat(ShadowEventLog.hasEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE)).isTrue(); assertEventLogged(EventLogTags.RESTORE_TRANSPORT_FAILURE); verify(mTransportManager) .disposeOfTransportClient(eq(transportMock.transportClient), any()); assertThat(mWakeLock.isHeld()).isFalse(); Loading