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

Side by Side Diff: content/browser/android/date_time_chooser_android.cc

Issue 11783088: Split Date/Time picker values from IME processing since date/time related form values have been com… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 11 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/android/date_time_chooser_android.h"
6
7 #include "base/android/jni_string.h"
8 #include "content/common/view_messages.h"
9 #include "content/public/browser/android/content_view_core.h"
10 #include "content/public/browser/render_view_host_observer.h"
11 #include "jni/DateTimeChooserAndroid_jni.h"
12
13 using base::android::AttachCurrentThread;
14 using base::android::ConvertJavaStringToUTF16;
15 using base::android::ConvertUTF8ToJavaString;
16
17
18 namespace content {
19
20 // Updates date/time via IPC to the RenderView
21 class DateTimeChooserAndroid::DateTimeIPCSender :
22 public RenderViewHostObserver {
23 public:
24 explicit DateTimeIPCSender(RenderViewHost* sender);
25 virtual ~DateTimeIPCSender() {}
26 void ReplaceDateTime(string16 text);
27 void CancelDialog();
28
29 private:
30 DISALLOW_COPY_AND_ASSIGN(DateTimeIPCSender);
31 };
32
33 DateTimeChooserAndroid::DateTimeIPCSender::DateTimeIPCSender(
34 RenderViewHost* sender)
35 : RenderViewHostObserver(sender) {
36 }
37
38 void DateTimeChooserAndroid::DateTimeIPCSender::ReplaceDateTime(
39 string16 text) {
40 Send(new ViewMsg_ReplaceDateTime(routing_id(), text));
41 }
42
43 void DateTimeChooserAndroid::DateTimeIPCSender::CancelDialog() {
44 Send(new ViewMsg_CancelDateTimeDialog(routing_id()));
45 }
46
47 // DateTimeChooserAndroid implementation
48 DateTimeChooserAndroid::DateTimeChooserAndroid() {
49 }
50
51 DateTimeChooserAndroid::~DateTimeChooserAndroid() {
52 }
53
54 // static
55 void DateTimeChooserAndroid::InitializeDateInputTypes(
56 int text_input_type_date, int text_input_type_date_time,
57 int text_input_type_date_time_local, int text_input_type_month,
58 int text_input_type_time) {
59 JNIEnv* env = AttachCurrentThread();
60 Java_DateTimeChooserAndroid_initializeDateInputTypes(
61 env,
62 text_input_type_date, text_input_type_date_time,
63 text_input_type_date_time_local, text_input_type_month,
64 text_input_type_time);
65 }
66
67 void DateTimeChooserAndroid::ReplaceDateTime(
68 JNIEnv* env, jobject, jstring text) {
palmer 2013/01/14 23:53:35 My security and correctness instinct is to receive
69 string16 text16 = ConvertJavaStringToUTF16(env, text);
70 communicator_->ReplaceDateTime(text16);
71 }
72
73 void DateTimeChooserAndroid::CancelDialog(JNIEnv* env, jobject) {
74 communicator_->CancelDialog();
75 }
76
77 void DateTimeChooserAndroid::ShowDialog(
78 ContentViewCore* content, RenderViewHost* sender,
79 int type, const std::string& value) {
80 communicator_.reset(new DateTimeIPCSender(sender));
81 JNIEnv* env = AttachCurrentThread();
82 base::android::ScopedJavaLocalRef<jstring> java_value =
palmer 2013/01/14 23:53:35 NIT: Two spaces between type and identifier.
Miguel Garcia 2013/01/17 12:17:40 Done.
83 ConvertUTF8ToJavaString(env, value);
84 j_date_time_chooser_.Reset(Java_DateTimeChooserAndroid_createDateTimeChooser(
85 env, content->GetJavaObject().obj(),
86 reinterpret_cast<intptr_t>(this), java_value.obj(), type));
87 }
88
89 // ----------------------------------------------------------------------------
90 // Native JNI methods
91 // ----------------------------------------------------------------------------
92 bool RegisterDateTimeChooserAndroid(JNIEnv* env) {
93 bool registered = RegisterNativesImpl(env);
94 if (registered)
95 DateTimeChooserAndroid::InitializeDateInputTypes(
96 ui::TEXT_INPUT_TYPE_DATE,
97 ui::TEXT_INPUT_TYPE_DATE_TIME,
98 ui::TEXT_INPUT_TYPE_DATE_TIME_LOCAL,
99 ui::TEXT_INPUT_TYPE_MONTH,
100 ui::TEXT_INPUT_TYPE_TIME);
101 return registered;
102 }
103
104 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698