Merge "Move to some properties users to libbase properties" am: 2b20612e77 am: 9e4bfdb0b6
am: 506f89a250
Change-Id: I1ba14d9729dba38dd6f67768ea2c83972a853847
This commit is contained in:
@@ -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>
|
||||
@@ -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);
|
||||
@@ -390,17 +392,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 :
|
||||
@@ -417,15 +408,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()) {
|
||||
@@ -439,15 +430,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;
|
||||
}
|
||||
@@ -647,7 +638,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, "");
|
||||
@@ -962,8 +953,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();
|
||||
|
||||
@@ -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>
|
||||
@@ -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) { \
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -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()) {
|
||||
@@ -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, "");
|
||||
std::string model = GetProperty("ro.product.model", "");
|
||||
std::string manufacturer = GetProperty("ro.product.manufacturer", "");
|
||||
std::string brand = GetProperty("ro.product.brand", "");
|
||||
|
||||
char manufacturer[PROPERTY_VALUE_MAX];
|
||||
property_get("ro.product.manufacturer", manufacturer, "");
|
||||
|
||||
char brand[PROPERTY_VALUE_MAX];
|
||||
property_get("ro.product.brand", 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,
|
||||
|
||||
Reference in New Issue
Block a user