Index: media/capture/video/android/photo_capabilities.cc |
diff --git a/media/capture/video/android/photo_capabilities.cc b/media/capture/video/android/photo_capabilities.cc |
index adb0377e63c86dde881fb8a0250dad4f4d3a1c1b..152cea8ecad76ea639a7e3b241ec407198ede311 100644 |
--- a/media/capture/video/android/photo_capabilities.cc |
+++ b/media/capture/video/android/photo_capabilities.cc |
@@ -13,6 +13,27 @@ using base::android::AttachCurrentThread; |
namespace media { |
+namespace { |
+ |
+static_assert( |
+ std::is_same<int, |
+ std::underlying_type< |
+ PhotoCapabilities::AndroidMeteringMode>::type>::value, |
+ "AndroidMeteringMode underlying type should be int"); |
+ |
+std::vector<PhotoCapabilities::AndroidMeteringMode> ToAndroidMeteringModes( |
+ base::android::ScopedJavaLocalRef<jintArray> jni_modes) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ std::vector<PhotoCapabilities::AndroidMeteringMode> modes; |
+ if (jni_modes.obj()) { |
+ base::android::JavaIntArrayToIntVector( |
+ env, jni_modes.obj(), reinterpret_cast<std::vector<int>*>(&modes)); |
+ } |
+ return modes; |
+} |
+ |
+} // anonymous namespace |
+ |
PhotoCapabilities::PhotoCapabilities( |
base::android::ScopedJavaLocalRef<jobject> object) |
: object_(object) {} |
@@ -106,6 +127,16 @@ PhotoCapabilities::AndroidMeteringMode PhotoCapabilities::getFocusMode() const { |
Java_PhotoCapabilities_getFocusMode(AttachCurrentThread(), object_)); |
} |
+std::vector<PhotoCapabilities::AndroidMeteringMode> |
+PhotoCapabilities::getFocusModes() const { |
+ DCHECK(!object_.is_null()); |
+ |
+ JNIEnv* env = AttachCurrentThread(); |
+ base::android::ScopedJavaLocalRef<jintArray> jni_modes = |
+ Java_PhotoCapabilities_getFocusModes(env, object_); |
+ return ToAndroidMeteringModes(jni_modes); |
+} |
+ |
PhotoCapabilities::AndroidMeteringMode PhotoCapabilities::getExposureMode() |
const { |
DCHECK(!object_.is_null()); |
@@ -113,6 +144,16 @@ PhotoCapabilities::AndroidMeteringMode PhotoCapabilities::getExposureMode() |
Java_PhotoCapabilities_getExposureMode(AttachCurrentThread(), object_)); |
} |
+std::vector<PhotoCapabilities::AndroidMeteringMode> |
+PhotoCapabilities::getExposureModes() const { |
+ DCHECK(!object_.is_null()); |
+ |
+ JNIEnv* env = AttachCurrentThread(); |
+ base::android::ScopedJavaLocalRef<jintArray> jni_modes = |
+ Java_PhotoCapabilities_getExposureModes(env, object_); |
+ return ToAndroidMeteringModes(jni_modes); |
+} |
+ |
double PhotoCapabilities::getMinExposureCompensation() const { |
DCHECK(!object_.is_null()); |
return Java_PhotoCapabilities_getMinExposureCompensation( |
@@ -145,6 +186,16 @@ PhotoCapabilities::AndroidMeteringMode PhotoCapabilities::getWhiteBalanceMode() |
object_)); |
} |
+std::vector<PhotoCapabilities::AndroidMeteringMode> |
+PhotoCapabilities::getWhiteBalanceModes() const { |
+ DCHECK(!object_.is_null()); |
+ |
+ JNIEnv* env = AttachCurrentThread(); |
+ base::android::ScopedJavaLocalRef<jintArray> jni_modes = |
+ Java_PhotoCapabilities_getWhiteBalanceModes(env, object_); |
+ return ToAndroidMeteringModes(jni_modes); |
+} |
+ |
std::vector<PhotoCapabilities::AndroidFillLightMode> |
PhotoCapabilities::getFillLightModes() const { |
DCHECK(!object_.is_null()); |