Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd603221 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix unexpected DatePicker validation" into oc-dev

parents 13059cc2 cf5a420e
Loading
Loading
Loading
Loading
+7 −14
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package android.widget;

import static android.os.Build.VERSION_CODES.O;

import android.annotation.Nullable;
import android.content.Context;
import android.content.res.ColorStateList;
@@ -293,22 +291,10 @@ class DayPickerView extends ViewGroup {
     * @param timeInMillis the target day in milliseconds
     * @param animate whether to smooth scroll to the new position
     * @param setSelected whether to set the specified day as selected
     *
     * @throws IllegalArgumentException if the build version is greater than
     *         {@link android.os.Build.VERSION_CODES#N_MR1} and the provided timeInMillis is before
     *         the range start or after the range end.
     */
    private void setDate(long timeInMillis, boolean animate, boolean setSelected) {
        getTempCalendarForTime(timeInMillis);

        final int targetSdkVersion = mContext.getApplicationInfo().targetSdkVersion;
        if (targetSdkVersion >= O) {
            if (mTempCalendar.before(mMinDate) || mTempCalendar.after(mMaxDate)) {
                throw new IllegalArgumentException("timeInMillis must be between the values of "
                        + "getMinDate() and getMaxDate()");
            }
        }

        if (setSelected) {
            mSelectedDay.setTimeInMillis(timeInMillis);
        }
@@ -367,6 +353,13 @@ class DayPickerView extends ViewGroup {
    public void onRangeChanged() {
        mAdapter.setRange(mMinDate, mMaxDate);

        // Clamp the selected day to the new min/max.
        if (mSelectedDay.before(mMinDate)) {
            mSelectedDay.setTimeInMillis(mMinDate.getTimeInMillis());
        } else if (mSelectedDay.after(mMaxDate)) {
            mSelectedDay.setTimeInMillis(mMaxDate.getTimeInMillis());
        }

        // Changing the min/max date changes the selection position since we
        // don't really have stable IDs. Jumps immediately to the new position.
        setDate(mSelectedDay.getTimeInMillis(), false, false);