Code dump with latest updates.

Import from https://github.com/google/mobile-data-download/pull/6/commits/
Some changes required to build in Android are documented in http://shortn/_9vXTP4rdzj

Test: atest

Bug: 276946864
Change-Id: Idd9386c9de7743909103405a7367e69e10f1b6ab
diff --git a/java/com/google/android/libraries/mobiledatadownload/GetFileGroupRequest.java b/java/com/google/android/libraries/mobiledatadownload/GetFileGroupRequest.java
index bf117d5..05cabf8 100644
--- a/java/com/google/android/libraries/mobiledatadownload/GetFileGroupRequest.java
+++ b/java/com/google/android/libraries/mobiledatadownload/GetFileGroupRequest.java
@@ -34,8 +34,12 @@
 
   public abstract boolean preserveZipDirectories();
 
+  public abstract boolean verifyIsolatedStructure();
+
   public static Builder newBuilder() {
-    return new AutoValue_GetFileGroupRequest.Builder().setPreserveZipDirectories(false);
+    return new AutoValue_GetFileGroupRequest.Builder()
+        .setPreserveZipDirectories(false)
+        .setVerifyIsolatedStructure(true);
   }
 
   /** Builder for {@link GetFileGroupRequest}. */
@@ -60,6 +64,21 @@
      */
     public abstract Builder setPreserveZipDirectories(boolean preserve);
 
+    /**
+     * By default, file groups will isolated structures will have this structure checked for each
+     * file when returning the file group. If the isolated structure is not correct, MDD will return
+     * a failure.
+     *
+     * <p>Setting this option to false allows clients to bypass this check, reducing the latency for
+     * critical callpaths.
+     *
+     * <p>For groups that do not have an isolated structure, this option is a no-op.
+     *
+     * <p>NOTE: All groups with isolated structures are also verified/fixed during MDD's maintenance
+     * periodic task.
+     */
+    public abstract Builder setVerifyIsolatedStructure(boolean verifyIsolatedStructure);
+
     public abstract GetFileGroupRequest build();
   }
 }