- add sources.
[platform/framework/web/crosswalk.git] / src / content / browser / android / date_time_chooser_android.cc
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.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 // DateTimeChooserAndroid implementation
21 DateTimeChooserAndroid::DateTimeChooserAndroid()
22   : host_(NULL) {
23 }
24
25 DateTimeChooserAndroid::~DateTimeChooserAndroid() {
26 }
27
28 // static
29 void DateTimeChooserAndroid::InitializeDateInputTypes(
30       int text_input_type_date, int text_input_type_date_time,
31       int text_input_type_date_time_local, int text_input_type_month,
32       int text_input_type_time, int text_input_type_week) {
33   JNIEnv* env = AttachCurrentThread();
34   Java_DateTimeChooserAndroid_initializeDateInputTypes(
35          env,
36          text_input_type_date, text_input_type_date_time,
37          text_input_type_date_time_local, text_input_type_month,
38          text_input_type_time, text_input_type_week);
39 }
40
41 void DateTimeChooserAndroid::ReplaceDateTime(JNIEnv* env,
42                                              jobject,
43                                              int dialog_type,
44                                              int year,
45                                              int month,
46                                              int day,
47                                              int hour,
48                                              int minute,
49                                              int second,
50                                              int milli,
51                                              int week) {
52   ViewHostMsg_DateTimeDialogValue_Params value;
53   value.year = year;
54   value.month = month;
55   value.day = day;
56   value.hour = hour;
57   value.minute = minute;
58   value.second = second;
59   value.milli = milli;
60   value.week = week;
61   value.dialog_type = dialog_type;
62   host_->Send(new ViewMsg_ReplaceDateTime(host_->GetRoutingID(), value));
63 }
64
65 void DateTimeChooserAndroid::CancelDialog(JNIEnv* env, jobject) {
66   host_->Send(new ViewMsg_CancelDateTimeDialog(host_->GetRoutingID()));
67 }
68
69 void DateTimeChooserAndroid::ShowDialog(ContentViewCore* content,
70                                         RenderViewHost* host,
71                                         int type,
72                                         int year,
73                                         int month,
74                                         int day,
75                                         int hour,
76                                         int minute,
77                                         int second,
78                                         int milli,
79                                         int week,
80                                         double min,
81                                         double max,
82                                         double step) {
83   host_ = host;
84
85   JNIEnv* env = AttachCurrentThread();
86   j_date_time_chooser_.Reset(Java_DateTimeChooserAndroid_createDateTimeChooser(
87       env,
88       content->GetJavaObject().obj(),
89       reinterpret_cast<intptr_t>(this),
90       type,
91       year,
92       month,
93       day,
94       hour,
95       minute,
96       second,
97       milli,
98       week,
99       min,
100       max,
101       step));
102 }
103
104 // ----------------------------------------------------------------------------
105 // Native JNI methods
106 // ----------------------------------------------------------------------------
107 bool RegisterDateTimeChooserAndroid(JNIEnv* env) {
108   bool registered = RegisterNativesImpl(env);
109   if (registered)
110     DateTimeChooserAndroid::InitializeDateInputTypes(
111         ui::TEXT_INPUT_TYPE_DATE,
112         ui::TEXT_INPUT_TYPE_DATE_TIME,
113         ui::TEXT_INPUT_TYPE_DATE_TIME_LOCAL,
114         ui::TEXT_INPUT_TYPE_MONTH,
115         ui::TEXT_INPUT_TYPE_TIME,
116         ui::TEXT_INPUT_TYPE_WEEK);
117   return registered;
118 }
119
120 }  // namespace content