diff options
author | Jeff Brown <jeffbrown@google.com> | 2011-10-09 12:28:54 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2011-10-09 13:00:35 -0700 |
commit | df6611d8c0cd69c3dcb93462eb138e0bbf137b88 (patch) | |
tree | 48c131b08a5160207844b41efb89290f8a1c1d2d /core/java/android/content/ContentProviderNative.java | |
parent | da71e80c5c53a8078a107f451bc222c81d3c1f3f (diff) | |
download | frameworks_base-df6611d8c0cd69c3dcb93462eb138e0bbf137b88.zip frameworks_base-df6611d8c0cd69c3dcb93462eb138e0bbf137b88.tar.gz frameworks_base-df6611d8c0cd69c3dcb93462eb138e0bbf137b88.tar.bz2 |
Clean up handrolled Binder proxies.
Bug: 5332296
We can't replace these with AIDL generated proxies just yet, but
at least we can make them a little more conformant.
Change-Id: I1814f76d0f9c5e44a7fd85a12b2e3c2b7e3c9daa
Diffstat (limited to 'core/java/android/content/ContentProviderNative.java')
-rw-r--r-- | core/java/android/content/ContentProviderNative.java | 392 |
1 files changed, 196 insertions, 196 deletions
diff --git a/core/java/android/content/ContentProviderNative.java b/core/java/android/content/ContentProviderNative.java index abeeb74..9a20951 100644 --- a/core/java/android/content/ContentProviderNative.java +++ b/core/java/android/content/ContentProviderNative.java @@ -332,60 +332,60 @@ final class ContentProviderProxy implements IContentProvider BulkCursorToCursorAdaptor adaptor) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); + + url.writeToParcel(data, 0); + int length = 0; + if (projection != null) { + length = projection.length; + } + data.writeInt(length); + for (int i = 0; i < length; i++) { + data.writeString(projection[i]); + } + data.writeString(selection); + if (selectionArgs != null) { + length = selectionArgs.length; + } else { + length = 0; + } + data.writeInt(length); + for (int i = 0; i < length; i++) { + data.writeString(selectionArgs[i]); + } + data.writeString(sortOrder); + data.writeStrongBinder(observer.asBinder()); + window.writeToParcel(data, 0); - data.writeInterfaceToken(IContentProvider.descriptor); + // Flag for whether or not we want the number of rows in the + // cursor and the position of the "_id" column index (or -1 if + // non-existent). Only to be returned if binder != null. + final boolean wantsCursorMetadata = (adaptor != null); + data.writeInt(wantsCursorMetadata ? 1 : 0); - url.writeToParcel(data, 0); - int length = 0; - if (projection != null) { - length = projection.length; - } - data.writeInt(length); - for (int i = 0; i < length; i++) { - data.writeString(projection[i]); - } - data.writeString(selection); - if (selectionArgs != null) { - length = selectionArgs.length; - } else { - length = 0; - } - data.writeInt(length); - for (int i = 0; i < length; i++) { - data.writeString(selectionArgs[i]); - } - data.writeString(sortOrder); - data.writeStrongBinder(observer.asBinder()); - window.writeToParcel(data, 0); - - // Flag for whether or not we want the number of rows in the - // cursor and the position of the "_id" column index (or -1 if - // non-existent). Only to be returned if binder != null. - final boolean wantsCursorMetadata = (adaptor != null); - data.writeInt(wantsCursorMetadata ? 1 : 0); - - mRemote.transact(IContentProvider.QUERY_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionFromParcel(reply); - - IBulkCursor bulkCursor = null; - IBinder bulkCursorBinder = reply.readStrongBinder(); - if (bulkCursorBinder != null) { - bulkCursor = BulkCursorNative.asInterface(bulkCursorBinder); - - if (wantsCursorMetadata) { - int rowCount = reply.readInt(); - int idColumnPosition = reply.readInt(); - if (bulkCursor != null) { - adaptor.set(bulkCursor, rowCount, idColumnPosition); + mRemote.transact(IContentProvider.QUERY_TRANSACTION, data, reply, 0); + + DatabaseUtils.readExceptionFromParcel(reply); + + IBulkCursor bulkCursor = null; + IBinder bulkCursorBinder = reply.readStrongBinder(); + if (bulkCursorBinder != null) { + bulkCursor = BulkCursorNative.asInterface(bulkCursorBinder); + + if (wantsCursorMetadata) { + int rowCount = reply.readInt(); + int idColumnPosition = reply.readInt(); + if (bulkCursor != null) { + adaptor.set(bulkCursor, rowCount, idColumnPosition); + } } } + return bulkCursor; + } finally { + data.recycle(); + reply.recycle(); } - - data.recycle(); - reply.recycle(); - - return bulkCursor; } public IBulkCursor bulkQuery(Uri url, String[] projection, @@ -416,240 +416,240 @@ final class ContentProviderProxy implements IContentProvider { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - - mRemote.transact(IContentProvider.GET_TYPE_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionFromParcel(reply); - String out = reply.readString(); + url.writeToParcel(data, 0); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.GET_TYPE_TRANSACTION, data, reply, 0); - return out; + DatabaseUtils.readExceptionFromParcel(reply); + String out = reply.readString(); + return out; + } finally { + data.recycle(); + reply.recycle(); + } } public Uri insert(Uri url, ContentValues values) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - values.writeToParcel(data, 0); - - mRemote.transact(IContentProvider.INSERT_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionFromParcel(reply); - Uri out = Uri.CREATOR.createFromParcel(reply); + url.writeToParcel(data, 0); + values.writeToParcel(data, 0); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.INSERT_TRANSACTION, data, reply, 0); - return out; + DatabaseUtils.readExceptionFromParcel(reply); + Uri out = Uri.CREATOR.createFromParcel(reply); + return out; + } finally { + data.recycle(); + reply.recycle(); + } } public int bulkInsert(Uri url, ContentValues[] values) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - data.writeTypedArray(values, 0); - - mRemote.transact(IContentProvider.BULK_INSERT_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionFromParcel(reply); - int count = reply.readInt(); + url.writeToParcel(data, 0); + data.writeTypedArray(values, 0); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.BULK_INSERT_TRANSACTION, data, reply, 0); - return count; + DatabaseUtils.readExceptionFromParcel(reply); + int count = reply.readInt(); + return count; + } finally { + data.recycle(); + reply.recycle(); + } } public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) throws RemoteException, OperationApplicationException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); - - data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInt(operations.size()); - for (ContentProviderOperation operation : operations) { - operation.writeToParcel(data, 0); + try { + data.writeInterfaceToken(IContentProvider.descriptor); + data.writeInt(operations.size()); + for (ContentProviderOperation operation : operations) { + operation.writeToParcel(data, 0); + } + mRemote.transact(IContentProvider.APPLY_BATCH_TRANSACTION, data, reply, 0); + + DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(reply); + final ContentProviderResult[] results = + reply.createTypedArray(ContentProviderResult.CREATOR); + return results; + } finally { + data.recycle(); + reply.recycle(); } - mRemote.transact(IContentProvider.APPLY_BATCH_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(reply); - final ContentProviderResult[] results = - reply.createTypedArray(ContentProviderResult.CREATOR); - - data.recycle(); - reply.recycle(); - - return results; } public int delete(Uri url, String selection, String[] selectionArgs) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - data.writeString(selection); - data.writeStringArray(selectionArgs); - - mRemote.transact(IContentProvider.DELETE_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionFromParcel(reply); - int count = reply.readInt(); + url.writeToParcel(data, 0); + data.writeString(selection); + data.writeStringArray(selectionArgs); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.DELETE_TRANSACTION, data, reply, 0); - return count; + DatabaseUtils.readExceptionFromParcel(reply); + int count = reply.readInt(); + return count; + } finally { + data.recycle(); + reply.recycle(); + } } public int update(Uri url, ContentValues values, String selection, String[] selectionArgs) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - values.writeToParcel(data, 0); - data.writeString(selection); - data.writeStringArray(selectionArgs); - - mRemote.transact(IContentProvider.UPDATE_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionFromParcel(reply); - int count = reply.readInt(); + url.writeToParcel(data, 0); + values.writeToParcel(data, 0); + data.writeString(selection); + data.writeStringArray(selectionArgs); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.UPDATE_TRANSACTION, data, reply, 0); - return count; + DatabaseUtils.readExceptionFromParcel(reply); + int count = reply.readInt(); + return count; + } finally { + data.recycle(); + reply.recycle(); + } } public ParcelFileDescriptor openFile(Uri url, String mode) throws RemoteException, FileNotFoundException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - data.writeString(mode); - - mRemote.transact(IContentProvider.OPEN_FILE_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(reply); - int has = reply.readInt(); - ParcelFileDescriptor fd = has != 0 ? reply.readFileDescriptor() : null; + url.writeToParcel(data, 0); + data.writeString(mode); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.OPEN_FILE_TRANSACTION, data, reply, 0); - return fd; + DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(reply); + int has = reply.readInt(); + ParcelFileDescriptor fd = has != 0 ? reply.readFileDescriptor() : null; + return fd; + } finally { + data.recycle(); + reply.recycle(); + } } public AssetFileDescriptor openAssetFile(Uri url, String mode) throws RemoteException, FileNotFoundException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - data.writeString(mode); - - mRemote.transact(IContentProvider.OPEN_ASSET_FILE_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(reply); - int has = reply.readInt(); - AssetFileDescriptor fd = has != 0 - ? AssetFileDescriptor.CREATOR.createFromParcel(reply) : null; + url.writeToParcel(data, 0); + data.writeString(mode); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.OPEN_ASSET_FILE_TRANSACTION, data, reply, 0); - return fd; + DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(reply); + int has = reply.readInt(); + AssetFileDescriptor fd = has != 0 + ? AssetFileDescriptor.CREATOR.createFromParcel(reply) : null; + return fd; + } finally { + data.recycle(); + reply.recycle(); + } } public Bundle call(String method, String request, Bundle args) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - data.writeString(method); - data.writeString(request); - data.writeBundle(args); - - mRemote.transact(IContentProvider.CALL_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionFromParcel(reply); - Bundle bundle = reply.readBundle(); + data.writeString(method); + data.writeString(request); + data.writeBundle(args); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.CALL_TRANSACTION, data, reply, 0); - return bundle; + DatabaseUtils.readExceptionFromParcel(reply); + Bundle bundle = reply.readBundle(); + return bundle; + } finally { + data.recycle(); + reply.recycle(); + } } public String[] getStreamTypes(Uri url, String mimeTypeFilter) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); + try { + data.writeInterfaceToken(IContentProvider.descriptor); - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - data.writeString(mimeTypeFilter); - - mRemote.transact(IContentProvider.GET_STREAM_TYPES_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionFromParcel(reply); - String[] out = reply.createStringArray(); + url.writeToParcel(data, 0); + data.writeString(mimeTypeFilter); - data.recycle(); - reply.recycle(); + mRemote.transact(IContentProvider.GET_STREAM_TYPES_TRANSACTION, data, reply, 0); - return out; + DatabaseUtils.readExceptionFromParcel(reply); + String[] out = reply.createStringArray(); + return out; + } finally { + data.recycle(); + reply.recycle(); + } } public AssetFileDescriptor openTypedAssetFile(Uri url, String mimeType, Bundle opts) throws RemoteException, FileNotFoundException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); - - data.writeInterfaceToken(IContentProvider.descriptor); - - url.writeToParcel(data, 0); - data.writeString(mimeType); - data.writeBundle(opts); - - mRemote.transact(IContentProvider.OPEN_TYPED_ASSET_FILE_TRANSACTION, data, reply, 0); - - DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(reply); - int has = reply.readInt(); - AssetFileDescriptor fd = has != 0 - ? AssetFileDescriptor.CREATOR.createFromParcel(reply) : null; - - data.recycle(); - reply.recycle(); - - return fd; + try { + data.writeInterfaceToken(IContentProvider.descriptor); + + url.writeToParcel(data, 0); + data.writeString(mimeType); + data.writeBundle(opts); + + mRemote.transact(IContentProvider.OPEN_TYPED_ASSET_FILE_TRANSACTION, data, reply, 0); + + DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(reply); + int has = reply.readInt(); + AssetFileDescriptor fd = has != 0 + ? AssetFileDescriptor.CREATOR.createFromParcel(reply) : null; + return fd; + } finally { + data.recycle(); + reply.recycle(); + } } private IBinder mRemote; |