OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/LayoutLocale.h" | 5 #include "platform/LayoutLocale.h" |
6 | 6 |
7 #include "platform/Language.h" | 7 #include "platform/Language.h" |
8 #include "platform/fonts/AcceptLanguagesResolver.h" | 8 #include "platform/fonts/AcceptLanguagesResolver.h" |
9 #include "platform/text/ICUError.h" | 9 #include "platform/text/ICUError.h" |
10 #include "platform/text/LocaleToScriptMapping.h" | 10 #include "platform/text/LocaleToScriptMapping.h" |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 const LayoutLocale& locale = valueOrDefault(get(localeString)); | 182 const LayoutLocale& locale = valueOrDefault(get(localeString)); |
183 locale.m_hyphenationComputed = true; | 183 locale.m_hyphenationComputed = true; |
184 locale.m_hyphenation = hyphenation; | 184 locale.m_hyphenation = hyphenation; |
185 } | 185 } |
186 | 186 |
187 AtomicString LayoutLocale::localeWithBreakKeyword( | 187 AtomicString LayoutLocale::localeWithBreakKeyword( |
188 LineBreakIteratorMode mode) const { | 188 LineBreakIteratorMode mode) const { |
189 if (m_string.isEmpty()) | 189 if (m_string.isEmpty()) |
190 return m_string; | 190 return m_string; |
191 | 191 |
| 192 // uloc_setKeywordValue_58 has a problem to handle "@" in the original |
| 193 // string. crbug.com/697859 |
| 194 if (m_string.contains('@')) |
| 195 return m_string; |
| 196 |
192 CString utf8Locale = m_string.utf8(); | 197 CString utf8Locale = m_string.utf8(); |
193 Vector<char> buffer(utf8Locale.length() + 11, 0); | 198 Vector<char> buffer(utf8Locale.length() + 11, 0); |
194 memcpy(buffer.data(), utf8Locale.data(), utf8Locale.length()); | 199 memcpy(buffer.data(), utf8Locale.data(), utf8Locale.length()); |
195 | 200 |
196 const char* keywordValue = nullptr; | 201 const char* keywordValue = nullptr; |
197 switch (mode) { | 202 switch (mode) { |
198 default: | 203 default: |
199 NOTREACHED(); | 204 NOTREACHED(); |
200 // Fall through. | 205 // Fall through. |
201 case LineBreakIteratorMode::Default: | 206 case LineBreakIteratorMode::Default: |
(...skipping 26 matching lines...) Expand all Loading... |
228 DCHECK_EQ(lengthNeeded, lengthNeeded2); | 233 DCHECK_EQ(lengthNeeded, lengthNeeded2); |
229 if (U_SUCCESS(status) && lengthNeeded == lengthNeeded2) | 234 if (U_SUCCESS(status) && lengthNeeded == lengthNeeded2) |
230 return AtomicString::fromUTF8(buffer.data(), lengthNeeded); | 235 return AtomicString::fromUTF8(buffer.data(), lengthNeeded); |
231 } | 236 } |
232 | 237 |
233 NOTREACHED(); | 238 NOTREACHED(); |
234 return m_string; | 239 return m_string; |
235 } | 240 } |
236 | 241 |
237 } // namespace blink | 242 } // namespace blink |
OLD | NEW |