Search in sources :

Example 1 with DeadObjectException

use of android.os.DeadObjectException in project platform_frameworks_base by android.

the class CameraManager method throwAsPublicException.

/**
     * Convert ServiceSpecificExceptions and Binder RemoteExceptions from camera binder interfaces
     * into the correct public exceptions.
     *
     * @hide
     */
public static void throwAsPublicException(Throwable t) throws CameraAccessException {
    if (t instanceof ServiceSpecificException) {
        ServiceSpecificException e = (ServiceSpecificException) t;
        int reason = CameraAccessException.CAMERA_ERROR;
        switch(e.errorCode) {
            case ICameraService.ERROR_DISCONNECTED:
                reason = CameraAccessException.CAMERA_DISCONNECTED;
                break;
            case ICameraService.ERROR_DISABLED:
                reason = CameraAccessException.CAMERA_DISABLED;
                break;
            case ICameraService.ERROR_CAMERA_IN_USE:
                reason = CameraAccessException.CAMERA_IN_USE;
                break;
            case ICameraService.ERROR_MAX_CAMERAS_IN_USE:
                reason = CameraAccessException.MAX_CAMERAS_IN_USE;
                break;
            case ICameraService.ERROR_DEPRECATED_HAL:
                reason = CameraAccessException.CAMERA_DEPRECATED_HAL;
                break;
            case ICameraService.ERROR_ILLEGAL_ARGUMENT:
            case ICameraService.ERROR_ALREADY_EXISTS:
                throw new IllegalArgumentException(e.getMessage(), e);
            case ICameraService.ERROR_PERMISSION_DENIED:
                throw new SecurityException(e.getMessage(), e);
            case ICameraService.ERROR_TIMED_OUT:
            case ICameraService.ERROR_INVALID_OPERATION:
            default:
                reason = CameraAccessException.CAMERA_ERROR;
        }
        throw new CameraAccessException(reason, e.getMessage(), e);
    } else if (t instanceof DeadObjectException) {
        throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED, "Camera service has died unexpectedly", t);
    } else if (t instanceof RemoteException) {
        throw new UnsupportedOperationException("An unknown RemoteException was thrown" + " which should never happen.", t);
    } else if (t instanceof RuntimeException) {
        RuntimeException e = (RuntimeException) t;
        throw e;
    }
}
Also used : ServiceSpecificException(android.os.ServiceSpecificException) DeadObjectException(android.os.DeadObjectException) RemoteException(android.os.RemoteException)

Example 2 with DeadObjectException

use of android.os.DeadObjectException in project android_frameworks_base by DirtyUnicorns.

the class ContentProviderClient method query.

/** See {@link ContentProvider#query ContentProvider.query} */
@Nullable
public Cursor query(@NonNull Uri url, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder, @Nullable CancellationSignal cancellationSignal) throws RemoteException {
    Preconditions.checkNotNull(url, "url");
    beforeRemote();
    try {
        ICancellationSignal remoteCancellationSignal = null;
        if (cancellationSignal != null) {
            cancellationSignal.throwIfCanceled();
            remoteCancellationSignal = mContentProvider.createCancellationSignal();
            cancellationSignal.setRemote(remoteCancellationSignal);
        }
        final Cursor cursor = mContentProvider.query(mPackageName, url, projection, selection, selectionArgs, sortOrder, remoteCancellationSignal);
        if (cursor == null) {
            return null;
        }
        if ("com.google.android.gms".equals(mPackageName)) {
            // They're casting to a concrete subclass, sigh
            return cursor;
        } else {
            return new CursorWrapperInner(cursor);
        }
    } catch (DeadObjectException e) {
        if (!mStable) {
            mContentResolver.unstableProviderDied(mContentProvider);
        }
        throw e;
    } finally {
        afterRemote();
    }
}
Also used : ICancellationSignal(android.os.ICancellationSignal) DeadObjectException(android.os.DeadObjectException) Cursor(android.database.Cursor) Nullable(android.annotation.Nullable)

Example 3 with DeadObjectException

use of android.os.DeadObjectException in project android_frameworks_base by DirtyUnicorns.

the class ContentProviderClient method openAssetFile.

/**
     * See {@link ContentProvider#openAssetFile ContentProvider.openAssetFile}.
     * Note that this <em>does not</em>
     * take care of non-content: URIs such as file:.  It is strongly recommended
     * you use the {@link ContentResolver#openAssetFileDescriptor
     * ContentResolver.openAssetFileDescriptor} API instead.
     */
