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

Side by Side Diff: ui/base/ime/composition_text_util_pango_unittest.cc

Issue 313053007: Passing BackgroundColorSpan and UnderlineSpan from Clank to Blink. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync. Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ui/base/ime/composition_text_util_pango.h" 5 #include "ui/base/ime/composition_text_util_pango.h"
6 6
7 #include <pango/pango-attributes.h> 7 #include <pango/pango-attributes.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 10 matching lines...) Expand all
21 int value; 21 int value;
22 int start_offset; 22 int start_offset;
23 int end_offset; 23 int end_offset;
24 }; 24 };
25 25
26 struct Underline { 26 struct Underline {
27 unsigned start_offset; 27 unsigned start_offset;
28 unsigned end_offset; 28 unsigned end_offset;
29 uint32 color; 29 uint32 color;
30 bool thick; 30 bool thick;
31 uint32 background_color;
31 }; 32 };
32 33
33 struct TestData { 34 struct TestData {
34 const char* text; 35 const char* text;
35 const AttributeInfo attrs[10]; 36 const AttributeInfo attrs[10];
36 const Underline underlines[10]; 37 const Underline underlines[10];
37 }; 38 };
38 39
39 const TestData kTestData[] = { 40 const TestData kTestData[] = {
40 // Normal case 41 // Normal case
41 { "One Two Three", 42 { "One Two Three",
42 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 }, 43 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 },
43 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_DOUBLE, 4, 7 }, 44 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_DOUBLE, 4, 7 },
44 { PANGO_ATTR_BACKGROUND, 0, 4, 7 }, 45 { PANGO_ATTR_BACKGROUND, 0, 4, 7 },
45 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 13 }, 46 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 13 },
46 { 0, 0, 0, 0 } }, 47 { 0, 0, 0, 0 } },
47 { { 0, 3, SK_ColorBLACK, false }, 48 { { 0, 3, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
48 { 4, 7, SK_ColorBLACK, true }, 49 { 4, 7, SK_ColorBLACK, true, SK_ColorTRANSPARENT },
49 { 8, 13, SK_ColorBLACK, false }, 50 { 8, 13, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
50 { 0, 0, 0, false } } 51 { 0, 0, 0, false, SK_ColorTRANSPARENT } }
51 }, 52 },
52 53
53 // Offset overflow. 54 // Offset overflow.
54 { "One Two Three", 55 { "One Two Three",
55 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 }, 56 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 },
56 { PANGO_ATTR_BACKGROUND, 0, 4, 7 }, 57 { PANGO_ATTR_BACKGROUND, 0, 4, 7 },
57 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 20 }, 58 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 20 },
58 { 0, 0, 0, 0 } }, 59 { 0, 0, 0, 0 } },
59 { { 0, 3, SK_ColorBLACK, false }, 60 { { 0, 3, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
60 { 4, 7, SK_ColorBLACK, true }, 61 { 4, 7, SK_ColorBLACK, true, SK_ColorTRANSPARENT },
61 { 8, 13, SK_ColorBLACK, false }, 62 { 8, 13, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
62 { 0, 0, 0, false} } 63 { 0, 0, 0, false, SK_ColorTRANSPARENT} }
63 }, 64 },
64 65
65 // Error underline. 66 // Error underline.
66 { "One Two Three", 67 { "One Two Three",
67 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 }, 68 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 },
68 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_ERROR, 4, 7 }, 69 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_ERROR, 4, 7 },
69 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 13 }, 70 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 13 },
70 { 0, 0, 0, 0 } }, 71 { 0, 0, 0, 0 } },
71 { { 0, 3, SK_ColorBLACK, false }, 72 { { 0, 3, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
72 { 4, 7, SK_ColorRED, false }, 73 { 4, 7, SK_ColorRED, false, SK_ColorTRANSPARENT },
73 { 8, 13, SK_ColorBLACK, false }, 74 { 8, 13, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
74 { 0, 0, 0, false} } 75 { 0, 0, 0, false, SK_ColorTRANSPARENT} }
75 }, 76 },
76 77
77 // Default underline. 78 // Default underline.
78 { "One Two Three", 79 { "One Two Three",
79 { { 0, 0, 0, 0 } }, 80 { { 0, 0, 0, 0 } },
80 { { 0, 13, SK_ColorBLACK, false }, 81 { { 0, 13, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
81 { 0, 0, 0, false } } 82 { 0, 0, 0, false, SK_ColorTRANSPARENT } }
82 }, 83 },
83 84
84 // Unicode, including non-BMP characters: "123你好𠀀𠀁一丁 456" 85 // Unicode, including non-BMP characters: "123你好𠀀𠀁一丁 456"
85 { "123\xE4\xBD\xA0\xE5\xA5\xBD\xF0\xA0\x80\x80\xF0\xA0\x80\x81\xE4\xB8\x80" 86 { "123\xE4\xBD\xA0\xE5\xA5\xBD\xF0\xA0\x80\x80\xF0\xA0\x80\x81\xE4\xB8\x80"
86 "\xE4\xB8\x81 456", 87 "\xE4\xB8\x81 456",
87 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 }, 88 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 },
88 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 3, 5 }, 89 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 3, 5 },
89 { PANGO_ATTR_BACKGROUND, 0, 5, 7 }, 90 { PANGO_ATTR_BACKGROUND, 0, 5, 7 },
90 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 7, 13 }, 91 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 7, 13 },
91 { 0, 0, 0, 0 } }, 92 { 0, 0, 0, 0 } },
92 { { 0, 3, SK_ColorBLACK, false }, 93 { { 0, 3, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
93 { 3, 5, SK_ColorBLACK, false }, 94 { 3, 5, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
94 { 5, 9, SK_ColorBLACK, true }, 95 { 5, 9, SK_ColorBLACK, true, SK_ColorTRANSPARENT },
95 { 9, 15, SK_ColorBLACK, false }, 96 { 9, 15, SK_ColorBLACK, false, SK_ColorTRANSPARENT },
96 { 0, 0, 0, false } } 97 { 0, 0, 0, false, SK_ColorTRANSPARENT } }
97 }, 98 },
98 }; 99 };
99 100
100 void CompareUnderline(const Underline& a, 101 void CompareUnderline(const Underline& a,
101 const ui::CompositionUnderline& b) { 102 const ui::CompositionUnderline& b) {
102 EXPECT_EQ(a.start_offset, b.start_offset); 103 EXPECT_EQ(a.start_offset, b.start_offset);
103 EXPECT_EQ(a.end_offset, b.end_offset); 104 EXPECT_EQ(a.end_offset, b.end_offset);
104 EXPECT_EQ(a.color, b.color); 105 EXPECT_EQ(a.color, b.color);
105 EXPECT_EQ(a.thick, b.thick); 106 EXPECT_EQ(a.thick, b.thick);
107 EXPECT_EQ(a.background_color, b.background_color);
106 } 108 }
107 109
108 TEST(CompositionTextUtilPangoTest, ExtractCompositionText) { 110 TEST(CompositionTextUtilPangoTest, ExtractCompositionText) {
109 for (size_t i = 0; i < arraysize(kTestData); ++i) { 111 for (size_t i = 0; i < arraysize(kTestData); ++i) {
110 const char* text = kTestData[i].text; 112 const char* text = kTestData[i].text;
111 const AttributeInfo* attrs = kTestData[i].attrs; 113 const AttributeInfo* attrs = kTestData[i].attrs;
112 SCOPED_TRACE(testing::Message() << "Testing:" << i 114 SCOPED_TRACE(testing::Message() << "Testing:" << i
113 << " text:" << text); 115 << " text:" << text);
114 116
115 PangoAttrList* pango_attrs = pango_attr_list_new(); 117 PangoAttrList* pango_attrs = pango_attr_list_new();
(...skipping 25 matching lines...) Expand all
141 u < result.underlines.size(); ++u) { 143 u < result.underlines.size(); ++u) {
142 SCOPED_TRACE(testing::Message() << "Underline:" << u); 144 SCOPED_TRACE(testing::Message() << "Underline:" << u);
143 CompareUnderline(underlines[u], result.underlines[u]); 145 CompareUnderline(underlines[u], result.underlines[u]);
144 } 146 }
145 147
146 pango_attr_list_unref(pango_attrs); 148 pango_attr_list_unref(pango_attrs);
147 } 149 }
148 } 150 }
149 151
150 } // namespace 152 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698