content: package android.app.backup;
  
  import android.annotation.UnsupportedAppUsage;
  import android.os.ParcelFileDescriptor;
  
  /**
   * Provides the interface through which a {@link BackupAgent} writes entire files
   * to a full backup data set, via its {@link BackupAgent#onFullBackup(FullBackupDataOutput)}
   * method.
   */
  public class FullBackupDataOutput {
      // Currently a name-scoping shim around BackupDataOutput
      @UnsupportedAppUsage
      private final BackupDataOutput mData;
      private final long mQuota;
      private final int mTransportFlags;
      private long mSize;
  
      /**
       * Returns the quota in bytes for the application's current backup operation.  The
       * value can vary for each operation.
       *
       * @see BackupDataOutput#getQuota()
       */
      public long getQuota() {
          return mQuota;
      }
  
      /**
       * Returns flags with additional information about the backup transport. For supported flags see
       * {@link android.app.backup.BackupAgent}
       *
       * @see BackupDataOutput#getTransportFlags()
       */
      public int getTransportFlags() {
          return mTransportFlags;
      }
  
      /** @hide - used only in measure operation */
      public FullBackupDataOutput(long quota) {
          mData = null;
          mQuota = quota;
          mSize = 0;
          mTransportFlags = 0;
      }
  
      /** @hide - used only in measure operation */
      public FullBackupDataOutput(long quota, int transportFlags) {
          mData = null;
          mQuota = quota;
          mSize = 0;
          mTransportFlags = transportFlags;
      }
  
      /** @hide */
      public FullBackupDataOutput(ParcelFileDescriptor fd, long quota) {
          mData = new BackupDataOutput(fd.getFileDescriptor(), quota, 0);
          mQuota = quota;
          mTransportFlags = 0;
      }
  
      /** @hide */
      public FullBackupDataOutput(ParcelFileDescriptor fd, long quota, int transportFlags) {
          mData = new BackupDataOutput(fd.getFileDescriptor(), quota, transportFlags);
          mQuota = quota;
          mTransportFlags = transportFlags;
      }
  
      /** @hide - used only internally to the backup manager service's stream construction */
      @UnsupportedAppUsage
      public FullBackupDataOutput(ParcelFileDescriptor fd) {
          this(fd, /*quota=*/ -1, /*transportFlags=*/ 0);
      }
  
      /** @hide */
      @UnsupportedAppUsage
      public BackupDataOutput getData() { return mData; }
  
      /** @hide - used for measurement pass */
      @UnsupportedAppUsage
      public void addSize(long size) {
          if (size > 0) {
              mSize += size;
          }
      }
  
      /** @hide - used for measurement pass */
      public long getSize() { return mSize; }
  }
  