Index: content/browser/android/command_line.cc |
diff --git a/content/browser/android/command_line.cc b/content/browser/android/command_line.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1883b07f0f973f10595ed99b1485b9ee93550def |
--- /dev/null |
+++ b/content/browser/android/command_line.cc |
@@ -0,0 +1,78 @@ |
+// Copyright (c) 2012 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 "content/browser/android/command_line.h" |
+ |
+#include "base/android/jni_string.h" |
+#include "base/command_line.h" |
+#include "base/logging.h" |
+#include "jni/command_line_jni.h" |
+#include "content/browser/android/jni_helper.h" |
+ |
+using base::android::ConvertJavaStringToUTF8; |
+ |
+namespace { |
+ |
+void AppendJavaStringArrayToCommandLine(JNIEnv* env, |
+ jobjectArray array, |
+ bool includes_program) { |
+ CommandLine::StringVector vec; |
+ if (array) |
+ ConvertJavaArrayOfStringsToVectorOfStrings(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 base::android::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); |
+} |
+ |
+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); |
+} |