diff options
author | Justin Klaassen <justinklaassen@google.com> | 2017-09-15 17:58:39 -0400 |
---|---|---|
committer | Justin Klaassen <justinklaassen@google.com> | 2017-09-15 17:58:39 -0400 |
commit | 10d07c88d69cc64f73a069163e7ea5ba2519a099 (patch) | |
tree | 8dbd149eb350320a29c3d10e7ad3201de1c5cbee /android/media/MediaCasStateException.java | |
parent | 677516fb6b6f207d373984757d3d9450474b6b00 (diff) | |
download | android-28-10d07c88d69cc64f73a069163e7ea5ba2519a099.tar.gz |
Import Android SDK Platform PI [4335822]
/google/data/ro/projects/android/fetch_artifact \
--bid 4335822 \
--target sdk_phone_armv7-win_sdk \
sdk-repo-linux-sources-4335822.zip
AndroidVersion.ApiLevel has been modified to appear as 28
Change-Id: Ic8f04be005a71c2b9abeaac754d8da8d6f9a2c32
Diffstat (limited to 'android/media/MediaCasStateException.java')
-rw-r--r-- | android/media/MediaCasStateException.java | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/android/media/MediaCasStateException.java b/android/media/MediaCasStateException.java new file mode 100644 index 00000000..26c57923 --- /dev/null +++ b/android/media/MediaCasStateException.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2017 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.media; + +import android.annotation.NonNull; +import android.annotation.Nullable; + +import android.hardware.cas.V1_0.Status; + +/** + * Base class for MediaCas runtime exceptions + */ +public class MediaCasStateException extends IllegalStateException { + private final int mErrorCode; + private final String mDiagnosticInfo; + + private MediaCasStateException(int err, @Nullable String msg, @Nullable String diagnosticInfo) { + super(msg); + mErrorCode = err; + mDiagnosticInfo = diagnosticInfo; + } + + static void throwExceptionIfNeeded(int err) { + throwExceptionIfNeeded(err, null /* msg */); + } + + static void throwExceptionIfNeeded(int err, @Nullable String msg) { + if (err == Status.OK) { + return; + } + if (err == Status.BAD_VALUE) { + throw new IllegalArgumentException(); + } + + String diagnosticInfo = ""; + switch (err) { + case Status.ERROR_CAS_UNKNOWN: + diagnosticInfo = "General CAS error"; + break; + case Status.ERROR_CAS_NO_LICENSE: + diagnosticInfo = "No license"; + break; + case Status.ERROR_CAS_LICENSE_EXPIRED: + diagnosticInfo = "License expired"; + break; + case Status.ERROR_CAS_SESSION_NOT_OPENED: + diagnosticInfo = "Session not opened"; + break; + case Status.ERROR_CAS_CANNOT_HANDLE: + diagnosticInfo = "Unsupported scheme or data format"; + break; + case Status.ERROR_CAS_INVALID_STATE: + diagnosticInfo = "Invalid CAS state"; + break; + case Status.ERROR_CAS_INSUFFICIENT_OUTPUT_PROTECTION: + diagnosticInfo = "Insufficient output protection"; + break; + case Status.ERROR_CAS_TAMPER_DETECTED: + diagnosticInfo = "Tamper detected"; + break; + case Status.ERROR_CAS_DECRYPT_UNIT_NOT_INITIALIZED: + diagnosticInfo = "Not initialized"; + break; + case Status.ERROR_CAS_DECRYPT: + diagnosticInfo = "Decrypt error"; + break; + default: + diagnosticInfo = "Unknown CAS state exception"; + break; + } + throw new MediaCasStateException(err, msg, + String.format("%s (err=%d)", diagnosticInfo, err)); + } + + /** + * Retrieve the associated error code + * + * @hide + */ + public int getErrorCode() { + return mErrorCode; + } + + /** + * Retrieve a developer-readable diagnostic information string + * associated with the exception. Do not show this to end-users, + * since this string will not be localized or generally comprehensible + * to end-users. + */ + @NonNull + public String getDiagnosticInfo() { + return mDiagnosticInfo; + } +} |