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

Unified Diff: ui/android/java/src/org/chromium/ui/picker/DateDialogNormalizer.java

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 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: ui/android/java/src/org/chromium/ui/picker/DateDialogNormalizer.java
diff --git a/ui/android/java/src/org/chromium/ui/picker/DateDialogNormalizer.java b/ui/android/java/src/org/chromium/ui/picker/DateDialogNormalizer.java
deleted file mode 100644
index 2faa6d67d9a2764488ddbc3c897ed87f9a5f9a34..0000000000000000000000000000000000000000
--- a/ui/android/java/src/org/chromium/ui/picker/DateDialogNormalizer.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.ui.picker;
-
-import android.os.Build;
-import android.widget.DatePicker;
-import android.widget.DatePicker.OnDateChangedListener;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.TimeZone;
-
-/**
- * Sets the current, min, and max values on the given DatePicker.
- */
-public class DateDialogNormalizer {
-
- /**
- * Stores a date (year-month-day) and the number of milliseconds corresponding to that date
- * according to the DatePicker's calendar.
- */
- private static class DateAndMillis {
- /**
- * Number of milliseconds from the epoch (1970-01-01) to the beginning of year-month-day
- * in the default time zone (TimeZone.getDefault()) using the Julian/Gregorian split
- * calendar. This value is interopable with {@link DatePicker#getMinDate} and
- * {@link DatePicker#setMinDate}.
- */
- public final long millisForPicker;
-
- public final int year;
- public final int month; // 0-based
- public final int day;
-
- DateAndMillis(long millisForPicker, int year, int month, int day) {
- this.millisForPicker = millisForPicker;
- this.year = year;
- this.month = month;
- this.day = day;
- }
-
- static DateAndMillis create(long millisUtc) {
- // millisUtc uses the Gregorian calendar only, so disable the Julian changeover date.
- GregorianCalendar utcCal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
- utcCal.setGregorianChange(new Date(Long.MIN_VALUE));
- utcCal.setTimeInMillis(millisUtc);
- int year = utcCal.get(Calendar.YEAR);
- int month = utcCal.get(Calendar.MONTH);
- int day = utcCal.get(Calendar.DAY_OF_MONTH);
- return create(year, month, day);
- }
-
- static DateAndMillis create(int year, int month, int day) {
- // By contrast, millisForPicker uses the default Gregorian/Julian changeover date.
- Calendar defaultTimeZoneCal = Calendar.getInstance(TimeZone.getDefault());
- defaultTimeZoneCal.clear();
- defaultTimeZoneCal.set(year, month, day);
- long millisForPicker = defaultTimeZoneCal.getTimeInMillis();
- return new DateAndMillis(millisForPicker, year, month, day);
- }
- }
-
- private static void setLimits(DatePicker picker, long currentMillisForPicker,
- long minMillisForPicker, long maxMillisForPicker) {
- // On Lollipop only (not KitKat or Marshmallow), DatePicker has terrible performance for
- // large date ranges. This causes problems when the min or max date isn't set in HTML, in
- // which case these values default to the min and max possible values for the JavaScript
- // Date object (1CE and 275760CE). As a workaround, limit the date range to 5000 years
- // before and after the current date. In practice, this doesn't limit users since scrolling
- // through 5000 years in the DatePicker is highly impractical anyway. See
- // http://crbug.com/441060
- if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP
- || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1) {
- final long maxRangeMillis = 5000L * 365 * 24 * 60 * 60 * 1000;
- minMillisForPicker = Math.max(minMillisForPicker,
- currentMillisForPicker - maxRangeMillis);
- maxMillisForPicker = Math.min(maxMillisForPicker,
- currentMillisForPicker + maxRangeMillis);
- }
-
- // On KitKat and earlier, DatePicker requires the minDate is always less than maxDate, even
- // during the process of setting those values (eek), so set them in an order that preserves
- // this invariant throughout.
- if (minMillisForPicker > picker.getMaxDate()) {
- picker.setMaxDate(maxMillisForPicker);
- picker.setMinDate(minMillisForPicker);
- } else {
- picker.setMinDate(minMillisForPicker);
- picker.setMaxDate(maxMillisForPicker);
- }
- }
-
- /**
- * Sets the current, min, and max values on the given DatePicker and ensures that
- * min <= current <= max, adjusting current and max if needed.
- *
- * @param year The current year to set.
- * @param month The current month to set. 0-based.
- * @param day The current day to set.
- * @param minMillisUtc The minimum allowed date, in milliseconds from the epoch according to a
- * proleptic Gregorian calendar (no Julian switch).
- * @param maxMillisUtc The maximum allowed date, in milliseconds from the epoch according to a
- * proleptic Gregorian calendar (no Julian switch).
- */
- public static void normalize(DatePicker picker, final OnDateChangedListener listener,
- int year, int month, int day, long minMillisUtc, long maxMillisUtc) {
- DateAndMillis currentDate = DateAndMillis.create(year, month, day);
- DateAndMillis minDate = DateAndMillis.create(minMillisUtc);
- DateAndMillis maxDate = DateAndMillis.create(maxMillisUtc);
-
- // Ensure min <= current <= max, adjusting current and max if needed.
- if (maxDate.millisForPicker < minDate.millisForPicker) {
- maxDate = minDate;
- }
- if (currentDate.millisForPicker < minDate.millisForPicker) {
- currentDate = minDate;
- } else if (currentDate.millisForPicker > maxDate.millisForPicker) {
- currentDate = maxDate;
- }
-
- setLimits(picker, currentDate.millisForPicker, minDate.millisForPicker,
- maxDate.millisForPicker);
- picker.init(currentDate.year, currentDate.month, currentDate.day, listener);
- }
-}

Powered by Google App Engine
This is Rietveld 408576698