1 package android.app.backup; 2 3 import android.compat.annotation.UnsupportedAppUsage; 4 import android.os.Build; 5 import android.os.ParcelFileDescriptor; 6 7 /** 8 * Provides the interface through which a {@link BackupAgent} writes entire files 9 * to a full backup data set, via its {@link BackupAgent#onFullBackup(FullBackupDataOutput)} 10 * method. 11 */ 12 public class FullBackupDataOutput { 13 // Currently a name-scoping shim around BackupDataOutput 14 @UnsupportedAppUsage 15 private final BackupDataOutput mData; 16 private final long mQuota; 17 private final int mTransportFlags; 18 private long mSize; 19 20 /** 21 * Returns the quota in bytes for the application's current backup operation. The 22 * value can vary for each operation. 23 * 24 * @see BackupDataOutput#getQuota() 25 */ getQuota()26 public long getQuota() { 27 return mQuota; 28 } 29 30 /** 31 * Returns flags with additional information about the backup transport. For supported flags see 32 * {@link android.app.backup.BackupAgent} 33 * 34 * @see BackupDataOutput#getTransportFlags() 35 */ getTransportFlags()36 public int getTransportFlags() { 37 return mTransportFlags; 38 } 39 40 /** @hide - used only in measure operation */ FullBackupDataOutput(long quota)41 public FullBackupDataOutput(long quota) { 42 mData = null; 43 mQuota = quota; 44 mSize = 0; 45 mTransportFlags = 0; 46 } 47 48 /** @hide - used only in measure operation */ FullBackupDataOutput(long quota, int transportFlags)49 public FullBackupDataOutput(long quota, int transportFlags) { 50 mData = null; 51 mQuota = quota; 52 mSize = 0; 53 mTransportFlags = transportFlags; 54 } 55 56 /** @hide */ FullBackupDataOutput(ParcelFileDescriptor fd, long quota)57 public FullBackupDataOutput(ParcelFileDescriptor fd, long quota) { 58 mData = new BackupDataOutput(fd.getFileDescriptor(), quota, 0); 59 mQuota = quota; 60 mTransportFlags = 0; 61 } 62 63 /** @hide */ FullBackupDataOutput(ParcelFileDescriptor fd, long quota, int transportFlags)64 public FullBackupDataOutput(ParcelFileDescriptor fd, long quota, int transportFlags) { 65 mData = new BackupDataOutput(fd.getFileDescriptor(), quota, transportFlags); 66 mQuota = quota; 67 mTransportFlags = transportFlags; 68 } 69 70 /** @hide - used only internally to the backup manager service's stream construction */ 71 @UnsupportedAppUsage FullBackupDataOutput(ParcelFileDescriptor fd)72 public FullBackupDataOutput(ParcelFileDescriptor fd) { 73 this(fd, /*quota=*/ -1, /*transportFlags=*/ 0); 74 } 75 76 /** @hide */ 77 @UnsupportedAppUsage getData()78 public BackupDataOutput getData() { return mData; } 79 80 /** @hide - used for measurement pass */ 81 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) addSize(long size)82 public void addSize(long size) { 83 if (size > 0) { 84 mSize += size; 85 } 86 } 87 88 /** @hide - used for measurement pass */ getSize()89 public long getSize() { return mSize; } 90 } 91