summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sudheer Shanka <sudheersai@google.com> 2016-10-18 17:15:18 -0700
committer Sudheer Shanka <sudheersai@google.com> 2016-10-27 12:36:37 -0700
commitf73411428046e1a380d242274d7191ce602a38be (patch)
treee902180e9d0126aeb991d7ebf469e7def72d6a27
parent08c75e4c49c071f372491ea03ca2d3ff50139c8f (diff)
Move IMountService to aidl.
Bug: 30977067 Test: Existing tests passing. Change-Id: Icadfdcbc79708d3826b4e11afe35f5963aabcd4c
-rw-r--r--Android.mk4
-rw-r--r--core/java/android/os/storage/IMountService.aidl291
-rw-r--r--core/java/android/os/storage/IMountService.java2491
-rw-r--r--core/java/android/os/storage/IMountServiceListener.aidl64
-rw-r--r--core/java/android/os/storage/IMountServiceListener.java309
-rw-r--r--core/java/android/os/storage/IMountShutdownObserver.aidl39
-rw-r--r--core/java/android/os/storage/IMountShutdownObserver.java124
-rw-r--r--core/java/android/os/storage/IObbActionListener.aidl42
-rw-r--r--core/java/android/os/storage/IObbActionListener.java136
-rw-r--r--core/java/android/os/storage/MountServiceListener.java44
-rw-r--r--core/java/android/os/storage/StorageManager.java18
-rw-r--r--core/java/android/os/storage/VolumeRecord.aidl20
-rw-r--r--packages/BackupRestoreConfirmation/src/com/android/backupconfirm/BackupRestoreConfirmation.java2
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerService.java2
-rw-r--r--services/core/java/com/android/server/MountService.java4
15 files changed, 482 insertions, 3108 deletions
diff --git a/Android.mk b/Android.mk
index 561d2200c38c..b549ddef467e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -241,6 +241,10 @@ LOCAL_SRC_FILES += \
core/java/android/os/IUpdateLock.aidl \
core/java/android/os/IUserManager.aidl \
core/java/android/os/IVibratorService.aidl \
+ core/java/android/os/storage/IMountService.aidl \
+ core/java/android/os/storage/IMountServiceListener.aidl \
+ core/java/android/os/storage/IMountShutdownObserver.aidl \
+ core/java/android/os/storage/IObbActionListener.aidl \
core/java/android/security/IKeystoreService.aidl \
core/java/android/security/keymaster/IKeyAttestationApplicationIdProvider.aidl \
core/java/android/service/carrier/ICarrierService.aidl \
diff --git a/core/java/android/os/storage/IMountService.aidl b/core/java/android/os/storage/IMountService.aidl
new file mode 100644
index 000000000000..af0d7b76749b
--- /dev/null
+++ b/core/java/android/os/storage/IMountService.aidl
@@ -0,0 +1,291 @@
+/**
+ * Copyright (c) 2016, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.storage;
+
+import android.content.pm.IPackageMoveObserver;
+import android.os.ParcelFileDescriptor;
+import android.os.storage.DiskInfo;
+import android.os.storage.IMountServiceListener;
+import android.os.storage.IMountShutdownObserver;
+import android.os.storage.IObbActionListener;
+import android.os.storage.StorageVolume;
+import android.os.storage.VolumeInfo;
+import android.os.storage.VolumeRecord;
+
+/**
+ * WARNING! Update IMountService.h and IMountService.cpp if you change this
+ * file. In particular, the transaction ids below must match the
+ * _TRANSACTION enum in IMountService.cpp
+ *
+ * @hide - Applications should use android.os.storage.StorageManager to access
+ * storage functions.
+ */
+interface IMountService {
+ /**
+ * Registers an IMountServiceListener for receiving async notifications.
+ */
+ void registerListener(IMountServiceListener listener) = 1;
+ /**
+ * Unregisters an IMountServiceListener
+ */
+ void unregisterListener(IMountServiceListener listener) = 2;
+ /**
+ * Returns true if a USB mass storage host is connected
+ */
+ boolean isUsbMassStorageConnected() = 3;
+ /**
+ * Enables / disables USB mass storage. The caller should check actual
+ * status of enabling/disabling USB mass storage via StorageEventListener.
+ */
+ void setUsbMassStorageEnabled(boolean enable) = 4;
+ /**
+ * Returns true if a USB mass storage host is enabled (media is shared)
+ */
+ boolean isUsbMassStorageEnabled() = 5;
+ /**
+ * Mount external storage at given mount point. Returns an int consistent
+ * with MountServiceResultCode
+ */
+ int mountVolume(in String mountPoint) = 6;
+ /**
+ * Safely unmount external storage at given mount point. The unmount is an
+ * asynchronous operation. Applications should register StorageEventListener
+ * for storage related status changes.
+ * @param mountPoint the mount point
+ * @param force whether or not to forcefully unmount it (e.g. even if programs are using this
+ * data currently)
+ * @param removeEncryption whether or not encryption mapping should be removed from the volume.
+ * This value implies {@code force}.
+ */
+ void unmountVolume(in String mountPoint, boolean force, boolean removeEncryption) = 7;
+ /**
+ * Format external storage given a mount point. Returns an int consistent
+ * with MountServiceResultCode
+ */
+ int formatVolume(in String mountPoint) = 8;
+ /**
+ * Returns an array of pids with open files on the specified path.
+ */
+ int[] getStorageUsers(in String path) = 9;
+ /**
+ * Gets the state of a volume via its mountpoint.
+ */
+ String getVolumeState(in String mountPoint) = 10;
+ /*
+ * Creates a secure container with the specified parameters. Returns an int
+ * consistent with MountServiceResultCode
+ */
+ int createSecureContainer(in String id, int sizeMb, in String fstype, in String key,
+ int ownerUid, boolean external) = 11;
+ /*
+ * Finalize a container which has just been created and populated. After
+ * finalization, the container is immutable. Returns an int consistent with
+ * MountServiceResultCode
+ */
+ int finalizeSecureContainer(in String id) = 12;
+ /*
+ * Destroy a secure container, and free up all resources associated with it.
+ * NOTE: Ensure all references are released prior to deleting. Returns an
+ * int consistent with MountServiceResultCode
+ */
+ int destroySecureContainer(in String id, boolean force) = 13;
+ /*
+ * Mount a secure container with the specified key and owner UID. Returns an
+ * int consistent with MountServiceResultCode
+ */
+ int mountSecureContainer(in String id, in String key, int ownerUid, boolean readOnly) = 14;
+ /*
+ * Unount a secure container. Returns an int consistent with
+ * MountServiceResultCode
+ */
+ int unmountSecureContainer(in String id, boolean force) = 15;
+ /*
+ * Returns true if the specified container is mounted
+ */
+ boolean isSecureContainerMounted(in String id) = 16;
+ /*
+ * Rename an unmounted secure container. Returns an int consistent with
+ * MountServiceResultCode
+ */
+ int renameSecureContainer(in String oldId, in String newId) = 17;
+ /*
+ * Returns the filesystem path of a mounted secure container.
+ */
+ String getSecureContainerPath(in String id) = 18;
+ /**
+ * Gets an Array of currently known secure container IDs
+ */
+ String[] getSecureContainerList() = 19;
+ /**
+ * Shuts down the MountService and gracefully unmounts all external media.
+ * Invokes call back once the shutdown is complete.
+ */
+ void shutdown(IMountShutdownObserver observer) = 20;
+ /**
+ * Call into MountService by PackageManager to notify that its done
+ * processing the media status update request.
+ */
+ void finishMediaUpdate() = 21;
+ /**
+ * Mounts an Opaque Binary Blob (OBB) with the specified decryption key and
+ * only allows the calling process's UID access to the contents.
+ * MountService will call back to the supplied IObbActionListener to inform
+ * it of the terminal state of the call.
+ */
+ void mountObb(in String rawPath, in String canonicalPath, in String key,
+ IObbActionListener token, int nonce) = 22;
+ /**
+ * Unmounts an Opaque Binary Blob (OBB). When the force flag is specified,
+ * any program using it will be forcibly killed to unmount the image.
+ * MountService will call back to the supplied IObbActionListener to inform
+ * it of the terminal state of the call.
+ */
+ void unmountObb(in String rawPath, boolean force, IObbActionListener token, int nonce) = 23;
+ /**
+ * Checks whether the specified Opaque Binary Blob (OBB) is mounted
+ * somewhere.
+ */
+ boolean isObbMounted(in String rawPath) = 24;
+ /**
+ * Gets the path to the mounted Opaque Binary Blob (OBB).
+ */
+ String getMountedObbPath(in String rawPath) = 25;
+ /**
+ * Returns whether or not the external storage is emulated.
+ */
+ boolean isExternalStorageEmulated() = 26;
+ /**
+ * Decrypts any encrypted volumes.
+ */
+ int decryptStorage(in String password) = 27;
+ /**
+ * Encrypts storage.
+ */
+ int encryptStorage(int type, in String password) = 28;
+ /**
+ * Changes the encryption password.
+ */
+ int changeEncryptionPassword(int type, in String password) = 29;
+ /**
+ * Returns list of all mountable volumes.
+ */
+ StorageVolume[] getVolumeList(int uid, in String packageName, int flags) = 30;
+ /**
+ * Gets the path on the filesystem for the ASEC container itself.
+ *
+ * @param cid ASEC container ID
+ * @return path to filesystem or {@code null} if it's not found
+ * @throws RemoteException
+ */
+ String getSecureContainerFilesystemPath(in String cid) = 31;
+ /**
+ * Determines the encryption state of the volume.
+ * @return a numerical value. See {@code ENCRYPTION_STATE_*} for possible
+ * values.
+ * Note that this has been replaced in most cases by the APIs in
+ * StorageManager (see isEncryptable and below)
+ * This is still useful to get the error state when encryption has failed
+ * and CryptKeeper needs to throw up a screen advising the user what to do
+ */
+ int getEncryptionState() = 32;
+ /**
+ * Verify the encryption password against the stored volume. This method
+ * may only be called by the system process.
+ */
+ int verifyEncryptionPassword(in String password) = 33;
+ /*
+ * Fix permissions in a container which has just been created and populated.
+ * Returns an int consistent with MountServiceResultCode
+ */
+ int fixPermissionsSecureContainer(in String id, int gid, in String filename) = 34;
+ /**
+ * Ensure that all directories along given path exist, creating parent
+ * directories as needed. Validates that given path is absolute and that it
+ * contains no relative "." or ".." paths or symlinks. Also ensures that
+ * path belongs to a volume managed by vold, and that path is either
+ * external storage data or OBB directory belonging to calling app.
+ */
+ int mkdirs(in String callingPkg, in String path) = 35;
+ /**
+ * Determines the type of the encryption password
+ * @return PasswordType
+ */
+ int getPasswordType() = 36;
+ /**
+ * Get password from vold
+ * @return password or empty string
+ */
+ String getPassword() = 37;
+ /**
+ * Securely clear password from vold
+ */
+ oneway void clearPassword() = 38;
+ /**
+ * Set a field in the crypto header.
+ * @param field field to set
+ * @param contents contents to set in field
+ */
+ oneway void setField(in String field, in String contents) = 39;
+ /**
+ * Gets a field from the crypto header.
+ * @param field field to get
+ * @return contents of field
+ */
+ String getField(in String field) = 40;
+ int resizeSecureContainer(in String id, int sizeMb, in String key) = 41;
+ /**
+ * Report the time of the last maintenance operation such as fstrim.
+ * @return Timestamp of the last maintenance operation, in the
+ * System.currentTimeMillis() time base
+ * @throws RemoteException
+ */
+ long lastMaintenance() = 42;
+ /**
+ * Kick off an immediate maintenance operation
+ * @throws RemoteException
+ */
+ void runMaintenance() = 43;
+ void waitForAsecScan() = 44;
+ DiskInfo[] getDisks() = 45;
+ VolumeInfo[] getVolumes(int flags) = 46;
+ VolumeRecord[] getVolumeRecords(int flags) = 47;
+ void mount(in String volId) = 48;
+ void unmount(in String volId) = 49;
+ void format(in String volId) = 50;
+ void partitionPublic(in String diskId) = 51;
+ void partitionPrivate(in String diskId) = 52;
+ void partitionMixed(in String diskId, int ratio) = 53;
+ void setVolumeNickname(in String fsUuid, in String nickname) = 54;
+ void setVolumeUserFlags(in String fsUuid, int flags, int mask) = 55;
+ void forgetVolume(in String fsUuid) = 56;
+ void forgetAllVolumes() = 57;
+ String getPrimaryStorageUuid() = 58;
+ void setPrimaryStorageUuid(in String volumeUuid, IPackageMoveObserver callback) = 59;
+ long benchmark(in String volId) = 60;
+ void setDebugFlags(int flags, int mask) = 61;
+ void createUserKey(int userId, int serialNumber, boolean ephemeral) = 62;
+ void destroyUserKey(int userId) = 63;
+ void unlockUserKey(int userId, int serialNumber, in byte[] token, in byte[] secret) = 64;
+ void lockUserKey(int userId) = 65;
+ boolean isUserKeyUnlocked(int userId) = 66;
+ void prepareUserStorage(in String volumeUuid, int userId, int serialNumber, int flags) = 67;
+ void destroyUserStorage(in String volumeUuid, int userId, int flags) = 68;
+ boolean isConvertibleToFBE() = 69;
+ ParcelFileDescriptor mountAppFuse(in String name) = 70;
+ void addUserKeyAuth(int userId, int serialNumber, in byte[] token, in byte[] secret) = 71;
+ void fixateNewestUserKeyAuth(int userId) = 72;
+} \ No newline at end of file
diff --git a/core/java/android/os/storage/IMountService.java b/core/java/android/os/storage/IMountService.java
deleted file mode 100644
index b9bcd1c190a4..000000000000
--- a/core/java/android/os/storage/IMountService.java
+++ /dev/null
@@ -1,2491 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.os.storage;
-
-import android.content.pm.IPackageMoveObserver;
-import android.os.Binder;
-import android.os.IBinder;
-import android.os.IInterface;
-import android.os.Parcel;
-import android.os.ParcelFileDescriptor;
-import android.os.Parcelable;
-import android.os.RemoteException;
-
-/**
- * WARNING! Update IMountService.h and IMountService.cpp if you change this
- * file. In particular, the ordering of the methods below must match the
- * _TRANSACTION enum in IMountService.cpp
- *
- * @hide - Applications should use android.os.storage.StorageManager to access
- * storage functions.
- */
-public interface IMountService extends IInterface {
- /** Local-side IPC implementation stub class. */
- public static abstract class Stub extends Binder implements IMountService {
- private static class Proxy implements IMountService {
- private final IBinder mRemote;
-
- Proxy(IBinder remote) {
- mRemote = remote;
- }
-
- public IBinder asBinder() {
- return mRemote;
- }
-
- public String getInterfaceDescriptor() {
- return DESCRIPTOR;
- }
-
- /**
- * Registers an IMountServiceListener for receiving async
- * notifications.
- */
- public void registerListener(IMountServiceListener listener) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeStrongBinder((listener != null ? listener.asBinder() : null));
- mRemote.transact(Stub.TRANSACTION_registerListener, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Unregisters an IMountServiceListener
- */
- public void unregisterListener(IMountServiceListener listener) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeStrongBinder((listener != null ? listener.asBinder() : null));
- mRemote.transact(Stub.TRANSACTION_unregisterListener, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Returns true if a USB mass storage host is connected
- */
- public boolean isUsbMassStorageConnected() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- boolean _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_isUsbMassStorageConnected, _data, _reply, 0);
- _reply.readException();
- _result = 0 != _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Enables / disables USB mass storage. The caller should check
- * actual status of enabling/disabling USB mass storage via
- * StorageEventListener.
- */
- public void setUsbMassStorageEnabled(boolean enable) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt((enable ? 1 : 0));
- mRemote.transact(Stub.TRANSACTION_setUsbMassStorageEnabled, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Returns true if a USB mass storage host is enabled (media is
- * shared)
- */
- public boolean isUsbMassStorageEnabled() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- boolean _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_isUsbMassStorageEnabled, _data, _reply, 0);
- _reply.readException();
- _result = 0 != _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Mount external storage at given mount point. Returns an int
- * consistent with MountServiceResultCode
- */
- public int mountVolume(String mountPoint) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(mountPoint);
- mRemote.transact(Stub.TRANSACTION_mountVolume, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Safely unmount external storage at given mount point. The unmount
- * is an asynchronous operation. Applications should register
- * StorageEventListener for storage related status changes.
- */
- public void unmountVolume(String mountPoint, boolean force, boolean removeEncryption)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(mountPoint);
- _data.writeInt((force ? 1 : 0));
- _data.writeInt((removeEncryption ? 1 : 0));
- mRemote.transact(Stub.TRANSACTION_unmountVolume, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Format external storage given a mount point. Returns an int
- * consistent with MountServiceResultCode
- */
- public int formatVolume(String mountPoint) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(mountPoint);
- mRemote.transact(Stub.TRANSACTION_formatVolume, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Returns an array of pids with open files on the specified path.
- */
- public int[] getStorageUsers(String path) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int[] _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(path);
- mRemote.transact(Stub.TRANSACTION_getStorageUsers, _data, _reply, 0);
- _reply.readException();
- _result = _reply.createIntArray();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Gets the state of a volume via its mountpoint.
- */
- public String getVolumeState(String mountPoint) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- String _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(mountPoint);
- mRemote.transact(Stub.TRANSACTION_getVolumeState, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readString();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Creates a secure container with the specified parameters. Returns
- * an int consistent with MountServiceResultCode
- */
- public int createSecureContainer(String id, int sizeMb, String fstype, String key,
- int ownerUid, boolean external) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- _data.writeInt(sizeMb);
- _data.writeString(fstype);
- _data.writeString(key);
- _data.writeInt(ownerUid);
- _data.writeInt(external ? 1 : 0);
- mRemote.transact(Stub.TRANSACTION_createSecureContainer, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Destroy a secure container, and free up all resources associated
- * with it. NOTE: Ensure all references are released prior to
- * deleting. Returns an int consistent with MountServiceResultCode
- */
- public int destroySecureContainer(String id, boolean force) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- _data.writeInt((force ? 1 : 0));
- mRemote.transact(Stub.TRANSACTION_destroySecureContainer, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Finalize a container which has just been created and populated.
- * After finalization, the container is immutable. Returns an int
- * consistent with MountServiceResultCode
- */
- public int finalizeSecureContainer(String id) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- mRemote.transact(Stub.TRANSACTION_finalizeSecureContainer, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Mount a secure container with the specified key and owner UID.
- * Returns an int consistent with MountServiceResultCode
- */
- public int mountSecureContainer(String id, String key, int ownerUid, boolean readOnly)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- _data.writeString(key);
- _data.writeInt(ownerUid);
- _data.writeInt(readOnly ? 1 : 0);
- mRemote.transact(Stub.TRANSACTION_mountSecureContainer, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Unount a secure container. Returns an int consistent with
- * MountServiceResultCode
- */
- public int unmountSecureContainer(String id, boolean force) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- _data.writeInt((force ? 1 : 0));
- mRemote.transact(Stub.TRANSACTION_unmountSecureContainer, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Returns true if the specified container is mounted
- */
- public boolean isSecureContainerMounted(String id) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- boolean _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- mRemote.transact(Stub.TRANSACTION_isSecureContainerMounted, _data, _reply, 0);
- _reply.readException();
- _result = 0 != _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Rename an unmounted secure container. Returns an int consistent
- * with MountServiceResultCode
- */
- public int renameSecureContainer(String oldId, String newId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(oldId);
- _data.writeString(newId);
- mRemote.transact(Stub.TRANSACTION_renameSecureContainer, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Returns the filesystem path of a mounted secure container.
- */
- public String getSecureContainerPath(String id) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- String _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- mRemote.transact(Stub.TRANSACTION_getSecureContainerPath, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readString();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Gets an Array of currently known secure container IDs
- */
- public String[] getSecureContainerList() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- String[] _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_getSecureContainerList, _data, _reply, 0);
- _reply.readException();
- _result = _reply.createStringArray();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Shuts down the MountService and gracefully unmounts all external
- * media. Invokes call back once the shutdown is complete.
- */
- public void shutdown(IMountShutdownObserver observer)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeStrongBinder((observer != null ? observer.asBinder() : null));
- mRemote.transact(Stub.TRANSACTION_shutdown, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Call into MountService by PackageManager to notify that its done
- * processing the media status update request.
- */
- public void finishMediaUpdate() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_finishMediaUpdate, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Mounts an Opaque Binary Blob (OBB) with the specified decryption
- * key and only allows the calling process's UID access to the
- * contents. MountService will call back to the supplied
- * IObbActionListener to inform it of the terminal state of the
- * call.
- */
- public void mountObb(String rawPath, String canonicalPath, String key,
- IObbActionListener token, int nonce) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(rawPath);
- _data.writeString(canonicalPath);
- _data.writeString(key);
- _data.writeStrongBinder((token != null ? token.asBinder() : null));
- _data.writeInt(nonce);
- mRemote.transact(Stub.TRANSACTION_mountObb, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Unmounts an Opaque Binary Blob (OBB). When the force flag is
- * specified, any program using it will be forcibly killed to
- * unmount the image. MountService will call back to the supplied
- * IObbActionListener to inform it of the terminal state of the
- * call.
- */
- public void unmountObb(
- String rawPath, boolean force, IObbActionListener token, int nonce)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(rawPath);
- _data.writeInt((force ? 1 : 0));
- _data.writeStrongBinder((token != null ? token.asBinder() : null));
- _data.writeInt(nonce);
- mRemote.transact(Stub.TRANSACTION_unmountObb, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Checks whether the specified Opaque Binary Blob (OBB) is mounted
- * somewhere.
- */
- public boolean isObbMounted(String rawPath) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- boolean _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(rawPath);
- mRemote.transact(Stub.TRANSACTION_isObbMounted, _data, _reply, 0);
- _reply.readException();
- _result = 0 != _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Gets the path to the mounted Opaque Binary Blob (OBB).
- */
- public String getMountedObbPath(String rawPath) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- String _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(rawPath);
- mRemote.transact(Stub.TRANSACTION_getMountedObbPath, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readString();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Returns whether the external storage is emulated.
- */
- public boolean isExternalStorageEmulated() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- boolean _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_isExternalStorageEmulated, _data, _reply, 0);
- _reply.readException();
- _result = 0 != _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public int getEncryptionState() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_getEncryptionState, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public int decryptStorage(String password) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(password);
- mRemote.transact(Stub.TRANSACTION_decryptStorage, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public int encryptStorage(int type, String password) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(type);
- _data.writeString(password);
- mRemote.transact(Stub.TRANSACTION_encryptStorage, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public int changeEncryptionPassword(int type, String password) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(type);
- _data.writeString(password);
- mRemote.transact(Stub.TRANSACTION_changeEncryptionPassword, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public int verifyEncryptionPassword(String password) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(password);
- mRemote.transact(Stub.TRANSACTION_verifyEncryptionPassword, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public int getPasswordType() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_getPasswordType, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public String getPassword() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- String _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_getPassword, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readString();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public void clearPassword() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_clearPassword, _data, _reply, IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- public void setField(String field, String data) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(field);
- _data.writeString(data);
- mRemote.transact(Stub.TRANSACTION_setField, _data, _reply, IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- public String getField(String field) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- String _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(field);
- mRemote.transact(Stub.TRANSACTION_getField, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readString();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public boolean isConvertibleToFBE() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- boolean _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_isConvertibleToFBE, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt() != 0;
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- public StorageVolume[] getVolumeList(int uid, String packageName, int flags)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- StorageVolume[] _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(uid);
- _data.writeString(packageName);
- _data.writeInt(flags);
- mRemote.transact(Stub.TRANSACTION_getVolumeList, _data, _reply, 0);
- _reply.readException();
- _result = _reply.createTypedArray(StorageVolume.CREATOR);
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /*
- * Returns the filesystem path of a mounted secure container.
- */
- public String getSecureContainerFilesystemPath(String id) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- String _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- mRemote.transact(Stub.TRANSACTION_getSecureContainerFilesystemPath, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readString();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- /**
- * Fix permissions in a container which has just been created and
- * populated. Returns an int consistent with MountServiceResultCode
- */
- public int fixPermissionsSecureContainer(String id, int gid, String filename)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- _data.writeInt(gid);
- _data.writeString(filename);
- mRemote.transact(Stub.TRANSACTION_fixPermissionsSecureContainer, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public int mkdirs(String callingPkg, String path) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(callingPkg);
- _data.writeString(path);
- mRemote.transact(Stub.TRANSACTION_mkdirs, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public int resizeSecureContainer(String id, int sizeMb, String key)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- int _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(id);
- _data.writeInt(sizeMb);
- _data.writeString(key);
- mRemote.transact(Stub.TRANSACTION_resizeSecureContainer, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public long lastMaintenance() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- long _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_lastMaintenance, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readLong();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public void runMaintenance() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_runMaintenance, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return;
- }
-
- @Override
- public void waitForAsecScan() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_waitForAsecScan, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return;
- }
-
- @Override
- public DiskInfo[] getDisks() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- DiskInfo[] _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_getDisks, _data, _reply, 0);
- _reply.readException();
- _result = _reply.createTypedArray(DiskInfo.CREATOR);
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public VolumeInfo[] getVolumes(int _flags) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- VolumeInfo[] _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(_flags);
- mRemote.transact(Stub.TRANSACTION_getVolumes, _data, _reply, 0);
- _reply.readException();
- _result = _reply.createTypedArray(VolumeInfo.CREATOR);
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public VolumeRecord[] getVolumeRecords(int _flags) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- VolumeRecord[] _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(_flags);
- mRemote.transact(Stub.TRANSACTION_getVolumeRecords, _data, _reply, 0);
- _reply.readException();
- _result = _reply.createTypedArray(VolumeRecord.CREATOR);
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public void mount(String volId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(volId);
- mRemote.transact(Stub.TRANSACTION_mount, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void unmount(String volId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(volId);
- mRemote.transact(Stub.TRANSACTION_unmount, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void format(String volId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(volId);
- mRemote.transact(Stub.TRANSACTION_format, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public long benchmark(String volId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(volId);
- mRemote.transact(Stub.TRANSACTION_benchmark, _data, _reply, 0);
- _reply.readException();
- return _reply.readLong();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void partitionPublic(String diskId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(diskId);
- mRemote.transact(Stub.TRANSACTION_partitionPublic, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void partitionPrivate(String diskId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(diskId);
- mRemote.transact(Stub.TRANSACTION_partitionPrivate, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void partitionMixed(String diskId, int ratio) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(diskId);
- _data.writeInt(ratio);
- mRemote.transact(Stub.TRANSACTION_partitionMixed, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void setVolumeNickname(String fsUuid, String nickname) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(fsUuid);
- _data.writeString(nickname);
- mRemote.transact(Stub.TRANSACTION_setVolumeNickname, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void setVolumeUserFlags(String fsUuid, int flags, int mask) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(fsUuid);
- _data.writeInt(flags);
- _data.writeInt(mask);
- mRemote.transact(Stub.TRANSACTION_setVolumeUserFlags, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void forgetVolume(String fsUuid) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(fsUuid);
- mRemote.transact(Stub.TRANSACTION_forgetVolume, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void forgetAllVolumes() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_forgetAllVolumes, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void setDebugFlags(int _flags, int _mask) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(_flags);
- _data.writeInt(_mask);
- mRemote.transact(Stub.TRANSACTION_setDebugFlags, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public String getPrimaryStorageUuid() throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- String _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- mRemote.transact(Stub.TRANSACTION_getPrimaryStorageUuid, _data, _reply, 0);
- _reply.readException();
- _result = _reply.readString();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public void setPrimaryStorageUuid(String volumeUuid, IPackageMoveObserver callback)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(volumeUuid);
- _data.writeStrongBinder((callback != null ? callback.asBinder() : null));
- mRemote.transact(Stub.TRANSACTION_setPrimaryStorageUuid, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void createUserKey(int userId, int serialNumber, boolean ephemeral)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(userId);
- _data.writeInt(serialNumber);
- _data.writeInt(ephemeral ? 1 : 0);
- mRemote.transact(Stub.TRANSACTION_createUserKey, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void destroyUserKey(int userId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(userId);
- mRemote.transact(Stub.TRANSACTION_destroyUserKey, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void addUserKeyAuth(int userId, int serialNumber,
- byte[] token, byte[] secret) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(userId);
- _data.writeInt(serialNumber);
- _data.writeByteArray(token);
- _data.writeByteArray(secret);
- mRemote.transact(Stub.TRANSACTION_addUserKeyAuth, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void fixateNewestUserKeyAuth(int userId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(userId);
- mRemote.transact(Stub.TRANSACTION_fixateNewestUserKeyAuth, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void unlockUserKey(int userId, int serialNumber,
- byte[] token, byte[] secret) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(userId);
- _data.writeInt(serialNumber);
- _data.writeByteArray(token);
- _data.writeByteArray(secret);
- mRemote.transact(Stub.TRANSACTION_unlockUserKey, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void lockUserKey(int userId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(userId);
- mRemote.transact(Stub.TRANSACTION_lockUserKey, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public boolean isUserKeyUnlocked(int userId) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- boolean _result;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(userId);
- mRemote.transact(Stub.TRANSACTION_isUserKeyUnlocked, _data, _reply, 0);
- _reply.readException();
- _result = 0 != _reply.readInt();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
-
- @Override
- public void prepareUserStorage(
- String volumeUuid, int userId, int serialNumber, int flags)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(volumeUuid);
- _data.writeInt(userId);
- _data.writeInt(serialNumber);
- _data.writeInt(flags);
- mRemote.transact(Stub.TRANSACTION_prepareUserStorage, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void destroyUserStorage(String volumeUuid, int userId, int flags)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(volumeUuid);
- _data.writeInt(userId);
- _data.writeInt(flags);
- mRemote.transact(Stub.TRANSACTION_destroyUserStorage, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public ParcelFileDescriptor mountAppFuse(String name) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- ParcelFileDescriptor _result = null;
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(name);
- mRemote.transact(Stub.TRANSACTION_mountAppFuse, _data, _reply, 0);
- _reply.readException();
- _result = _reply.<ParcelFileDescriptor>readParcelable(
- ClassLoader.getSystemClassLoader());
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- return _result;
- }
- }
-
- private static final String DESCRIPTOR = "IMountService";
-
- static final int TRANSACTION_registerListener = IBinder.FIRST_CALL_TRANSACTION + 0;
-
- static final int TRANSACTION_unregisterListener = IBinder.FIRST_CALL_TRANSACTION + 1;
-
- static final int TRANSACTION_isUsbMassStorageConnected = IBinder.FIRST_CALL_TRANSACTION + 2;
-
- static final int TRANSACTION_setUsbMassStorageEnabled = IBinder.FIRST_CALL_TRANSACTION + 3;
-
- static final int TRANSACTION_isUsbMassStorageEnabled = IBinder.FIRST_CALL_TRANSACTION + 4;
-
- static final int TRANSACTION_mountVolume = IBinder.FIRST_CALL_TRANSACTION + 5;
-
- static final int TRANSACTION_unmountVolume = IBinder.FIRST_CALL_TRANSACTION + 6;
-
- static final int TRANSACTION_formatVolume = IBinder.FIRST_CALL_TRANSACTION + 7;
-
- static final int TRANSACTION_getStorageUsers = IBinder.FIRST_CALL_TRANSACTION + 8;
-
- static final int TRANSACTION_getVolumeState = IBinder.FIRST_CALL_TRANSACTION + 9;
-
- static final int TRANSACTION_createSecureContainer = IBinder.FIRST_CALL_TRANSACTION + 10;
-
- static final int TRANSACTION_finalizeSecureContainer = IBinder.FIRST_CALL_TRANSACTION + 11;
-
- static final int TRANSACTION_destroySecureContainer = IBinder.FIRST_CALL_TRANSACTION + 12;
-
- static final int TRANSACTION_mountSecureContainer = IBinder.FIRST_CALL_TRANSACTION + 13;
-
- static final int TRANSACTION_unmountSecureContainer = IBinder.FIRST_CALL_TRANSACTION + 14;
-
- static final int TRANSACTION_isSecureContainerMounted = IBinder.FIRST_CALL_TRANSACTION + 15;
-
- static final int TRANSACTION_renameSecureContainer = IBinder.FIRST_CALL_TRANSACTION + 16;
-
- static final int TRANSACTION_getSecureContainerPath = IBinder.FIRST_CALL_TRANSACTION + 17;
-
- static final int TRANSACTION_getSecureContainerList = IBinder.FIRST_CALL_TRANSACTION + 18;
-
- static final int TRANSACTION_shutdown = IBinder.FIRST_CALL_TRANSACTION + 19;
-
- static final int TRANSACTION_finishMediaUpdate = IBinder.FIRST_CALL_TRANSACTION + 20;
-
- static final int TRANSACTION_mountObb = IBinder.FIRST_CALL_TRANSACTION + 21;
-
- static final int TRANSACTION_unmountObb = IBinder.FIRST_CALL_TRANSACTION + 22;
-
- static final int TRANSACTION_isObbMounted = IBinder.FIRST_CALL_TRANSACTION + 23;
-
- static final int TRANSACTION_getMountedObbPath = IBinder.FIRST_CALL_TRANSACTION + 24;
-
- static final int TRANSACTION_isExternalStorageEmulated = IBinder.FIRST_CALL_TRANSACTION + 25;
-
- static final int TRANSACTION_decryptStorage = IBinder.FIRST_CALL_TRANSACTION + 26;
-
- static final int TRANSACTION_encryptStorage = IBinder.FIRST_CALL_TRANSACTION + 27;
-
- static final int TRANSACTION_changeEncryptionPassword = IBinder.FIRST_CALL_TRANSACTION + 28;
-
- static final int TRANSACTION_getVolumeList = IBinder.FIRST_CALL_TRANSACTION + 29;
-
- static final int TRANSACTION_getSecureContainerFilesystemPath = IBinder.FIRST_CALL_TRANSACTION + 30;
-
- static final int TRANSACTION_getEncryptionState = IBinder.FIRST_CALL_TRANSACTION + 31;
-
- static final int TRANSACTION_verifyEncryptionPassword = IBinder.FIRST_CALL_TRANSACTION + 32;
-
- static final int TRANSACTION_fixPermissionsSecureContainer = IBinder.FIRST_CALL_TRANSACTION + 33;
-
- static final int TRANSACTION_mkdirs = IBinder.FIRST_CALL_TRANSACTION + 34;
-
- static final int TRANSACTION_getPasswordType = IBinder.FIRST_CALL_TRANSACTION + 35;
-
- static final int TRANSACTION_getPassword = IBinder.FIRST_CALL_TRANSACTION + 36;
-
- static final int TRANSACTION_clearPassword = IBinder.FIRST_CALL_TRANSACTION + 37;
-
- static final int TRANSACTION_setField = IBinder.FIRST_CALL_TRANSACTION + 38;
-
- static final int TRANSACTION_getField = IBinder.FIRST_CALL_TRANSACTION + 39;
-
- static final int TRANSACTION_resizeSecureContainer = IBinder.FIRST_CALL_TRANSACTION + 40;
-
- static final int TRANSACTION_lastMaintenance = IBinder.FIRST_CALL_TRANSACTION + 41;
-
- static final int TRANSACTION_runMaintenance = IBinder.FIRST_CALL_TRANSACTION + 42;
-
- static final int TRANSACTION_waitForAsecScan = IBinder.FIRST_CALL_TRANSACTION + 43;
-
- static final int TRANSACTION_getDisks = IBinder.FIRST_CALL_TRANSACTION + 44;
- static final int TRANSACTION_getVolumes = IBinder.FIRST_CALL_TRANSACTION + 45;
- static final int TRANSACTION_getVolumeRecords = IBinder.FIRST_CALL_TRANSACTION + 46;
-
- static final int TRANSACTION_mount = IBinder.FIRST_CALL_TRANSACTION + 47;
- static final int TRANSACTION_unmount = IBinder.FIRST_CALL_TRANSACTION + 48;
- static final int TRANSACTION_format = IBinder.FIRST_CALL_TRANSACTION + 49;
-
- static final int TRANSACTION_partitionPublic = IBinder.FIRST_CALL_TRANSACTION + 50;
- static final int TRANSACTION_partitionPrivate = IBinder.FIRST_CALL_TRANSACTION + 51;
- static final int TRANSACTION_partitionMixed = IBinder.FIRST_CALL_TRANSACTION + 52;
-
- static final int TRANSACTION_setVolumeNickname = IBinder.FIRST_CALL_TRANSACTION + 53;
- static final int TRANSACTION_setVolumeUserFlags = IBinder.FIRST_CALL_TRANSACTION + 54;
- static final int TRANSACTION_forgetVolume = IBinder.FIRST_CALL_TRANSACTION + 55;
- static final int TRANSACTION_forgetAllVolumes = IBinder.FIRST_CALL_TRANSACTION + 56;
-
- static final int TRANSACTION_getPrimaryStorageUuid = IBinder.FIRST_CALL_TRANSACTION + 57;
- static final int TRANSACTION_setPrimaryStorageUuid = IBinder.FIRST_CALL_TRANSACTION + 58;
-
- static final int TRANSACTION_benchmark = IBinder.FIRST_CALL_TRANSACTION + 59;
- static final int TRANSACTION_setDebugFlags = IBinder.FIRST_CALL_TRANSACTION + 60;
-
- static final int TRANSACTION_createUserKey = IBinder.FIRST_CALL_TRANSACTION + 61;
- static final int TRANSACTION_destroyUserKey = IBinder.FIRST_CALL_TRANSACTION + 62;
-
- static final int TRANSACTION_unlockUserKey = IBinder.FIRST_CALL_TRANSACTION + 63;
- static final int TRANSACTION_lockUserKey = IBinder.FIRST_CALL_TRANSACTION + 64;
- static final int TRANSACTION_isUserKeyUnlocked = IBinder.FIRST_CALL_TRANSACTION + 65;
-
- static final int TRANSACTION_prepareUserStorage = IBinder.FIRST_CALL_TRANSACTION + 66;
- static final int TRANSACTION_destroyUserStorage = IBinder.FIRST_CALL_TRANSACTION + 67;
-
- static final int TRANSACTION_isConvertibleToFBE = IBinder.FIRST_CALL_TRANSACTION + 68;
-
- static final int TRANSACTION_mountAppFuse = IBinder.FIRST_CALL_TRANSACTION + 69;
-
- static final int TRANSACTION_addUserKeyAuth = IBinder.FIRST_CALL_TRANSACTION + 70;
-
- static final int TRANSACTION_fixateNewestUserKeyAuth = IBinder.FIRST_CALL_TRANSACTION + 71;
-
- /**
- * Cast an IBinder object into an IMountService interface, generating a
- * proxy if needed.
- */
- public static IMountService asInterface(IBinder obj) {
- if (obj == null) {
- return null;
- }
- IInterface iin = obj.queryLocalInterface(DESCRIPTOR);
- if (iin != null && iin instanceof IMountService) {
- return (IMountService) iin;
- }
- return new IMountService.Stub.Proxy(obj);
- }
-
- /** Construct the stub at attach it to the interface. */
- public Stub() {
- attachInterface(this, DESCRIPTOR);
- }
-
- public IBinder asBinder() {
- return this;
- }
-
- @Override
- public boolean onTransact(int code, Parcel data, Parcel reply,
- int flags) throws RemoteException {
- switch (code) {
- case INTERFACE_TRANSACTION: {
- reply.writeString(DESCRIPTOR);
- return true;
- }
- case TRANSACTION_registerListener: {
- data.enforceInterface(DESCRIPTOR);
- IMountServiceListener listener;
- listener = IMountServiceListener.Stub.asInterface(data.readStrongBinder());
- registerListener(listener);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_unregisterListener: {
- data.enforceInterface(DESCRIPTOR);
- IMountServiceListener listener;
- listener = IMountServiceListener.Stub.asInterface(data.readStrongBinder());
- unregisterListener(listener);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_isUsbMassStorageConnected: {
- data.enforceInterface(DESCRIPTOR);
- boolean result = isUsbMassStorageConnected();
- reply.writeNoException();
- reply.writeInt((result ? 1 : 0));
- return true;
- }
- case TRANSACTION_setUsbMassStorageEnabled: {
- data.enforceInterface(DESCRIPTOR);
- boolean enable;
- enable = 0 != data.readInt();
- setUsbMassStorageEnabled(enable);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_isUsbMassStorageEnabled: {
- data.enforceInterface(DESCRIPTOR);
- boolean result = isUsbMassStorageEnabled();
- reply.writeNoException();
- reply.writeInt((result ? 1 : 0));
- return true;
- }
- case TRANSACTION_mountVolume: {
- data.enforceInterface(DESCRIPTOR);
- String mountPoint;
- mountPoint = data.readString();
- int resultCode = mountVolume(mountPoint);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_unmountVolume: {
- data.enforceInterface(DESCRIPTOR);
- String mountPoint;
- mountPoint = data.readString();
- boolean force = 0 != data.readInt();
- boolean removeEncrypt = 0 != data.readInt();
- unmountVolume(mountPoint, force, removeEncrypt);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_formatVolume: {
- data.enforceInterface(DESCRIPTOR);
- String mountPoint;
- mountPoint = data.readString();
- int result = formatVolume(mountPoint);
- reply.writeNoException();
- reply.writeInt(result);
- return true;
- }
- case TRANSACTION_getStorageUsers: {
- data.enforceInterface(DESCRIPTOR);
- String path;
- path = data.readString();
- int[] pids = getStorageUsers(path);
- reply.writeNoException();
- reply.writeIntArray(pids);
- return true;
- }
- case TRANSACTION_getVolumeState: {
- data.enforceInterface(DESCRIPTOR);
- String mountPoint;
- mountPoint = data.readString();
- String state = getVolumeState(mountPoint);
- reply.writeNoException();
- reply.writeString(state);
- return true;
- }
- case TRANSACTION_createSecureContainer: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- int sizeMb;
- sizeMb = data.readInt();
- String fstype;
- fstype = data.readString();
- String key;
- key = data.readString();
- int ownerUid;
- ownerUid = data.readInt();
- boolean external;
- external = 0 != data.readInt();
- int resultCode = createSecureContainer(id, sizeMb, fstype, key, ownerUid,
- external);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_finalizeSecureContainer: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- int resultCode = finalizeSecureContainer(id);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_destroySecureContainer: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- boolean force;
- force = 0 != data.readInt();
- int resultCode = destroySecureContainer(id, force);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_mountSecureContainer: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- String key;
- key = data.readString();
- int ownerUid;
- ownerUid = data.readInt();
- boolean readOnly;
- readOnly = data.readInt() != 0;
- int resultCode = mountSecureContainer(id, key, ownerUid, readOnly);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_unmountSecureContainer: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- boolean force;
- force = 0 != data.readInt();
- int resultCode = unmountSecureContainer(id, force);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_isSecureContainerMounted: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- boolean status = isSecureContainerMounted(id);
- reply.writeNoException();
- reply.writeInt((status ? 1 : 0));
- return true;
- }
- case TRANSACTION_renameSecureContainer: {
- data.enforceInterface(DESCRIPTOR);
- String oldId;
- oldId = data.readString();
- String newId;
- newId = data.readString();
- int resultCode = renameSecureContainer(oldId, newId);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_getSecureContainerPath: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- String path = getSecureContainerPath(id);
- reply.writeNoException();
- reply.writeString(path);
- return true;
- }
- case TRANSACTION_getSecureContainerList: {
- data.enforceInterface(DESCRIPTOR);
- String[] ids = getSecureContainerList();
- reply.writeNoException();
- reply.writeStringArray(ids);
- return true;
- }
- case TRANSACTION_shutdown: {
- data.enforceInterface(DESCRIPTOR);
- IMountShutdownObserver observer;
- observer = IMountShutdownObserver.Stub.asInterface(data
- .readStrongBinder());
- shutdown(observer);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_finishMediaUpdate: {
- data.enforceInterface(DESCRIPTOR);
- finishMediaUpdate();
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_mountObb: {
- data.enforceInterface(DESCRIPTOR);
- final String rawPath = data.readString();
- final String canonicalPath = data.readString();
- final String key = data.readString();
- IObbActionListener observer;
- observer = IObbActionListener.Stub.asInterface(data.readStrongBinder());
- int nonce;
- nonce = data.readInt();
- mountObb(rawPath, canonicalPath, key, observer, nonce);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_unmountObb: {
- data.enforceInterface(DESCRIPTOR);
- String filename;
- filename = data.readString();
- boolean force;
- force = 0 != data.readInt();
- IObbActionListener observer;
- observer = IObbActionListener.Stub.asInterface(data.readStrongBinder());
- int nonce;
- nonce = data.readInt();
- unmountObb(filename, force, observer, nonce);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_isObbMounted: {
- data.enforceInterface(DESCRIPTOR);
- String filename;
- filename = data.readString();
- boolean status = isObbMounted(filename);
- reply.writeNoException();
- reply.writeInt((status ? 1 : 0));
- return true;
- }
- case TRANSACTION_getMountedObbPath: {
- data.enforceInterface(DESCRIPTOR);
- String filename;
- filename = data.readString();
- String mountedPath = getMountedObbPath(filename);
- reply.writeNoException();
- reply.writeString(mountedPath);
- return true;
- }
- case TRANSACTION_isExternalStorageEmulated: {
- data.enforceInterface(DESCRIPTOR);
- boolean emulated = isExternalStorageEmulated();
- reply.writeNoException();
- reply.writeInt(emulated ? 1 : 0);
- return true;
- }
- case TRANSACTION_decryptStorage: {
- data.enforceInterface(DESCRIPTOR);
- String password = data.readString();
- int result = decryptStorage(password);
- reply.writeNoException();
- reply.writeInt(result);
- return true;
- }
- case TRANSACTION_encryptStorage: {
- data.enforceInterface(DESCRIPTOR);
- int type = data.readInt();
- String password = data.readString();
- int result = encryptStorage(type, password);
- reply.writeNoException();
- reply.writeInt(result);
- return true;
- }
- case TRANSACTION_changeEncryptionPassword: {
- data.enforceInterface(DESCRIPTOR);
- int type = data.readInt();
- String password = data.readString();
- int result = changeEncryptionPassword(type, password);
- reply.writeNoException();
- reply.writeInt(result);
- return true;
- }
- case TRANSACTION_getVolumeList: {
- data.enforceInterface(DESCRIPTOR);
- int uid = data.readInt();
- String packageName = data.readString();
- int _flags = data.readInt();
- StorageVolume[] result = getVolumeList(uid, packageName, _flags);
- reply.writeNoException();
- reply.writeTypedArray(result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
- return true;
- }
- case TRANSACTION_getSecureContainerFilesystemPath: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- String path = getSecureContainerFilesystemPath(id);
- reply.writeNoException();
- reply.writeString(path);
- return true;
- }
- case TRANSACTION_getEncryptionState: {
- data.enforceInterface(DESCRIPTOR);
- int result = getEncryptionState();
- reply.writeNoException();
- reply.writeInt(result);
- return true;
- }
- case TRANSACTION_fixPermissionsSecureContainer: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- int gid;
- gid = data.readInt();
- String filename;
- filename = data.readString();
- int resultCode = fixPermissionsSecureContainer(id, gid, filename);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_mkdirs: {
- data.enforceInterface(DESCRIPTOR);
- String callingPkg = data.readString();
- String path = data.readString();
- int result = mkdirs(callingPkg, path);
- reply.writeNoException();
- reply.writeInt(result);
- return true;
- }
- case TRANSACTION_getPasswordType: {
- data.enforceInterface(DESCRIPTOR);
- int result = getPasswordType();
- reply.writeNoException();
- reply.writeInt(result);
- return true;
- }
- case TRANSACTION_getPassword: {
- data.enforceInterface(DESCRIPTOR);
- String result = getPassword();
- reply.writeNoException();
- reply.writeString(result);
- return true;
- }
- case TRANSACTION_clearPassword: {
- data.enforceInterface(DESCRIPTOR);
- clearPassword();
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_setField: {
- data.enforceInterface(DESCRIPTOR);
- String field = data.readString();
- String contents = data.readString();
- setField(field, contents);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_getField: {
- data.enforceInterface(DESCRIPTOR);
- String field = data.readString();
- String contents = getField(field);
- reply.writeNoException();
- reply.writeString(contents);
- return true;
- }
- case TRANSACTION_isConvertibleToFBE: {
- data.enforceInterface(DESCRIPTOR);
- int resultCode = isConvertibleToFBE() ? 1 : 0;
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_resizeSecureContainer: {
- data.enforceInterface(DESCRIPTOR);
- String id;
- id = data.readString();
- int sizeMb;
- sizeMb = data.readInt();
- String key;
- key = data.readString();
- int resultCode = resizeSecureContainer(id, sizeMb, key);
- reply.writeNoException();
- reply.writeInt(resultCode);
- return true;
- }
- case TRANSACTION_lastMaintenance: {
- data.enforceInterface(DESCRIPTOR);
- long lastMaintenance = lastMaintenance();
- reply.writeNoException();
- reply.writeLong(lastMaintenance);
- return true;
- }
- case TRANSACTION_runMaintenance: {
- data.enforceInterface(DESCRIPTOR);
- runMaintenance();
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_waitForAsecScan: {
- data.enforceInterface(DESCRIPTOR);
- waitForAsecScan();
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_getDisks: {
- data.enforceInterface(DESCRIPTOR);
- DiskInfo[] disks = getDisks();
- reply.writeNoException();
- reply.writeTypedArray(disks, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
- return true;
- }
- case TRANSACTION_getVolumes: {
- data.enforceInterface(DESCRIPTOR);
- int _flags = data.readInt();
- VolumeInfo[] volumes = getVolumes(_flags);
- reply.writeNoException();
- reply.writeTypedArray(volumes, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
- return true;
- }
- case TRANSACTION_getVolumeRecords: {
- data.enforceInterface(DESCRIPTOR);
- int _flags = data.readInt();
- VolumeRecord[] volumes = getVolumeRecords(_flags);
- reply.writeNoException();
- reply.writeTypedArray(volumes, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
- return true;
- }
- case TRANSACTION_mount: {
- data.enforceInterface(DESCRIPTOR);
- String volId = data.readString();
- mount(volId);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_unmount: {
- data.enforceInterface(DESCRIPTOR);
- String volId = data.readString();
- unmount(volId);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_format: {
- data.enforceInterface(DESCRIPTOR);
- String volId = data.readString();
- format(volId);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_benchmark: {
- data.enforceInterface(DESCRIPTOR);
- String volId = data.readString();
- long res = benchmark(volId);
- reply.writeNoException();
- reply.writeLong(res);
- return true;
- }
- case TRANSACTION_partitionPublic: {
- data.enforceInterface(DESCRIPTOR);
- String diskId = data.readString();
- partitionPublic(diskId);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_partitionPrivate: {
- data.enforceInterface(DESCRIPTOR);
- String diskId = data.readString();
- partitionPrivate(diskId);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_partitionMixed: {
- data.enforceInterface(DESCRIPTOR);
- String diskId = data.readString();
- int ratio = data.readInt();
- partitionMixed(diskId, ratio);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_setVolumeNickname: {
- data.enforceInterface(DESCRIPTOR);
- String volId = data.readString();
- String nickname = data.readString();
- setVolumeNickname(volId, nickname);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_setVolumeUserFlags: {
- data.enforceInterface(DESCRIPTOR);
- String volId = data.readString();
- int _flags = data.readInt();
- int _mask = data.readInt();
- setVolumeUserFlags(volId, _flags, _mask);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_forgetVolume: {
- data.enforceInterface(DESCRIPTOR);
- String fsUuid = data.readString();
- forgetVolume(fsUuid);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_forgetAllVolumes: {
- data.enforceInterface(DESCRIPTOR);
- forgetAllVolumes();
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_setDebugFlags: {
- data.enforceInterface(DESCRIPTOR);
- int _flags = data.readInt();
- int _mask = data.readInt();
- setDebugFlags(_flags, _mask);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_getPrimaryStorageUuid: {
- data.enforceInterface(DESCRIPTOR);
- String volumeUuid = getPrimaryStorageUuid();
- reply.writeNoException();
- reply.writeString(volumeUuid);
- return true;
- }
- case TRANSACTION_setPrimaryStorageUuid: {
- data.enforceInterface(DESCRIPTOR);
- String volumeUuid = data.readString();
- IPackageMoveObserver listener = IPackageMoveObserver.Stub.asInterface(
- data.readStrongBinder());
- setPrimaryStorageUuid(volumeUuid, listener);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_createUserKey: {
- data.enforceInterface(DESCRIPTOR);
- int userId = data.readInt();
- int serialNumber = data.readInt();
- boolean ephemeral = data.readInt() != 0;
- createUserKey(userId, serialNumber, ephemeral);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_destroyUserKey: {
- data.enforceInterface(DESCRIPTOR);
- int userId = data.readInt();
- destroyUserKey(userId);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_addUserKeyAuth: {
- data.enforceInterface(DESCRIPTOR);
- int userId = data.readInt();
- int serialNumber = data.readInt();
- byte[] token = data.createByteArray();
- byte[] secret = data.createByteArray();
- addUserKeyAuth(userId, serialNumber, token, secret);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_fixateNewestUserKeyAuth: {
- data.enforceInterface(DESCRIPTOR);
- int userId = data.readInt();
- fixateNewestUserKeyAuth(userId);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_unlockUserKey: {
- data.enforceInterface(DESCRIPTOR);
- int userId = data.readInt();
- int serialNumber = data.readInt();
- byte[] token = data.createByteArray();
- byte[] secret = data.createByteArray();
- unlockUserKey(userId, serialNumber, token, secret);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_lockUserKey: {
- data.enforceInterface(DESCRIPTOR);
- int userId = data.readInt();
- lockUserKey(userId);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_isUserKeyUnlocked: {
- data.enforceInterface(DESCRIPTOR);
- int userId = data.readInt();
- boolean result = isUserKeyUnlocked(userId);
- reply.writeNoException();
- reply.writeInt(result ? 1 : 0);
- return true;
- }
- case TRANSACTION_prepareUserStorage: {
- data.enforceInterface(DESCRIPTOR);
- String volumeUuid = data.readString();
- int userId = data.readInt();
- int serialNumber = data.readInt();
- int _flags = data.readInt();
- prepareUserStorage(volumeUuid, userId, serialNumber, _flags);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_destroyUserStorage: {
- data.enforceInterface(DESCRIPTOR);
- String volumeUuid = data.readString();
- int userId = data.readInt();
- int _flags = data.readInt();
- destroyUserStorage(volumeUuid, userId, _flags);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_mountAppFuse: {
- data.enforceInterface(DESCRIPTOR);
- String name = data.readString();
- ParcelFileDescriptor fd = mountAppFuse(name);
- reply.writeNoException();
- reply.writeParcelable(fd, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
- return true;
- }
- }
- return super.onTransact(code, data, reply, flags);
- }
- }
-
- /*
- * Creates a secure container with the specified parameters. Returns an int
- * consistent with MountServiceResultCode
- */
- public int createSecureContainer(String id, int sizeMb, String fstype, String key,
- int ownerUid, boolean external) throws RemoteException;
-
- /*
- * Destroy a secure container, and free up all resources associated with it.
- * NOTE: Ensure all references are released prior to deleting. Returns an
- * int consistent with MountServiceResultCode
- */
- public int destroySecureContainer(String id, boolean force) throws RemoteException;
-
- /*
- * Finalize a container which has just been created and populated. After
- * finalization, the container is immutable. Returns an int consistent with
- * MountServiceResultCode
- */
- public int finalizeSecureContainer(String id) throws RemoteException;
-
- /**
- * Call into MountService by PackageManager to notify that its done
- * processing the media status update request.
- */
- public void finishMediaUpdate() throws RemoteException;
-
- /**
- * Format external storage given a mount point. Returns an int consistent
- * with MountServiceResultCode
- */
- public int formatVolume(String mountPoint) throws RemoteException;
-
- /**
- * Gets the path to the mounted Opaque Binary Blob (OBB).
- */
- public String getMountedObbPath(String rawPath) throws RemoteException;
-
- /**
- * Gets an Array of currently known secure container IDs
- */
- public String[] getSecureContainerList() throws RemoteException;
-
- /*
- * Returns the filesystem path of a mounted secure container.
- */
- public String getSecureContainerPath(String id) throws RemoteException;
-
- /**
- * Returns an array of pids with open files on the specified path.
- */
- public int[] getStorageUsers(String path) throws RemoteException;
-
- /**
- * Gets the state of a volume via its mountpoint.
- */
- public String getVolumeState(String mountPoint) throws RemoteException;
-
- /**
- * Checks whether the specified Opaque Binary Blob (OBB) is mounted
- * somewhere.
- */
- public boolean isObbMounted(String rawPath) throws RemoteException;
-
- /*
- * Returns true if the specified container is mounted
- */
- public boolean isSecureContainerMounted(String id) throws RemoteException;
-
- /**
- * Returns true if a USB mass storage host is connected
- */
- public boolean isUsbMassStorageConnected() throws RemoteException;
-
- /**
- * Returns true if a USB mass storage host is enabled (media is shared)
- */
- public boolean isUsbMassStorageEnabled() throws RemoteException;
-
- /**
- * Mounts an Opaque Binary Blob (OBB) with the specified decryption key and
- * only allows the calling process's UID access to the contents.
- * MountService will call back to the supplied IObbActionListener to inform
- * it of the terminal state of the call.
- */
- public void mountObb(String rawPath, String canonicalPath, String key,
- IObbActionListener token, int nonce) throws RemoteException;
-
- /*
- * Mount a secure container with the specified key and owner UID. Returns an
- * int consistent with MountServiceResultCode
- */
- public int mountSecureContainer(String id, String key, int ownerUid, boolean readOnly)
- throws RemoteException;
-
- /**
- * Mount external storage at given mount point. Returns an int consistent
- * with MountServiceResultCode
- */
- public int mountVolume(String mountPoint) throws RemoteException;
-
- /**
- * Registers an IMountServiceListener for receiving async notifications.
- */
- public void registerListener(IMountServiceListener listener) throws RemoteException;
-
- /*
- * Rename an unmounted secure container. Returns an int consistent with
- * MountServiceResultCode
- */
- public int renameSecureContainer(String oldId, String newId) throws RemoteException;
-
- /**
- * Enables / disables USB mass storage. The caller should check actual
- * status of enabling/disabling USB mass storage via StorageEventListener.
- */
- public void setUsbMassStorageEnabled(boolean enable) throws RemoteException;
-
- /**
- * Shuts down the MountService and gracefully unmounts all external media.
- * Invokes call back once the shutdown is complete.
- */
- public void shutdown(IMountShutdownObserver observer) throws RemoteException;
-
- /**
- * Unmounts an Opaque Binary Blob (OBB). When the force flag is specified,
- * any program using it will be forcibly killed to unmount the image.
- * MountService will call back to the supplied IObbActionListener to inform
- * it of the terminal state of the call.
- */
- public void unmountObb(String rawPath, boolean force, IObbActionListener token, int nonce)
- throws RemoteException;
-
- /*
- * Unount a secure container. Returns an int consistent with
- * MountServiceResultCode
- */
- public int unmountSecureContainer(String id, boolean force) throws RemoteException;
-
- /**
- * Safely unmount external storage at given mount point. The unmount is an
- * asynchronous operation. Applications should register StorageEventListener
- * for storage related status changes.
- * @param mountPoint the mount point
- * @param force whether or not to forcefully unmount it (e.g. even if programs are using this
- * data currently)
- * @param removeEncryption whether or not encryption mapping should be removed from the volume.
- * This value implies {@code force}.
- */
- public void unmountVolume(String mountPoint, boolean force, boolean removeEncryption)
- throws RemoteException;
-
- /**
- * Unregisters an IMountServiceListener
- */
- public void unregisterListener(IMountServiceListener listener) throws RemoteException;
-
- /**
- * Returns whether or not the external storage is emulated.
- */
- public boolean isExternalStorageEmulated() throws RemoteException;
-
- /** The volume is not encrypted. */
- static final int ENCRYPTION_STATE_NONE = 1;
- /** The volume has been encrypted succesfully. */
- static final int ENCRYPTION_STATE_OK = 0;
- /** The volume is in a bad state.*/
- static final int ENCRYPTION_STATE_ERROR_UNKNOWN = -1;
- /** Encryption is incomplete */
- static final int ENCRYPTION_STATE_ERROR_INCOMPLETE = -2;
- /** Encryption is incomplete and irrecoverable */
- static final int ENCRYPTION_STATE_ERROR_INCONSISTENT = -3;
- /** Underlying data is corrupt */
- static final int ENCRYPTION_STATE_ERROR_CORRUPT = -4;
-
- /**
- * Determines the encryption state of the volume.
- * @return a numerical value. See {@code ENCRYPTION_STATE_*} for possible
- * values.
- * Note that this has been replaced in most cases by the APIs in
- * StorageManager (see isEncryptable and below)
- * This is still useful to get the error state when encryption has failed
- * and CryptKeeper needs to throw up a screen advising the user what to do
- */
- public int getEncryptionState() throws RemoteException;
-
- /**
- * Decrypts any encrypted volumes.
- */
- public int decryptStorage(String password) throws RemoteException;
-
- /**
- * Encrypts storage.
- */
- public int encryptStorage(int type, String password) throws RemoteException;
-
- /**
- * Changes the encryption password.
- */
- public int changeEncryptionPassword(int type, String password)
- throws RemoteException;
-
- /**
- * Verify the encryption password against the stored volume. This method
- * may only be called by the system process.
- */
- public int verifyEncryptionPassword(String password) throws RemoteException;
-
- /**
- * Returns list of all mountable volumes.
- */
- public StorageVolume[] getVolumeList(int uid, String packageName, int flags) throws RemoteException;
-
- /**
- * Gets the path on the filesystem for the ASEC container itself.
- *
- * @param cid ASEC container ID
- * @return path to filesystem or {@code null} if it's not found
- * @throws RemoteException
- */
- public String getSecureContainerFilesystemPath(String cid) throws RemoteException;
-
- /*
- * Fix permissions in a container which has just been created and populated.
- * Returns an int consistent with MountServiceResultCode
- */
- public int fixPermissionsSecureContainer(String id, int gid, String filename)
- throws RemoteException;
-
- /**
- * Ensure that all directories along given path exist, creating parent
- * directories as needed. Validates that given path is absolute and that it
- * contains no relative "." or ".." paths or symlinks. Also ensures that
- * path belongs to a volume managed by vold, and that path is either
- * external storage data or OBB directory belonging to calling app.
- */
- public int mkdirs(String callingPkg, String path) throws RemoteException;
-
- /**
- * Determines the type of the encryption password
- * @return PasswordType
- */
- public int getPasswordType() throws RemoteException;
-
- /**
- * Get password from vold
- * @return password or empty string
- */
- public String getPassword() throws RemoteException;
-
- /**
- * Securely clear password from vold
- */
- public void clearPassword() throws RemoteException;
-
- /**
- * Set a field in the crypto header.
- * @param field field to set
- * @param contents contents to set in field
- */
- public void setField(String field, String contents) throws RemoteException;
-
- /**
- * Gets a field from the crypto header.
- * @param field field to get
- * @return contents of field
- */
- public String getField(String field) throws RemoteException;
-
- public boolean isConvertibleToFBE() throws RemoteException;
-
- public int resizeSecureContainer(String id, int sizeMb, String key) throws RemoteException;
-
- /**
- * Report the time of the last maintenance operation such as fstrim.
- * @return Timestamp of the last maintenance operation, in the
- * System.currentTimeMillis() time base
- * @throws RemoteException
- */
- public long lastMaintenance() throws RemoteException;
-
- /**
- * Kick off an immediate maintenance operation
- * @throws RemoteException
- */
- public void runMaintenance() throws RemoteException;
-
- public void waitForAsecScan() throws RemoteException;
-
- public DiskInfo[] getDisks() throws RemoteException;
- public VolumeInfo[] getVolumes(int flags) throws RemoteException;
- public VolumeRecord[] getVolumeRecords(int flags) throws RemoteException;
-
- public void mount(String volId) throws RemoteException;
- public void unmount(String volId) throws RemoteException;
- public void format(String volId) throws RemoteException;
- public long benchmark(String volId) throws RemoteException;
-
- public void partitionPublic(String diskId) throws RemoteException;
- public void partitionPrivate(String diskId) throws RemoteException;
- public void partitionMixed(String diskId, int ratio) throws RemoteException;
-
- public void setVolumeNickname(String fsUuid, String nickname) throws RemoteException;
- public void setVolumeUserFlags(String fsUuid, int flags, int mask) throws RemoteException;
- public void forgetVolume(String fsUuid) throws RemoteException;
- public void forgetAllVolumes() throws RemoteException;
- public void setDebugFlags(int flags, int mask) throws RemoteException;
-
- public String getPrimaryStorageUuid() throws RemoteException;
- public void setPrimaryStorageUuid(String volumeUuid, IPackageMoveObserver callback)
- throws RemoteException;
-
- public void createUserKey(int userId, int serialNumber, boolean ephemeral)
- throws RemoteException;
- public void destroyUserKey(int userId) throws RemoteException;
- public void addUserKeyAuth(int userId, int serialNumber,
- byte[] token, byte[] secret) throws RemoteException;
- public void fixateNewestUserKeyAuth(int userId) throws RemoteException;
-
- public void unlockUserKey(int userId, int serialNumber,
- byte[] token, byte[] secret) throws RemoteException;
- public void lockUserKey(int userId) throws RemoteException;
- public boolean isUserKeyUnlocked(int userId) throws RemoteException;
-
- public void prepareUserStorage(String volumeUuid, int userId, int serialNumber,
- int flags) throws RemoteException;
- public void destroyUserStorage(String volumeUuid, int userId, int flags) throws RemoteException;
-
- public ParcelFileDescriptor mountAppFuse(String name) throws RemoteException;
-}
diff --git a/core/java/android/os/storage/IMountServiceListener.aidl b/core/java/android/os/storage/IMountServiceListener.aidl
new file mode 100644
index 000000000000..e1499781b652
--- /dev/null
+++ b/core/java/android/os/storage/IMountServiceListener.aidl
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2016, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.storage;
+
+import android.os.storage.DiskInfo;
+import android.os.storage.VolumeInfo;
+import android.os.storage.VolumeRecord;
+
+/**
+ * Callback class for receiving events from MountService.
+ *
+ * Don't change the existing transaction Ids as they could be used in the native code.
+ * When adding a new method, assign the next available transaction id.
+ *
+ * @hide - Applications should use IStorageEventListener for storage event
+ * callbacks.
+ */
+oneway interface IMountServiceListener {
+ /**
+ * Detection state of USB Mass Storage has changed
+ *
+ * @param available true if a UMS host is connected.
+ */
+ void onUsbMassStorageConnectionChanged(boolean connected) = 1;
+
+ /**
+ * Storage state has changed.
+ *
+ * @param path The volume mount path.
+ * @param oldState The old state of the volume.
+ * @param newState The new state of the volume. Note: State is one of the
+ * values returned by Environment.getExternalStorageState()
+ */
+ void onStorageStateChanged(in String path, in String oldState, in String newState) = 2;
+
+ void onVolumeStateChanged(in VolumeInfo vol, int oldState, int newState) = 3;
+
+ void onVolumeRecordChanged(in VolumeRecord rec) = 4;
+
+ void onVolumeForgotten(in String fsUuid) = 5;
+
+ void onDiskScanned(in DiskInfo disk, int volumeCount) = 6;
+
+ void onDiskDestroyed(in DiskInfo disk) = 7;
+
+ /**
+ * Don't change the existing transaction Ids as they could be used in the native code.
+ * When adding a new method, assign the next available transaction id.
+ */
+} \ No newline at end of file
diff --git a/core/java/android/os/storage/IMountServiceListener.java b/core/java/android/os/storage/IMountServiceListener.java
deleted file mode 100644
index cade9d77fba6..000000000000
--- a/core/java/android/os/storage/IMountServiceListener.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.os.storage;
-
-import android.os.Binder;
-import android.os.IBinder;
-import android.os.IInterface;
-import android.os.Parcel;
-import android.os.RemoteException;
-
-/**
- * Callback class for receiving events from MountService.
- *
- * @hide - Applications should use IStorageEventListener for storage event
- * callbacks.
- */
-public interface IMountServiceListener extends IInterface {
- /** Local-side IPC implementation stub class. */
- public static abstract class Stub extends Binder implements IMountServiceListener {
- private static final String DESCRIPTOR = "IMountServiceListener";
-
- /** Construct the stub at attach it to the interface. */
- public Stub() {
- this.attachInterface(this, DESCRIPTOR);
- }
-
- /**
- * Cast an IBinder object into an IMountServiceListener interface,
- * generating a proxy if needed.
- */
- public static IMountServiceListener asInterface(IBinder obj) {
- if ((obj == null)) {
- return null;
- }
- IInterface iin = (IInterface) obj.queryLocalInterface(DESCRIPTOR);
- if (((iin != null) && (iin instanceof IMountServiceListener))) {
- return ((IMountServiceListener) iin);
- }
- return new IMountServiceListener.Stub.Proxy(obj);
- }
-
- public IBinder asBinder() {
- return this;
- }
-
- @Override
- public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
- throws RemoteException {
- switch (code) {
- case INTERFACE_TRANSACTION: {
- reply.writeString(DESCRIPTOR);
- return true;
- }
- case TRANSACTION_onUsbMassStorageConnectionChanged: {
- data.enforceInterface(DESCRIPTOR);
- boolean connected;
- connected = (0 != data.readInt());
- this.onUsbMassStorageConnectionChanged(connected);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_onStorageStateChanged: {
- data.enforceInterface(DESCRIPTOR);
- final String path = data.readString();
- final String oldState = data.readString();
- final String newState = data.readString();
- this.onStorageStateChanged(path, oldState, newState);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_onVolumeStateChanged: {
- data.enforceInterface(DESCRIPTOR);
- final VolumeInfo vol = (VolumeInfo) data.readParcelable(null);
- final int oldState = data.readInt();
- final int newState = data.readInt();
- onVolumeStateChanged(vol, oldState, newState);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_onVolumeRecordChanged: {
- data.enforceInterface(DESCRIPTOR);
- final VolumeRecord rec = (VolumeRecord) data.readParcelable(null);
- onVolumeRecordChanged(rec);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_onVolumeForgotten: {
- data.enforceInterface(DESCRIPTOR);
- final String fsUuid = data.readString();
- onVolumeForgotten(fsUuid);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_onDiskScanned: {
- data.enforceInterface(DESCRIPTOR);
- final DiskInfo disk = (DiskInfo) data.readParcelable(null);
- final int volumeCount = data.readInt();
- onDiskScanned(disk, volumeCount);
- reply.writeNoException();
- return true;
- }
- case TRANSACTION_onDiskDestroyed: {
- data.enforceInterface(DESCRIPTOR);
- final DiskInfo disk = (DiskInfo) data.readParcelable(null);
- onDiskDestroyed(disk);
- reply.writeNoException();
- return true;
- }
- }
- return super.onTransact(code, data, reply, flags);
- }
-
- private static class Proxy implements IMountServiceListener {
- private IBinder mRemote;
-
- Proxy(IBinder remote) {
- mRemote = remote;
- }
-
- public IBinder asBinder() {
- return mRemote;
- }
-
- public String getInterfaceDescriptor() {
- return DESCRIPTOR;
- }
-
- /**
- * Detection state of USB Mass Storage has changed
- *
- * @param available true if a UMS host is connected.
- */
- public void onUsbMassStorageConnectionChanged(boolean connected) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(((connected) ? (1) : (0)));
- mRemote.transact(Stub.TRANSACTION_onUsbMassStorageConnectionChanged, _data,
- _reply, android.os.IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- /**
- * Storage state has changed.
- *
- * @param path The volume mount path.
- * @param oldState The old state of the volume.
- * @param newState The new state of the volume. Note: State is one
- * of the values returned by
- * Environment.getExternalStorageState()
- */
- public void onStorageStateChanged(String path, String oldState, String newState)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(path);
- _data.writeString(oldState);
- _data.writeString(newState);
- mRemote.transact(Stub.TRANSACTION_onStorageStateChanged, _data, _reply,
- android.os.IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void onVolumeStateChanged(VolumeInfo vol, int oldState, int newState)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeParcelable(vol, 0);
- _data.writeInt(oldState);
- _data.writeInt(newState);
- mRemote.transact(Stub.TRANSACTION_onVolumeStateChanged, _data, _reply,
- android.os.IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void onVolumeRecordChanged(VolumeRecord rec) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeParcelable(rec, 0);
- mRemote.transact(Stub.TRANSACTION_onVolumeRecordChanged, _data, _reply,
- android.os.IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void onVolumeForgotten(String fsUuid) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(fsUuid);
- mRemote.transact(Stub.TRANSACTION_onVolumeForgotten, _data, _reply,
- android.os.IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void onDiskScanned(DiskInfo disk, int volumeCount) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeParcelable(disk, 0);
- _data.writeInt(volumeCount);
- mRemote.transact(Stub.TRANSACTION_onDiskScanned, _data, _reply,
- android.os.IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
-
- @Override
- public void onDiskDestroyed(DiskInfo disk) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeParcelable(disk, 0);
- mRemote.transact(Stub.TRANSACTION_onDiskDestroyed, _data, _reply,
- android.os.IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
- }
-
- static final int TRANSACTION_onUsbMassStorageConnectionChanged = (IBinder.FIRST_CALL_TRANSACTION + 0);
- static final int TRANSACTION_onStorageStateChanged = (IBinder.FIRST_CALL_TRANSACTION + 1);
- static final int TRANSACTION_onVolumeStateChanged = (IBinder.FIRST_CALL_TRANSACTION + 2);
- static final int TRANSACTION_onVolumeRecordChanged = (IBinder.FIRST_CALL_TRANSACTION + 3);
- static final int TRANSACTION_onVolumeForgotten = (IBinder.FIRST_CALL_TRANSACTION + 4);
- static final int TRANSACTION_onDiskScanned = (IBinder.FIRST_CALL_TRANSACTION + 5);
- static final int TRANSACTION_onDiskDestroyed = (IBinder.FIRST_CALL_TRANSACTION + 6);
- }
-
- /**
- * Detection state of USB Mass Storage has changed
- *
- * @param available true if a UMS host is connected.
- */
- public void onUsbMassStorageConnectionChanged(boolean connected) throws RemoteException;
-
- /**
- * Storage state has changed.
- *
- * @param path The volume mount path.
- * @param oldState The old state of the volume.
- * @param newState The new state of the volume. Note: State is one of the
- * values returned by Environment.getExternalStorageState()
- */
- public void onStorageStateChanged(String path, String oldState, String newState)
- throws RemoteException;
-
- public void onVolumeStateChanged(VolumeInfo vol, int oldState, int newState)
- throws RemoteException;
- public void onVolumeRecordChanged(VolumeRecord rec) throws RemoteException;
- public void onVolumeForgotten(String fsUuid) throws RemoteException;
-
- public void onDiskScanned(DiskInfo disk, int volumeCount) throws RemoteException;
-
- public void onDiskDestroyed(DiskInfo disk) throws RemoteException;
-}
diff --git a/core/java/android/os/storage/IMountShutdownObserver.aidl b/core/java/android/os/storage/IMountShutdownObserver.aidl
new file mode 100644
index 000000000000..3353bc5cb1c8
--- /dev/null
+++ b/core/java/android/os/storage/IMountShutdownObserver.aidl
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2016, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.storage;
+
+/**
+ * Callback class for receiving events related to shutdown.
+ *
+ * Don't change the existing transaction Ids as they could be used in the native code.
+ * When adding a new method, assign the next available transaction id.
+ *
+ * @hide - For internal consumption only.
+ */
+interface IMountShutdownObserver {
+ /**
+ * This method is called when the shutdown of MountService completed.
+ *
+ * @param statusCode indicates success or failure of the shutdown.
+ */
+ void onShutDownComplete(int statusCode) = 1;
+
+ /**
+ * Don't change the existing transaction Ids as they could be used in the native code.
+ * When adding a new method, assign the next available transaction id.
+ */
+} \ No newline at end of file
diff --git a/core/java/android/os/storage/IMountShutdownObserver.java b/core/java/android/os/storage/IMountShutdownObserver.java
deleted file mode 100644
index d946e1a7cba5..000000000000
--- a/core/java/android/os/storage/IMountShutdownObserver.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.os.storage;
-
-import android.os.Binder;
-import android.os.IBinder;
-import android.os.IInterface;
-import android.os.Parcel;
-import android.os.RemoteException;
-
-/**
- * Callback class for receiving events related to shutdown.
- *
- * @hide - For internal consumption only.
- */
-public interface IMountShutdownObserver extends IInterface {
- /** Local-side IPC implementation stub class. */
- public static abstract class Stub extends Binder implements IMountShutdownObserver {
- private static final java.lang.String DESCRIPTOR = "IMountShutdownObserver";
-
- /** Construct the stub at attach it to the interface. */
- public Stub() {
- this.attachInterface(this, DESCRIPTOR);
- }
-
- /**
- * Cast an IBinder object into an IMountShutdownObserver interface,
- * generating a proxy if needed.
- */
- public static IMountShutdownObserver asInterface(IBinder obj) {
- if ((obj == null)) {
- return null;
- }
- IInterface iin = (IInterface) obj.queryLocalInterface(DESCRIPTOR);
- if (((iin != null) && (iin instanceof IMountShutdownObserver))) {
- return ((IMountShutdownObserver) iin);
- }
- return new IMountShutdownObserver.Stub.Proxy(obj);
- }
-
- public IBinder asBinder() {
- return this;
- }
-
- @Override
- public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
- throws RemoteException {
- switch (code) {
- case INTERFACE_TRANSACTION: {
- reply.writeString(DESCRIPTOR);
- return true;
- }
- case TRANSACTION_onShutDownComplete: {
- data.enforceInterface(DESCRIPTOR);
- int statusCode;
- statusCode = data.readInt();
- this.onShutDownComplete(statusCode);
- reply.writeNoException();
- return true;
- }
- }
- return super.onTransact(code, data, reply, flags);
- }
-
- private static class Proxy implements IMountShutdownObserver {
- private IBinder mRemote;
-
- Proxy(IBinder remote) {
- mRemote = remote;
- }
-
- public IBinder asBinder() {
- return mRemote;
- }
-
- public java.lang.String getInterfaceDescriptor() {
- return DESCRIPTOR;
- }
-
- /**
- * This method is called when the shutdown of MountService
- * completed.
- *
- * @param statusCode indicates success or failure of the shutdown.
- */
- public void onShutDownComplete(int statusCode) throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeInt(statusCode);
- mRemote.transact(Stub.TRANSACTION_onShutDownComplete, _data, _reply, 0);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
- }
-
- static final int TRANSACTION_onShutDownComplete = (IBinder.FIRST_CALL_TRANSACTION + 0);
- }
-
- /**
- * This method is called when the shutdown of MountService completed.
- *
- * @param statusCode indicates success or failure of the shutdown.
- */
- public void onShutDownComplete(int statusCode) throws RemoteException;
-}
diff --git a/core/java/android/os/storage/IObbActionListener.aidl b/core/java/android/os/storage/IObbActionListener.aidl
new file mode 100644
index 000000000000..71e6aafe1995
--- /dev/null
+++ b/core/java/android/os/storage/IObbActionListener.aidl
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2016, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.storage;
+
+/**
+ * Callback class for receiving events from MountService about Opaque Binary
+ * Blobs (OBBs).
+ *
+ * Don't change the existing transaction Ids as they could be used in the native code.
+ * When adding a new method, assign the next available transaction id.
+ *
+ * @hide - Applications should use StorageManager to interact with OBBs.
+ */
+oneway interface IObbActionListener {
+ /**
+ * Return from an OBB action result.
+ *
+ * @param filename the path to the OBB the operation was performed on
+ * @param nonce identifier that is meaningful to the receiver
+ * @param status status code as defined in {@link OnObbStateChangeListener}
+ */
+ void onObbResult(in String filename, int nonce, int status) = 1;
+
+ /**
+ * Don't change the existing transaction Ids as they could be used in the native code.
+ * When adding a new method, assign the next available transaction id.
+ */
+} \ No newline at end of file
diff --git a/core/java/android/os/storage/IObbActionListener.java b/core/java/android/os/storage/IObbActionListener.java
deleted file mode 100644
index 35da4b097ee5..000000000000
--- a/core/java/android/os/storage/IObbActionListener.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.os.storage;
-
-import android.os.Binder;
-import android.os.IBinder;
-import android.os.IInterface;
-import android.os.Parcel;
-import android.os.RemoteException;
-
-/**
- * Callback class for receiving events from MountService about Opaque Binary
- * Blobs (OBBs).
- *
- * @hide - Applications should use StorageManager to interact with OBBs.
- */
-public interface IObbActionListener extends IInterface {
- /** Local-side IPC implementation stub class. */
- public static abstract class Stub extends Binder implements IObbActionListener {
- private static final String DESCRIPTOR = "IObbActionListener";
-
- /** Construct the stub at attach it to the interface. */
- public Stub() {
- this.attachInterface(this, DESCRIPTOR);
- }
-
- /**
- * Cast an IBinder object into an IObbActionListener interface,
- * generating a proxy if needed.
- */
- public static IObbActionListener asInterface(IBinder obj) {
- if ((obj == null)) {
- return null;
- }
- IInterface iin = (IInterface) obj.queryLocalInterface(DESCRIPTOR);
- if (((iin != null) && (iin instanceof IObbActionListener))) {
- return ((IObbActionListener) iin);
- }
- return new IObbActionListener.Stub.Proxy(obj);
- }
-
- public IBinder asBinder() {
- return this;
- }
-
- @Override
- public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
- throws RemoteException {
- switch (code) {
- case INTERFACE_TRANSACTION: {
- reply.writeString(DESCRIPTOR);
- return true;
- }
- case TRANSACTION_onObbResult: {
- data.enforceInterface(DESCRIPTOR);
- String filename;
- filename = data.readString();
- int nonce;
- nonce = data.readInt();
- int status;
- status = data.readInt();
- this.onObbResult(filename, nonce, status);
- reply.writeNoException();
- return true;
- }
- }
- return super.onTransact(code, data, reply, flags);
- }
-
- private static class Proxy implements IObbActionListener {
- private IBinder mRemote;
-
- Proxy(IBinder remote) {
- mRemote = remote;
- }
-
- public IBinder asBinder() {
- return mRemote;
- }
-
- public String getInterfaceDescriptor() {
- return DESCRIPTOR;
- }
-
- /**
- * Return from an OBB action result.
- *
- * @param filename the path to the OBB the operation was performed
- * on
- * @param returnCode status of the operation
- */
- public void onObbResult(String filename, int nonce, int status)
- throws RemoteException {
- Parcel _data = Parcel.obtain();
- Parcel _reply = Parcel.obtain();
- try {
- _data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(filename);
- _data.writeInt(nonce);
- _data.writeInt(status);
- mRemote.transact(Stub.TRANSACTION_onObbResult, _data, _reply,
- android.os.IBinder.FLAG_ONEWAY);
- _reply.readException();
- } finally {
- _reply.recycle();
- _data.recycle();
- }
- }
- }
-
- static final int TRANSACTION_onObbResult = (IBinder.FIRST_CALL_TRANSACTION + 0);
- }
-
- /**
- * Return from an OBB action result.
- *
- * @param filename the path to the OBB the operation was performed on
- * @param nonce identifier that is meaningful to the receiver
- * @param status status code as defined in {@link OnObbStateChangeListener}
- */
- public void onObbResult(String filename, int nonce, int status) throws RemoteException;
-}
diff --git a/core/java/android/os/storage/MountServiceListener.java b/core/java/android/os/storage/MountServiceListener.java
deleted file mode 100644
index bebb3f6c97d7..000000000000
--- a/core/java/android/os/storage/MountServiceListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.os.storage;
-
-/**
- * Callback class for receiving progress reports during a restore operation. These
- * methods will all be called on your application's main thread.
- * @hide
- */
-public abstract class MountServiceListener {
- /**
- * USB Mass storage connection state has changed.
- *
- * @param connected True if UMS is connected.
- */
- void onUsbMassStorageConnectionChanged(boolean connected) {
- }
-
- /**
- * Storage state has changed.
- *
- * @param path The volume mount path.
- * @param oldState The old state of the volume.
- * @param newState The new state of the volume.
- *
- * @Note: State is one of the values returned by Environment.getExternalStorageState()
- */
- void onStorageStateChange(String path, String oldState, String newState) {
- }
-}
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index 1a78fe7bd5ba..f97811541dca 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -133,6 +133,24 @@ public class StorageManager {
/** {@hide} */
public static final int FLAG_INCLUDE_INVISIBLE = 1 << 10;
+ /** @hide The volume is not encrypted. */
+ public static final int ENCRYPTION_STATE_NONE = 1;
+
+ /** @hide The volume has been encrypted succesfully. */
+ public static final int ENCRYPTION_STATE_OK = 0;
+
+ /** @hide The volume is in a bad state.*/
+ public static final int ENCRYPTION_STATE_ERROR_UNKNOWN = -1;
+
+ /** @hide Encryption is incomplete */
+ public static final int ENCRYPTION_STATE_ERROR_INCOMPLETE = -2;
+
+ /** @hide Encryption is incomplete and irrecoverable */
+ public static final int ENCRYPTION_STATE_ERROR_INCONSISTENT = -3;
+
+ /** @hide Underlying data is corrupt */
+ public static final int ENCRYPTION_STATE_ERROR_CORRUPT = -4;
+
private static volatile IMountService sMountService = null;
// TODO: the location of the primary storage block varies from device to device, so we need to
diff --git a/core/java/android/os/storage/VolumeRecord.aidl b/core/java/android/os/storage/VolumeRecord.aidl
new file mode 100644
index 000000000000..27c4010941c4
--- /dev/null
+++ b/core/java/android/os/storage/VolumeRecord.aidl
@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) 2016, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.storage;
+
+/** @hide */
+parcelable VolumeRecord; \ No newline at end of file
diff --git a/packages/BackupRestoreConfirmation/src/com/android/backupconfirm/BackupRestoreConfirmation.java b/packages/BackupRestoreConfirmation/src/com/android/backupconfirm/BackupRestoreConfirmation.java
index 0b7b99f4b150..bfc9ff30b5a3 100644
--- a/packages/BackupRestoreConfirmation/src/com/android/backupconfirm/BackupRestoreConfirmation.java
+++ b/packages/BackupRestoreConfirmation/src/com/android/backupconfirm/BackupRestoreConfirmation.java
@@ -272,7 +272,7 @@ public class BackupRestoreConfirmation extends Activity {
boolean deviceIsEncrypted() {
try {
return mMountService.getEncryptionState()
- != IMountService.ENCRYPTION_STATE_NONE
+ != StorageManager.ENCRYPTION_STATE_NONE
&& mMountService.getPasswordType()
!= StorageManager.CRYPT_TYPE_DEFAULT;
} catch (Exception e) {
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 9d3035aee8a3..6375e9a39dae 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -3983,7 +3983,7 @@ public class BackupManagerService {
boolean deviceIsEncrypted() {
try {
return mMountService.getEncryptionState()
- != IMountService.ENCRYPTION_STATE_NONE
+ != StorageManager.ENCRYPTION_STATE_NONE
&& mMountService.getPasswordType()
!= StorageManager.CRYPT_TYPE_DEFAULT;
} catch (Exception e) {
diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java
index b9a483138520..c2d05b96b5aa 100644
--- a/services/core/java/com/android/server/MountService.java
+++ b/services/core/java/com/android/server/MountService.java
@@ -2535,11 +2535,11 @@ class MountService extends IMountService.Stub
} catch (NumberFormatException e) {
// Bad result - unexpected.
Slog.w(TAG, "Unable to parse result from cryptfs cryptocomplete");
- return ENCRYPTION_STATE_ERROR_UNKNOWN;
+ return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN;
} catch (NativeDaemonConnectorException e) {
// Something bad happened.
Slog.w(TAG, "Error in communicating with cryptfs in validating");
- return ENCRYPTION_STATE_ERROR_UNKNOWN;
+ return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN;
}
}