@Nullable
public AssetFileDescriptor openAssetFile(@NonNull Uri url, @NonNull String mode, @Nullable CancellationSignal signal) throws RemoteException, FileNotFoundException {
    Preconditions.checkNotNull(url, "url");
    Preconditions.checkNotNull(mode, "mode");
    beforeRemote();
    try {
        ICancellationSignal remoteSignal = null;
        if (signal != null) {
            signal.throwIfCanceled();
            remoteSignal = mContentProvider.createCancellationSignal();
            signal.setRemote(remoteSignal);
        }
        return mContentProvider.openAssetFile(mPackageName, url, mode, remoteSignal);
    } catch (DeadObjectException e) {
        if (!mStable) {
            mContentResolver.unstableProviderDied(mContentProvider);
        }
        throw e;
    } finally {
        afterRemote();
    }
}
Also used : ICancellationSignal(android.os.ICancellationSignal) DeadObjectException(android.os.DeadObjectException) Nullable(android.annotation.Nullable)

Example 4 with DeadObjectException

use of android.os.DeadObjectException in project android_frameworks_base by DirtyUnicorns.

the class ContentProviderClient method openTypedAssetFileDescriptor.

/** See {@link ContentProvider#openTypedAssetFile ContentProvider.openTypedAssetFile} */
@Nullable
public final AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull Uri uri, @NonNull String mimeType, @Nullable Bundle opts, @Nullable CancellationSignal signal) throws RemoteException, FileNotFoundException {
    Preconditions.checkNotNull(uri, "uri");
    Preconditions.checkNotNull(mimeType, "mimeType");
    beforeRemote();
    try {
        ICancellationSignal remoteSignal = null;
        if (signal != null) {
            signal.throwIfCanceled();
            remoteSignal = mContentProvider.createCancellationSignal();
            signal.setRemote(remoteSignal);
        }
        return mContentProvider.openTypedAssetFile(mPackageName, uri, mimeType, opts, remoteSignal);
    } catch (DeadObjectException e) {
        if (!mStable) {
            mContentResolver.unstableProviderDied(mContentProvider);
        }
        throw e;
    } finally {
        afterRemote();
    }
}
Also used : ICancellationSignal(android.os.ICancellationSignal) DeadObjectException(android.os.DeadObjectException) Nullable(android.annotation.Nullable)

Example 5 with DeadObjectException

use of android.os.DeadObjectException in project android_frameworks_base by DirtyUnicorns.

the class CameraManager method throwAsPublicException.

/**
     * Convert ServiceSpecificExceptions and Binder RemoteExceptions from camera binder interfaces
     * into the correct public exceptions.
     *
     * @hide
     */
public static void throwAsPublicException(Throwable t) throws CameraAccessException {
    if (t instanceof ServiceSpecificException) {
        ServiceSpecificException e = (ServiceSpecificException) t;
        int reason = CameraAccessException.CAMERA_ERROR;
        switch(e.errorCode) {
            case ICameraService.ERROR_DISCONNECTED:
                reason = CameraAccessException.CAMERA_DISCONNECTED;
                break;
            case ICameraService.ERROR_DISABLED:
                reason = CameraAccessException.CAMERA_DISABLED;
                break;
            case ICameraService.ERROR_CAMERA_IN_USE:
                reason = CameraAccessException.CAMERA_IN_USE;
                break;
            case ICameraService.ERROR_MAX_CAMERAS_IN_USE:
                reason = CameraAccessException.MAX_CAMERAS_IN_USE;
                break;
            case ICameraService.ERROR_DEPRECATED_HAL:
                reason = CameraAccessException.CAMERA_DEPRECATED_HAL;
                break;
            case ICameraService.ERROR_ILLEGAL_ARGUMENT:
            case ICameraService.ERROR_ALREADY_EXISTS:
                throw new IllegalArgumentException(e.getMessage(), e);
            case ICameraService.ERROR_PERMISSION_DENIED:
                throw new SecurityException(e.getMessage(), e);
            case ICameraService.ERROR_TIMED_OUT:
            case ICameraService.ERROR_INVALID_OPERATION:
            default:
                reason = CameraAccessException.CAMERA_ERROR;
        }
        throw new CameraAccessException(reason, e.getMessage(), e);
    } else if (t instanceof DeadObjectException) {
        throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED, "Camera service has died unexpectedly", t);
    } else if (t instanceof RemoteException) {
        throw new UnsupportedOperationException("An unknown RemoteException was thrown" + " which should never happen.", t);
    } else if (t instanceof RuntimeException) {
        RuntimeException e = (RuntimeException) t;
        throw e;
    }
}
Also used : ServiceSpecificException(android.os.ServiceSpecificException) DeadObjectException(android.os.DeadObjectException) RemoteException(android.os.RemoteException)

Aggregations

DeadObjectException (android.os.DeadObjectException)56 ICancellationSignal (android.os.ICancellationSignal)37 Nullable (android.annotation.Nullable)35 RemoteException (android.os.RemoteException)35 AssetFileDescriptor (android.content.res.AssetFileDescriptor)12 ISessionControllerCallback (android.media.session.ISessionControllerCallback)12 ParcelFileDescriptor (android.os.ParcelFileDescriptor)12 FileNotFoundException (java.io.FileNotFoundException)12 Cursor (android.database.Cursor)11 Resources (android.content.res.Resources)6 File (java.io.File)6 ServiceSpecificException (android.os.ServiceSpecificException)5