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

Side by Side Diff: third_party/WebKit/Source/core/html/shadow/DateTimeNumericFieldElement.h

Issue 2815263002: Move form-related files in core/html/shadow to core/html/forms. (Closed)
Patch Set: Created 3 years, 8 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
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 * SUCH DAMAGE.
24 */
25
26 #ifndef DateTimeNumericFieldElement_h
27 #define DateTimeNumericFieldElement_h
28
29 #include "core/html/shadow/DateTimeFieldElement.h"
30 #include "platform/wtf/Allocator.h"
31 #include "platform/wtf/text/StringBuilder.h"
32 #include "platform/wtf/text/WTFString.h"
33 #include "public/platform/WebFocusType.h"
34
35 namespace blink {
36
37 // DateTimeNumericFieldElement represents numeric field of date time format,
38 // such as:
39 // - hour
40 // - minute
41 // - millisecond
42 // - second
43 // - year
44 class DateTimeNumericFieldElement : public DateTimeFieldElement {
45 WTF_MAKE_NONCOPYABLE(DateTimeNumericFieldElement);
46
47 public:
48 struct Step {
49 DISALLOW_NEW();
50 Step(int step = 1, int step_base = 0) : step(step), step_base(step_base) {}
51 int step;
52 int step_base;
53 };
54
55 struct Range {
56 DISALLOW_NEW();
57 Range(int minimum, int maximum) : minimum(minimum), maximum(maximum) {}
58 int ClampValue(int) const;
59 bool IsInRange(int) const;
60 bool IsSingleton() const { return minimum == maximum; }
61
62 int minimum;
63 int maximum;
64 };
65
66 protected:
67 DateTimeNumericFieldElement(Document&,
68 FieldOwner&,
69 const Range&,
70 const Range& hard_limits,
71 const String& placeholder,
72 const Step& = Step());
73
74 int ClampValue(int value) const { return range_.ClampValue(value); }
75 virtual int DefaultValueForStepDown() const;
76 virtual int DefaultValueForStepUp() const;
77 const Range& GetRange() const { return range_; }
78
79 // DateTimeFieldElement functions.
80 bool HasValue() const final;
81 void Initialize(const AtomicString& pseudo, const String& ax_help_text);
82 int Maximum() const;
83 void SetEmptyValue(EventBehavior = kDispatchNoEvent) final;
84 void SetValueAsInteger(int, EventBehavior = kDispatchNoEvent) override;
85 int ValueAsInteger() const final;
86 String VisibleValue() const final;
87
88 private:
89 // DateTimeFieldElement functions.
90 void HandleKeyboardEvent(KeyboardEvent*) final;
91 float MaximumWidth(const ComputedStyle&) override;
92 void StepDown() final;
93 void StepUp() final;
94 String Value() const final;
95
96 // Node functions.
97 void SetFocused(bool, WebFocusType) final;
98
99 String FormatValue(int) const;
100 int RoundUp(int) const;
101 int RoundDown(int) const;
102 int TypeAheadValue() const;
103
104 const String placeholder_;
105 const Range range_;
106 const Range hard_limits_;
107 const Step step_;
108 int value_;
109 bool has_value_;
110 mutable StringBuilder type_ahead_buffer_;
111 };
112
113 } // namespace blink
114
115 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698