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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java

Issue 64913002: Transfer date/time value to chooser as double (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@datetime3
Patch Set: Created 7 years, 1 month 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/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java b/content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java
index bca0f01b39ea86a09228f2609fa261fbfba54414..980c9f344736d00e1e8258bb21657c3773dee104 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java
@@ -27,13 +27,13 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
+import java.util.TimeZone;
public class InputDialogContainer {
interface InputActionDelegate {
void cancelDateTimeDialog();
- void replaceDateTime(int dialogType,
- int year, int month, int day, int hour, int minute, int second, int milli, int week);
+ void replaceDateTime(double value);
}
// Default values used in Time representations of selected date/time before formatting.
@@ -45,16 +45,6 @@ public class InputDialogContainer {
private static final int MINUTE_DEFAULT = 0;
private static final int WEEK_DEFAULT = 0;
- // Date formats as accepted by Time.format.
- private static final String HTML_DATE_FORMAT = "%Y-%m-%d";
- private static final String HTML_TIME_FORMAT = "%H:%M";
- // For datetime we always send selected time as UTC, as we have no timezone selector.
- // This is consistent with other browsers.
- private static final String HTML_DATE_TIME_FORMAT = "%Y-%m-%dT%H:%MZ";
- private static final String HTML_DATE_TIME_LOCAL_FORMAT = "%Y-%m-%dT%H:%M";
- private static final String HTML_MONTH_FORMAT = "%Y-%m";
- private static final String HTML_WEEK_FORMAT = "%Y-%w";
-
private static int sTextInputTypeDate;
private static int sTextInputTypeDateTime;
private static int sTextInputTypeDateTimeLocal;
@@ -93,24 +83,17 @@ public class InputDialogContainer {
mInputActionDelegate = inputActionDelegate;
}
- private Time normalizeTime(int year, int month, int monthDay,
- int hour, int minute, int second) {
- Time result = new Time();
- if (year == 0 && month == 0 && monthDay == 0 && hour == 0 &&
- minute == 0 && second == 0) {
- Calendar cal = Calendar.getInstance();
- result.set(cal.get(Calendar.SECOND), cal.get(Calendar.MINUTE),
- cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.DATE),
- cal.get(Calendar.MONTH), cal.get(Calendar.YEAR));
- } else {
- result.set(second, minute, hour, monthDay, month, year);
- }
+ private Time currentTime() {
+ Time result = new Time("UTC");
+ Calendar cal = Calendar.getInstance();
+ result.set(cal.get(Calendar.SECOND), cal.get(Calendar.MINUTE),
+ cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.DATE),
+ cal.get(Calendar.MONTH), cal.get(Calendar.YEAR));
return result;
}
- void showDialog(final int dialogType, int year, int month, int monthDay,
- int hour, int minute, int second, int milli, int week,
- double min, double max, double step) {
+ void showDialog(final int dialogType, double value,
+ double min, double max, double step) {
if (isDialogShowing()) mDialog.dismiss();
// Java Date dialogs like longs but Blink prefers doubles..
@@ -122,11 +105,15 @@ public class InputDialogContainer {
long maxTime = (long) max;
int stepTime = (int) step;
- if (milli > 1000) {
- second += milli / 1000;
- milli %= 1000;
+ Time time;
Miguel Garcia 2013/11/11 13:40:05 can you perhaps stick to Calendar through the whol
keishi 2013/11/19 12:51:21 Done.
+ int milli = 0;
+ if (Double.isNaN(value)) {
Miguel Garcia 2013/11/11 13:40:05 can you document somewhere what is supposed to hap
keishi 2013/11/19 12:51:21 Done. Added comment here.
+ time = currentTime();
+ } else {
+ time = new Time("UTC");
+ time.set((long) value);
+ milli = (int) (((long) value) % 1000);
}
- Time time = normalizeTime(year, month, monthDay, hour, minute, second);
if (dialogType == sTextInputTypeDate) {
DatePickerDialog dialog = new DatePickerDialog(mContext,
new DateListener(dialogType), time.year, time.month, time.monthDay);
@@ -153,11 +140,12 @@ public class InputDialogContainer {
mDialog = new MonthPickerDialog(mContext, new MonthOrWeekListener(dialogType),
time.year, time.month, minTime, maxTime);
} else if (dialogType == sTextInputTypeWeek) {
- if (week == 0) {
- Calendar cal = Calendar.getInstance();
- year = WeekPicker.getISOWeekYearForDate(cal);
- week = WeekPicker.getWeekForDate(cal);
+ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ if (value > 0) {
+ cal.setTimeInMillis((long) value);
}
+ int year = WeekPicker.getISOWeekYearForDate(cal);
+ int week = WeekPicker.getWeekForDate(cal);
mDialog = new WeekPickerDialog(mContext, new MonthOrWeekListener(dialogType),
year, week, minTime, maxTime);
}
@@ -176,7 +164,7 @@ public class InputDialogContainer {
@Override
public void onClick(DialogInterface dialog, int which) {
mDialogAlreadyDismissed = true;
- mInputActionDelegate.replaceDateTime(dialogType, 0, 0, 0, 0, 0, 0, 0, 0);
+ mInputActionDelegate.replaceDateTime(Double.NaN);
}
});
@@ -212,27 +200,12 @@ public class InputDialogContainer {
@Override
public void onDateSet(DatePicker view, int year, int month, int monthDay) {
if (!mDialogAlreadyDismissed) {
- setFieldDateTimeValue(mDialogType,
- year, month, monthDay,
- HOUR_DEFAULT, MINUTE_DEFAULT, WEEK_DEFAULT,
- HTML_DATE_FORMAT);
- }
- }
- }
-
- private class TimeListener implements OnTimeSetListener {
- private final int mDialogType;
-
- TimeListener(int dialogType) {
- mDialogType = dialogType;
- }
-
- @Override
- public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
- if (!mDialogAlreadyDismissed) {
- setFieldDateTimeValue(mDialogType,
- YEAR_DEFAULT, MONTH_DEFAULT, MONTHDAY_DEFAULT,
- hourOfDay, minute, WEEK_DEFAULT, HTML_TIME_FORMAT);
+ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ cal.clear();
+ cal.set(Calendar.YEAR, year);
+ cal.set(Calendar.MONTH, month);
+ cal.set(Calendar.DAY_OF_MONTH, monthDay);
+ setFieldDateTimeValue((double) cal.getTimeInMillis());
}
}
}
@@ -246,9 +219,8 @@ public class InputDialogContainer {
@Override
public void onTimeSet(int hourOfDay, int minute, int second, int milli) {
if (!mDialogAlreadyDismissed) {
- setFieldDateTimeValue(mDialogType,
- YEAR_DEFAULT, MONTH_DEFAULT, MONTHDAY_DEFAULT,
- hourOfDay, minute, second, milli, WEEK_DEFAULT, HTML_TIME_FORMAT);
+ setFieldDateTimeValue(
+ (double) ((hourOfDay * 60 + minute) * 60 + second) * 1000 + milli);
}
}
}
@@ -267,9 +239,14 @@ public class InputDialogContainer {
int year, int month, int monthDay,
int hourOfDay, int minute) {
if (!mDialogAlreadyDismissed) {
- setFieldDateTimeValue(mDialogType, year, month, monthDay,
- hourOfDay, minute, WEEK_DEFAULT,
- mLocal ? HTML_DATE_TIME_LOCAL_FORMAT : HTML_DATE_TIME_FORMAT);
+ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ cal.clear();
+ cal.set(Calendar.YEAR, year);
+ cal.set(Calendar.MONTH, month);
+ cal.set(Calendar.DAY_OF_MONTH, monthDay);
+ cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
+ cal.set(Calendar.MINUTE, minute);
+ setFieldDateTimeValue((double) cal.getTimeInMillis());
}
}
}
@@ -282,39 +259,18 @@ public class InputDialogContainer {
}
@Override
- public void onValueSet(int year, int positionInYear) {
+ public void onValueSet(double value) {
if (!mDialogAlreadyDismissed) {
- if (mDialogType == sTextInputTypeMonth) {
- setFieldDateTimeValue(mDialogType, year, positionInYear, MONTHDAY_DEFAULT,
- HOUR_DEFAULT, MINUTE_DEFAULT, WEEK_DEFAULT,
- HTML_MONTH_FORMAT);
- } else {
- setFieldDateTimeValue(mDialogType, year, MONTH_DEFAULT, MONTHDAY_DEFAULT,
- HOUR_DEFAULT, MINUTE_DEFAULT, positionInYear, HTML_WEEK_FORMAT);
- }
+ setFieldDateTimeValue(value);
}
}
}
- private void setFieldDateTimeValue(int dialogType,
- int year, int month, int monthDay, int hourOfDay,
- int minute, int week, String dateFormat) {
- // Prevents more than one callback being sent to the native
- // side when the dialog triggers multiple events.
- mDialogAlreadyDismissed = true;
-
- mInputActionDelegate.replaceDateTime(dialogType,
- year, month, monthDay, hourOfDay, minute, 0 /* second */, 0 /* milli */, week);
- }
-
- private void setFieldDateTimeValue(int dialogType,
- int year, int month, int monthDay, int hourOfDay,
- int minute, int second, int milli, int week, String dateFormat) {
+ private void setFieldDateTimeValue(double value) {
// Prevents more than one callback being sent to the native
// side when the dialog triggers multiple events.
mDialogAlreadyDismissed = true;
- mInputActionDelegate.replaceDateTime(
- dialogType, year, month, monthDay, hourOfDay, minute, second, milli, week);
+ mInputActionDelegate.replaceDateTime(value);
}
}

Powered by Google App Engine
This is Rietveld 408576698