Changeset 129206 in webkit
- Timestamp:
- Sep 21, 2012 3:06:10 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r129205 r129206 1 2012-09-21 Yoshifumi Inoue <yosin@chromium.org> 2 3 [Forms] DateTimeEditElement::layout() should take date time format as a parameter 4 https://bugs.webkit.org/show_bug.cgi?id=97300 5 6 Reviewed by Kent Tamura. 7 8 This patch introduces DateTimeEditElement::LayoutParameters struct for 9 passing four parameters to DateTimeEditElement::layout() for passing 10 date time format from client of DateTimeEditElement instead of 11 DateTimeEditElement::layout() takes time or short time format. 12 13 This patch is a part of preparation of introducing multiple fields 14 date/datetime/month/week input UI. 15 16 This patch affects ports which enable both ENABLE_INPUT_TYPE_TIME and 17 ENABLE_INPUT_TYPE_TIME_MULTIPLE_FIELDS. 18 19 No new tests. This patch doesn't change behavior. 20 21 * html/TimeInputType.cpp: 22 (WebCore::TimeInputType::updateInnerTextValue): Changed to use LayoutParmeters. 23 * html/shadow/DateTimeEditElement.cpp: Removed unused include files, LocalizedDate.h and LocalizedNumber.h. 24 (DateTimeEditBuilder): 25 (WebCore::DateTimeEditBuilder::DateTimeEditBuilder): Changed parameters to LayoutParmeters. 26 (WebCore::DateTimeEditElement::LayoutParameters::shouldHaveSecondField): Moved from DateTimeEditBuilder::needSecondField(). 27 (WebCore::DateTimeEditElement::layout): Changed to take LayoutParameters. 28 (WebCore::DateTimeEditElement::setValueAsDate): ditto 29 (WebCore::DateTimeEditElement::setEmptyValue): ditto 30 * html/shadow/DateTimeEditElement.h: Removed unused classe declarations DateComponents and DateTimeEditLayouter. 31 (LayoutParameters): Added to bundle parameters for layout(). 32 (WebCore::DateTimeEditElement::LayoutParameters::LayoutParameters): Added. 33 1 34 2012-09-20 Pavel Feldman <pfeldman@chromium.org> 2 35 -
trunk/Source/WebCore/html/TimeInputType.cpp
r129095 r129206 47 47 #include "FormController.h" 48 48 #include "KeyboardEvent.h" 49 #include "Localizer.h" 49 50 #include "ShadowRoot.h" 50 51 #endif … … 305 306 306 307 Localizer& localizer = element()->document()->getLocalizer(element()->computeInheritedLanguage()); 307 const StepRange stepRange(createStepRange(AnyIsDefaultStep)); 308 DateTimeEditElement::LayoutParameters layoutParameters(localizer, createStepRange(AnyIsDefaultStep)); 309 308 310 DateComponents date; 309 if (parseToDateComponents(element()->value(), &date)) 310 m_dateTimeEditElement->setValueAsDate(stepRange, date, localizer); 311 else { 312 setMillisecondToDateComponents(stepRange.minimum().toDouble(), &date); 313 m_dateTimeEditElement->setEmptyValue(stepRange, date, localizer); 311 const bool hasValue = parseToDateComponents(element()->value(), &date); 312 if (!hasValue) 313 setMillisecondToDateComponents(layoutParameters.stepRange.minimum().toDouble(), &date); 314 315 if (date.second() || layoutParameters.shouldHaveSecondField()) { 316 layoutParameters.dateTimeFormat = localizer.timeFormat(); 317 layoutParameters.fallbackDateTimeFormat = "HH:mm:ss"; 318 } else { 319 layoutParameters.dateTimeFormat = localizer.shortTimeFormat(); 320 layoutParameters.fallbackDateTimeFormat = "HH:mm"; 314 321 } 322 323 if (hasValue) 324 m_dateTimeEditElement->setValueAsDate(layoutParameters, date); 325 else 326 m_dateTimeEditElement->setEmptyValue(layoutParameters, date); 315 327 } 316 328 #else -
trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp
r128594 r129206 36 36 #include "HTMLNames.h" 37 37 #include "KeyboardEvent.h" 38 #include "LocalizedDate.h"39 #include "LocalizedNumber.h"40 38 #include "Localizer.h" 41 39 #include "MouseEvent.h" 42 #include "StepRange.h"43 40 #include "Text.h" 44 41 #include <wtf/DateMath.h> … … 53 50 54 51 public: 55 DateTimeEditBuilder(DateTimeEditElement&, const StepRange&, const DateComponents&, Localizer&);52 DateTimeEditBuilder(DateTimeEditElement&, const DateTimeEditElement::LayoutParameters&, const DateComponents&); 56 53 57 54 bool build(const String&); 58 bool needSecondField() const;59 55 60 56 private: 61 57 bool needMillisecondField() const; 62 bool needMinuteField() const;63 58 bool shouldMillisecondFieldReadOnly() const; 64 59 bool shouldMinuteFieldReadOnly() const; … … 75 70 }; 76 71 77 DateTimeEditBuilder::DateTimeEditBuilder(DateTimeEditElement& elemnt, const StepRange& stepRange, const DateComponents& dateValue, Localizer& localizer)72 DateTimeEditBuilder::DateTimeEditBuilder(DateTimeEditElement& elemnt, const DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& dateValue) 78 73 : m_editElement(elemnt) 79 74 , m_dateValue(dateValue) 80 , m_stepRange( stepRange)81 , m_localizer(l ocalizer)75 , m_stepRange(layoutParameters.stepRange) 76 , m_localizer(layoutParameters.localizer) 82 77 { 83 78 } … … 94 89 || !m_stepRange.minimum().remainder(static_cast<int>(msPerSecond)).isZero() 95 90 || !m_stepRange.step().remainder(static_cast<int>(msPerSecond)).isZero(); 96 }97 98 bool DateTimeEditBuilder::needMinuteField() const99 {100 return m_dateValue.minute()101 || !m_stepRange.minimum().remainder(static_cast<int>(msPerHour)).isZero()102 || !m_stepRange.step().remainder(static_cast<int>(msPerHour)).isZero();103 }104 105 bool DateTimeEditBuilder::needSecondField() const106 {107 return m_dateValue.second()108 || !m_stepRange.minimum().remainder(static_cast<int>(msPerMinute)).isZero()109 || !m_stepRange.step().remainder(static_cast<int>(msPerMinute)).isZero();110 91 } 111 92 … … 188 169 ASSERT(text.length()); 189 170 m_editElement.appendChild(Text::create(m_editElement.document(), text)); 171 } 172 173 // ---------------------------- 174 175 176 bool DateTimeEditElement::LayoutParameters::shouldHaveSecondField() const 177 { 178 return !stepRange.minimum().remainder(static_cast<int>(msPerMinute)).isZero() 179 || !stepRange.step().remainder(static_cast<int>(msPerMinute)).isZero(); 190 180 } 191 181 … … 341 331 } 342 332 343 void DateTimeEditElement::layout(const StepRange& stepRange, const DateComponents& dateValue, Localizer& localizer)333 void DateTimeEditElement::layout(const LayoutParameters& layoutParameters, const DateComponents& dateValue) 344 334 { 345 335 size_t focusedFieldIndex = this->focusedFieldIndex(); … … 347 337 const AtomicString focusedFieldId = focusedField ? focusedField->shadowPseudoId() : nullAtom; 348 338 349 DateTimeEditBuilder builder(*this, stepRange, dateValue, localizer); 350 const String dateTimeFormat = builder.needSecondField() ? localizer.timeFormat() : localizer.shortTimeFormat(); 339 DateTimeEditBuilder builder(*this, layoutParameters, dateValue); 351 340 Node* lastChildToBeRemoved = lastChild(); 352 if (!builder.build( dateTimeFormat) || m_fields.isEmpty()) {341 if (!builder.build(layoutParameters.dateTimeFormat) || m_fields.isEmpty()) { 353 342 lastChildToBeRemoved = lastChild(); 354 builder.build( builder.needSecondField() ? "HH:mm:ss" : "HH:mm");343 builder.build(layoutParameters.fallbackDateTimeFormat); 355 344 } 356 345 … … 408 397 } 409 398 410 void DateTimeEditElement::setValueAsDate(const StepRange& stepRange, const DateComponents& date, Localizer& localizer)411 { 412 layout( stepRange, date, localizer);399 void DateTimeEditElement::setValueAsDate(const LayoutParameters& layoutParameters, const DateComponents& date) 400 { 401 layout(layoutParameters, date); 413 402 for (size_t fieldIndex = 0; fieldIndex < m_fields.size(); ++fieldIndex) 414 403 m_fields[fieldIndex]->setValueAsDate(date); … … 421 410 } 422 411 423 void DateTimeEditElement::setEmptyValue(const StepRange& stepRange, const DateComponents& dateForReadOnlyField, Localizer& localizer)424 { 425 layout( stepRange, dateForReadOnlyField, localizer);412 void DateTimeEditElement::setEmptyValue(const LayoutParameters& layoutParameters, const DateComponents& dateForReadOnlyField) 413 { 414 layout(layoutParameters, dateForReadOnlyField); 426 415 for (size_t fieldIndex = 0; fieldIndex < m_fields.size(); ++fieldIndex) 427 416 m_fields[fieldIndex]->setEmptyValue(dateForReadOnlyField, DateTimeFieldElement::DispatchNoEvent); -
trunk/Source/WebCore/html/shadow/DateTimeEditElement.h
r128594 r129206 30 30 #include "DateTimeFieldElement.h" 31 31 #include "SpinButtonElement.h" 32 #include "StepRange.h" 32 33 33 34 namespace WebCore { 34 35 35 class DateComponents;36 class DateTimeEditLayouter;37 36 class DateTimeFieldsState; 38 37 class KeyboardEvent; … … 61 60 }; 62 61 62 struct LayoutParameters { 63 String dateTimeFormat; 64 String fallbackDateTimeFormat; 65 Localizer& localizer; 66 const StepRange& stepRange; 67 68 LayoutParameters(Localizer& localizer, const StepRange& stepRange) 69 : localizer(localizer) 70 , stepRange(stepRange) 71 { 72 } 73 74 bool shouldHaveSecondField() const; 75 }; 76 63 77 static PassRefPtr<DateTimeEditElement> create(Document*, EditControlOwner&); 64 78 … … 72 86 void removeEditControlOwner() { m_editControlOwner = 0; } 73 87 void resetFields(); 74 void setEmptyValue(const StepRange&, const DateComponents& dateForReadOnlyField, Localizer&);75 void setValueAsDate(const StepRange&, const DateComponents&, Localizer&);88 void setEmptyValue(const LayoutParameters&, const DateComponents& dateForReadOnlyField); 89 void setValueAsDate(const LayoutParameters&, const DateComponents&); 76 90 void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField); 77 91 DateTimeFieldsState valueAsDateTimeFieldsState() const; … … 100 114 bool isDisabled() const; 101 115 bool isReadOnly() const; 102 void layout(const StepRange&, const DateComponents&, Localizer&);116 void layout(const LayoutParameters&, const DateComponents&); 103 117 void updateUIState(); 104 118
Note: See TracChangeset
for help on using the changeset viewer.