| Index: shell/android/android_handler.cc
|
| diff --git a/shell/android/android_handler.cc b/shell/android/android_handler.cc
|
| index 9d3181bbd999c3e5abf143283e06d466e5480e82..555efa80db2835f6cecadd78154e5a72af05cfe6 100644
|
| --- a/shell/android/android_handler.cc
|
| +++ b/shell/android/android_handler.cc
|
| @@ -4,13 +4,17 @@
|
|
|
| #include "shell/android/android_handler.h"
|
|
|
| +#include <fcntl.h>
|
| +
|
| #include "base/android/jni_android.h"
|
| #include "base/android/jni_string.h"
|
| #include "base/files/file_path.h"
|
| #include "base/logging.h"
|
| #include "base/message_loop/message_loop.h"
|
| +#include "base/rand_util.h"
|
| #include "base/run_loop.h"
|
| #include "base/scoped_native_library.h"
|
| +#include "base/strings/string_number_conversions.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "jni/AndroidHandler_jni.h"
|
| #include "mojo/common/data_pipe_utils.h"
|
| @@ -154,6 +158,28 @@ void AndroidHandler::ExtractApplication(base::FilePath* extracted_dir,
|
| });
|
| }
|
|
|
| +jstring CreateTemporaryFile(JNIEnv* env,
|
| + jclass jcaller,
|
| + jstring j_directory,
|
| + jstring j_basename,
|
| + jstring j_extension) {
|
| + std::string basename(ConvertJavaStringToUTF8(env, j_basename));
|
| + std::string extension(ConvertJavaStringToUTF8(env, j_extension));
|
| + base::FilePath directory(ConvertJavaStringToUTF8(env, j_directory));
|
| +
|
| + for (;;) {
|
| + std::string random = base::RandBytesAsString(16);
|
| + std::string filename =
|
| + basename + base::HexEncode(random.data(), random.size()) + extension;
|
| + base::FilePath temporary_file = directory.Append(filename);
|
| + int fd = open(temporary_file.value().c_str(), O_CREAT | O_EXCL, 0600);
|
| + if (fd != -1) {
|
| + close(fd);
|
| + return ConvertUTF8ToJavaString(env, temporary_file.value()).Release();
|
| + }
|
| + }
|
| +}
|
| +
|
| bool RegisterAndroidHandlerJni(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
| }
|
|
|