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

Side by Side Diff: third_party/WebKit/Source/platform/text/Hyphenation.cpp

Issue 2163603002: Fix hyphenation for lang="de" and other fallback on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: eae review Created 4 years, 5 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
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/text/Hyphenation.h" 5 #include "platform/text/Hyphenation.h"
6 6
7 #include "wtf/text/StringView.h" 7 #include "wtf/text/StringView.h"
8 8
9 namespace blink { 9 namespace blink {
10 10
11 Hyphenation::HyphenationMap& Hyphenation::getHyphenationMap() 11 Hyphenation::HyphenationMap& Hyphenation::getHyphenationMap()
12 { 12 {
13 DEFINE_STATIC_LOCAL(HyphenationMap, hyphenationMap, ()); 13 DEFINE_STATIC_LOCAL(HyphenationMap, hyphenationMap, ());
14 return hyphenationMap; 14 return hyphenationMap;
15 } 15 }
16 16
17 Hyphenation* Hyphenation::get(const AtomicString& locale) 17 Hyphenation* Hyphenation::get(const AtomicString& locale)
18 { 18 {
19 DCHECK(!locale.isNull()); 19 DCHECK(!locale.isNull());
20 Hyphenation::HyphenationMap& hyphenationMap = getHyphenationMap(); 20 Hyphenation::HyphenationMap& hyphenationMap = getHyphenationMap();
21 auto result = hyphenationMap.add(locale, nullptr); 21 const auto& it = hyphenationMap.find(locale);
22 if (result.isNewEntry) 22 if (it != hyphenationMap.end())
23 result.storedValue->value = platformGetHyphenation(locale); 23 return it->value.get();
24 return result.storedValue->value.get(); 24
25 return hyphenationMap.add(locale, platformGetHyphenation(locale))
26 .storedValue->value.get();
25 } 27 }
26 28
27 void Hyphenation::setForTesting(const AtomicString& locale, PassRefPtr<Hyphenati on> hyphenation) 29 void Hyphenation::setForTesting(const AtomicString& locale, PassRefPtr<Hyphenati on> hyphenation)
28 { 30 {
29 getHyphenationMap().set(locale, hyphenation); 31 getHyphenationMap().set(locale, hyphenation);
30 } 32 }
31 33
32 void Hyphenation::clearForTesting() 34 void Hyphenation::clearForTesting()
33 { 35 {
34 getHyphenationMap().clear(); 36 getHyphenationMap().clear();
35 } 37 }
36 38
37 Vector<size_t, 8> Hyphenation::hyphenLocations(const StringView& text) const 39 Vector<size_t, 8> Hyphenation::hyphenLocations(const StringView& text) const
38 { 40 {
39 Vector<size_t, 8> hyphenLocations; 41 Vector<size_t, 8> hyphenLocations;
40 size_t hyphenLocation = text.length(); 42 size_t hyphenLocation = text.length();
41 if (hyphenLocation <= minimumSuffixLength) 43 if (hyphenLocation <= minimumSuffixLength)
42 return hyphenLocations; 44 return hyphenLocations;
43 hyphenLocation -= minimumSuffixLength; 45 hyphenLocation -= minimumSuffixLength;
44 46
45 while ((hyphenLocation = lastHyphenLocation(text, hyphenLocation)) >= minimu mPrefixLength) 47 while ((hyphenLocation = lastHyphenLocation(text, hyphenLocation)) >= minimu mPrefixLength)
46 hyphenLocations.append(hyphenLocation); 48 hyphenLocations.append(hyphenLocation);
47 49
48 return hyphenLocations; 50 return hyphenLocations;
49 } 51 }
50 52
51 } // namespace blink 53 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698