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

Side by Side Diff: content/public/android/javatests/src/org/chromium/content/browser/input/InputDialogContainerTest.java

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 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 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 package org.chromium.content.browser.input;
6
7 import android.content.Context;
8 import android.test.AndroidTestCase;
9 import android.test.suitebuilder.annotation.SmallTest;
10
11 import org.chromium.base.test.util.Feature;
12
13 public class InputDialogContainerTest extends AndroidTestCase {
14 private static int TEXT_INPUT_TYPE_DATE = 0;
15 private static int TEXT_INPUT_TYPE_DATETIME = 1;
16 private static int TEXT_INPUT_TYPE_DATETIMELOCAL = 2;
17 private static int TEXT_INPUT_TYPE_MONTH = 3;
18 private static int TEXT_INPUT_TYPE_TIME = 4;
19 private static int TEXT_INPUT_TYPE_WEEK = 5;
20
21 // Defined in third_party/WebKit/Source/platform/DateComponents.h
22 private static double DATE_DIALOG_DEFAULT_MIN = -62135596800000.0;
23 private static double DATE_DIALOG_DEFAULT_MAX = 8640000000000000.0;
24 private static double DATETIMELOCAL_DIALOG_DEFAULT_MIN = -62135596800000.0;
25 private static double DATETIMELOCAL_DIALOG_DEFAULT_MAX = 8640000000000000.0;
26 private static double MONTH_DIALOG_DEFAULT_MIN = -23628.0;
27 private static double MONTH_DIALOG_DEFAULT_MAX = 3285488.0;
28 private static double TIME_DIALOG_DEFAULT_MIN = 0.0;
29 private static double TIME_DIALOG_DEFAULT_MAX = 86399999.0;
30 private static double WEEK_DIALOG_DEFAULT_MIN = -62135596800000.0;
31 private static double WEEK_DIALOG_DEFAULT_MAX = 8639999568000000.0;
32
33 InputActionDelegateForTests mInputActionDelegate;
34 InputDialogContainerForTests mInputDialogContainer;
35
36 @Override
37 public void setUp() throws Exception {
38 super.setUp();
39 InputDialogContainer.initializeInputTypes(TEXT_INPUT_TYPE_DATE,
40 TEXT_INPUT_TYPE_DATETIME,
41 TEXT_INPUT_TYPE_DATETIMELOCAL,
42 TEXT_INPUT_TYPE_MONTH,
43 TEXT_INPUT_TYPE_TIME,
44 TEXT_INPUT_TYPE_WEEK);
45 mInputActionDelegate = new InputActionDelegateForTests();
46 mInputDialogContainer = new InputDialogContainerForTests(getContext(),
47 mInputActionDel egate);
48 }
49
50 @SmallTest
51 @Feature({"DateTimeDialog"})
52 public void testDateValueParsing() {
53 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_DATE,
54 1970, 0, 1,
55 0, 0, 0, 0, 0,
56 DATE_DIALOG_DEFAULT_MIN, DATE_DIALOG_DEFAULT_MAX, 1.0);
57 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_DATE, 0.0,
58 DATE_DIALOG_DEFAULT_MIN, DATE_DIALOG_DEFAULT_MAX, 1.0);
59
60 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_DATE,
61 1, 0, 1,
62 0, 0, 0, 0, 0,
63 DATE_DIALOG_DEFAULT_MIN, DATE_DIALOG_DEFAULT_MAX, 1.0);
64 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_DATE, -6213559680 0000.0,
65 DATE_DIALOG_DEFAULT_MIN, DATE_DIALOG_DEFAULT_MAX, 1.0);
66
67 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_DATE,
68 275760, 8, 13,
69 0, 0, 0, 0, 0,
70 DATE_DIALOG_DEFAULT_MIN, DATE_DIALOG_DEFAULT_MAX, 1.0);
71 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_DATE, 86400000000 00000.0,
72 DATE_DIALOG_DEFAULT_MIN, DATE_DIALOG_DEFAULT_MAX, 1.0);
73
74 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_DATE,
75 2013, 10, 7,
76 0, 0, 0, 0, 0,
77 DATE_DIALOG_DEFAULT_MIN, DATE_DIALOG_DEFAULT_MAX, 1.0);
78 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_DATE, 13837824000 00.0,
79 DATE_DIALOG_DEFAULT_MIN, DATE_DIALOG_DEFAULT_MAX, 1.0);
80 }
81
82 @SmallTest
83 @Feature({"DateTimeDialog"})
84 public void testDatetimelocalValueParsing() {
85 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_DATETIMEL OCAL,
86 1970, 0, 1,
87 0, 0, 0, 0, 0,
88 DATETIMELOCAL_DIALOG_DEFAULT_MIN, DATETIMELOCAL_DIALOG_DEFAULT_M AX, 1.0);
89 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_DATETIMELOCAL, 0,
90 DATETIMELOCAL_DIALOG_DEFAULT_MIN, DATETIMELOCAL_DIALOG_DEFAULT_M AX, 1.0);
91
92 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_DATETIMEL OCAL,
93 1, 0, 1,
94 0, 0, 0, 0, 0,
95 DATETIMELOCAL_DIALOG_DEFAULT_MIN, DATETIMELOCAL_DIALOG_DEFAULT_M AX, 1.0);
96 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_DATETIMELOCAL, -6 2135596800000.0,
97 DATETIMELOCAL_DIALOG_DEFAULT_MIN, DATETIMELOCAL_DIALOG_DEFAULT_M AX, 1.0);
98
99 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_DATETIMEL OCAL,
100 275760, 8, 13,
101 0, 0, 0, 0, 0,
102 DATETIMELOCAL_DIALOG_DEFAULT_MIN, DATETIMELOCAL_DIALOG_DEFAULT_M AX, 1.0);
103 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_DATETIMELOCAL, 86 40000000000000.0,
104 DATETIMELOCAL_DIALOG_DEFAULT_MIN, DATETIMELOCAL_DIALOG_DEFAULT_M AX, 1.0);
105
106 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_DATETIMEL OCAL,
107 2013, 10, 8,
108 1, 1, 2, 196, 0,
109 DATETIMELOCAL_DIALOG_DEFAULT_MIN, DATETIMELOCAL_DIALOG_DEFAULT_M AX, 0.001);
110 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_DATETIMELOCAL, 13 83872462196.0,
111 DATETIMELOCAL_DIALOG_DEFAULT_MIN, DATETIMELOCAL_DIALOG_DEFAULT_M AX, 0.001);
112 }
113
114 @SmallTest
115 @Feature({"DateTimeDialog"})
116 public void testMonthValueParsing() {
117 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_MONTH,
118 1970, 0, 0,
119 0, 0, 0, 0, 0,
120 MONTH_DIALOG_DEFAULT_MIN, MONTH_DIALOG_DEFAULT_MAX, 1.0);
121 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_MONTH, 0.0,
122 MONTH_DIALOG_DEFAULT_MIN, MONTH_DIALOG_DEFAULT_MAX, 1.0);
123
124 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_MONTH,
125 1, 0, 0,
126 0, 0, 0, 0, 0,
127 MONTH_DIALOG_DEFAULT_MIN, MONTH_DIALOG_DEFAULT_MAX, 1.0);
128 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_MONTH, -23628.0,
129 MONTH_DIALOG_DEFAULT_MIN, MONTH_DIALOG_DEFAULT_MAX, 1.0);
130
131 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_MONTH,
132 275760, 8, 0,
133 0, 0, 0, 0, 0,
134 MONTH_DIALOG_DEFAULT_MIN, MONTH_DIALOG_DEFAULT_MAX, 1.0);
135 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_MONTH, 3285488.0,
136 MONTH_DIALOG_DEFAULT_MIN, MONTH_DIALOG_DEFAULT_MAX, 1.0);
137
138 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_MONTH,
139 2013, 10, 0,
140 0, 0, 0, 0, 0,
141 MONTH_DIALOG_DEFAULT_MIN, MONTH_DIALOG_DEFAULT_MAX, 1.0);
142 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_MONTH, 526.0,
143 MONTH_DIALOG_DEFAULT_MIN, MONTH_DIALOG_DEFAULT_MAX, 1.0);
144 }
145
146 @SmallTest
147 @Feature({"DateTimeDialog"})
148 public void testTimeValueParsing() {
149 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_TIME,
150 0, 0, 0,
151 0, 0, 0, 0, 0,
152 TIME_DIALOG_DEFAULT_MIN, TIME_DIALOG_DEFAULT_MAX, 1.0);
153 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_TIME, 0.0,
154 TIME_DIALOG_DEFAULT_MIN, TIME_DIALOG_DEFAULT_MAX, 1.0);
155
156 // Time dialog only shows the hour and minute fields.
157 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_TIME,
158 0, 0, 0,
159 23, 59, 0, 0, 0,
160 TIME_DIALOG_DEFAULT_MIN, TIME_DIALOG_DEFAULT_MAX, 1.0);
161 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_TIME, 86399999.0,
162 TIME_DIALOG_DEFAULT_MIN, TIME_DIALOG_DEFAULT_MAX, 1.0);
163
164 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_TIME,
165 0, 0, 0,
166 15, 23, 0, 0, 0,
167 TIME_DIALOG_DEFAULT_MIN, TIME_DIALOG_DEFAULT_MAX, 1.0);
168 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_TIME, 55425678.0,
169 TIME_DIALOG_DEFAULT_MIN, TIME_DIALOG_DEFAULT_MAX, 1.0);
170 }
171
172 @SmallTest
173 @Feature({"DateTimeDialog"})
174 public void testWeekValueParsing() {
175 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_WEEK,
176 1970, 0, 0,
177 0, 0, 0, 0, 1,
178 WEEK_DIALOG_DEFAULT_MIN, WEEK_DIALOG_DEFAULT_MAX, 1.0);
179 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_WEEK, -259200000. 0,
180 WEEK_DIALOG_DEFAULT_MIN, WEEK_DIALOG_DEFAULT_MAX, 1.0);
181
182 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_WEEK,
183 1, 0, 0,
184 0, 0, 0, 0, 1,
185 WEEK_DIALOG_DEFAULT_MIN, WEEK_DIALOG_DEFAULT_MAX, 1.0);
186 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_WEEK, -6213559680 0000.0,
187 WEEK_DIALOG_DEFAULT_MIN, WEEK_DIALOG_DEFAULT_MAX, 1.0);
188
189 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_WEEK,
190 275760, 0, 0,
191 0, 0, 0, 0, 37,
192 WEEK_DIALOG_DEFAULT_MIN, WEEK_DIALOG_DEFAULT_MAX, 1.0);
193 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_WEEK, 86399995680 00000.0,
194 WEEK_DIALOG_DEFAULT_MIN, WEEK_DIALOG_DEFAULT_MAX, 1.0);
195
196 mInputDialogContainer.setShowDialogExpectation(TEXT_INPUT_TYPE_WEEK,
197 2013, 0, 0,
198 0, 0, 0, 0, 44,
199 WEEK_DIALOG_DEFAULT_MIN, WEEK_DIALOG_DEFAULT_MAX, 1.0);
200 mInputDialogContainer.showPickerDialog(TEXT_INPUT_TYPE_WEEK, 13829184000 00.0,
201 WEEK_DIALOG_DEFAULT_MIN, WEEK_DIALOG_DEFAULT_MAX, 1.0);
202 }
203
204 @SmallTest
205 @Feature({"DateTimeDialog"})
206 public void testDateValueGenerating() {
207 mInputActionDelegate.setReplaceDateTimeExpectation(0);
208 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_DATE,
209 1970, 0, 1,
210 0, 0, 0, 0, 0);
211
212 mInputActionDelegate.setReplaceDateTimeExpectation(-62135596800000.0);
213 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_DATE,
214 1, 0, 1,
215 0, 0, 0, 0, 0);
216
217 mInputActionDelegate.setReplaceDateTimeExpectation(8640000000000000.0);
218 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_DATE,
219 275760, 8, 13,
220 0, 0, 0, 0, 0);
221
222 mInputActionDelegate.setReplaceDateTimeExpectation(1383782400000.0);
223 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_DATE,
224 2013, 10, 7,
225 0, 0, 0, 0, 0);
226 }
227
228 @SmallTest
229 @Feature({"DateTimeDialog"})
230 public void testDatetimelocalValueGenerating() {
231 mInputActionDelegate.setReplaceDateTimeExpectation(0);
232 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_DATETIMELOCA L,
233 1970, 0, 1,
234 0, 0, 0, 0, 0);
235
236 mInputActionDelegate.setReplaceDateTimeExpectation(-62135596800000.0);
237 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_DATETIMELOCA L,
238 1, 0, 1,
239 0, 0, 0, 0, 0);
240
241 mInputActionDelegate.setReplaceDateTimeExpectation(8640000000000000.0);
242 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_DATETIMELOCA L,
243 275760, 8, 13,
244 0, 0, 0, 0, 0);
245
246 mInputActionDelegate.setReplaceDateTimeExpectation(1383872462196.0);
247 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_DATETIMELOCA L,
248 2013, 10, 8,
249 1, 1, 2, 196, 0);
250 }
251
252 @SmallTest
253 @Feature({"DateTimeDialog"})
254 public void testMonthValueGenerating() {
255 mInputActionDelegate.setReplaceDateTimeExpectation(0);
256 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_MONTH,
257 1970, 0, 0,
258 0, 0, 0, 0, 0);
259
260 mInputActionDelegate.setReplaceDateTimeExpectation(-62135596800000.0);
261 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_MONTH,
262 1, 0, 1,
263 0, 0, 0, 0, 0);
264
265 mInputActionDelegate.setReplaceDateTimeExpectation(8640000000000000.0);
266 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_MONTH,
267 275760, 8, 0,
268 0, 0, 0, 0, 0);
269
270 mInputActionDelegate.setReplaceDateTimeExpectation(1383872462196.0);
271 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_MONTH,
272 2013, 10, 0,
273 0, 0, 0, 0, 0);
274 }
275
276 @SmallTest
277 @Feature({"DateTimeDialog"})
278 public void testTimeValueGenerating() {
279 mInputActionDelegate.setReplaceDateTimeExpectation(0.0);
280 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_TIME,
281 0, 0, 0,
282 0, 0, 0, 0, 0);
283
284 mInputActionDelegate.setReplaceDateTimeExpectation(86399999.0);
285 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_TIME,
286 0, 0, 0,
287 23, 59, 59, 999, 0);
288
289 mInputActionDelegate.setReplaceDateTimeExpectation(55425678.0);
290 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_TIME,
291 2013, 10, 0,
292 3, 23, 45, 678, 0);
293 }
294
295 @SmallTest
296 @Feature({"DateTimeDialog"})
297 public void testWeekValueGenerating() {
298 mInputActionDelegate.setReplaceDateTimeExpectation(-259200000.0);
299 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_WEEK,
300 1970, 0, 0,
301 0, 0, 0, 0, 1);
302
303 mInputActionDelegate.setReplaceDateTimeExpectation(-62135596800000.0);
304 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_WEEK,
305 1, 0, 0,
306 0, 0, 0, 0, 1);
307
308 mInputActionDelegate.setReplaceDateTimeExpectation(8639999568000000.0);
309 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_WEEK,
310 275760, 0, 0,
311 0, 0, 0, 0, 37);
312
313 mInputActionDelegate.setReplaceDateTimeExpectation(1382918400000.0);
314 mInputDialogContainer.setFieldDateTimeValue(TEXT_INPUT_TYPE_WEEK,
315 2013, 0, 0,
316 0, 0, 0, 0, 44);
317 }
318
319 private static class InputActionDelegateForTests
320 implements InputDialogContainer.InputActionDelegate {
321 private double mExpectedDialogValue;
322
323 public void setReplaceDateTimeExpectation(double dialogValue) {
324 mExpectedDialogValue = dialogValue;
325 }
326
327 @Override
328 public void replaceDateTime(double dialogValue) {
329 assertEquals(mExpectedDialogValue, dialogValue);
330 }
331
332 @Override
333 public void cancelDateTimeDialog() {
334 }
335 };
336
337 private static class InputDialogContainerForTests extends InputDialogContain er {
338 private int mExpectedDialogType;
339 private int mExpectedYear;
340 private int mExpectedMonth;
341 private int mExpectedMonthDay;
342 private int mExpectedHourOfDay;
343 private int mExpectedMinute;
344 private int mExpectedSecond;
345 private int mExpectedMillis;
346 private int mExpectedWeek;
347 private double mExpectedMin;
348 private double mExpectedMax;
349 private double mExpectedStep;
350
351 public InputDialogContainerForTests(
352 Context context,
353 InputDialogContainer.InputActionDelegate inputActionDelegate) {
354 super(context, inputActionDelegate);
355 }
356
357 void setShowDialogExpectation(int dialogType,
358 int year, int month, int monthDay,
359 int hourOfDay, int minute, int second, int millis, int week,
360 double min, double max, double step) {
361 mExpectedDialogType = dialogType;
362 mExpectedYear = year;
363 mExpectedMonth = month;
364 mExpectedMonthDay = monthDay;
365 mExpectedHourOfDay = hourOfDay;
366 mExpectedMinute = minute;
367 mExpectedSecond = second;
368 mExpectedMillis = millis;
369 mExpectedWeek = week;
370 mExpectedMin = min;
371 mExpectedMax = max;
372 mExpectedStep = step;
373 }
374
375 @Override
376 void showPickerDialog(final int dialogType,
377 int year, int month, int monthDay,
378 int hourOfDay, int minute, int second, int millis, int week,
379 double min, double max, double step) {
380 assertEquals(mExpectedDialogType, dialogType);
381 assertEquals(mExpectedYear, year);
382 assertEquals(mExpectedMonth, month);
383 assertEquals(mExpectedMonthDay, monthDay);
384 assertEquals(mExpectedHourOfDay, hourOfDay);
385 assertEquals(mExpectedMinute, minute);
386 assertEquals(mExpectedSecond, second);
387 assertEquals(mExpectedMillis, millis);
388 assertEquals(mExpectedWeek, week);
389 assertEquals(mExpectedMin, min);
390 assertEquals(mExpectedMax, max);
391 assertEquals(mExpectedStep, step);
392 }
393
394 public void setFieldDateTimeValue(int dialogType,
395 int year, int month, int monthDay,
396 int hourOfDay, int minute, int second, in t millis,
397 int week) {
398 super.setFieldDateTimeValue(dialogType,
399 year, month, monthDay,
400 hourOfDay, minute, second, millis,
401 week);
402 }
403 }
404 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698