diff --git a/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp b/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp index e02741fc12c8e..719cf74a451de 100644 --- a/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp +++ b/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp @@ -514,14 +514,14 @@ static jint LegacyCameraDevice_nativeDetectSurfaceUsageFlags(JNIEnv* env, jobjec sp anw; if ((anw = getNativeWindow(env, surface)) == NULL) { - jniThrowException(env, "java/lang/UnsupportedOperationException;", + jniThrowException(env, "java/lang/UnsupportedOperationException", "Could not retrieve native window from surface."); return BAD_VALUE; } int32_t usage = 0; status_t err = anw->query(anw.get(), NATIVE_WINDOW_CONSUMER_USAGE_BITS, &usage); if(err != NO_ERROR) { - jniThrowException(env, "java/lang/UnsupportedOperationException;", + jniThrowException(env, "java/lang/UnsupportedOperationException", "Error while querying surface usage bits"); OVERRIDE_SURFACE_ERROR(err); return err; @@ -542,7 +542,7 @@ static jint LegacyCameraDevice_nativeDisconnectSurface(JNIEnv* env, jobject thiz status_t err = native_window_api_disconnect(anw.get(), NATIVE_WINDOW_API_CAMERA); if(err != NO_ERROR) { - jniThrowException(env, "java/lang/UnsupportedOperationException;", + jniThrowException(env, "java/lang/UnsupportedOperationException", "Error while disconnecting surface"); OVERRIDE_SURFACE_ERROR(err); return err; diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/SurfaceUtilsTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/SurfaceUtilsTest.java new file mode 100644 index 0000000000000..f578e46ea4f16 --- /dev/null +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/SurfaceUtilsTest.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2018 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 com.android.mediaframeworktest.unit; + +import android.graphics.ImageFormat; +import android.hardware.camera2.utils.SurfaceUtils; +import android.media.ImageReader; +import android.test.suitebuilder.annotation.SmallTest; +import android.view.Surface; + +import junit.framework.Assert; + +public class SurfaceUtilsTest extends junit.framework.TestCase { + + @SmallTest + public void testInvalidSurfaceException() { + ImageReader reader = ImageReader.newInstance(640, 480, ImageFormat.YUV_420_888, 1); + Surface surface = reader.getSurface(); + surface.release(); + + try { + SurfaceUtils.isFlexibleConsumer(surface); + Assert.fail("unreachable"); + } catch (UnsupportedOperationException e) { + // expected + } + + reader.close(); + } +}