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

Side by Side Diff: Source/core/html/forms/TimeInputType.cpp

Issue 27746003: Have InputType factories take an HTMLInputElement reference in parameter (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on master Created 7 years, 2 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/html/forms/TimeInputType.h ('k') | Source/core/html/forms/URLInputType.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "wtf/text/WTFString.h" 44 #include "wtf/text/WTFString.h"
45 45
46 namespace WebCore { 46 namespace WebCore {
47 47
48 using namespace HTMLNames; 48 using namespace HTMLNames;
49 49
50 static const int timeDefaultStep = 60; 50 static const int timeDefaultStep = 60;
51 static const int timeDefaultStepBase = 0; 51 static const int timeDefaultStepBase = 0;
52 static const int timeStepScaleFactor = 1000; 52 static const int timeStepScaleFactor = 1000;
53 53
54 TimeInputType::TimeInputType(HTMLInputElement* element) 54 TimeInputType::TimeInputType(HTMLInputElement& element)
55 : BaseTimeInputType(element) 55 : BaseTimeInputType(element)
56 { 56 {
57 } 57 }
58 58
59 PassRefPtr<InputType> TimeInputType::create(HTMLInputElement* element) 59 PassRefPtr<InputType> TimeInputType::create(HTMLInputElement& element)
60 { 60 {
61 return adoptRef(new TimeInputType(element)); 61 return adoptRef(new TimeInputType(element));
62 } 62 }
63 63
64 void TimeInputType::countUsage() 64 void TimeInputType::countUsage()
65 { 65 {
66 observeFeatureIfVisible(UseCounter::InputTypeTime); 66 observeFeatureIfVisible(UseCounter::InputTypeTime);
67 } 67 }
68 68
69 const AtomicString& TimeInputType::formControlType() const 69 const AtomicString& TimeInputType::formControlType() const
(...skipping 18 matching lines...) Expand all
88 date.setMillisecondsSinceMidnight(current); 88 date.setMillisecondsSinceMidnight(current);
89 double milliseconds = date.millisecondsSinceEpoch(); 89 double milliseconds = date.millisecondsSinceEpoch();
90 ASSERT(std::isfinite(milliseconds)); 90 ASSERT(std::isfinite(milliseconds));
91 return Decimal::fromDouble(milliseconds); 91 return Decimal::fromDouble(milliseconds);
92 } 92 }
93 93
94 StepRange TimeInputType::createStepRange(AnyStepHandling anyStepHandling) const 94 StepRange TimeInputType::createStepRange(AnyStepHandling anyStepHandling) const
95 { 95 {
96 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (time DefaultStep, timeDefaultStepBase, timeStepScaleFactor, StepRange::ScaledStepValu eShouldBeInteger)); 96 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (time DefaultStep, timeDefaultStepBase, timeStepScaleFactor, StepRange::ScaledStepValu eShouldBeInteger));
97 97
98 const Decimal stepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0); 98 const Decimal stepBase = parseToNumber(element().fastGetAttribute(minAttr), 0);
99 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumTime())); 99 const Decimal minimum = parseToNumber(element().fastGetAttribute(minAttr), D ecimal::fromDouble(DateComponents::minimumTime()));
100 const Decimal maximum = parseToNumber(element()->fastGetAttribute(maxAttr), Decimal::fromDouble(DateComponents::maximumTime())); 100 const Decimal maximum = parseToNumber(element().fastGetAttribute(maxAttr), D ecimal::fromDouble(DateComponents::maximumTime()));
101 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 101 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element().fastGetAttribute(stepAttr));
102 return StepRange(stepBase, minimum, maximum, step, stepDescription); 102 return StepRange(stepBase, minimum, maximum, step, stepDescription);
103 } 103 }
104 104
105 bool TimeInputType::parseToDateComponentsInternal(const String& string, DateComp onents* out) const 105 bool TimeInputType::parseToDateComponentsInternal(const String& string, DateComp onents* out) const
106 { 106 {
107 ASSERT(out); 107 ASSERT(out);
108 unsigned end; 108 unsigned end;
109 return out->parseTime(string, 0, end) && end == string.length(); 109 return out->parseTime(string, 0, end) && end == string.length();
110 } 110 }
111 111
(...skipping 11 matching lines...) Expand all
123 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI) 123 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
124 124
125 String TimeInputType::localizeValue(const String& proposedValue) const 125 String TimeInputType::localizeValue(const String& proposedValue) const
126 { 126 {
127 DateComponents date; 127 DateComponents date;
128 if (!parseToDateComponents(proposedValue, &date)) 128 if (!parseToDateComponents(proposedValue, &date))
129 return proposedValue; 129 return proposedValue;
130 130
131 Locale::FormatType formatType = shouldHaveSecondField(date) ? Locale::Format TypeMedium : Locale::FormatTypeShort; 131 Locale::FormatType formatType = shouldHaveSecondField(date) ? Locale::Format TypeMedium : Locale::FormatTypeShort;
132 132
133 String localized = element()->locale().formatDateTime(date, formatType); 133 String localized = element().locale().formatDateTime(date, formatType);
134 return localized.isEmpty() ? proposedValue : localized; 134 return localized.isEmpty() ? proposedValue : localized;
135 } 135 }
136 136
137 String TimeInputType::formatDateTimeFieldsState(const DateTimeFieldsState& dateT imeFieldsState) const 137 String TimeInputType::formatDateTimeFieldsState(const DateTimeFieldsState& dateT imeFieldsState) const
138 { 138 {
139 if (!dateTimeFieldsState.hasHour() || !dateTimeFieldsState.hasMinute() || !d ateTimeFieldsState.hasAMPM()) 139 if (!dateTimeFieldsState.hasHour() || !dateTimeFieldsState.hasMinute() || !d ateTimeFieldsState.hasAMPM())
140 return emptyString(); 140 return emptyString();
141 if (dateTimeFieldsState.hasMillisecond() && dateTimeFieldsState.millisecond( )) { 141 if (dateTimeFieldsState.hasMillisecond() && dateTimeFieldsState.millisecond( )) {
142 return String::format("%02u:%02u:%02u.%03u", 142 return String::format("%02u:%02u:%02u.%03u",
143 dateTimeFieldsState.hour23(), 143 dateTimeFieldsState.hour23(),
(...skipping 12 matching lines...) Expand all
156 156
157 void TimeInputType::setupLayoutParameters(DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& date) const 157 void TimeInputType::setupLayoutParameters(DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& date) const
158 { 158 {
159 if (shouldHaveSecondField(date)) { 159 if (shouldHaveSecondField(date)) {
160 layoutParameters.dateTimeFormat = layoutParameters.locale.timeFormat(); 160 layoutParameters.dateTimeFormat = layoutParameters.locale.timeFormat();
161 layoutParameters.fallbackDateTimeFormat = "HH:mm:ss"; 161 layoutParameters.fallbackDateTimeFormat = "HH:mm:ss";
162 } else { 162 } else {
163 layoutParameters.dateTimeFormat = layoutParameters.locale.shortTimeForma t(); 163 layoutParameters.dateTimeFormat = layoutParameters.locale.shortTimeForma t();
164 layoutParameters.fallbackDateTimeFormat = "HH:mm"; 164 layoutParameters.fallbackDateTimeFormat = "HH:mm";
165 } 165 }
166 if (!parseToDateComponents(element()->fastGetAttribute(minAttr), &layoutPara meters.minimum)) 166 if (!parseToDateComponents(element().fastGetAttribute(minAttr), &layoutParam eters.minimum))
167 layoutParameters.minimum = DateComponents(); 167 layoutParameters.minimum = DateComponents();
168 if (!parseToDateComponents(element()->fastGetAttribute(maxAttr), &layoutPara meters.maximum)) 168 if (!parseToDateComponents(element().fastGetAttribute(maxAttr), &layoutParam eters.maximum))
169 layoutParameters.maximum = DateComponents(); 169 layoutParameters.maximum = DateComponents();
170 } 170 }
171 171
172 bool TimeInputType::isValidFormat(bool hasYear, bool hasMonth, bool hasWeek, boo l hasDay, bool hasAMPM, bool hasHour, bool hasMinute, bool hasSecond) const 172 bool TimeInputType::isValidFormat(bool hasYear, bool hasMonth, bool hasWeek, boo l hasDay, bool hasAMPM, bool hasHour, bool hasMinute, bool hasSecond) const
173 { 173 {
174 return hasHour && hasMinute && hasAMPM; 174 return hasHour && hasMinute && hasAMPM;
175 } 175 }
176 #endif 176 #endif
177 177
178 } // namespace WebCore 178 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/html/forms/TimeInputType.h ('k') | Source/core/html/forms/URLInputType.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698