Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85eaca25 authored by Christopher Wiley's avatar Christopher Wiley Committed by Gerrit Code Review
Browse files

Merge "Rethrow remote's ServiceSpecificException"

parents ec9081a0 80fd1208
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -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();
@@ -1550,6 +1557,9 @@ public final class Parcel {
            throw new RuntimeException(e);
        }
        writeString(e.getMessage());
        if (e instanceof ServiceSpecificException) {
            writeInt(((ServiceSpecificException)e).errorCode);
        }
    }

    /**
@@ -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);
+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;
    }
}