| 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()));
|
| }
|
|
|
| // ----------------------------------------------------------------------------
|
|
|