Index: ui/shell_dialogs/select_file_dialog_android.cc |
diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc |
index 86c4b18d077dfd58d63be0bceebd3e8ed696c745..5873039656dd33a8a69dc5074dfdcb747492203c 100644 |
--- a/ui/shell_dialogs/select_file_dialog_android.cc |
+++ b/ui/shell_dialogs/select_file_dialog_android.cc |
@@ -8,15 +8,18 @@ |
#include "base/android/jni_array.h" |
#include "base/android/jni_string.h" |
#include "base/android/scoped_java_ref.h" |
+#include "base/files/file_util.h" |
#include "base/logging.h" |
#include "base/strings/string_split.h" |
#include "base/strings/string_util.h" |
+#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
#include "jni/SelectFileDialog_jni.h" |
#include "ui/base/android/window_android.h" |
#include "ui/shell_dialogs/selected_file_info.h" |
using base::android::ConvertJavaStringToUTF8; |
+using base::android::ConvertUTF8ToJavaString; |
namespace ui { |
@@ -91,6 +94,25 @@ void SelectFileDialogImpl::ListenerDestroyed() { |
listener_ = NULL; |
} |
+ScopedJavaLocalRef<jstring> SelectFileDialogImpl::GetUniqueFilePath( |
+ JNIEnv* env, jobject java_object, jstring path) { |
+ base::FilePath file_path(ConvertJavaStringToUTF8(env, path)); |
+ |
+ ScopedJavaLocalRef<jstring> result; |
+ |
+ // TODO(changwan): use GetUniquePath() instead once |
+ // https://codereview.chromium.org/493363003/ lands. |
+ int uniquifier = base::GetUniquePathNumber(file_path, |
+ base::FilePath::StringType()); |
+ if (uniquifier > 0) { |
+ file_path = file_path.InsertBeforeExtensionASCII( |
+ base::StringPrintf(" (%d)", uniquifier)); |
+ result = ConvertUTF8ToJavaString(env, file_path.value()); |
+ return ScopedJavaLocalRef<jstring>(result); |
+ } |
+ return result; |
+} |
+ |
void SelectFileDialogImpl::SelectFileImpl( |
SelectFileDialog::Type type, |
const base::string16& title, |
@@ -102,6 +124,15 @@ void SelectFileDialogImpl::SelectFileImpl( |
void* params) { |
JNIEnv* env = base::android::AttachCurrentThread(); |
+ if (type == SelectFileDialog::SELECT_SAVEAS_FILE) { |
+ ScopedJavaLocalRef<jstring> jdefault_path = |
Ted C
2014/09/19 22:31:40
this block is indented 2 too many
Changwan Ryu
2014/09/22 14:02:37
Done.
Changwan Ryu
2014/09/22 14:02:37
Done.
|
+ ConvertUTF8ToJavaString(env, default_path.value()); |
+ Java_SelectFileDialog_showOverwriteDialog( |
+ env, java_object_.obj(), jdefault_path.obj(), |
+ owning_window->GetJavaObject().obj()); |
+ return; |
+ } |
+ |
// The first element in the pair is a list of accepted types, the second |
// indicates whether the device's capture capabilities should be used. |
typedef std::pair<std::vector<base::string16>, bool> AcceptTypes; |