summaryrefslogtreecommitdiff
blob: 9e6e5fd72d705ffef19d3c3b269a2cbc660e25a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
From 424584b4984bde7c831f42e9fb47f1ad583a1c46 Mon Sep 17 00:00:00 2001
From: jshin <jshin@chromium.org>
Date: Fri, 21 Oct 2016 01:15:50 -0700
Subject: [PATCH] Update aspirational_scripts per Unicode 9

This is a preparation to update ICU to 58.1.
Without this change, ICU update CL cannot be tested on
trybots because a compile will fail due to '#error' checking
if ICU version is less than 58.

BUG=637001
TEST=None
TBR=pkasting@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2436113003
Cr-Commit-Position: refs/heads/master@{#426749}
---
 components/url_formatter/url_formatter.cc | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc
index 4455db3..2b82c0c 100644
--- a/components/url_formatter/url_formatter.cc
+++ b/components/url_formatter/url_formatter.cc
@@ -431,7 +431,7 @@
   // are added to the allowed set. The list has to be updated when a new
   // version of Unicode is released. The current version is 8.0.0 and ICU 58
   // will have Unicode 9.0 data.
-#if U_ICU_VERSION_MAJOR_NUM < 58
+#if U_ICU_VERSION_MAJOR_NUM < 60
   const icu::UnicodeSet aspirational_scripts(
       icu::UnicodeString(
           // Unified Canadian Syllabics
@@ -445,13 +445,13 @@
           // Yi
           "\\uA000-\\uA48C"
           // Miao
-          "\\U00016F00-\\U00016F44\\U00016F50-\\U00016F7F"
+          "\\U00016F00-\\U00016F44\\U00016F50-\\U00016F7E"
           "\\U00016F8F-\\U00016F9F]",
           -1, US_INV),
       *status);
   allowed_set.addAll(aspirational_scripts);
 #else
-#error "Update aspirational_scripts per Unicode 9.0"
+#error "Update aspirational_scripts per Unicode 10.0"
 #endif
 
   // U+0338 is included in the recommended set, while U+05F4 and U+2027 are in
-- 
2.10.2

From e60b571faa3f14dd9119a6792dccf12f8bf80192 Mon Sep 17 00:00:00 2001
From: jshin <jshin@chromium.org>
Date: Fri, 21 Oct 2016 12:20:05 -0700
Subject: [PATCH] Prepare to upgrade ICU to 58 part 2

U_LB_COUNT is assumed to be 40 in Blink line breaking code, but it's
43 in ICU 58/Unicode 9.

Three new classes (Emoji Base, Emoji Modifier, and ZWJ) should behave
identically whether or not 'word-break: break-all' is in effect.

BUG=637001
TEST=TextBreakIterator.cpp is compiled without an error with ICU 58.
R=kojii@chromium.org
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

Review-Url: https://chromiumcodereview.appspot.com/2440923002
Cr-Commit-Position: refs/heads/master@{#426860}
---
 .../WebKit/Source/platform/text/TextBreakIterator.cpp    | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp b/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp
index 568dc0a..36121eb 100644
--- a/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp
+++ b/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp
@@ -27,6 +27,9 @@
 #include "wtf/StdLibExtras.h"
 #include "wtf/text/CharacterNames.h"
 
+#include <unicode/uchar.h>
+#include <unicode/uvernum.h>
+
 namespace blink {
 
 unsigned numGraphemeClusters(const String& string)
@@ -123,13 +126,18 @@
     { B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), 0, B(0, 0, 0, 0, 0, 0, 0, 0), 0, 0, 0, B(0, 0, 0, 0, 0, 0, 0, 0), 0, 0, 0, B(0, 0, 0, 0, 0, 0, 0, 0) }, // DEL
 };
 
+#if U_ICU_VERSION_MAJOR_NUM >= 58
+#define BA_LB_COUNT (U_LB_COUNT - 3)
+#else
+#define BA_LB_COUNT U_LB_COUNT
+#endif
 // Line breaking table for CSS word-break: break-all. This table differs from
 // asciiLineBreakTable in:
 // - Indices are Line Breaking Classes defined in UAX#14 Unicode Line Breaking
 //   Algorithm: http://unicode.org/reports/tr14/#DescriptionOfProperties
 // - 1 indicates additional break opportunities. 0 indicates to fallback to
 //   normal line break, not "prohibit break."
-static const unsigned char breakAllLineBreakClassTable[][U_LB_COUNT / 8 + 1] = {
+static const unsigned char breakAllLineBreakClassTable[][BA_LB_COUNT / 8 + 1] = {
     // XX AI AL B2 BA BB BK CB    CL CM CR EX GL HY ID IN    IS LF NS NU OP PO PR QU    SA SG SP SY ZW NL WJ H2    H3 JL JT JV CP CJ HL RI
     { B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0) }, // XX
     { B(0, 1, 1, 0, 1, 0, 0, 0), B(0, 0, 0, 0, 0, 1, 0, 0), B(0, 0, 0, 1, 1, 0, 1, 0), B(1, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 1, 0) }, // AI
@@ -179,7 +187,7 @@
 #undef AL
 
 static_assert(WTF_ARRAY_LENGTH(asciiLineBreakTable) == asciiLineBreakTableLastChar - asciiLineBreakTableFirstChar + 1, "asciiLineBreakTable should be consistent");
-static_assert(WTF_ARRAY_LENGTH(breakAllLineBreakClassTable) == U_LB_COUNT, "breakAllLineBreakClassTable should be consistent");
+static_assert(WTF_ARRAY_LENGTH(breakAllLineBreakClassTable) == BA_LB_COUNT, "breakAllLineBreakClassTable should be consistent");
 
 static inline bool shouldBreakAfter(UChar lastCh, UChar ch, UChar nextCh)
 {
@@ -210,7 +218,7 @@
 
 static inline bool shouldBreakAfterBreakAll(ULineBreak lastLineBreak, ULineBreak lineBreak)
 {
-    if (lineBreak >= 0 && lineBreak < U_LB_COUNT && lastLineBreak >= 0 && lastLineBreak < U_LB_COUNT) {
+    if (lineBreak >= 0 && lineBreak < BA_LB_COUNT && lastLineBreak >= 0 && lastLineBreak < BA_LB_COUNT) {
         const unsigned char* tableRow = breakAllLineBreakClassTable[lastLineBreak];
         return tableRow[lineBreak / 8] & (1 << (lineBreak % 8));
     }
-- 
2.10.2