| Index: third_party/WebKit/Source/core/html/shadow/DateTimeFieldElements.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/shadow/DateTimeFieldElements.cpp b/third_party/WebKit/Source/core/html/shadow/DateTimeFieldElements.cpp
|
| deleted file mode 100644
|
| index 6a1ebf14709eea9af17855b3ec9fecb5001effb9..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/Source/core/html/shadow/DateTimeFieldElements.cpp
|
| +++ /dev/null
|
| @@ -1,794 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2012 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright
|
| - * notice, this list of conditions and the following disclaimer in the
|
| - * documentation and/or other materials provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
|
| - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| - * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
|
| - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
| - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
| - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
| - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
| - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
| - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
| - * SUCH DAMAGE.
|
| - */
|
| -
|
| -#include "core/html/shadow/DateTimeFieldElements.h"
|
| -
|
| -#include "core/html/forms/DateTimeFieldsState.h"
|
| -#include "platform/DateComponents.h"
|
| -#include "platform/text/PlatformLocale.h"
|
| -#include "platform/wtf/CurrentTime.h"
|
| -#include "platform/wtf/DateMath.h"
|
| -
|
| -namespace blink {
|
| -
|
| -using blink::WebLocalizedString;
|
| -
|
| -static String QueryString(WebLocalizedString::Name name) {
|
| - return Locale::DefaultLocale().QueryString(name);
|
| -}
|
| -
|
| -DateTimeAMPMFieldElement::DateTimeAMPMFieldElement(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Vector<String>& ampm_labels)
|
| - : DateTimeSymbolicFieldElement(document, field_owner, ampm_labels, 0, 1) {}
|
| -
|
| -DateTimeAMPMFieldElement* DateTimeAMPMFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Vector<String>& ampm_labels) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, ampm_pseudo_id,
|
| - ("-webkit-datetime-edit-ampm-field"));
|
| - DateTimeAMPMFieldElement* field =
|
| - new DateTimeAMPMFieldElement(document, field_owner, ampm_labels);
|
| - field->Initialize(ampm_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXAMPMFieldText));
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeAMPMFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - if (HasValue())
|
| - date_time_fields_state.SetAMPM(ValueAsInteger()
|
| - ? DateTimeFieldsState::kAMPMValuePM
|
| - : DateTimeFieldsState::kAMPMValueAM);
|
| - else
|
| - date_time_fields_state.SetAMPM(DateTimeFieldsState::kAMPMValueEmpty);
|
| -}
|
| -
|
| -void DateTimeAMPMFieldElement::SetValueAsDate(const DateComponents& date) {
|
| - SetValueAsInteger(date.Hour() >= 12 ? 1 : 0);
|
| -}
|
| -
|
| -void DateTimeAMPMFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (date_time_fields_state.HasAMPM())
|
| - SetValueAsInteger(date_time_fields_state.Ampm());
|
| - else
|
| - SetEmptyValue();
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeDayFieldElement::DateTimeDayFieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const String& placeholder,
|
| - const Range& range)
|
| - : DateTimeNumericFieldElement(document,
|
| - field_owner,
|
| - range,
|
| - Range(1, 31),
|
| - placeholder) {}
|
| -
|
| -DateTimeDayFieldElement* DateTimeDayFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const String& placeholder,
|
| - const Range& range) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, day_pseudo_id,
|
| - ("-webkit-datetime-edit-day-field"));
|
| - DateTimeDayFieldElement* field = new DateTimeDayFieldElement(
|
| - document, field_owner, placeholder.IsEmpty() ? "--" : placeholder, range);
|
| - field->Initialize(day_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXDayOfMonthFieldText));
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeDayFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - date_time_fields_state.SetDayOfMonth(
|
| - HasValue() ? ValueAsInteger() : DateTimeFieldsState::kEmptyValue);
|
| -}
|
| -
|
| -void DateTimeDayFieldElement::SetValueAsDate(const DateComponents& date) {
|
| - SetValueAsInteger(date.MonthDay());
|
| -}
|
| -
|
| -void DateTimeDayFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasDayOfMonth()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const unsigned value = date_time_fields_state.DayOfMonth();
|
| - if (GetRange().IsInRange(static_cast<int>(value))) {
|
| - SetValueAsInteger(value);
|
| - return;
|
| - }
|
| -
|
| - SetEmptyValue();
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeHourFieldElementBase::DateTimeHourFieldElementBase(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Range& hard_limits,
|
| - const Step& step)
|
| - : DateTimeNumericFieldElement(document,
|
| - field_owner,
|
| - range,
|
| - hard_limits,
|
| - "--",
|
| - step) {}
|
| -
|
| -void DateTimeHourFieldElementBase::Initialize() {
|
| - DEFINE_STATIC_LOCAL(AtomicString, hour_pseudo_id,
|
| - ("-webkit-datetime-edit-hour-field"));
|
| - DateTimeNumericFieldElement::Initialize(
|
| - hour_pseudo_id, QueryString(WebLocalizedString::kAXHourFieldText));
|
| -}
|
| -
|
| -void DateTimeHourFieldElementBase::SetValueAsDate(const DateComponents& date) {
|
| - SetValueAsInteger(date.Hour());
|
| -}
|
| -
|
| -void DateTimeHourFieldElementBase::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasHour()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const int hour12 = date_time_fields_state.Hour();
|
| - if (hour12 < 1 || hour12 > 12) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const int hour11 = hour12 == 12 ? 0 : hour12;
|
| - const int hour23 =
|
| - date_time_fields_state.Ampm() == DateTimeFieldsState::kAMPMValuePM
|
| - ? hour11 + 12
|
| - : hour11;
|
| - SetValueAsInteger(hour23);
|
| -}
|
| -// ----------------------------
|
| -
|
| -DateTimeHour11FieldElement::DateTimeHour11FieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step)
|
| - : DateTimeHourFieldElementBase(document,
|
| - field_owner,
|
| - range,
|
| - Range(0, 11),
|
| - step) {}
|
| -
|
| -DateTimeHour11FieldElement* DateTimeHour11FieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& hour23_range,
|
| - const Step& step) {
|
| - DCHECK_GE(hour23_range.minimum, 0);
|
| - DCHECK_LE(hour23_range.maximum, 23);
|
| - DCHECK_LE(hour23_range.minimum, hour23_range.maximum);
|
| - Range range(0, 11);
|
| - if (hour23_range.maximum < 12) {
|
| - range = hour23_range;
|
| - } else if (hour23_range.minimum >= 12) {
|
| - range.minimum = hour23_range.minimum - 12;
|
| - range.maximum = hour23_range.maximum - 12;
|
| - }
|
| -
|
| - DateTimeHour11FieldElement* field =
|
| - new DateTimeHour11FieldElement(document, field_owner, range, step);
|
| - field->Initialize();
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeHour11FieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - if (!HasValue()) {
|
| - date_time_fields_state.SetHour(DateTimeFieldsState::kEmptyValue);
|
| - return;
|
| - }
|
| - const int value = ValueAsInteger();
|
| - date_time_fields_state.SetHour(value ? value : 12);
|
| -}
|
| -
|
| -void DateTimeHour11FieldElement::SetValueAsInteger(
|
| - int value,
|
| - EventBehavior event_behavior) {
|
| - value = Range(0, 23).ClampValue(value) % 12;
|
| - DateTimeNumericFieldElement::SetValueAsInteger(value, event_behavior);
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeHour12FieldElement::DateTimeHour12FieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step)
|
| - : DateTimeHourFieldElementBase(document,
|
| - field_owner,
|
| - range,
|
| - Range(1, 12),
|
| - step) {}
|
| -
|
| -DateTimeHour12FieldElement* DateTimeHour12FieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& hour23_range,
|
| - const Step& step) {
|
| - DCHECK_GE(hour23_range.minimum, 0);
|
| - DCHECK_LE(hour23_range.maximum, 23);
|
| - DCHECK_LE(hour23_range.minimum, hour23_range.maximum);
|
| - Range range(1, 12);
|
| - if (hour23_range.maximum < 12) {
|
| - range = hour23_range;
|
| - } else if (hour23_range.minimum >= 12) {
|
| - range.minimum = hour23_range.minimum - 12;
|
| - range.maximum = hour23_range.maximum - 12;
|
| - }
|
| - if (!range.minimum)
|
| - range.minimum = 12;
|
| - if (!range.maximum)
|
| - range.maximum = 12;
|
| - if (range.minimum > range.maximum) {
|
| - range.minimum = 1;
|
| - range.maximum = 12;
|
| - }
|
| - DateTimeHour12FieldElement* field =
|
| - new DateTimeHour12FieldElement(document, field_owner, range, step);
|
| - field->Initialize();
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeHour12FieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - date_time_fields_state.SetHour(HasValue() ? ValueAsInteger()
|
| - : DateTimeFieldsState::kEmptyValue);
|
| -}
|
| -
|
| -void DateTimeHour12FieldElement::SetValueAsInteger(
|
| - int value,
|
| - EventBehavior event_behavior) {
|
| - value = Range(0, 24).ClampValue(value) % 12;
|
| - DateTimeNumericFieldElement::SetValueAsInteger(value ? value : 12,
|
| - event_behavior);
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeHour23FieldElement::DateTimeHour23FieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step)
|
| - : DateTimeHourFieldElementBase(document,
|
| - field_owner,
|
| - range,
|
| - Range(0, 23),
|
| - step) {}
|
| -
|
| -DateTimeHour23FieldElement* DateTimeHour23FieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& hour23_range,
|
| - const Step& step) {
|
| - DCHECK_GE(hour23_range.minimum, 0);
|
| - DCHECK_LE(hour23_range.maximum, 23);
|
| - DCHECK_LE(hour23_range.minimum, hour23_range.maximum);
|
| - DateTimeHour23FieldElement* field =
|
| - new DateTimeHour23FieldElement(document, field_owner, hour23_range, step);
|
| - field->Initialize();
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeHour23FieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - if (!HasValue()) {
|
| - date_time_fields_state.SetHour(DateTimeFieldsState::kEmptyValue);
|
| - return;
|
| - }
|
| -
|
| - const int value = ValueAsInteger();
|
| -
|
| - date_time_fields_state.SetHour(value % 12 ? value % 12 : 12);
|
| - date_time_fields_state.SetAMPM(value >= 12
|
| - ? DateTimeFieldsState::kAMPMValuePM
|
| - : DateTimeFieldsState::kAMPMValueAM);
|
| -}
|
| -
|
| -void DateTimeHour23FieldElement::SetValueAsInteger(
|
| - int value,
|
| - EventBehavior event_behavior) {
|
| - value = Range(0, 23).ClampValue(value);
|
| - DateTimeNumericFieldElement::SetValueAsInteger(value, event_behavior);
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeHour24FieldElement::DateTimeHour24FieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step)
|
| - : DateTimeHourFieldElementBase(document,
|
| - field_owner,
|
| - range,
|
| - Range(1, 24),
|
| - step) {}
|
| -
|
| -DateTimeHour24FieldElement* DateTimeHour24FieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& hour23_range,
|
| - const Step& step) {
|
| - DCHECK_GE(hour23_range.minimum, 0);
|
| - DCHECK_LE(hour23_range.maximum, 23);
|
| - DCHECK_LE(hour23_range.minimum, hour23_range.maximum);
|
| - Range range(hour23_range.minimum ? hour23_range.minimum : 24,
|
| - hour23_range.maximum ? hour23_range.maximum : 24);
|
| - if (range.minimum > range.maximum) {
|
| - range.minimum = 1;
|
| - range.maximum = 24;
|
| - }
|
| -
|
| - DateTimeHour24FieldElement* field =
|
| - new DateTimeHour24FieldElement(document, field_owner, range, step);
|
| - field->Initialize();
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeHour24FieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - if (!HasValue()) {
|
| - date_time_fields_state.SetHour(DateTimeFieldsState::kEmptyValue);
|
| - return;
|
| - }
|
| -
|
| - const int value = ValueAsInteger();
|
| -
|
| - if (value == 24) {
|
| - date_time_fields_state.SetHour(12);
|
| - date_time_fields_state.SetAMPM(DateTimeFieldsState::kAMPMValueAM);
|
| - } else {
|
| - date_time_fields_state.SetHour(value == 12 ? 12 : value % 12);
|
| - date_time_fields_state.SetAMPM(value >= 12
|
| - ? DateTimeFieldsState::kAMPMValuePM
|
| - : DateTimeFieldsState::kAMPMValueAM);
|
| - }
|
| -}
|
| -
|
| -void DateTimeHour24FieldElement::SetValueAsInteger(
|
| - int value,
|
| - EventBehavior event_behavior) {
|
| - value = Range(0, 24).ClampValue(value);
|
| - DateTimeNumericFieldElement::SetValueAsInteger(value ? value : 24,
|
| - event_behavior);
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeMillisecondFieldElement::DateTimeMillisecondFieldElement(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step)
|
| - : DateTimeNumericFieldElement(document,
|
| - field_owner,
|
| - range,
|
| - Range(0, 999),
|
| - "---",
|
| - step) {}
|
| -
|
| -DateTimeMillisecondFieldElement* DateTimeMillisecondFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, millisecond_pseudo_id,
|
| - ("-webkit-datetime-edit-millisecond-field"));
|
| - DateTimeMillisecondFieldElement* field =
|
| - new DateTimeMillisecondFieldElement(document, field_owner, range, step);
|
| - field->Initialize(millisecond_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXMillisecondFieldText));
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeMillisecondFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - date_time_fields_state.SetMillisecond(
|
| - HasValue() ? ValueAsInteger() : DateTimeFieldsState::kEmptyValue);
|
| -}
|
| -
|
| -void DateTimeMillisecondFieldElement::SetValueAsDate(
|
| - const DateComponents& date) {
|
| - SetValueAsInteger(date.Millisecond());
|
| -}
|
| -
|
| -void DateTimeMillisecondFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasMillisecond()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const unsigned value = date_time_fields_state.Millisecond();
|
| - if (value > static_cast<unsigned>(Maximum())) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - SetValueAsInteger(value);
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeMinuteFieldElement::DateTimeMinuteFieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step)
|
| - : DateTimeNumericFieldElement(document,
|
| - field_owner,
|
| - range,
|
| - Range(0, 59),
|
| - "--",
|
| - step) {}
|
| -
|
| -DateTimeMinuteFieldElement* DateTimeMinuteFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, minute_pseudo_id,
|
| - ("-webkit-datetime-edit-minute-field"));
|
| - DateTimeMinuteFieldElement* field =
|
| - new DateTimeMinuteFieldElement(document, field_owner, range, step);
|
| - field->Initialize(minute_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXMinuteFieldText));
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeMinuteFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - date_time_fields_state.SetMinute(
|
| - HasValue() ? ValueAsInteger() : DateTimeFieldsState::kEmptyValue);
|
| -}
|
| -
|
| -void DateTimeMinuteFieldElement::SetValueAsDate(const DateComponents& date) {
|
| - SetValueAsInteger(date.Minute());
|
| -}
|
| -
|
| -void DateTimeMinuteFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasMinute()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const unsigned value = date_time_fields_state.Minute();
|
| - if (value > static_cast<unsigned>(Maximum())) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - SetValueAsInteger(value);
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeMonthFieldElement::DateTimeMonthFieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const String& placeholder,
|
| - const Range& range)
|
| - : DateTimeNumericFieldElement(document,
|
| - field_owner,
|
| - range,
|
| - Range(1, 12),
|
| - placeholder) {}
|
| -
|
| -DateTimeMonthFieldElement* DateTimeMonthFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const String& placeholder,
|
| - const Range& range) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, month_pseudo_id,
|
| - ("-webkit-datetime-edit-month-field"));
|
| - DateTimeMonthFieldElement* field = new DateTimeMonthFieldElement(
|
| - document, field_owner, placeholder.IsEmpty() ? "--" : placeholder, range);
|
| - field->Initialize(month_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXMonthFieldText));
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeMonthFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - date_time_fields_state.SetMonth(
|
| - HasValue() ? ValueAsInteger() : DateTimeFieldsState::kEmptyValue);
|
| -}
|
| -
|
| -void DateTimeMonthFieldElement::SetValueAsDate(const DateComponents& date) {
|
| - SetValueAsInteger(date.Month() + 1);
|
| -}
|
| -
|
| -void DateTimeMonthFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasMonth()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const unsigned value = date_time_fields_state.Month();
|
| - if (GetRange().IsInRange(static_cast<int>(value))) {
|
| - SetValueAsInteger(value);
|
| - return;
|
| - }
|
| -
|
| - SetEmptyValue();
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeSecondFieldElement::DateTimeSecondFieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step)
|
| - : DateTimeNumericFieldElement(document,
|
| - field_owner,
|
| - range,
|
| - Range(0, 59),
|
| - "--",
|
| - step) {}
|
| -
|
| -DateTimeSecondFieldElement* DateTimeSecondFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range,
|
| - const Step& step) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, second_pseudo_id,
|
| - ("-webkit-datetime-edit-second-field"));
|
| - DateTimeSecondFieldElement* field =
|
| - new DateTimeSecondFieldElement(document, field_owner, range, step);
|
| - field->Initialize(second_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXSecondFieldText));
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeSecondFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - date_time_fields_state.SetSecond(
|
| - HasValue() ? ValueAsInteger() : DateTimeFieldsState::kEmptyValue);
|
| -}
|
| -
|
| -void DateTimeSecondFieldElement::SetValueAsDate(const DateComponents& date) {
|
| - SetValueAsInteger(date.Second());
|
| -}
|
| -
|
| -void DateTimeSecondFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasSecond()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const unsigned value = date_time_fields_state.Second();
|
| - if (value > static_cast<unsigned>(Maximum())) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - SetValueAsInteger(value);
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeSymbolicMonthFieldElement::DateTimeSymbolicMonthFieldElement(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Vector<String>& labels,
|
| - int minimum,
|
| - int maximum)
|
| - : DateTimeSymbolicFieldElement(document,
|
| - field_owner,
|
| - labels,
|
| - minimum,
|
| - maximum) {}
|
| -
|
| -DateTimeSymbolicMonthFieldElement* DateTimeSymbolicMonthFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Vector<String>& labels,
|
| - int minimum,
|
| - int maximum) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, month_pseudo_id,
|
| - ("-webkit-datetime-edit-month-field"));
|
| - DateTimeSymbolicMonthFieldElement* field =
|
| - new DateTimeSymbolicMonthFieldElement(document, field_owner, labels,
|
| - minimum, maximum);
|
| - field->Initialize(month_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXMonthFieldText));
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeSymbolicMonthFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - if (!HasValue())
|
| - date_time_fields_state.SetMonth(DateTimeFieldsState::kEmptyValue);
|
| - DCHECK_LT(ValueAsInteger(), static_cast<int>(SymbolsSize()));
|
| - date_time_fields_state.SetMonth(ValueAsInteger() + 1);
|
| -}
|
| -
|
| -void DateTimeSymbolicMonthFieldElement::SetValueAsDate(
|
| - const DateComponents& date) {
|
| - SetValueAsInteger(date.Month());
|
| -}
|
| -
|
| -void DateTimeSymbolicMonthFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasMonth()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const unsigned value = date_time_fields_state.Month() - 1;
|
| - if (value >= SymbolsSize()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - SetValueAsInteger(value);
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeWeekFieldElement::DateTimeWeekFieldElement(Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range)
|
| - : DateTimeNumericFieldElement(document,
|
| - field_owner,
|
| - range,
|
| - Range(DateComponents::kMinimumWeekNumber,
|
| - DateComponents::kMaximumWeekNumber),
|
| - "--") {}
|
| -
|
| -DateTimeWeekFieldElement* DateTimeWeekFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const Range& range) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, week_pseudo_id,
|
| - ("-webkit-datetime-edit-week-field"));
|
| - DateTimeWeekFieldElement* field =
|
| - new DateTimeWeekFieldElement(document, field_owner, range);
|
| - field->Initialize(week_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXWeekOfYearFieldText));
|
| - return field;
|
| -}
|
| -
|
| -void DateTimeWeekFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - date_time_fields_state.SetWeekOfYear(
|
| - HasValue() ? ValueAsInteger() : DateTimeFieldsState::kEmptyValue);
|
| -}
|
| -
|
| -void DateTimeWeekFieldElement::SetValueAsDate(const DateComponents& date) {
|
| - SetValueAsInteger(date.Week());
|
| -}
|
| -
|
| -void DateTimeWeekFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasWeekOfYear()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const unsigned value = date_time_fields_state.WeekOfYear();
|
| - if (GetRange().IsInRange(static_cast<int>(value))) {
|
| - SetValueAsInteger(value);
|
| - return;
|
| - }
|
| -
|
| - SetEmptyValue();
|
| -}
|
| -
|
| -// ----------------------------
|
| -
|
| -DateTimeYearFieldElement::DateTimeYearFieldElement(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const DateTimeYearFieldElement::Parameters& parameters)
|
| - : DateTimeNumericFieldElement(
|
| - document,
|
| - field_owner,
|
| - Range(parameters.minimum_year, parameters.maximum_year),
|
| - Range(DateComponents::MinimumYear(), DateComponents::MaximumYear()),
|
| - parameters.placeholder.IsEmpty() ? "----" : parameters.placeholder),
|
| - min_is_specified_(parameters.min_is_specified),
|
| - max_is_specified_(parameters.max_is_specified) {
|
| - DCHECK_GE(parameters.minimum_year, DateComponents::MinimumYear());
|
| - DCHECK_LE(parameters.maximum_year, DateComponents::MaximumYear());
|
| -}
|
| -
|
| -DateTimeYearFieldElement* DateTimeYearFieldElement::Create(
|
| - Document& document,
|
| - FieldOwner& field_owner,
|
| - const DateTimeYearFieldElement::Parameters& parameters) {
|
| - DEFINE_STATIC_LOCAL(AtomicString, year_pseudo_id,
|
| - ("-webkit-datetime-edit-year-field"));
|
| - DateTimeYearFieldElement* field =
|
| - new DateTimeYearFieldElement(document, field_owner, parameters);
|
| - field->Initialize(year_pseudo_id,
|
| - QueryString(WebLocalizedString::kAXYearFieldText));
|
| - return field;
|
| -}
|
| -
|
| -static int CurrentFullYear() {
|
| - DateComponents date;
|
| - date.SetMillisecondsSinceEpochForMonth(ConvertToLocalTime(CurrentTimeMS()));
|
| - return date.FullYear();
|
| -}
|
| -
|
| -int DateTimeYearFieldElement::DefaultValueForStepDown() const {
|
| - return max_is_specified_
|
| - ? DateTimeNumericFieldElement::DefaultValueForStepDown()
|
| - : CurrentFullYear();
|
| -}
|
| -
|
| -int DateTimeYearFieldElement::DefaultValueForStepUp() const {
|
| - return min_is_specified_
|
| - ? DateTimeNumericFieldElement::DefaultValueForStepUp()
|
| - : CurrentFullYear();
|
| -}
|
| -
|
| -void DateTimeYearFieldElement::PopulateDateTimeFieldsState(
|
| - DateTimeFieldsState& date_time_fields_state) {
|
| - date_time_fields_state.SetYear(HasValue() ? ValueAsInteger()
|
| - : DateTimeFieldsState::kEmptyValue);
|
| -}
|
| -
|
| -void DateTimeYearFieldElement::SetValueAsDate(const DateComponents& date) {
|
| - SetValueAsInteger(date.FullYear());
|
| -}
|
| -
|
| -void DateTimeYearFieldElement::SetValueAsDateTimeFieldsState(
|
| - const DateTimeFieldsState& date_time_fields_state) {
|
| - if (!date_time_fields_state.HasYear()) {
|
| - SetEmptyValue();
|
| - return;
|
| - }
|
| -
|
| - const unsigned value = date_time_fields_state.Year();
|
| - if (GetRange().IsInRange(static_cast<int>(value))) {
|
| - SetValueAsInteger(value);
|
| - return;
|
| - }
|
| -
|
| - SetEmptyValue();
|
| -}
|
| -
|
| -} // namespace blink
|
|
|