| Index: base/android/trace_event_binding.cc
|
| diff --git a/base/android/trace_event_binding.cc b/base/android/trace_event_binding.cc
|
| index 791b67fcf23e18b41a0927c817285c9e3a52afcd..3c5ee17c7abf0c18de1ab17997bd5654077bbb00 100644
|
| --- a/base/android/trace_event_binding.cc
|
| +++ b/base/android/trace_event_binding.cc
|
| @@ -8,6 +8,7 @@
|
|
|
| #include <set>
|
|
|
| +#include "base/android/jni_string.h"
|
| #include "base/lazy_instance.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "base/trace_event/trace_event_impl.h"
|
| @@ -25,32 +26,28 @@ const char kLooperDispatchMessage[] = "Looper.dispatchMessage";
|
| // Boilerplate for safely converting Java data to TRACE_EVENT data.
|
| class TraceEventDataConverter {
|
| public:
|
| - TraceEventDataConverter(JNIEnv* env,
|
| - jstring jname,
|
| - jstring jarg)
|
| + TraceEventDataConverter(JNIEnv* env, jstring jname, jstring jarg)
|
| : env_(env),
|
| jname_(jname),
|
| jarg_(jarg),
|
| - name_(env->GetStringUTFChars(jname, NULL)),
|
| - arg_(jarg ? env->GetStringUTFChars(jarg, NULL) : NULL) {
|
| - }
|
| + name_(ConvertJavaStringToUTF8(env, jname)),
|
| + has_arg_(jarg != nullptr),
|
| + arg_(jarg ? ConvertJavaStringToUTF8(env, jarg) : "") {}
|
| ~TraceEventDataConverter() {
|
| - env_->ReleaseStringUTFChars(jname_, name_);
|
| - if (jarg_)
|
| - env_->ReleaseStringUTFChars(jarg_, arg_);
|
| }
|
|
|
| // Return saves values to pass to TRACE_EVENT macros.
|
| - const char* name() { return name_; }
|
| - const char* arg_name() { return arg_ ? "arg" : NULL; }
|
| - const char* arg() { return arg_; }
|
| + const char* name() { return name_.c_str(); }
|
| + const char* arg_name() { return has_arg_ ? "arg" : nullptr; }
|
| + const char* arg() { return has_arg_ ? arg_.c_str() : nullptr; }
|
|
|
| private:
|
| JNIEnv* env_;
|
| jstring jname_;
|
| jstring jarg_;
|
| - const char* name_;
|
| - const char* arg_;
|
| + std::string name_;
|
| + bool has_arg_;
|
| + std::string arg_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TraceEventDataConverter);
|
| };
|
|
|