Loading core/jni/AndroidRuntime.cpp +19 −21 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ #define LOG_NDEBUG 1 #include <android_runtime/AndroidRuntime.h> #include <android-base/properties.h> #include <binder/IBinder.h> #include <binder/IPCThreadState.h> #include <binder/IServiceManager.h> Loading Loading @@ -47,8 +49,8 @@ #include <string> #include <vector> using namespace android; using android::base::GetProperty; extern int register_android_os_Binder(JNIEnv* env); extern int register_android_os_Process(JNIEnv* env); Loading Loading @@ -392,17 +394,6 @@ static bool hasFile(const char* file) { return false; } // Convenience wrapper over the property API that returns an // std::string. std::string getProperty(const char* key, const char* defaultValue) { std::vector<char> temp(PROPERTY_VALUE_MAX); const int len = property_get(key, &temp[0], defaultValue); if (len < 0) { return ""; } return std::string(&temp[0], len); } /* * Read the persistent locale. Inspects the following system properties * (in order) and returns the first non-empty property in the list : Loading @@ -419,15 +410,15 @@ std::string getProperty(const char* key, const char* defaultValue) { */ const std::string readLocale() { const std::string locale = getProperty("persist.sys.locale", ""); const std::string locale = GetProperty("persist.sys.locale", ""); if (!locale.empty()) { return locale; } const std::string language = getProperty("persist.sys.language", ""); const std::string language = GetProperty("persist.sys.language", ""); if (!language.empty()) { const std::string country = getProperty("persist.sys.country", ""); const std::string variant = getProperty("persist.sys.localevar", ""); const std::string country = GetProperty("persist.sys.country", ""); const std::string variant = GetProperty("persist.sys.localevar", ""); std::string out = language; if (!country.empty()) { Loading @@ -441,15 +432,15 @@ const std::string readLocale() return out; } const std::string productLocale = getProperty("ro.product.locale", ""); const std::string productLocale = GetProperty("ro.product.locale", ""); if (!productLocale.empty()) { return productLocale; } // If persist.sys.locale and ro.product.locale are missing, // construct a locale value from the individual locale components. const std::string productLanguage = getProperty("ro.product.locale.language", "en"); const std::string productRegion = getProperty("ro.product.locale.region", "US"); const std::string productLanguage = GetProperty("ro.product.locale.language", "en"); const std::string productRegion = GetProperty("ro.product.locale.region", "US"); return productLanguage + "-" + productRegion; } Loading Loading @@ -649,7 +640,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) char cpuAbiListBuf[sizeof("--cpu-abilist=") + PROPERTY_VALUE_MAX]; char methodTraceFileBuf[sizeof("-Xmethod-trace-file:") + PROPERTY_VALUE_MAX]; char methodTraceFileSizeBuf[sizeof("-Xmethod-trace-file-size:") + PROPERTY_VALUE_MAX]; char fingerprintBuf[sizeof("-Xfingerprint:") + PROPERTY_VALUE_MAX]; std::string fingerprintBuf; bool checkJni = false; property_get("dalvik.vm.checkjni", propBuf, ""); Loading Loading @@ -964,8 +955,15 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) /* * Retrieve the build fingerprint and provide it to the runtime. That way, ANR dumps will * contain the fingerprint and can be parsed. * Fingerprints are potentially longer than PROPERTY_VALUE_MAX, so parseRuntimeOption() cannot * be used here. * Do not ever re-assign fingerprintBuf as its c_str() value is stored in mOptions. */ parseRuntimeOption("ro.build.fingerprint", fingerprintBuf, "-Xfingerprint:"); std::string fingerprint = GetProperty("ro.build.fingerprint", ""); if (!fingerprint.empty()) { fingerprintBuf = "-Xfingerprint:" + fingerprint; addOption(fingerprintBuf.c_str()); } initArgs.version = JNI_VERSION_1_4; initArgs.options = mOptions.editArray(); Loading core/jni/android_hardware_camera2_DngCreator.cpp +20 −26 Original line number Diff line number Diff line Loading @@ -23,13 +23,13 @@ #include <vector> #include <cmath> #include <android-base/properties.h> #include <utils/Log.h> #include <utils/Errors.h> #include <utils/StrongPointer.h> #include <utils/RefBase.h> #include <utils/Vector.h> #include <utils/String8.h> #include <cutils/properties.h> #include <system/camera_metadata.h> #include <camera/CameraMetadata.h> #include <img_utils/DngUtils.h> Loading @@ -50,6 +50,7 @@ using namespace android; using namespace img_utils; using android::base::GetProperty; #define BAIL_IF_INVALID_RET_BOOL(expr, jnienv, tagId, writer) \ if ((expr) != OK) { \ Loading Loading @@ -1237,26 +1238,24 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image { // make char manufacturer[PROPERTY_VALUE_MAX]; // Use "" to represent unknown make as suggested in TIFF/EP spec. property_get("ro.product.manufacturer", manufacturer, ""); uint32_t count = static_cast<uint32_t>(strlen(manufacturer)) + 1; std::string manufacturer = GetProperty("ro.product.manufacturer", ""); uint32_t count = static_cast<uint32_t>(manufacturer.size()) + 1; BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_MAKE, count, reinterpret_cast<uint8_t*>(manufacturer), TIFF_IFD_0), env, TAG_MAKE, writer); reinterpret_cast<const uint8_t*>(manufacturer.c_str()), TIFF_IFD_0), env, TAG_MAKE, writer); } { // model char model[PROPERTY_VALUE_MAX]; // Use "" to represent unknown model as suggested in TIFF/EP spec. property_get("ro.product.model", model, ""); uint32_t count = static_cast<uint32_t>(strlen(model)) + 1; std::string model = GetProperty("ro.product.model", ""); uint32_t count = static_cast<uint32_t>(model.size()) + 1; BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_MODEL, count, reinterpret_cast<uint8_t*>(model), TIFF_IFD_0), env, TAG_MODEL, writer); reinterpret_cast<const uint8_t*>(model.c_str()), TIFF_IFD_0), env, TAG_MODEL, writer); } { Loading @@ -1277,11 +1276,11 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image { // software char software[PROPERTY_VALUE_MAX]; property_get("ro.build.fingerprint", software, ""); uint32_t count = static_cast<uint32_t>(strlen(software)) + 1; std::string software = GetProperty("ro.build.fingerprint", ""); uint32_t count = static_cast<uint32_t>(software.size()) + 1; BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_SOFTWARE, count, reinterpret_cast<uint8_t*>(software), TIFF_IFD_0), env, TAG_SOFTWARE, writer); reinterpret_cast<const uint8_t*>(software.c_str()), TIFF_IFD_0), env, TAG_SOFTWARE, writer); } if (nativeContext->hasCaptureTime()) { Loading Loading @@ -1613,20 +1612,15 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image { // Setup unique camera model tag char model[PROPERTY_VALUE_MAX]; property_get("ro.product.model", model, ""); char manufacturer[PROPERTY_VALUE_MAX]; property_get("ro.product.manufacturer", manufacturer, ""); char brand[PROPERTY_VALUE_MAX]; property_get("ro.product.brand", brand, ""); std::string model = GetProperty("ro.product.model", ""); std::string manufacturer = GetProperty("ro.product.manufacturer", ""); std::string brand = GetProperty("ro.product.brand", ""); String8 cameraModel(model); String8 cameraModel(model.c_str()); cameraModel += "-"; cameraModel += manufacturer; cameraModel += manufacturer.c_str(); cameraModel += "-"; cameraModel += brand; cameraModel += brand.c_str(); BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_UNIQUECAMERAMODEL, cameraModel.size() + 1, reinterpret_cast<const uint8_t*>(cameraModel.string()), TIFF_IFD_0), env, Loading Loading
core/jni/AndroidRuntime.cpp +19 −21 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ #define LOG_NDEBUG 1 #include <android_runtime/AndroidRuntime.h> #include <android-base/properties.h> #include <binder/IBinder.h> #include <binder/IPCThreadState.h> #include <binder/IServiceManager.h> Loading Loading @@ -47,8 +49,8 @@ #include <string> #include <vector> using namespace android; using android::base::GetProperty; extern int register_android_os_Binder(JNIEnv* env); extern int register_android_os_Process(JNIEnv* env); Loading Loading @@ -392,17 +394,6 @@ static bool hasFile(const char* file) { return false; } // Convenience wrapper over the property API that returns an // std::string. std::string getProperty(const char* key, const char* defaultValue) { std::vector<char> temp(PROPERTY_VALUE_MAX); const int len = property_get(key, &temp[0], defaultValue); if (len < 0) { return ""; } return std::string(&temp[0], len); } /* * Read the persistent locale. Inspects the following system properties * (in order) and returns the first non-empty property in the list : Loading @@ -419,15 +410,15 @@ std::string getProperty(const char* key, const char* defaultValue) { */ const std::string readLocale() { const std::string locale = getProperty("persist.sys.locale", ""); const std::string locale = GetProperty("persist.sys.locale", ""); if (!locale.empty()) { return locale; } const std::string language = getProperty("persist.sys.language", ""); const std::string language = GetProperty("persist.sys.language", ""); if (!language.empty()) { const std::string country = getProperty("persist.sys.country", ""); const std::string variant = getProperty("persist.sys.localevar", ""); const std::string country = GetProperty("persist.sys.country", ""); const std::string variant = GetProperty("persist.sys.localevar", ""); std::string out = language; if (!country.empty()) { Loading @@ -441,15 +432,15 @@ const std::string readLocale() return out; } const std::string productLocale = getProperty("ro.product.locale", ""); const std::string productLocale = GetProperty("ro.product.locale", ""); if (!productLocale.empty()) { return productLocale; } // If persist.sys.locale and ro.product.locale are missing, // construct a locale value from the individual locale components. const std::string productLanguage = getProperty("ro.product.locale.language", "en"); const std::string productRegion = getProperty("ro.product.locale.region", "US"); const std::string productLanguage = GetProperty("ro.product.locale.language", "en"); const std::string productRegion = GetProperty("ro.product.locale.region", "US"); return productLanguage + "-" + productRegion; } Loading Loading @@ -649,7 +640,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) char cpuAbiListBuf[sizeof("--cpu-abilist=") + PROPERTY_VALUE_MAX]; char methodTraceFileBuf[sizeof("-Xmethod-trace-file:") + PROPERTY_VALUE_MAX]; char methodTraceFileSizeBuf[sizeof("-Xmethod-trace-file-size:") + PROPERTY_VALUE_MAX]; char fingerprintBuf[sizeof("-Xfingerprint:") + PROPERTY_VALUE_MAX]; std::string fingerprintBuf; bool checkJni = false; property_get("dalvik.vm.checkjni", propBuf, ""); Loading Loading @@ -964,8 +955,15 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) /* * Retrieve the build fingerprint and provide it to the runtime. That way, ANR dumps will * contain the fingerprint and can be parsed. * Fingerprints are potentially longer than PROPERTY_VALUE_MAX, so parseRuntimeOption() cannot * be used here. * Do not ever re-assign fingerprintBuf as its c_str() value is stored in mOptions. */ parseRuntimeOption("ro.build.fingerprint", fingerprintBuf, "-Xfingerprint:"); std::string fingerprint = GetProperty("ro.build.fingerprint", ""); if (!fingerprint.empty()) { fingerprintBuf = "-Xfingerprint:" + fingerprint; addOption(fingerprintBuf.c_str()); } initArgs.version = JNI_VERSION_1_4; initArgs.options = mOptions.editArray(); Loading
core/jni/android_hardware_camera2_DngCreator.cpp +20 −26 Original line number Diff line number Diff line Loading @@ -23,13 +23,13 @@ #include <vector> #include <cmath> #include <android-base/properties.h> #include <utils/Log.h> #include <utils/Errors.h> #include <utils/StrongPointer.h> #include <utils/RefBase.h> #include <utils/Vector.h> #include <utils/String8.h> #include <cutils/properties.h> #include <system/camera_metadata.h> #include <camera/CameraMetadata.h> #include <img_utils/DngUtils.h> Loading @@ -50,6 +50,7 @@ using namespace android; using namespace img_utils; using android::base::GetProperty; #define BAIL_IF_INVALID_RET_BOOL(expr, jnienv, tagId, writer) \ if ((expr) != OK) { \ Loading Loading @@ -1237,26 +1238,24 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image { // make char manufacturer[PROPERTY_VALUE_MAX]; // Use "" to represent unknown make as suggested in TIFF/EP spec. property_get("ro.product.manufacturer", manufacturer, ""); uint32_t count = static_cast<uint32_t>(strlen(manufacturer)) + 1; std::string manufacturer = GetProperty("ro.product.manufacturer", ""); uint32_t count = static_cast<uint32_t>(manufacturer.size()) + 1; BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_MAKE, count, reinterpret_cast<uint8_t*>(manufacturer), TIFF_IFD_0), env, TAG_MAKE, writer); reinterpret_cast<const uint8_t*>(manufacturer.c_str()), TIFF_IFD_0), env, TAG_MAKE, writer); } { // model char model[PROPERTY_VALUE_MAX]; // Use "" to represent unknown model as suggested in TIFF/EP spec. property_get("ro.product.model", model, ""); uint32_t count = static_cast<uint32_t>(strlen(model)) + 1; std::string model = GetProperty("ro.product.model", ""); uint32_t count = static_cast<uint32_t>(model.size()) + 1; BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_MODEL, count, reinterpret_cast<uint8_t*>(model), TIFF_IFD_0), env, TAG_MODEL, writer); reinterpret_cast<const uint8_t*>(model.c_str()), TIFF_IFD_0), env, TAG_MODEL, writer); } { Loading @@ -1277,11 +1276,11 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image { // software char software[PROPERTY_VALUE_MAX]; property_get("ro.build.fingerprint", software, ""); uint32_t count = static_cast<uint32_t>(strlen(software)) + 1; std::string software = GetProperty("ro.build.fingerprint", ""); uint32_t count = static_cast<uint32_t>(software.size()) + 1; BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_SOFTWARE, count, reinterpret_cast<uint8_t*>(software), TIFF_IFD_0), env, TAG_SOFTWARE, writer); reinterpret_cast<const uint8_t*>(software.c_str()), TIFF_IFD_0), env, TAG_SOFTWARE, writer); } if (nativeContext->hasCaptureTime()) { Loading Loading @@ -1613,20 +1612,15 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image { // Setup unique camera model tag char model[PROPERTY_VALUE_MAX]; property_get("ro.product.model", model, ""); char manufacturer[PROPERTY_VALUE_MAX]; property_get("ro.product.manufacturer", manufacturer, ""); char brand[PROPERTY_VALUE_MAX]; property_get("ro.product.brand", brand, ""); std::string model = GetProperty("ro.product.model", ""); std::string manufacturer = GetProperty("ro.product.manufacturer", ""); std::string brand = GetProperty("ro.product.brand", ""); String8 cameraModel(model); String8 cameraModel(model.c_str()); cameraModel += "-"; cameraModel += manufacturer; cameraModel += manufacturer.c_str(); cameraModel += "-"; cameraModel += brand; cameraModel += brand.c_str(); BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_UNIQUECAMERAMODEL, cameraModel.size() + 1, reinterpret_cast<const uint8_t*>(cameraModel.string()), TIFF_IFD_0), env, Loading