diff options
author | jdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 16:52:51 +0000 |
---|---|---|
committer | jdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 16:52:51 +0000 |
commit | 74de2d9cff8bc3803b7b47794b0f02ac364fa0d1 (patch) | |
tree | f82262e45d69967699dd021d7e4b1b0d6ee5baff /base/android/command_line_android.cc | |
parent | 90fba6c7ff57877ca5047eff24dc1ae08b9819e5 (diff) | |
download | chromium_src-74de2d9cff8bc3803b7b47794b0f02ac364fa0d1.zip chromium_src-74de2d9cff8bc3803b7b47794b0f02ac364fa0d1.tar.gz chromium_src-74de2d9cff8bc3803b7b47794b0f02ac364fa0d1.tar.bz2 |
[Android] Fix x86 compilation with multiply defined command_line.cc
Multiple .cc files cannot be defined in a given compilation unit for x86 Android
Android builds. Rename base/android's command_line.{h,cc} to
command_line_android.{h,cc}.
NOTRY=true
Review URL: https://codereview.chromium.org/77473002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236257 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/android/command_line_android.cc')
-rw-r--r-- | base/android/command_line_android.cc | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/base/android/command_line_android.cc b/base/android/command_line_android.cc new file mode 100644 index 0000000..895ffab --- /dev/null +++ b/base/android/command_line_android.cc @@ -0,0 +1,85 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/android/command_line_android.h" + +#include "base/android/jni_array.h" +#include "base/android/jni_string.h" +#include "base/command_line.h" +#include "base/logging.h" +#include "jni/CommandLine_jni.h" + +using base::android::ConvertUTF8ToJavaString; +using base::android::ConvertJavaStringToUTF8; + +namespace { + +void AppendJavaStringArrayToCommandLine(JNIEnv* env, + jobjectArray array, + bool includes_program) { + std::vector<std::string> vec; + if (array) + base::android::AppendJavaStringArrayToStringVector(env, array, &vec); + if (!includes_program) + vec.insert(vec.begin(), ""); + CommandLine extra_command_line(vec); + CommandLine::ForCurrentProcess()->AppendArguments(extra_command_line, + includes_program); +} + +} // namespace + +static void Reset(JNIEnv* env, jclass clazz) { + CommandLine::Reset(); +} + +static jboolean HasSwitch(JNIEnv* env, jclass clazz, jstring jswitch) { + std::string switch_string(ConvertJavaStringToUTF8(env, jswitch)); + return CommandLine::ForCurrentProcess()->HasSwitch(switch_string); +} + +static jstring GetSwitchValue(JNIEnv* env, jclass clazz, jstring jswitch) { + std::string switch_string(ConvertJavaStringToUTF8(env, jswitch)); + std::string value(CommandLine::ForCurrentProcess()->GetSwitchValueNative( + switch_string)); + if (value.empty()) + return 0; + // OK to release, JNI binding. + return ConvertUTF8ToJavaString(env, value).Release(); +} + +static void AppendSwitch(JNIEnv* env, jclass clazz, jstring jswitch) { + std::string switch_string(ConvertJavaStringToUTF8(env, jswitch)); + CommandLine::ForCurrentProcess()->AppendSwitch(switch_string); +} + +static void AppendSwitchWithValue(JNIEnv* env, jclass clazz, + jstring jswitch, jstring jvalue) { + std::string switch_string(ConvertJavaStringToUTF8(env, jswitch)); + std::string value_string (ConvertJavaStringToUTF8(env, jvalue)); + CommandLine::ForCurrentProcess()->AppendSwitchASCII(switch_string, + value_string); +} + +static void AppendSwitchesAndArguments(JNIEnv* env, jclass clazz, + jobjectArray array) { + AppendJavaStringArrayToCommandLine(env, array, false); +} + +namespace base { +namespace android { + +void InitNativeCommandLineFromJavaArray(JNIEnv* env, jobjectArray array) { + // TODO(port): Make an overload of Init() that takes StringVector rather than + // have to round-trip via AppendArguments. + CommandLine::Init(0, NULL); + AppendJavaStringArrayToCommandLine(env, array, true); +} + +bool RegisterCommandLine(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +} // namespace android +} // namespace base |