summaryrefslogtreecommitdiffstats
path: root/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2013-08-27 12:09:04 -0700
committerEino-Ville Talvala <etalvala@google.com>2013-09-11 13:18:10 -0700
commit70c2207c34cf0e6b3b383b1b1500ff5385aa51a6 (patch)
tree48c81e88d69e45be7ffc614f3d952d1f4e08de6c /media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit
parent4af73c2153747d0624ccc75dfa001cb91982957f (diff)
downloadframeworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.zip
frameworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.tar.gz
frameworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.tar.bz2
Camera2: Immutable metadata
Make all camera metadata immutable once created; requests are created using CameraRequest.Builder. - Separate CameraMetadata implementation from interface - Implement deep copying of metadata - Requests/results/properties have-a native implementation Bug: 10360518 Change-Id: Ia6300c237219d39f70c63156fa9ca666d951a36e
Diffstat (limited to 'media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit')
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java112
1 files changed, 22 insertions, 90 deletions
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java
index ecf01d9..874e078 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java
@@ -23,8 +23,9 @@ import android.graphics.Rect;
import android.hardware.camera2.CameraMetadata;
import android.hardware.camera2.Rational;
import android.hardware.camera2.Size;
+import android.hardware.camera2.impl.CameraMetadataNative;
-import static android.hardware.camera2.CameraMetadata.*;
+import static android.hardware.camera2.impl.CameraMetadataNative.*;
import java.lang.reflect.Array;
import java.nio.ByteBuffer;
@@ -42,7 +43,7 @@ import static org.junit.Assert.assertArrayEquals;
*/
public class CameraMetadataTest extends junit.framework.TestCase {
- CameraMetadata mMetadata;
+ CameraMetadataNative mMetadata;
Parcel mParcel;
// Sections
@@ -62,13 +63,12 @@ public class CameraMetadataTest extends junit.framework.TestCase {
@Override
public void setUp() {
- mMetadata = new CameraMetadata();
+ mMetadata = new CameraMetadataNative();
mParcel = Parcel.obtain();
}
@Override
public void tearDown() throws Exception {
- mMetadata.close();
mMetadata = null;
mParcel.recycle();
@@ -82,115 +82,47 @@ public class CameraMetadataTest extends junit.framework.TestCase {
}
@SmallTest
- public void testClose() throws Exception {
- mMetadata.isEmpty(); // no throw
-
- assertFalse(mMetadata.isClosed());
-
- mMetadata.close();
-
- assertTrue(mMetadata.isClosed());
-
- // OK: second close should not throw
- mMetadata.close();
-
- assertTrue(mMetadata.isClosed());
-
- // All other calls after close should throw IllegalStateException
-
- try {
- mMetadata.isEmpty();
- fail("Unreachable -- isEmpty after close should throw IllegalStateException");
- } catch (IllegalStateException e) {
- // good: we expect calling this method after close to fail
- }
-
- try {
- mMetadata.getEntryCount();
- fail("Unreachable -- getEntryCount after close should throw IllegalStateException");
- } catch (IllegalStateException e) {
- // good: we expect calling this method after close to fail
- }
-
-
- try {
- mMetadata.swap(mMetadata);
- fail("Unreachable -- swap after close should throw IllegalStateException");
- } catch (IllegalStateException e) {
- // good: we expect calling this method after close to fail
- }
-
- try {
- mMetadata.readFromParcel(mParcel);
- fail("Unreachable -- readFromParcel after close should throw IllegalStateException");
- } catch (IllegalStateException e) {
- // good: we expect calling this method after close to fail
- }
-
- try {
- mMetadata.writeToParcel(mParcel, /*flags*/0);
- fail("Unreachable -- writeToParcel after close should throw IllegalStateException");
- } catch (IllegalStateException e) {
- // good: we expect calling this method after close to fail
- }
-
- try {
- mMetadata.readValues(/*tag*/0);
- fail("Unreachable -- readValues after close should throw IllegalStateException");
- } catch (IllegalStateException e) {
- // good: we expect calling this method after close to fail
- }
-
- try {
- mMetadata.writeValues(/*tag*/0, /*source*/new byte[] { 1,2,3 });
- fail("Unreachable -- readValues after close should throw IllegalStateException");
- } catch (IllegalStateException e) {
- // good: we expect calling this method after close to fail
- }
- }
-
- @SmallTest
public void testGetTagFromKey() {
// Test success
assertEquals(ANDROID_COLOR_CORRECTION_MODE,
- CameraMetadata.getTag("android.colorCorrection.mode"));
+ CameraMetadataNative.getTag("android.colorCorrection.mode"));
assertEquals(ANDROID_COLOR_CORRECTION_TRANSFORM,
- CameraMetadata.getTag("android.colorCorrection.transform"));
+ CameraMetadataNative.getTag("android.colorCorrection.transform"));
assertEquals(ANDROID_CONTROL_AE_ANTIBANDING_MODE,
- CameraMetadata.getTag("android.control.aeAntibandingMode"));
+ CameraMetadataNative.getTag("android.control.aeAntibandingMode"));
assertEquals(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
- CameraMetadata.getTag("android.control.aeExposureCompensation"));
+ CameraMetadataNative.getTag("android.control.aeExposureCompensation"));
// Test failures
try {
- CameraMetadata.getTag(null);
+ CameraMetadataNative.getTag(null);
fail("A null key should throw NPE");
} catch(NullPointerException e) {
}
try {
- CameraMetadata.getTag("android.control");
+ CameraMetadataNative.getTag("android.control");
fail("A section name only should not be a valid key");
} catch(IllegalArgumentException e) {
}
try {
- CameraMetadata.getTag("android.control.thisTagNameIsFakeAndDoesNotExist");
+ CameraMetadataNative.getTag("android.control.thisTagNameIsFakeAndDoesNotExist");
fail("A valid section with an invalid tag name should not be a valid key");
} catch(IllegalArgumentException e) {
}
try {
- CameraMetadata.getTag("android");
+ CameraMetadataNative.getTag("android");
fail("A namespace name only should not be a valid key");
} catch(IllegalArgumentException e) {
}
try {
- CameraMetadata.getTag("this.key.is.definitely.invalid");
+ CameraMetadataNative.getTag("this.key.is.definitely.invalid");
fail("A completely fake key name should not be valid");
} catch(IllegalArgumentException e) {
}
@@ -198,14 +130,14 @@ public class CameraMetadataTest extends junit.framework.TestCase {
@SmallTest
public void testGetTypeFromTag() {
- assertEquals(TYPE_BYTE, CameraMetadata.getNativeType(ANDROID_COLOR_CORRECTION_MODE));
- assertEquals(TYPE_FLOAT, CameraMetadata.getNativeType(ANDROID_COLOR_CORRECTION_TRANSFORM));
- assertEquals(TYPE_BYTE, CameraMetadata.getNativeType(ANDROID_CONTROL_AE_ANTIBANDING_MODE));
+ assertEquals(TYPE_BYTE, CameraMetadataNative.getNativeType(ANDROID_COLOR_CORRECTION_MODE));
+ assertEquals(TYPE_FLOAT, CameraMetadataNative.getNativeType(ANDROID_COLOR_CORRECTION_TRANSFORM));
+ assertEquals(TYPE_BYTE, CameraMetadataNative.getNativeType(ANDROID_CONTROL_AE_ANTIBANDING_MODE));
assertEquals(TYPE_INT32,
- CameraMetadata.getNativeType(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION));
+ CameraMetadataNative.getNativeType(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION));
try {
- CameraMetadata.getNativeType(0xDEADF00D);
+ CameraMetadataNative.getNativeType(0xDEADF00D);
fail("No type should exist for invalid tag 0xDEADF00D");
} catch(IllegalArgumentException e) {
}
@@ -454,7 +386,7 @@ public class CameraMetadataTest extends junit.framework.TestCase {
@SmallTest
public void testReadWriteEnumWithCustomValues() {
- CameraMetadata.registerEnumValues(AeAntibandingMode.class, new int[] {
+ CameraMetadataNative.registerEnumValues(AeAntibandingMode.class, new int[] {
0,
10,
20,
@@ -475,7 +407,7 @@ public class CameraMetadataTest extends junit.framework.TestCase {
Key<AeAntibandingMode[]> aeAntibandingModeKey =
new Key<AeAntibandingMode[]>("android.control.aeAvailableAntibandingModes",
AeAntibandingMode[].class);
- byte[] aeAntibandingModeValues = mMetadata.readValues(CameraMetadata
+ byte[] aeAntibandingModeValues = mMetadata.readValues(CameraMetadataNative
.getTag("android.control.aeAvailableAntibandingModes"));
byte[] expectedValues = new byte[] { 0, 10, 20, 30 };
assertArrayEquals(expectedValues, aeAntibandingModeValues);
@@ -485,7 +417,7 @@ public class CameraMetadataTest extends junit.framework.TestCase {
* Stranger cases that don't use byte enums
*/
// int (n)
- CameraMetadata.registerEnumValues(AvailableFormat.class, new int[] {
+ CameraMetadataNative.registerEnumValues(AvailableFormat.class, new int[] {
0x20,
0x32315659,
0x11,
@@ -505,7 +437,7 @@ public class CameraMetadataTest extends junit.framework.TestCase {
Key<AeAntibandingMode> availableFormatsKey =
new Key<AeAntibandingMode>("android.scaler.availableFormats",
AeAntibandingMode.class);
- byte[] availableFormatValues = mMetadata.readValues(CameraMetadata
+ byte[] availableFormatValues = mMetadata.readValues(CameraMetadataNative
.getTag(availableFormatsKey.getName()));
int[] expectedIntValues = new int[] {