Publish StorageManager#openProxyFileDescriptor API.
Bug: 29970149
Test: Build succeeded
Change-Id: I1606b184968839fb99744387dcc058f15f6521c8
diff --git a/api/current.txt b/api/current.txt
index b9cd7d0..96058f1 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -29846,6 +29846,15 @@
field public static final int THREAD_PRIORITY_URGENT_DISPLAY = -8; // 0xfffffff8
}
+ public abstract class ProxyFileDescriptorCallback {
+ ctor public ProxyFileDescriptorCallback();
+ method public void onFsync() throws android.system.ErrnoException;
+ method public long onGetSize() throws android.system.ErrnoException;
+ method public int onRead(long, int, byte[]) throws android.system.ErrnoException;
+ method public abstract void onRelease();
+ method public int onWrite(long, int, byte[]) throws android.system.ErrnoException;
+ }
+
public class RecoverySystem {
method public static void installPackage(android.content.Context, java.io.File) throws java.io.IOException;
method public static void rebootWipeCache(android.content.Context) throws java.io.IOException;
@@ -30263,6 +30272,7 @@
method public boolean isEncrypted(java.io.File);
method public boolean isObbMounted(java.lang.String);
method public boolean mountObb(java.lang.String, java.lang.String, android.os.storage.OnObbStateChangeListener);
+ method public android.os.ParcelFileDescriptor openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback) throws java.io.IOException;
method public boolean unmountObb(java.lang.String, boolean, android.os.storage.OnObbStateChangeListener);
field public static final java.lang.String ACTION_MANAGE_STORAGE = "android.os.storage.action.MANAGE_STORAGE";
}
diff --git a/api/system-current.txt b/api/system-current.txt
index 75b0a34..20168b6 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -32448,6 +32448,15 @@
field public static final int THREAD_PRIORITY_URGENT_DISPLAY = -8; // 0xfffffff8
}
+ public abstract class ProxyFileDescriptorCallback {
+ ctor public ProxyFileDescriptorCallback();
+ method public void onFsync() throws android.system.ErrnoException;
+ method public long onGetSize() throws android.system.ErrnoException;
+ method public int onRead(long, int, byte[]) throws android.system.ErrnoException;
+ method public abstract void onRelease();
+ method public int onWrite(long, int, byte[]) throws android.system.ErrnoException;
+ }
+
public class RecoverySystem {
method public static void cancelScheduledUpdate(android.content.Context) throws java.io.IOException;
method public static void installPackage(android.content.Context, java.io.File) throws java.io.IOException;
@@ -32951,6 +32960,7 @@
method public boolean isEncrypted(java.io.File);
method public boolean isObbMounted(java.lang.String);
method public boolean mountObb(java.lang.String, java.lang.String, android.os.storage.OnObbStateChangeListener);
+ method public android.os.ParcelFileDescriptor openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback) throws java.io.IOException;
method public boolean unmountObb(java.lang.String, boolean, android.os.storage.OnObbStateChangeListener);
field public static final java.lang.String ACTION_MANAGE_STORAGE = "android.os.storage.action.MANAGE_STORAGE";
}
diff --git a/api/test-current.txt b/api/test-current.txt
index de86022..b361244 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -29956,6 +29956,15 @@
field public static final int THREAD_PRIORITY_URGENT_DISPLAY = -8; // 0xfffffff8
}
+ public abstract class ProxyFileDescriptorCallback {
+ ctor public ProxyFileDescriptorCallback();
+ method public void onFsync() throws android.system.ErrnoException;
+ method public long onGetSize() throws android.system.ErrnoException;
+ method public int onRead(long, int, byte[]) throws android.system.ErrnoException;
+ method public abstract void onRelease();
+ method public int onWrite(long, int, byte[]) throws android.system.ErrnoException;
+ }
+
public class RecoverySystem {
method public static void installPackage(android.content.Context, java.io.File) throws java.io.IOException;
method public static void rebootWipeCache(android.content.Context) throws java.io.IOException;
@@ -30374,6 +30383,7 @@
method public boolean isEncrypted(java.io.File);
method public boolean isObbMounted(java.lang.String);
method public boolean mountObb(java.lang.String, java.lang.String, android.os.storage.OnObbStateChangeListener);
+ method public android.os.ParcelFileDescriptor openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback) throws java.io.IOException;
method public boolean unmountObb(java.lang.String, boolean, android.os.storage.OnObbStateChangeListener);
field public static final java.lang.String ACTION_MANAGE_STORAGE = "android.os.storage.action.MANAGE_STORAGE";
}
diff --git a/core/java/android/os/ProxyFileDescriptorCallback.java b/core/java/android/os/ProxyFileDescriptorCallback.java
index 23848b9..2e9f8d9 100644
--- a/core/java/android/os/ProxyFileDescriptorCallback.java
+++ b/core/java/android/os/ProxyFileDescriptorCallback.java
@@ -21,7 +21,6 @@
/**
* Callback that handles file system requests from ProxyFileDescriptor.
- * @hide
*/
public abstract class ProxyFileDescriptorCallback {
/**
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index d5acbeb..85df48f 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -1327,6 +1327,7 @@
}
}
+
/** {@hide} */
@VisibleForTesting
public @NonNull ParcelFileDescriptor openProxyFileDescriptor(
@@ -1378,7 +1379,19 @@
throw new IOException("Failed to mount bridge.");
}
- /** {@hide} */
+ /**
+ * Opens seekable ParcelFileDescriptor that routes file operation requests to
+ * ProxyFileDescriptorCallback.
+ *
+ * @param mode The desired access mode, must be one of
+ * {@link ParcelFileDescriptor#MODE_READ_ONLY},
+ * {@link ParcelFileDescriptor#MODE_WRITE_ONLY}, or
+ * {@link ParcelFileDescriptor#MODE_READ_WRITE}
+ * @param callback Callback to process file operation requests issued on returned file
+ * descriptor. The callback is invoked on a thread managed by the framework.
+ * @return Seekable ParcelFileDescriptor.
+ * @throws IOException
+ */
public @NonNull ParcelFileDescriptor openProxyFileDescriptor(
int mode, ProxyFileDescriptorCallback callback)
throws IOException {