Index: content/browser/android/date_time_chooser_android.cc |
diff --git a/content/browser/android/date_time_chooser_android.cc b/content/browser/android/date_time_chooser_android.cc |
index 7c91ff0977da8114969a2e3efc98bed3126e15f4..53e14921ef23b068ea0cd5fd0eb1f4fc4f098d98 100644 |
--- a/content/browser/android/date_time_chooser_android.cc |
+++ b/content/browser/android/date_time_chooser_android.cc |
@@ -4,15 +4,18 @@ |
#include "content/browser/android/date_time_chooser_android.h" |
+#include "base/android/jni_android.h" |
#include "base/android/jni_string.h" |
#include "content/common/view_messages.h" |
#include "content/public/browser/android/content_view_core.h" |
#include "content/public/browser/render_view_host_observer.h" |
+#include "content/public/common/date_time_suggestion.h" |
#include "jni/DateTimeChooserAndroid_jni.h" |
using base::android::AttachCurrentThread; |
using base::android::ConvertJavaStringToUTF16; |
using base::android::ConvertUTF8ToJavaString; |
+using base::android::ConvertUTF16ToJavaString; |
namespace content { |
@@ -23,15 +26,7 @@ class DateTimeChooserAndroid::DateTimeIPCSender : |
public: |
explicit DateTimeIPCSender(RenderViewHost* sender); |
virtual ~DateTimeIPCSender() {} |
- void ReplaceDateTime(int dialog_type, |
- int year, |
- int month, |
- int day, |
- int hour, |
- int minute, |
- int second, |
- int milli, |
- int week); |
+ void ReplaceDateTime(double value); |
void CancelDialog(); |
private: |
@@ -43,25 +38,7 @@ DateTimeChooserAndroid::DateTimeIPCSender::DateTimeIPCSender( |
: RenderViewHostObserver(sender) { |
} |
-void DateTimeChooserAndroid::DateTimeIPCSender::ReplaceDateTime(int dialog_type, |
- int year, |
- int month, |
- int day, |
- int hour, |
- int minute, |
- int second, |
- int milli, |
- int week) { |
- ViewHostMsg_DateTimeDialogValue_Params value; |
- value.year = year; |
- value.month = month; |
- value.day = day; |
- value.hour = hour; |
- value.minute = minute; |
- value.second = second; |
- value.milli = milli; |
- value.week = week; |
- value.dialog_type = dialog_type; |
+void DateTimeChooserAndroid::DateTimeIPCSender::ReplaceDateTime(double value) { |
Send(new ViewMsg_ReplaceDateTime(routing_id(), value)); |
} |
@@ -92,58 +69,64 @@ void DateTimeChooserAndroid::InitializeDateInputTypes( |
void DateTimeChooserAndroid::ReplaceDateTime(JNIEnv* env, |
jobject, |
- int dialog_type, |
- int year, |
- int month, |
- int day, |
- int hour, |
- int minute, |
- int second, |
- int milli, |
- int week) { |
- sender_->ReplaceDateTime( |
- dialog_type, year, month, day, hour, minute, second, milli, week); |
+ jdouble value) { |
+ sender_->ReplaceDateTime(value); |
} |
void DateTimeChooserAndroid::CancelDialog(JNIEnv* env, jobject) { |
sender_->CancelDialog(); |
} |
-void DateTimeChooserAndroid::ShowDialog(ContentViewCore* content, |
- RenderViewHost* sender, |
- int type, |
- int year, |
- int month, |
- int day, |
- int hour, |
- int minute, |
- int second, |
- int milli, |
- int week, |
- double min, |
- double max, |
- double step) { |
+void DateTimeChooserAndroid::ShowDialog( |
+ ContentViewCore* content, |
+ RenderViewHost* sender, |
+ int dialog_type, |
+ double current_value, |
+ double min, |
+ double max, |
+ double step, |
+ std::vector<DateTimeSuggestion> suggestions) { |
if (sender_) |
delete sender_; |
sender_ = new DateTimeIPCSender(sender); |
JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobjectArray> suggestions_array; |
+ |
+ if (suggestions.size() > 0) { |
+ ScopedJavaLocalRef<jclass> suggestion_class = base::android::GetClass( |
+ env, |
+ "org/chromium/content/browser/input/DateTimeSuggestion"); |
+ suggestions_array.Reset(env, env->NewObjectArray(suggestions.size(), |
+ suggestion_class.obj(), |
+ NULL)); |
+ for (size_t i = 0; i < suggestions.size(); ++i) { |
+ const content::DateTimeSuggestion& suggestion = suggestions[i]; |
+ ScopedJavaLocalRef<jstring> localizedValue = ConvertUTF16ToJavaString( |
+ env, suggestion.localizedValue); |
+ ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString( |
+ env, suggestion.label); |
+ env->SetObjectArrayElement( |
+ suggestions_array.obj(), |
+ i, |
+ Java_DateTimeChooserAndroid_createDateTimeSuggestion( |
+ env, |
+ suggestion.value, |
+ localizedValue.obj(), |
+ label.obj()).obj()); |
+ } |
+ } |
+ |
j_date_time_chooser_.Reset(Java_DateTimeChooserAndroid_createDateTimeChooser( |
env, |
content->GetJavaObject().obj(), |
reinterpret_cast<intptr_t>(this), |
- type, |
- year, |
- month, |
- day, |
- hour, |
- minute, |
- second, |
- milli, |
- week, |
+ dialog_type, |
+ current_value, |
min, |
max, |
- step)); |
+ step, |
+ suggestions_array.obj())); |
} |
// ---------------------------------------------------------------------------- |