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

Unified Diff: content/browser/android/date_time_chooser_android.cc

Issue 23623019: Support datalist for date/time input types on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Used double to transfer value Created 7 years, 2 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: 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()));
}
// ----------------------------------------------------------------------------

Powered by Google App Engine
This is Rietveld 408576698