Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(355)

Unified Diff: shell/android/android_handler.cc

Issue 1133283002: Android handler: Fix name collision. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix app tests. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698