Use "= default" to denote default constructor or destructor
[WebKit-https.git] / Source / WebCore / platform / text / LocaleNone.cpp
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 #include "config.h"
27 #include "PlatformLocale.h"
28 #include <wtf/DateMath.h>
29
30 namespace WebCore {
31
32 class LocaleNone : public Locale {
33 public:
34     virtual ~LocaleNone();
35
36 private:
37     void initializeLocaleData() final;
38 #if ENABLE(DATE_AND_TIME_INPUT_TYPES)
39     String dateFormat() override;
40     String monthFormat() override;
41     String shortMonthFormat() override;
42     String timeFormat() override;
43     String shortTimeFormat() override;
44     String dateTimeFormatWithSeconds() override;
45     String dateTimeFormatWithoutSeconds() override;
46     const Vector<String>& monthLabels() override;
47     const Vector<String>& shortMonthLabels() override;
48     const Vector<String>& standAloneMonthLabels() override;
49     const Vector<String>& shortStandAloneMonthLabels() override;
50     const Vector<String>& timeAMPMLabels() override;
51
52     Vector<String> m_timeAMPMLabels;
53     Vector<String> m_shortMonthLabels;
54     Vector<String> m_monthLabels;
55 #endif
56 };
57
58 std::unique_ptr<Locale> Locale::create(const AtomicString&)
59 {
60     return std::make_unique<LocaleNone>();
61 }
62
63 LocaleNone::~LocaleNone() = default;
64
65 void LocaleNone::initializeLocaleData()
66 {
67 }
68
69 #if ENABLE(DATE_AND_TIME_INPUT_TYPES)
70 const Vector<String>& LocaleNone::monthLabels()
71 {
72     if (!m_monthLabels.isEmpty())
73         return m_monthLabels;
74     m_monthLabels.reserveCapacity(WTF_ARRAY_LENGTH(WTF::monthFullName));
75     for (unsigned i = 0; i < WTF_ARRAY_LENGTH(WTF::monthFullName); ++i)
76         m_monthLabels.append(WTF::monthFullName[i]);
77     return m_monthLabels;
78 }
79
80 String LocaleNone::dateFormat()
81 {
82     return ASCIILiteral("yyyy-MM-dd");
83 }
84
85 String LocaleNone::monthFormat()
86 {
87     return ASCIILiteral("yyyy-MM");
88 }
89
90 String LocaleNone::shortMonthFormat()
91 {
92     return ASCIILiteral("yyyy-MM");
93 }
94
95 String LocaleNone::timeFormat()
96 {
97     return ASCIILiteral("HH:mm:ss");
98 }
99
100 String LocaleNone::shortTimeFormat()
101 {
102     return ASCIILiteral("HH:mm");
103 }
104
105 String LocaleNone::dateTimeFormatWithSeconds()
106 {
107     return ASCIILiteral("yyyy-MM-dd'T'HH:mm:ss");
108 }
109
110 String LocaleNone::dateTimeFormatWithoutSeconds()
111 {
112     return ASCIILiteral("yyyy-MM-dd'T'HH:mm");
113 }
114
115 const Vector<String>& LocaleNone::shortMonthLabels()
116 {
117     if (!m_shortMonthLabels.isEmpty())
118         return m_shortMonthLabels;
119     m_shortMonthLabels.reserveCapacity(WTF_ARRAY_LENGTH(WTF::monthName));
120     for (unsigned i = 0; i < WTF_ARRAY_LENGTH(WTF::monthName); ++i)
121         m_shortMonthLabels.append(WTF::monthName[i]);
122     return m_shortMonthLabels;
123 }
124
125 const Vector<String>& LocaleNone::shortStandAloneMonthLabels()
126 {
127     return shortMonthLabels();
128 }
129
130 const Vector<String>& LocaleNone::standAloneMonthLabels()
131 {
132     return monthLabels();
133 }
134
135 const Vector<String>& LocaleNone::timeAMPMLabels()
136 {
137     if (!m_timeAMPMLabels.isEmpty())
138         return m_timeAMPMLabels;
139     m_timeAMPMLabels.reserveCapacity(2);
140     m_timeAMPMLabels.append("AM");
141     m_timeAMPMLabels.append("PM");
142     return m_timeAMPMLabels;
143 }
144
145 #endif
146
147 } // namespace WebCore