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

Side by Side Diff: Source/core/html/forms/BaseDateAndTimeInputType.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
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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 static const int msecPerMinute = 60 * 1000; 48 static const int msecPerMinute = 60 * 1000;
49 static const int msecPerSecond = 1000; 49 static const int msecPerSecond = 1000;
50 50
51 double BaseDateAndTimeInputType::valueAsDate() const 51 double BaseDateAndTimeInputType::valueAsDate() const
52 { 52 {
53 return valueAsDouble(); 53 return valueAsDouble();
54 } 54 }
55 55
56 void BaseDateAndTimeInputType::setValueAsDate(double value, ExceptionState&) con st 56 void BaseDateAndTimeInputType::setValueAsDate(double value, ExceptionState&) con st
57 { 57 {
58 element()->setValue(serializeWithMilliseconds(value)); 58 element().setValue(serializeWithMilliseconds(value));
59 } 59 }
60 60
61 double BaseDateAndTimeInputType::valueAsDouble() const 61 double BaseDateAndTimeInputType::valueAsDouble() const
62 { 62 {
63 const Decimal value = parseToNumber(element()->value(), Decimal::nan()); 63 const Decimal value = parseToNumber(element().value(), Decimal::nan());
64 return value.isFinite() ? value.toDouble() : DateComponents::invalidMillisec onds(); 64 return value.isFinite() ? value.toDouble() : DateComponents::invalidMillisec onds();
65 } 65 }
66 66
67 void BaseDateAndTimeInputType::setValueAsDecimal(const Decimal& newValue, TextFi eldEventBehavior eventBehavior, ExceptionState&) const 67 void BaseDateAndTimeInputType::setValueAsDecimal(const Decimal& newValue, TextFi eldEventBehavior eventBehavior, ExceptionState&) const
68 { 68 {
69 element()->setValue(serialize(newValue), eventBehavior); 69 element().setValue(serialize(newValue), eventBehavior);
70 } 70 }
71 71
72 bool BaseDateAndTimeInputType::typeMismatchFor(const String& value) const 72 bool BaseDateAndTimeInputType::typeMismatchFor(const String& value) const
73 { 73 {
74 return !value.isEmpty() && !parseToDateComponents(value, 0); 74 return !value.isEmpty() && !parseToDateComponents(value, 0);
75 } 75 }
76 76
77 bool BaseDateAndTimeInputType::typeMismatch() const 77 bool BaseDateAndTimeInputType::typeMismatch() const
78 { 78 {
79 return typeMismatchFor(element()->value()); 79 return typeMismatchFor(element().value());
80 } 80 }
81 81
82 String BaseDateAndTimeInputType::rangeOverflowText(const Decimal& maximum) const 82 String BaseDateAndTimeInputType::rangeOverflowText(const Decimal& maximum) const
83 { 83 {
84 return locale().queryString(WebLocalizedString::ValidationRangeOverflowDateT ime, localizeValue(serialize(maximum))); 84 return locale().queryString(WebLocalizedString::ValidationRangeOverflowDateT ime, localizeValue(serialize(maximum)));
85 } 85 }
86 86
87 String BaseDateAndTimeInputType::rangeUnderflowText(const Decimal& minimum) cons t 87 String BaseDateAndTimeInputType::rangeUnderflowText(const Decimal& minimum) cons t
88 { 88 {
89 return locale().queryString(WebLocalizedString::ValidationRangeUnderflowDate Time, localizeValue(serialize(minimum))); 89 return locale().queryString(WebLocalizedString::ValidationRangeUnderflowDate Time, localizeValue(serialize(minimum)));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 return String(); 129 return String();
130 DateComponents date; 130 DateComponents date;
131 if (!setMillisecondToDateComponents(value.toDouble(), &date)) 131 if (!setMillisecondToDateComponents(value.toDouble(), &date))
132 return String(); 132 return String();
133 return serializeWithComponents(date); 133 return serializeWithComponents(date);
134 } 134 }
135 135
136 String BaseDateAndTimeInputType::serializeWithComponents(const DateComponents& d ate) const 136 String BaseDateAndTimeInputType::serializeWithComponents(const DateComponents& d ate) const
137 { 137 {
138 Decimal step; 138 Decimal step;
139 if (!element()->getAllowedValueStep(&step)) 139 if (!element().getAllowedValueStep(&step))
140 return date.toString(); 140 return date.toString();
141 if (step.remainder(msecPerMinute).isZero()) 141 if (step.remainder(msecPerMinute).isZero())
142 return date.toString(DateComponents::None); 142 return date.toString(DateComponents::None);
143 if (step.remainder(msecPerSecond).isZero()) 143 if (step.remainder(msecPerSecond).isZero())
144 return date.toString(DateComponents::Second); 144 return date.toString(DateComponents::Second);
145 return date.toString(DateComponents::Millisecond); 145 return date.toString(DateComponents::Millisecond);
146 } 146 }
147 147
148 String BaseDateAndTimeInputType::serializeWithMilliseconds(double value) const 148 String BaseDateAndTimeInputType::serializeWithMilliseconds(double value) const
149 { 149 {
150 return serialize(Decimal::fromDouble(value)); 150 return serialize(Decimal::fromDouble(value));
151 } 151 }
152 152
153 String BaseDateAndTimeInputType::localizeValue(const String& proposedValue) cons t 153 String BaseDateAndTimeInputType::localizeValue(const String& proposedValue) cons t
154 { 154 {
155 DateComponents date; 155 DateComponents date;
156 if (!parseToDateComponents(proposedValue, &date)) 156 if (!parseToDateComponents(proposedValue, &date))
157 return proposedValue; 157 return proposedValue;
158 158
159 String localized = element()->locale().formatDateTime(date); 159 String localized = element().locale().formatDateTime(date);
160 return localized.isEmpty() ? proposedValue : localized; 160 return localized.isEmpty() ? proposedValue : localized;
161 } 161 }
162 162
163 String BaseDateAndTimeInputType::visibleValue() const 163 String BaseDateAndTimeInputType::visibleValue() const
164 { 164 {
165 return localizeValue(element()->value()); 165 return localizeValue(element().value());
166 } 166 }
167 167
168 String BaseDateAndTimeInputType::sanitizeValue(const String& proposedValue) cons t 168 String BaseDateAndTimeInputType::sanitizeValue(const String& proposedValue) cons t
169 { 169 {
170 return typeMismatchFor(proposedValue) ? emptyString() : proposedValue; 170 return typeMismatchFor(proposedValue) ? emptyString() : proposedValue;
171 } 171 }
172 172
173 bool BaseDateAndTimeInputType::supportsReadOnly() const 173 bool BaseDateAndTimeInputType::supportsReadOnly() const
174 { 174 {
175 return true; 175 return true;
176 } 176 }
177 177
178 bool BaseDateAndTimeInputType::shouldRespectListAttribute() 178 bool BaseDateAndTimeInputType::shouldRespectListAttribute()
179 { 179 {
180 return InputType::themeSupportsDataListUI(this); 180 return InputType::themeSupportsDataListUI(this);
181 } 181 }
182 182
183 bool BaseDateAndTimeInputType::valueMissing(const String& value) const 183 bool BaseDateAndTimeInputType::valueMissing(const String& value) const
184 { 184 {
185 return element()->isRequired() && value.isEmpty(); 185 return element().isRequired() && value.isEmpty();
186 } 186 }
187 187
188 bool BaseDateAndTimeInputType::shouldShowFocusRingOnMouseFocus() const 188 bool BaseDateAndTimeInputType::shouldShowFocusRingOnMouseFocus() const
189 { 189 {
190 return true; 190 return true;
191 } 191 }
192 192
193 } // namespace WebCore 193 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/html/forms/BaseDateAndTimeInputType.h ('k') | Source/core/html/forms/BaseMultipleFieldsDateAndTimeInputType.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698