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

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 // Offset overflow. 53 // Offset overflow.
54 { "One Two Three", 54 {"One Two Three",
55 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 }, 55 {{PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3},
56 { PANGO_ATTR_BACKGROUND, 0, 4, 7 }, 56 {PANGO_ATTR_BACKGROUND, 0, 4, 7},
57 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 20 }, 57 {PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 20},
58 { 0, 0, 0, 0 } }, 58 {0, 0, 0, 0}},
59 { { 0, 3, SK_ColorBLACK, false }, 59 {{0, 3, SK_ColorBLACK, false, SK_ColorTRANSPARENT},
60 { 4, 7, SK_ColorBLACK, true }, 60 {4, 7, SK_ColorBLACK, true, SK_ColorTRANSPARENT},
61 { 8, 13, SK_ColorBLACK, false }, 61 {8, 13, SK_ColorBLACK, false, SK_ColorTRANSPARENT},
62 { 0, 0, 0, false} } 62 {0, 0, 0, false, SK_ColorTRANSPARENT}}},
63 },
64 63
65 // Error underline. 64 // Error underline.
66 { "One Two Three", 65 {"One Two Three",
67 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 }, 66 {{PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3},
68 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_ERROR, 4, 7 }, 67 {PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_ERROR, 4, 7},
69 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 13 }, 68 {PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 8, 13},
70 { 0, 0, 0, 0 } }, 69 {0, 0, 0, 0}},
71 { { 0, 3, SK_ColorBLACK, false }, 70 {{0, 3, SK_ColorBLACK, false, SK_ColorTRANSPARENT},
72 { 4, 7, SK_ColorRED, false }, 71 {4, 7, SK_ColorRED, false, SK_ColorTRANSPARENT},
73 { 8, 13, SK_ColorBLACK, false }, 72 {8, 13, SK_ColorBLACK, false, SK_ColorTRANSPARENT},
74 { 0, 0, 0, false} } 73 {0, 0, 0, false, SK_ColorTRANSPARENT}}},
75 },
76 74
77 // Default underline. 75 // Default underline.
78 { "One Two Three", 76 {"One Two Three",
79 { { 0, 0, 0, 0 } }, 77 {{0, 0, 0, 0}},
80 { { 0, 13, SK_ColorBLACK, false }, 78 {{0, 13, SK_ColorBLACK, false, SK_ColorTRANSPARENT},
81 { 0, 0, 0, false } } 79 {0, 0, 0, false, SK_ColorTRANSPARENT}}},
82 },
83 80
84 // Unicode, including non-BMP characters: "123你好𠀀𠀁一丁 456" 81 // 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" 82 {"123\xE4\xBD\xA0\xE5\xA5\xBD\xF0\xA0\x80\x80\xF0\xA0\x80\x81\xE4\xB8\x80"
86 "\xE4\xB8\x81 456", 83 "\xE4\xB8\x81 456",
87 { { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3 }, 84 {{PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 0, 3},
88 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 3, 5 }, 85 {PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 3, 5},
89 { PANGO_ATTR_BACKGROUND, 0, 5, 7 }, 86 {PANGO_ATTR_BACKGROUND, 0, 5, 7},
90 { PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 7, 13 }, 87 {PANGO_ATTR_UNDERLINE, PANGO_UNDERLINE_SINGLE, 7, 13},
91 { 0, 0, 0, 0 } }, 88 {0, 0, 0, 0}},
92 { { 0, 3, SK_ColorBLACK, false }, 89 {{0, 3, SK_ColorBLACK, false, SK_ColorTRANSPARENT},
93 { 3, 5, SK_ColorBLACK, false }, 90 {3, 5, SK_ColorBLACK, false, SK_ColorTRANSPARENT},
94 { 5, 9, SK_ColorBLACK, true }, 91 {5, 9, SK_ColorBLACK, true, SK_ColorTRANSPARENT},
95 { 9, 15, SK_ColorBLACK, false }, 92 {9, 15, SK_ColorBLACK, false, SK_ColorTRANSPARENT},
96 { 0, 0, 0, false } } 93 {0, 0, 0, false, SK_ColorTRANSPARENT}}},
97 },
98 }; 94 };
99 95
100 void CompareUnderline(const Underline& a, 96 void CompareUnderline(const Underline& a,
101 const ui::CompositionUnderline& b) { 97 const ui::CompositionUnderline& b) {
102 EXPECT_EQ(a.start_offset, b.start_offset); 98 EXPECT_EQ(a.start_offset, b.start_offset);
103 EXPECT_EQ(a.end_offset, b.end_offset); 99 EXPECT_EQ(a.end_offset, b.end_offset);
104 EXPECT_EQ(a.color, b.color); 100 EXPECT_EQ(a.color, b.color);
105 EXPECT_EQ(a.thick, b.thick); 101 EXPECT_EQ(a.thick, b.thick);
102 EXPECT_EQ(a.background_color, b.background_color);
106 } 103 }
107 104
108 TEST(CompositionTextUtilPangoTest, ExtractCompositionText) { 105 TEST(CompositionTextUtilPangoTest, ExtractCompositionText) {
109 for (size_t i = 0; i < arraysize(kTestData); ++i) { 106 for (size_t i = 0; i < arraysize(kTestData); ++i) {
110 const char* text = kTestData[i].text; 107 const char* text = kTestData[i].text;
111 const AttributeInfo* attrs = kTestData[i].attrs; 108 const AttributeInfo* attrs = kTestData[i].attrs;
112 SCOPED_TRACE(testing::Message() << "Testing:" << i 109 SCOPED_TRACE(testing::Message() << "Testing:" << i
113 << " text:" << text); 110 << " text:" << text);
114 111
115 PangoAttrList* pango_attrs = pango_attr_list_new(); 112 PangoAttrList* pango_attrs = pango_attr_list_new();
(...skipping 25 matching lines...) Expand all
141 u < result.underlines.size(); ++u) { 138 u < result.underlines.size(); ++u) {
142 SCOPED_TRACE(testing::Message() << "Underline:" << u); 139 SCOPED_TRACE(testing::Message() << "Underline:" << u);
143 CompareUnderline(underlines[u], result.underlines[u]); 140 CompareUnderline(underlines[u], result.underlines[u]);
144 } 141 }
145 142
146 pango_attr_list_unref(pango_attrs); 143 pango_attr_list_unref(pango_attrs);
147 } 144 }
148 } 145 }
149 146
150 } // namespace 147 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698