Loading core/java/android/os/Parcel.java +12 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,7 @@ public final class Parcel { private static final int VAL_DOUBLEARRAY = 28; // The initial int32 in a Binder call's reply Parcel header: // Keep these in sync with libbinder's binder/Status.h. private static final int EX_SECURITY = -1; private static final int EX_BAD_PARCELABLE = -2; private static final int EX_ILLEGAL_ARGUMENT = -3; Loading @@ -243,7 +244,11 @@ public final class Parcel { private static final int EX_ILLEGAL_STATE = -5; private static final int EX_NETWORK_MAIN_THREAD = -6; private static final int EX_UNSUPPORTED_OPERATION = -7; private static final int EX_SERVICE_SPECIFIC = -8; private static final int EX_HAS_REPLY_HEADER = -128; // special; see below // EX_TRANSACTION_FAILED is used exclusively in native code. // see libbinder's binder/Status.h private static final int EX_TRANSACTION_FAILED = -129; private static native int nativeDataSize(long nativePtr); private static native int nativeDataAvail(long nativePtr); Loading Loading @@ -1540,6 +1545,8 @@ public final class Parcel { code = EX_NETWORK_MAIN_THREAD; } else if (e instanceof UnsupportedOperationException) { code = EX_UNSUPPORTED_OPERATION; } else if (e instanceof ServiceSpecificException) { code = EX_SERVICE_SPECIFIC; } writeInt(code); StrictMode.clearGatheredViolations(); Loading @@ -1550,6 +1557,9 @@ public final class Parcel { throw new RuntimeException(e); } writeString(e.getMessage()); if (e instanceof ServiceSpecificException) { writeInt(((ServiceSpecificException)e).errorCode); } } /** Loading Loading @@ -1660,6 +1670,8 @@ public final class Parcel { throw new NetworkOnMainThreadException(); case EX_UNSUPPORTED_OPERATION: throw new UnsupportedOperationException(msg); case EX_SERVICE_SPECIFIC: throw new ServiceSpecificException(readInt(), msg); } throw new RuntimeException("Unknown exception code: " + code + " msg " + msg); Loading core/java/android/os/ServiceSpecificException.java 0 → 100644 +39 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 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; /** * An exception specific to a service. * * <p>This exception includes an error code specific to the throwing * service. This is mostly used by system services to indicate * domain specific error conditions. * * @hide */ public class ServiceSpecificException extends RuntimeException { public final int errorCode; ServiceSpecificException(int errorCode, String message) { super(message); this.errorCode = errorCode; } ServiceSpecificException(int errorCode) { this.errorCode = errorCode; } } Loading
core/java/android/os/Parcel.java +12 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,7 @@ public final class Parcel { private static final int VAL_DOUBLEARRAY = 28; // The initial int32 in a Binder call's reply Parcel header: // Keep these in sync with libbinder's binder/Status.h. private static final int EX_SECURITY = -1; private static final int EX_BAD_PARCELABLE = -2; private static final int EX_ILLEGAL_ARGUMENT = -3; Loading @@ -243,7 +244,11 @@ public final class Parcel { private static final int EX_ILLEGAL_STATE = -5; private static final int EX_NETWORK_MAIN_THREAD = -6; private static final int EX_UNSUPPORTED_OPERATION = -7; private static final int EX_SERVICE_SPECIFIC = -8; private static final int EX_HAS_REPLY_HEADER = -128; // special; see below // EX_TRANSACTION_FAILED is used exclusively in native code. // see libbinder's binder/Status.h private static final int EX_TRANSACTION_FAILED = -129; private static native int nativeDataSize(long nativePtr); private static native int nativeDataAvail(long nativePtr); Loading Loading @@ -1540,6 +1545,8 @@ public final class Parcel { code = EX_NETWORK_MAIN_THREAD; } else if (e instanceof UnsupportedOperationException) { code = EX_UNSUPPORTED_OPERATION; } else if (e instanceof ServiceSpecificException) { code = EX_SERVICE_SPECIFIC; } writeInt(code); StrictMode.clearGatheredViolations(); Loading @@ -1550,6 +1557,9 @@ public final class Parcel { throw new RuntimeException(e); } writeString(e.getMessage()); if (e instanceof ServiceSpecificException) { writeInt(((ServiceSpecificException)e).errorCode); } } /** Loading Loading @@ -1660,6 +1670,8 @@ public final class Parcel { throw new NetworkOnMainThreadException(); case EX_UNSUPPORTED_OPERATION: throw new UnsupportedOperationException(msg); case EX_SERVICE_SPECIFIC: throw new ServiceSpecificException(readInt(), msg); } throw new RuntimeException("Unknown exception code: " + code + " msg " + msg); Loading
core/java/android/os/ServiceSpecificException.java 0 → 100644 +39 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 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; /** * An exception specific to a service. * * <p>This exception includes an error code specific to the throwing * service. This is mostly used by system services to indicate * domain specific error conditions. * * @hide */ public class ServiceSpecificException extends RuntimeException { public final int errorCode; ServiceSpecificException(int errorCode, String message) { super(message); this.errorCode = errorCode; } ServiceSpecificException(int errorCode) { this.errorCode = errorCode; } }