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

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: 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..a2463dcceb3279bd29f9c0ff7f085aa1c144a229 100644
--- a/content/browser/android/date_time_chooser_android.cc
+++ b/content/browser/android/date_time_chooser_android.cc
@@ -8,11 +8,13 @@
#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 {
@@ -33,6 +35,7 @@ class DateTimeChooserAndroid::DateTimeIPCSender :
int milli,
int week);
void CancelDialog();
+ void AcceptDataListSuggestion(const string16& value);
private:
DISALLOW_COPY_AND_ASSIGN(DateTimeIPCSender);
@@ -69,6 +72,11 @@ void DateTimeChooserAndroid::DateTimeIPCSender::CancelDialog() {
Send(new ViewMsg_CancelDateTimeDialog(routing_id()));
}
+void DateTimeChooserAndroid::DateTimeIPCSender::AcceptDataListSuggestion(
+ const string16& value) {
+ Send(new ViewMsg_AcceptDataListSuggestion(routing_id(), value));
+}
+
// DateTimeChooserAndroid implementation
DateTimeChooserAndroid::DateTimeChooserAndroid()
: sender_(NULL) {
@@ -109,25 +117,59 @@ 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::AcceptDataListSuggestion(JNIEnv* env,
+ jobject,
+ jstring value) {
+ sender_->AcceptDataListSuggestion(ConvertJavaStringToUTF16(env, value));
+}
+
+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,
+ std::vector<DateTimeSuggestion> suggestions) {
if (sender_)
delete sender_;
sender_ = new DateTimeIPCSender(sender);
JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jobjectArray> suggestions_array;
+
+ if (suggestions.size() > 0) {
+ suggestions_array =
+ Java_DateTimeChooserAndroid_createDateTimeSuggestionArray(
+ env,
+ suggestions.size());
+
+ for (size_t i = 0; i < suggestions.size(); ++i) {
+ const content::DateTimeSuggestion& suggestion = suggestions[i];
+ ScopedJavaLocalRef<jstring> value = ConvertUTF16ToJavaString(
+ env, suggestion.value);
+ ScopedJavaLocalRef<jstring> localizedValue = ConvertUTF16ToJavaString(
+ env, suggestion.localizedValue);
+ ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString(
+ env, suggestion.label);
+ Java_DateTimeChooserAndroid_addToDateTimeSuggestionArray(
+ env,
+ suggestions_array.obj(),
+ i,
+ value.obj(),
+ localizedValue.obj(),
+ label.obj());
+ }
+ }
+
j_date_time_chooser_.Reset(Java_DateTimeChooserAndroid_createDateTimeChooser(
env,
content->GetJavaObject().obj(),
@@ -143,7 +185,8 @@ void DateTimeChooserAndroid::ShowDialog(ContentViewCore* content,
week,
min,
max,
- step));
+ step,
+ suggestions_array.obj()));
}
// ----------------------------------------------------------------------------

Powered by Google App Engine
This is Rietveld 408576698