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

Side by Side Diff: Source/WebKit/chromium/tests/GraphicsContextTest.cpp

Issue 16357011: Remove support for -webkit-color-correction (which we've never supported on (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: resolve merge conflicts, obey brace style changes Created 7 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 bitmap.allocPixels(); 69 bitmap.allocPixels();
70 bitmap.eraseColor(0); 70 bitmap.eraseColor(0);
71 SkCanvas canvas(bitmap); 71 SkCanvas canvas(bitmap);
72 72
73 GraphicsContext context(&canvas); 73 GraphicsContext context(&canvas);
74 context.setTrackOpaqueRegion(true); 74 context.setTrackOpaqueRegion(true);
75 75
76 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 76 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
77 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 77 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
78 78
79 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 79 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
80 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 80 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
81 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 81 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
82 82
83 context.fillRect(FloatRect(10, 10, 90, 90), alpha, ColorSpaceDeviceRGB, Comp ositeSourceOver); 83 context.fillRect(FloatRect(10, 10, 90, 90), alpha, CompositeSourceOver);
84 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 84 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
85 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 85 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
86 86
87 context.fillRect(FloatRect(99, 13, 10, 90), opaque, ColorSpaceDeviceRGB, Com positePlusLighter); 87 context.fillRect(FloatRect(99, 13, 10, 90), opaque, CompositePlusLighter);
88 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 88 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
89 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 89 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
90 90
91 context.fillRect(FloatRect(99, 13, 10, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceIn); 91 context.fillRect(FloatRect(99, 13, 10, 90), opaque, CompositeSourceIn);
92 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 92 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
93 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 93 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
94 94
95 context.fillRect(FloatRect(99, 13, 10, 90), alpha, ColorSpaceDeviceRGB, Comp ositeSourceIn); 95 context.fillRect(FloatRect(99, 13, 10, 90), alpha, CompositeSourceIn);
96 EXPECT_EQ_RECT(IntRect(10, 10, 89, 90), context.opaqueRegion().asRect()); 96 EXPECT_EQ_RECT(IntRect(10, 10, 89, 90), context.opaqueRegion().asRect());
97 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 97 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
98 98
99 context.fillRect(FloatRect(8, 8, 3, 90), opaque, ColorSpaceDeviceRGB, Compos iteSourceOut); 99 context.fillRect(FloatRect(8, 8, 3, 90), opaque, CompositeSourceOut);
100 EXPECT_EQ_RECT(IntRect(11, 10, 88, 90), context.opaqueRegion().asRect()); 100 EXPECT_EQ_RECT(IntRect(11, 10, 88, 90), context.opaqueRegion().asRect());
101 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 101 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
102 102
103 context.fillRect(FloatRect(30, 30, 290, 290), opaque, ColorSpaceDeviceRGB, C ompositeSourceOver); 103 context.fillRect(FloatRect(30, 30, 290, 290), opaque, CompositeSourceOver);
104 EXPECT_EQ_RECT(IntRect(30, 30, 290, 290), context.opaqueRegion().asRect()); 104 EXPECT_EQ_RECT(IntRect(30, 30, 290, 290), context.opaqueRegion().asRect());
105 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 105 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
106 106
107 context.fillRect(FloatRect(40, 20, 290, 50), opaque, ColorSpaceDeviceRGB, Co mpositeSourceOver); 107 context.fillRect(FloatRect(40, 20, 290, 50), opaque, CompositeSourceOver);
108 EXPECT_EQ_RECT(IntRect(30, 30, 290, 290), context.opaqueRegion().asRect()); 108 EXPECT_EQ_RECT(IntRect(30, 30, 290, 290), context.opaqueRegion().asRect());
109 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 109 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
110 110
111 context.fillRect(FloatRect(10, 10, 390, 50), opaque, ColorSpaceDeviceRGB, Co mpositeSourceIn); 111 context.fillRect(FloatRect(10, 10, 390, 50), opaque, CompositeSourceIn);
112 EXPECT_EQ_RECT(IntRect(30, 30, 290, 290), context.opaqueRegion().asRect()); 112 EXPECT_EQ_RECT(IntRect(30, 30, 290, 290), context.opaqueRegion().asRect());
113 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 113 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
114 114
115 context.fillRect(FloatRect(10, 10, 390, 50), alpha, ColorSpaceDeviceRGB); 115 context.fillRect(FloatRect(10, 10, 390, 50), alpha);
116 EXPECT_EQ_RECT(IntRect(30, 30, 290, 290), context.opaqueRegion().asRect()); 116 EXPECT_EQ_RECT(IntRect(30, 30, 290, 290), context.opaqueRegion().asRect());
117 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 117 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
118 118
119 context.fillRect(FloatRect(10, 10, 390, 50), opaque, ColorSpaceDeviceRGB, Co mpositeSourceOver); 119 context.fillRect(FloatRect(10, 10, 390, 50), opaque, CompositeSourceOver);
120 EXPECT_EQ_RECT(IntRect(30, 10, 290, 310), context.opaqueRegion().asRect()); 120 EXPECT_EQ_RECT(IntRect(30, 10, 290, 310), context.opaqueRegion().asRect());
121 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 121 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
122 } 122 }
123 123
124 TEST(PlatformContextSkiaTest, trackOpaqueClipTest) 124 TEST(PlatformContextSkiaTest, trackOpaqueClipTest)
125 { 125 {
126 SkBitmap bitmap; 126 SkBitmap bitmap;
127 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 127 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400);
128 bitmap.allocPixels(); 128 bitmap.allocPixels();
129 SkCanvas canvas(bitmap); 129 SkCanvas canvas(bitmap);
130 130
131 GraphicsContext context(&canvas); 131 GraphicsContext context(&canvas);
132 context.setTrackOpaqueRegion(true); 132 context.setTrackOpaqueRegion(true);
133 133
134 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 134 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
135 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 135 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
136 136
137 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 137 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
138 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 138 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
139 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 139 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
140 140
141 context.clearRect(FloatRect(10, 10, 90, 90)); 141 context.clearRect(FloatRect(10, 10, 90, 90));
142 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 142 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
143 143
144 context.save(); 144 context.save();
145 context.clip(FloatRect(0, 0, 10, 10)); 145 context.clip(FloatRect(0, 0, 10, 10));
146 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 146 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
147 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 147 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
148 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 148 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
149 context.restore(); 149 context.restore();
150 150
151 context.clearRect(FloatRect(10, 10, 90, 90)); 151 context.clearRect(FloatRect(10, 10, 90, 90));
152 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 152 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
153 153
154 context.save(); 154 context.save();
155 context.clip(FloatRect(20, 20, 10, 10)); 155 context.clip(FloatRect(20, 20, 10, 10));
156 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 156 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
157 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect()); 157 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect());
158 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 158 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
159 159
160 context.clearRect(FloatRect(10, 10, 90, 90)); 160 context.clearRect(FloatRect(10, 10, 90, 90));
161 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 161 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
162 162
163 // The intersection of the two clips becomes empty. 163 // The intersection of the two clips becomes empty.
164 context.clip(FloatRect(30, 20, 10, 10)); 164 context.clip(FloatRect(30, 20, 10, 10));
165 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 165 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
166 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 166 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
167 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 167 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
168 context.restore(); 168 context.restore();
169 169
170 context.clearRect(FloatRect(10, 10, 90, 90)); 170 context.clearRect(FloatRect(10, 10, 90, 90));
171 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 171 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
172 172
173 // The transform and the clip need to interact correctly (transform first) 173 // The transform and the clip need to interact correctly (transform first)
174 context.save(); 174 context.save();
175 context.translate(10, 10); 175 context.translate(10, 10);
176 context.clip(FloatRect(20, 20, 10, 10)); 176 context.clip(FloatRect(20, 20, 10, 10));
177 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 177 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
178 EXPECT_EQ_RECT(IntRect(30, 30, 10, 10), context.opaqueRegion().asRect()); 178 EXPECT_EQ_RECT(IntRect(30, 30, 10, 10), context.opaqueRegion().asRect());
179 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 179 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
180 context.restore(); 180 context.restore();
181 181
182 context.clearRect(FloatRect(10, 10, 90, 90)); 182 context.clearRect(FloatRect(10, 10, 90, 90));
183 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 183 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
184 184
185 // The transform and the clip need to interact correctly (clip first) 185 // The transform and the clip need to interact correctly (clip first)
186 context.save(); 186 context.save();
187 context.clip(FloatRect(20, 20, 10, 10)); 187 context.clip(FloatRect(20, 20, 10, 10));
188 context.translate(10, 10); 188 context.translate(10, 10);
189 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 189 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
190 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect()); 190 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect());
191 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 191 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
192 context.restore(); 192 context.restore();
193 193
194 context.clearRect(FloatRect(10, 10, 90, 90)); 194 context.clearRect(FloatRect(10, 10, 90, 90));
195 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 195 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
196 196
197 Path path; 197 Path path;
198 path.moveTo(FloatPoint(0, 0)); 198 path.moveTo(FloatPoint(0, 0));
199 path.addLineTo(FloatPoint(100, 0)); 199 path.addLineTo(FloatPoint(100, 0));
200 200
201 // Non-rectangular clips just cause the paint to be considered non-opaque. 201 // Non-rectangular clips just cause the paint to be considered non-opaque.
202 context.save(); 202 context.save();
203 context.clipPath(path, RULE_EVENODD); 203 context.clipPath(path, RULE_EVENODD);
204 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 204 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
205 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 205 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
206 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 206 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
207 context.restore(); 207 context.restore();
208 208
209 // Another non-rectangular clip. 209 // Another non-rectangular clip.
210 context.save(); 210 context.save();
211 context.clip(IntRect(30, 30, 20, 20)); 211 context.clip(IntRect(30, 30, 20, 20));
212 context.clipOut(IntRect(30, 30, 10, 10)); 212 context.clipOut(IntRect(30, 30, 10, 10));
213 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 213 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
214 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 214 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
215 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 215 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
216 context.restore(); 216 context.restore();
217 217
218 OwnPtr<ImageBuffer> alphaImage = ImageBuffer::create(IntSize(100, 100)); 218 OwnPtr<ImageBuffer> alphaImage = ImageBuffer::create(IntSize(100, 100));
219 alphaImage->context()->fillRect(IntRect(0, 0, 100, 100), alpha, ColorSpaceDe viceRGB); 219 alphaImage->context()->fillRect(IntRect(0, 0, 100, 100), alpha);
220 220
221 // Clipping with a non-opaque Image (there is no way to mark an ImageBuffer as opaque today). 221 // Clipping with a non-opaque Image (there is no way to mark an ImageBuffer as opaque today).
222 context.save(); 222 context.save();
223 context.clipToImageBuffer(alphaImage.get(), FloatRect(30, 30, 10, 10)); 223 context.clipToImageBuffer(alphaImage.get(), FloatRect(30, 30, 10, 10));
224 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 224 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
225 context.restore(); 225 context.restore();
226 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 226 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
227 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 227 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
228 } 228 }
229 229
230 TEST(PlatformContextSkiaTest, trackImageMask) 230 TEST(PlatformContextSkiaTest, trackImageMask)
231 { 231 {
232 SkBitmap bitmap; 232 SkBitmap bitmap;
233 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 233 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400);
234 bitmap.allocPixels(); 234 bitmap.allocPixels();
235 bitmap.eraseColor(0); 235 bitmap.eraseColor(0);
236 SkCanvas canvas(bitmap); 236 SkCanvas canvas(bitmap);
237 237
238 GraphicsContext context(&canvas); 238 GraphicsContext context(&canvas);
239 context.setTrackOpaqueRegion(true); 239 context.setTrackOpaqueRegion(true);
240 240
241 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 241 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
242 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 242 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
243 243
244 // Image masks are done by drawing a bitmap into a transparency layer that u ses DstIn to mask 244 // Image masks are done by drawing a bitmap into a transparency layer that u ses DstIn to mask
245 // out a transparency layer below that is filled with the mask color. In the end this should 245 // out a transparency layer below that is filled with the mask color. In the end this should
246 // not be marked opaque. 246 // not be marked opaque.
247 247
248 context.setCompositeOperation(CompositeSourceOver); 248 context.setCompositeOperation(CompositeSourceOver);
249 context.beginTransparencyLayer(1); 249 context.beginTransparencyLayer(1);
250 context.fillRect(FloatRect(10, 10, 10, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 250 context.fillRect(FloatRect(10, 10, 10, 10), opaque, CompositeSourceOver);
251 251
252 context.setCompositeOperation(CompositeDestinationIn); 252 context.setCompositeOperation(CompositeDestinationIn);
253 context.beginTransparencyLayer(1); 253 context.beginTransparencyLayer(1);
254 254
255 OwnPtr<ImageBuffer> alphaImage = ImageBuffer::create(IntSize(100, 100)); 255 OwnPtr<ImageBuffer> alphaImage = ImageBuffer::create(IntSize(100, 100));
256 alphaImage->context()->fillRect(IntRect(0, 0, 100, 100), alpha, ColorSpaceDe viceRGB); 256 alphaImage->context()->fillRect(IntRect(0, 0, 100, 100), alpha);
257 257
258 context.setCompositeOperation(CompositeSourceOver); 258 context.setCompositeOperation(CompositeSourceOver);
259 context.drawImageBuffer(alphaImage.get(), ColorSpaceDeviceRGB, FloatRect(10, 10, 10, 10)); 259 context.drawImageBuffer(alphaImage.get(), FloatRect(10, 10, 10, 10));
260 260
261 context.endTransparencyLayer(); 261 context.endTransparencyLayer();
262 context.endTransparencyLayer(); 262 context.endTransparencyLayer();
263 263
264 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 264 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
265 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 265 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
266 } 266 }
267 267
268 TEST(PlatformContextSkiaTest, trackImageMaskWithOpaqueRect) 268 TEST(PlatformContextSkiaTest, trackImageMaskWithOpaqueRect)
269 { 269 {
270 SkBitmap bitmap; 270 SkBitmap bitmap;
271 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 271 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400);
272 bitmap.allocPixels(); 272 bitmap.allocPixels();
273 bitmap.eraseColor(0); 273 bitmap.eraseColor(0);
274 SkCanvas canvas(bitmap); 274 SkCanvas canvas(bitmap);
275 275
276 GraphicsContext context(&canvas); 276 GraphicsContext context(&canvas);
277 context.setTrackOpaqueRegion(true); 277 context.setTrackOpaqueRegion(true);
278 278
279 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 279 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
280 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 280 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
281 281
282 // Image masks are done by drawing a bitmap into a transparency layer that u ses DstIn to mask 282 // Image masks are done by drawing a bitmap into a transparency layer that u ses DstIn to mask
283 // out a transparency layer below that is filled with the mask color. In the end this should 283 // out a transparency layer below that is filled with the mask color. In the end this should
284 // not be marked opaque. 284 // not be marked opaque.
285 285
286 context.setCompositeOperation(CompositeSourceOver); 286 context.setCompositeOperation(CompositeSourceOver);
287 context.beginTransparencyLayer(1); 287 context.beginTransparencyLayer(1);
288 context.fillRect(FloatRect(10, 10, 10, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 288 context.fillRect(FloatRect(10, 10, 10, 10), opaque, CompositeSourceOver);
289 289
290 context.setCompositeOperation(CompositeDestinationIn); 290 context.setCompositeOperation(CompositeDestinationIn);
291 context.beginTransparencyLayer(1); 291 context.beginTransparencyLayer(1);
292 292
293 OwnPtr<ImageBuffer> alphaImage = ImageBuffer::create(IntSize(100, 100)); 293 OwnPtr<ImageBuffer> alphaImage = ImageBuffer::create(IntSize(100, 100));
294 alphaImage->context()->fillRect(IntRect(0, 0, 100, 100), alpha, ColorSpaceDe viceRGB); 294 alphaImage->context()->fillRect(IntRect(0, 0, 100, 100), alpha);
295 295
296 context.setCompositeOperation(CompositeSourceOver); 296 context.setCompositeOperation(CompositeSourceOver);
297 context.drawImageBuffer(alphaImage.get(), ColorSpaceDeviceRGB, FloatRect(10, 10, 10, 10)); 297 context.drawImageBuffer(alphaImage.get(), FloatRect(10, 10, 10, 10));
298 298
299 // We can't have an opaque mask actually, but we can pretend here like it wo uld look if we did. 299 // We can't have an opaque mask actually, but we can pretend here like it wo uld look if we did.
300 context.fillRect(FloatRect(12, 12, 3, 3), opaque, ColorSpaceDeviceRGB, Compo siteSourceOver); 300 context.fillRect(FloatRect(12, 12, 3, 3), opaque, CompositeSourceOver);
301 301
302 context.endTransparencyLayer(); 302 context.endTransparencyLayer();
303 context.endTransparencyLayer(); 303 context.endTransparencyLayer();
304 304
305 EXPECT_EQ_RECT(IntRect(12, 12, 3, 3), context.opaqueRegion().asRect()); 305 EXPECT_EQ_RECT(IntRect(12, 12, 3, 3), context.opaqueRegion().asRect());
306 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 306 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
307 } 307 }
308 308
309 TEST(PlatformContextSkiaTest, trackOpaqueJoinTest) 309 TEST(PlatformContextSkiaTest, trackOpaqueJoinTest)
310 { 310 {
311 SkBitmap bitmap; 311 SkBitmap bitmap;
312 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 312 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400);
313 bitmap.allocPixels(); 313 bitmap.allocPixels();
314 SkCanvas canvas(bitmap); 314 SkCanvas canvas(bitmap);
315 315
316 GraphicsContext context(&canvas); 316 GraphicsContext context(&canvas);
317 context.setTrackOpaqueRegion(true); 317 context.setTrackOpaqueRegion(true);
318 318
319 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 319 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
320 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 320 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
321 321
322 context.fillRect(FloatRect(20, 20, 10, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 322 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver);
323 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect()); 323 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect());
324 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 324 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
325 325
326 // Doesn't join 326 // Doesn't join
327 context.fillRect(FloatRect(31, 20, 10, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 327 context.fillRect(FloatRect(31, 20, 10, 10), opaque, CompositeSourceOver);
328 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect()); 328 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect());
329 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 329 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
330 330
331 // Does join 331 // Does join
332 context.fillRect(FloatRect(30, 20, 10, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 332 context.fillRect(FloatRect(30, 20, 10, 10), opaque, CompositeSourceOver);
333 EXPECT_EQ_RECT(IntRect(20, 20, 20, 10), context.opaqueRegion().asRect()); 333 EXPECT_EQ_RECT(IntRect(20, 20, 20, 10), context.opaqueRegion().asRect());
334 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 334 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
335 335
336 // Doesn't join 336 // Doesn't join
337 context.fillRect(FloatRect(20, 31, 20, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 337 context.fillRect(FloatRect(20, 31, 20, 10), opaque, CompositeSourceOver);
338 EXPECT_EQ_RECT(IntRect(20, 20, 20, 10), context.opaqueRegion().asRect()); 338 EXPECT_EQ_RECT(IntRect(20, 20, 20, 10), context.opaqueRegion().asRect());
339 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 339 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
340 340
341 // Does join 341 // Does join
342 context.fillRect(FloatRect(20, 30, 20, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 342 context.fillRect(FloatRect(20, 30, 20, 10), opaque, CompositeSourceOver);
343 EXPECT_EQ_RECT(IntRect(20, 20, 20, 20), context.opaqueRegion().asRect()); 343 EXPECT_EQ_RECT(IntRect(20, 20, 20, 20), context.opaqueRegion().asRect());
344 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 344 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
345 345
346 // Doesn't join 346 // Doesn't join
347 context.fillRect(FloatRect(9, 20, 10, 20), opaque, ColorSpaceDeviceRGB, Comp ositeSourceOver); 347 context.fillRect(FloatRect(9, 20, 10, 20), opaque, CompositeSourceOver);
348 EXPECT_EQ_RECT(IntRect(20, 20, 20, 20), context.opaqueRegion().asRect()); 348 EXPECT_EQ_RECT(IntRect(20, 20, 20, 20), context.opaqueRegion().asRect());
349 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 349 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
350 350
351 // Does join 351 // Does join
352 context.fillRect(FloatRect(10, 20, 10, 20), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 352 context.fillRect(FloatRect(10, 20, 10, 20), opaque, CompositeSourceOver);
353 EXPECT_EQ_RECT(IntRect(10, 20, 30, 20), context.opaqueRegion().asRect()); 353 EXPECT_EQ_RECT(IntRect(10, 20, 30, 20), context.opaqueRegion().asRect());
354 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 354 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
355 355
356 // Doesn't join 356 // Doesn't join
357 context.fillRect(FloatRect(10, 9, 30, 10), opaque, ColorSpaceDeviceRGB, Comp ositeSourceOver); 357 context.fillRect(FloatRect(10, 9, 30, 10), opaque, CompositeSourceOver);
358 EXPECT_EQ_RECT(IntRect(10, 20, 30, 20), context.opaqueRegion().asRect()); 358 EXPECT_EQ_RECT(IntRect(10, 20, 30, 20), context.opaqueRegion().asRect());
359 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 359 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
360 360
361 // Does join 361 // Does join
362 context.fillRect(FloatRect(10, 10, 30, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 362 context.fillRect(FloatRect(10, 10, 30, 10), opaque, CompositeSourceOver);
363 EXPECT_EQ_RECT(IntRect(10, 10, 30, 30), context.opaqueRegion().asRect()); 363 EXPECT_EQ_RECT(IntRect(10, 10, 30, 30), context.opaqueRegion().asRect());
364 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 364 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
365 } 365 }
366 366
367 TEST(PlatformContextSkiaTest, trackOpaqueLineTest) 367 TEST(PlatformContextSkiaTest, trackOpaqueLineTest)
368 { 368 {
369 SkBitmap bitmap; 369 SkBitmap bitmap;
370 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 370 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
371 bitmap.allocPixels(); 371 bitmap.allocPixels();
372 bitmap.eraseColor(0); 372 bitmap.eraseColor(0);
373 SkCanvas canvas(bitmap); 373 SkCanvas canvas(bitmap);
374 374
375 GraphicsContext context(&canvas); 375 GraphicsContext context(&canvas);
376 context.setTrackOpaqueRegion(true); 376 context.setTrackOpaqueRegion(true);
377 377
378 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 378 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
379 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 379 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
380 380
381 context.setShouldAntialias(false); 381 context.setShouldAntialias(false);
382 context.setMiterLimit(0); 382 context.setMiterLimit(0);
383 context.setStrokeThickness(4); 383 context.setStrokeThickness(4);
384 context.setLineCap(SquareCap); 384 context.setLineCap(SquareCap);
385 context.setStrokeStyle(SolidStroke); 385 context.setStrokeStyle(SolidStroke);
386 context.setCompositeOperation(CompositeSourceOver); 386 context.setCompositeOperation(CompositeSourceOver);
387 387
388 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 388 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
389 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 389 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
390 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 390 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
391 391
392 context.setCompositeOperation(CompositeSourceIn); 392 context.setCompositeOperation(CompositeSourceIn);
393 393
394 context.save(); 394 context.save();
395 context.setStrokeColor(alpha, ColorSpaceDeviceRGB); 395 context.setStrokeColor(alpha);
396 context.drawLine(IntPoint(0, 0), IntPoint(100, 0)); 396 context.drawLine(IntPoint(0, 0), IntPoint(100, 0));
397 context.restore(); 397 context.restore();
398 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 398 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
399 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 399 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
400 400
401 context.save(); 401 context.save();
402 context.setStrokeColor(opaque, ColorSpaceDeviceRGB); 402 context.setStrokeColor(opaque);
403 context.drawLine(IntPoint(0, 10), IntPoint(100, 10)); 403 context.drawLine(IntPoint(0, 10), IntPoint(100, 10));
404 context.restore(); 404 context.restore();
405 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 405 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
406 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 406 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
407 407
408 context.save(); 408 context.save();
409 context.setStrokeColor(alpha, ColorSpaceDeviceRGB); 409 context.setStrokeColor(alpha);
410 context.drawLine(IntPoint(0, 10), IntPoint(100, 10)); 410 context.drawLine(IntPoint(0, 10), IntPoint(100, 10));
411 context.restore(); 411 context.restore();
412 EXPECT_EQ_RECT(IntRect(10, 13, 90, 87), context.opaqueRegion().asRect()); 412 EXPECT_EQ_RECT(IntRect(10, 13, 90, 87), context.opaqueRegion().asRect());
413 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 413 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
414 414
415 context.save(); 415 context.save();
416 context.setStrokeColor(alpha, ColorSpaceDeviceRGB); 416 context.setStrokeColor(alpha);
417 context.drawLine(IntPoint(0, 11), IntPoint(100, 11)); 417 context.drawLine(IntPoint(0, 11), IntPoint(100, 11));
418 context.restore(); 418 context.restore();
419 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect()); 419 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect());
420 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 420 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
421 421
422 context.setShouldAntialias(true); 422 context.setShouldAntialias(true);
423 context.setCompositeOperation(CompositeSourceOver); 423 context.setCompositeOperation(CompositeSourceOver);
424 424
425 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 425 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
426 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 426 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
427 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 427 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
428 428
429 context.setCompositeOperation(CompositeSourceIn); 429 context.setCompositeOperation(CompositeSourceIn);
430 430
431 context.save(); 431 context.save();
432 context.setStrokeColor(alpha, ColorSpaceDeviceRGB); 432 context.setStrokeColor(alpha);
433 context.drawLine(IntPoint(0, 0), IntPoint(100, 0)); 433 context.drawLine(IntPoint(0, 0), IntPoint(100, 0));
434 context.restore(); 434 context.restore();
435 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 435 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
436 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 436 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
437 437
438 context.setShouldAntialias(false); 438 context.setShouldAntialias(false);
439 context.save(); 439 context.save();
440 context.setStrokeColor(opaque, ColorSpaceDeviceRGB); 440 context.setStrokeColor(opaque);
441 context.drawLine(IntPoint(0, 10), IntPoint(100, 10)); 441 context.drawLine(IntPoint(0, 10), IntPoint(100, 10));
442 context.restore(); 442 context.restore();
443 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 443 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
444 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 444 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
445 445
446 context.setShouldAntialias(true); 446 context.setShouldAntialias(true);
447 context.save(); 447 context.save();
448 context.setStrokeColor(opaque, ColorSpaceDeviceRGB); 448 context.setStrokeColor(opaque);
449 context.drawLine(IntPoint(0, 10), IntPoint(100, 10)); 449 context.drawLine(IntPoint(0, 10), IntPoint(100, 10));
450 context.restore(); 450 context.restore();
451 EXPECT_EQ_RECT(IntRect(10, 13, 90, 87), context.opaqueRegion().asRect()); 451 EXPECT_EQ_RECT(IntRect(10, 13, 90, 87), context.opaqueRegion().asRect());
452 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 452 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
453 453
454 context.save(); 454 context.save();
455 context.setStrokeColor(alpha, ColorSpaceDeviceRGB); 455 context.setStrokeColor(alpha);
456 context.drawLine(IntPoint(0, 11), IntPoint(100, 11)); 456 context.drawLine(IntPoint(0, 11), IntPoint(100, 11));
457 context.restore(); 457 context.restore();
458 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect()); 458 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect());
459 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 459 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
460 } 460 }
461 461
462 TEST(PlatformContextSkiaTest, trackOpaquePathTest) 462 TEST(PlatformContextSkiaTest, trackOpaquePathTest)
463 { 463 {
464 SkBitmap bitmap; 464 SkBitmap bitmap;
465 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 465 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
466 bitmap.allocPixels(); 466 bitmap.allocPixels();
467 SkCanvas canvas(bitmap); 467 SkCanvas canvas(bitmap);
468 468
469 GraphicsContext context(&canvas); 469 GraphicsContext context(&canvas);
470 context.setTrackOpaqueRegion(true); 470 context.setTrackOpaqueRegion(true);
471 471
472 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 472 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
473 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 473 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
474 474
475 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 475 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
476 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 476 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
477 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 477 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
478 478
479 context.setShouldAntialias(false); 479 context.setShouldAntialias(false);
480 context.setMiterLimit(1); 480 context.setMiterLimit(1);
481 context.setStrokeThickness(5); 481 context.setStrokeThickness(5);
482 context.setLineCap(SquareCap); 482 context.setLineCap(SquareCap);
483 context.setStrokeStyle(SolidStroke); 483 context.setStrokeStyle(SolidStroke);
484 context.setCompositeOperation(CompositeSourceIn); 484 context.setCompositeOperation(CompositeSourceIn);
485 485
486 Path path; 486 Path path;
487 487
488 context.setFillColor(alpha, ColorSpaceDeviceRGB); 488 context.setFillColor(alpha);
489 path.moveTo(FloatPoint(0, 0)); 489 path.moveTo(FloatPoint(0, 0));
490 path.addLineTo(FloatPoint(100, 0)); 490 path.addLineTo(FloatPoint(100, 0));
491 context.fillPath(path); 491 context.fillPath(path);
492 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 492 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
493 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 493 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
494 path.clear(); 494 path.clear();
495 495
496 context.setFillColor(opaque, ColorSpaceDeviceRGB); 496 context.setFillColor(opaque);
497 path.moveTo(FloatPoint(0, 10)); 497 path.moveTo(FloatPoint(0, 10));
498 path.addLineTo(FloatPoint(100, 13)); 498 path.addLineTo(FloatPoint(100, 13));
499 context.fillPath(path); 499 context.fillPath(path);
500 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 500 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
501 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 501 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
502 path.clear(); 502 path.clear();
503 503
504 context.setFillColor(alpha, ColorSpaceDeviceRGB); 504 context.setFillColor(alpha);
505 path.moveTo(FloatPoint(0, 10)); 505 path.moveTo(FloatPoint(0, 10));
506 path.addLineTo(FloatPoint(100, 13)); 506 path.addLineTo(FloatPoint(100, 13));
507 context.fillPath(path); 507 context.fillPath(path);
508 EXPECT_EQ_RECT(IntRect(10, 13, 90, 87), context.opaqueRegion().asRect()); 508 EXPECT_EQ_RECT(IntRect(10, 13, 90, 87), context.opaqueRegion().asRect());
509 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 509 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
510 path.clear(); 510 path.clear();
511 511
512 context.setFillColor(alpha, ColorSpaceDeviceRGB); 512 context.setFillColor(alpha);
513 path.moveTo(FloatPoint(0, 14)); 513 path.moveTo(FloatPoint(0, 14));
514 path.addLineTo(FloatPoint(100, 10)); 514 path.addLineTo(FloatPoint(100, 10));
515 context.fillPath(path); 515 context.fillPath(path);
516 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect()); 516 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect());
517 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 517 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
518 path.clear(); 518 path.clear();
519 } 519 }
520 520
521 TEST(PlatformContextSkiaTest, trackOpaqueImageTest) 521 TEST(PlatformContextSkiaTest, trackOpaqueImageTest)
522 { 522 {
(...skipping 23 matching lines...) Expand all
546 alphaBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); 546 alphaBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
547 alphaBitmap.allocPixels(); 547 alphaBitmap.allocPixels();
548 548
549 alphaBitmap.setIsOpaque(false); 549 alphaBitmap.setIsOpaque(false);
550 for (int y = 0; y < alphaBitmap.height(); ++y) 550 for (int y = 0; y < alphaBitmap.height(); ++y)
551 for (int x = 0; x < alphaBitmap.width(); ++x) 551 for (int x = 0; x < alphaBitmap.width(); ++x)
552 *alphaBitmap.getAddr32(x, y) = 0x00000000; 552 *alphaBitmap.getAddr32(x, y) = 0x00000000;
553 RefPtr<BitmapImage> alphaImage = BitmapImage::create(NativeImageSkia::create (alphaBitmap)); 553 RefPtr<BitmapImage> alphaImage = BitmapImage::create(NativeImageSkia::create (alphaBitmap));
554 EXPECT_FALSE(alphaImage->currentFrameKnownToBeOpaque()); 554 EXPECT_FALSE(alphaImage->currentFrameKnownToBeOpaque());
555 555
556 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 556 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
557 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 557 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
558 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 558 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
559 559
560 context.drawImage(opaqueImage.get(), ColorSpaceDeviceRGB, IntPoint(0, 0)); 560 context.drawImage(opaqueImage.get(), IntPoint(0, 0));
561 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 561 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
562 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 562 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
563 context.drawImage(alphaImage.get(), ColorSpaceDeviceRGB, IntPoint(0, 0)); 563 context.drawImage(alphaImage.get(), IntPoint(0, 0));
564 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 564 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
565 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 565 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
566 566
567 context.drawImage(opaqueImage.get(), ColorSpaceDeviceRGB, IntPoint(5, 5)); 567 context.drawImage(opaqueImage.get(), IntPoint(5, 5));
568 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 568 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
569 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 569 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
570 context.drawImage(alphaImage.get(), ColorSpaceDeviceRGB, IntPoint(5, 5)); 570 context.drawImage(alphaImage.get(), IntPoint(5, 5));
571 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 571 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
572 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 572 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
573 573
574 context.drawImage(opaqueImage.get(), ColorSpaceDeviceRGB, IntPoint(10, 10)); 574 context.drawImage(opaqueImage.get(), IntPoint(10, 10));
575 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 575 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
576 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 576 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
577 context.drawImage(alphaImage.get(), ColorSpaceDeviceRGB, IntPoint(10, 10)); 577 context.drawImage(alphaImage.get(), IntPoint(10, 10));
578 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 578 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
579 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 579 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
580 580
581 context.drawImage(alphaImage.get(), ColorSpaceDeviceRGB, IntPoint(20, 10), C ompositeSourceIn); 581 context.drawImage(alphaImage.get(), IntPoint(20, 10), CompositeSourceIn);
582 EXPECT_EQ_RECT(IntRect(10, 20, 90, 80), context.opaqueRegion().asRect()); 582 EXPECT_EQ_RECT(IntRect(10, 20, 90, 80), context.opaqueRegion().asRect());
583 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 583 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
584 584
585 context.save(); 585 context.save();
586 context.setAlpha(0.5); 586 context.setAlpha(0.5);
587 context.drawImage(opaqueImage.get(), ColorSpaceDeviceRGB, IntPoint(25, 15), CompositeSourceIn); 587 context.drawImage(opaqueImage.get(), IntPoint(25, 15), CompositeSourceIn);
588 context.restore(); 588 context.restore();
589 EXPECT_EQ_RECT(IntRect(10, 25, 90, 75), context.opaqueRegion().asRect()); 589 EXPECT_EQ_RECT(IntRect(10, 25, 90, 75), context.opaqueRegion().asRect());
590 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 590 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
591 591
592 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 592 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
593 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 593 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
594 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 594 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
595 595
596 context.drawImage(alphaImage.get(), ColorSpaceDeviceRGB, IntPoint(10, 20), C ompositeSourceIn); 596 context.drawImage(alphaImage.get(), IntPoint(10, 20), CompositeSourceIn);
597 EXPECT_EQ_RECT(IntRect(20, 10, 80, 90), context.opaqueRegion().asRect()); 597 EXPECT_EQ_RECT(IntRect(20, 10, 80, 90), context.opaqueRegion().asRect());
598 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 598 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
599 599
600 context.save(); 600 context.save();
601 context.setAlpha(0.5); 601 context.setAlpha(0.5);
602 context.drawImage(opaqueImage.get(), ColorSpaceDeviceRGB, IntPoint(15, 25), CompositeSourceIn); 602 context.drawImage(opaqueImage.get(), IntPoint(15, 25), CompositeSourceIn);
603 context.restore(); 603 context.restore();
604 EXPECT_EQ_RECT(IntRect(25, 10, 75, 90), context.opaqueRegion().asRect()); 604 EXPECT_EQ_RECT(IntRect(25, 10, 75, 90), context.opaqueRegion().asRect());
605 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 605 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
606 } 606 }
607 607
608 TEST(PlatformContextSkiaTest, trackOpaqueOvalTest) 608 TEST(PlatformContextSkiaTest, trackOpaqueOvalTest)
609 { 609 {
610 SkBitmap bitmap; 610 SkBitmap bitmap;
611 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 611 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
612 bitmap.allocPixels(); 612 bitmap.allocPixels();
613 bitmap.eraseColor(0); 613 bitmap.eraseColor(0);
614 SkCanvas canvas(bitmap); 614 SkCanvas canvas(bitmap);
615 615
616 GraphicsContext context(&canvas); 616 GraphicsContext context(&canvas);
617 context.setTrackOpaqueRegion(true); 617 context.setTrackOpaqueRegion(true);
618 618
619 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 619 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
620 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 620 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
621 621
622 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 622 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
623 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 623 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
624 624
625 context.drawEllipse(IntRect(10, 10, 90, 90)); 625 context.drawEllipse(IntRect(10, 10, 90, 90));
626 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 626 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
627 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 627 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
628 628
629 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 629 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
630 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 630 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
631 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 631 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
632 632
633 context.setCompositeOperation(CompositeSourceIn); 633 context.setCompositeOperation(CompositeSourceIn);
634 634
635 context.setShouldAntialias(false); 635 context.setShouldAntialias(false);
636 636
637 context.setFillColor(opaque, ColorSpaceDeviceRGB); 637 context.setFillColor(opaque);
638 context.drawEllipse(IntRect(10, 10, 50, 30)); 638 context.drawEllipse(IntRect(10, 10, 50, 30));
639 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 639 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
640 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 640 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
641 641
642 context.setFillColor(alpha, ColorSpaceDeviceRGB); 642 context.setFillColor(alpha);
643 context.drawEllipse(IntRect(10, 10, 30, 50)); 643 context.drawEllipse(IntRect(10, 10, 30, 50));
644 EXPECT_EQ_RECT(IntRect(40, 10, 60, 90), context.opaqueRegion().asRect()); 644 EXPECT_EQ_RECT(IntRect(40, 10, 60, 90), context.opaqueRegion().asRect());
645 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 645 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
646 646
647 context.setShouldAntialias(true); 647 context.setShouldAntialias(true);
648 648
649 context.setFillColor(opaque, ColorSpaceDeviceRGB); 649 context.setFillColor(opaque);
650 context.drawEllipse(IntRect(10, 10, 50, 30)); 650 context.drawEllipse(IntRect(10, 10, 50, 30));
651 EXPECT_EQ_RECT(IntRect(40, 41, 60, 59), context.opaqueRegion().asRect()); 651 EXPECT_EQ_RECT(IntRect(40, 41, 60, 59), context.opaqueRegion().asRect());
652 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 652 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
653 653
654 context.setFillColor(alpha, ColorSpaceDeviceRGB); 654 context.setFillColor(alpha);
655 context.drawEllipse(IntRect(20, 10, 30, 50)); 655 context.drawEllipse(IntRect(20, 10, 30, 50));
656 EXPECT_EQ_RECT(IntRect(51, 41, 49, 59), context.opaqueRegion().asRect()); 656 EXPECT_EQ_RECT(IntRect(51, 41, 49, 59), context.opaqueRegion().asRect());
657 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 657 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
658 } 658 }
659 659
660 TEST(PlatformContextSkiaTest, trackOpaqueRoundedRectTest) 660 TEST(PlatformContextSkiaTest, trackOpaqueRoundedRectTest)
661 { 661 {
662 SkBitmap bitmap; 662 SkBitmap bitmap;
663 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 663 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
664 bitmap.allocPixels(); 664 bitmap.allocPixels();
665 bitmap.eraseColor(0); 665 bitmap.eraseColor(0);
666 SkCanvas canvas(bitmap); 666 SkCanvas canvas(bitmap);
667 667
668 GraphicsContext context(&canvas); 668 GraphicsContext context(&canvas);
669 context.setTrackOpaqueRegion(true); 669 context.setTrackOpaqueRegion(true);
670 670
671 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 671 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
672 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 672 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
673 IntSize radii(10, 10); 673 IntSize radii(10, 10);
674 674
675 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 675 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
676 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 676 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
677 677
678 context.fillRoundedRect(IntRect(10, 10, 90, 90), radii, radii, radii, radii, opaque, ColorSpaceDeviceRGB); 678 context.fillRoundedRect(IntRect(10, 10, 90, 90), radii, radii, radii, radii, opaque);
679 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 679 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
680 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 680 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
681 681
682 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 682 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
683 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 683 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
684 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 684 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
685 685
686 context.setCompositeOperation(CompositeSourceIn); 686 context.setCompositeOperation(CompositeSourceIn);
687 context.setShouldAntialias(false); 687 context.setShouldAntialias(false);
688 688
689 context.fillRoundedRect(IntRect(10, 10, 50, 30), radii, radii, radii, radii, opaque, ColorSpaceDeviceRGB); 689 context.fillRoundedRect(IntRect(10, 10, 50, 30), radii, radii, radii, radii, opaque);
690 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 690 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
691 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 691 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
692 692
693 context.fillRoundedRect(IntRect(10, 10, 30, 50), radii, radii, radii, radii, alpha, ColorSpaceDeviceRGB); 693 context.fillRoundedRect(IntRect(10, 10, 30, 50), radii, radii, radii, radii, alpha);
694 EXPECT_EQ_RECT(IntRect(40, 10, 60, 90), context.opaqueRegion().asRect()); 694 EXPECT_EQ_RECT(IntRect(40, 10, 60, 90), context.opaqueRegion().asRect());
695 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 695 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
696 696
697 context.fillRoundedRect(IntRect(10, 0, 50, 30), radii, radii, radii, radii, alpha, ColorSpaceDeviceRGB); 697 context.fillRoundedRect(IntRect(10, 0, 50, 30), radii, radii, radii, radii, alpha);
698 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect()); 698 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect());
699 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 699 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
700 700
701 context.fillRoundedRect(IntRect(30, 0, 70, 50), radii, radii, radii, radii, opaque, ColorSpaceDeviceRGB); 701 context.fillRoundedRect(IntRect(30, 0, 70, 50), radii, radii, radii, radii, opaque);
702 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect()); 702 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect());
703 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 703 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
704 } 704 }
705 705
706 TEST(PlatformContextSkiaTest, trackOpaqueTextTest) 706 TEST(PlatformContextSkiaTest, trackOpaqueTextTest)
707 { 707 {
708 int width = 200, height = 200; 708 int width = 200, height = 200;
709 SkBitmap bitmap; 709 SkBitmap bitmap;
710 bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height); 710 bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height);
711 bitmap.allocPixels(); 711 bitmap.allocPixels();
(...skipping 13 matching lines...) Expand all
725 SkPaint alphaPaint; 725 SkPaint alphaPaint;
726 alphaPaint.setColor(alpha.rgb()); 726 alphaPaint.setColor(alpha.rgb());
727 alphaPaint.setXfermodeMode(SkXfermode::kSrc_Mode); 727 alphaPaint.setXfermodeMode(SkXfermode::kSrc_Mode);
728 728
729 SkPoint point = SkPoint::Make(0, 0); 729 SkPoint point = SkPoint::Make(0, 0);
730 SkScalar pointX = 0; 730 SkScalar pointX = 0;
731 SkPath path; 731 SkPath path;
732 path.moveTo(SkPoint::Make(0, 0)); 732 path.moveTo(SkPoint::Make(0, 0));
733 path.lineTo(SkPoint::Make(100, 0)); 733 path.lineTo(SkPoint::Make(100, 0));
734 734
735 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 735 context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver);
736 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 736 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
737 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 737 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
738 738
739 context.drawPosText("A", 1, &point, textRect, opaquePaint); 739 context.drawPosText("A", 1, &point, textRect, opaquePaint);
740 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 740 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
741 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 741 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
742 742
743 context.drawPosText("A", 1, &point, textRect, alphaPaint); 743 context.drawPosText("A", 1, &point, textRect, alphaPaint);
744 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 744 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
745 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 745 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
746 746
747 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 747 context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver);
748 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 748 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
749 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 749 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
750 750
751 context.drawPosTextH("A", 1, &pointX, 0, textRect, opaquePaint); 751 context.drawPosTextH("A", 1, &pointX, 0, textRect, opaquePaint);
752 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 752 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
753 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 753 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
754 754
755 context.drawPosTextH("A", 1, &pointX, 0, textRect, alphaPaint); 755 context.drawPosTextH("A", 1, &pointX, 0, textRect, alphaPaint);
756 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 756 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
757 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 757 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
758 758
759 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 759 context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver);
760 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 760 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
761 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 761 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
762 762
763 context.drawTextOnPath("A", 1, path, textRect, 0, opaquePaint); 763 context.drawTextOnPath("A", 1, path, textRect, 0, opaquePaint);
764 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 764 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
765 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 765 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
766 766
767 context.drawTextOnPath("A", 1, path, textRect, 0, alphaPaint); 767 context.drawTextOnPath("A", 1, path, textRect, 0, alphaPaint);
768 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 768 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
769 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 769 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
(...skipping 28 matching lines...) Expand all
798 for (int x = 0; x < alphaBitmap.width(); ++x) 798 for (int x = 0; x < alphaBitmap.width(); ++x)
799 *alphaBitmap.getAddr32(x, y) = 0x00000000; 799 *alphaBitmap.getAddr32(x, y) = 0x00000000;
800 800
801 SkPaint paint; 801 SkPaint paint;
802 paint.setXfermodeMode(SkXfermode::kSrc_Mode); 802 paint.setXfermodeMode(SkXfermode::kSrc_Mode);
803 803
804 context.writePixels(opaqueBitmap, 50, 50); 804 context.writePixels(opaqueBitmap, 50, 50);
805 EXPECT_EQ_RECT(IntRect(50, 50, 10, 10), context.opaqueRegion().asRect()); 805 EXPECT_EQ_RECT(IntRect(50, 50, 10, 10), context.opaqueRegion().asRect());
806 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 806 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
807 807
808 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 808 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
809 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 809 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
810 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 810 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
811 811
812 context.writePixels(alphaBitmap, 10, 0); 812 context.writePixels(alphaBitmap, 10, 0);
813 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 813 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
814 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 814 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
815 815
816 context.writePixels(alphaBitmap, 10, 1); 816 context.writePixels(alphaBitmap, 10, 1);
817 EXPECT_EQ_RECT(IntRect(10, 11, 90, 89), context.opaqueRegion().asRect()); 817 EXPECT_EQ_RECT(IntRect(10, 11, 90, 89), context.opaqueRegion().asRect());
818 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 818 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 for (int x = 0; x < alphaBitmap.width(); ++x) 855 for (int x = 0; x < alphaBitmap.width(); ++x)
856 *alphaBitmap.getAddr32(x, y) = 0x00000000; 856 *alphaBitmap.getAddr32(x, y) = 0x00000000;
857 857
858 SkPaint paint; 858 SkPaint paint;
859 paint.setXfermodeMode(SkXfermode::kSrc_Mode); 859 paint.setXfermodeMode(SkXfermode::kSrc_Mode);
860 860
861 context.drawBitmap(opaqueBitmap, 10, 10, &paint); 861 context.drawBitmap(opaqueBitmap, 10, 10, &paint);
862 EXPECT_EQ_RECT(IntRect(10, 10, 10, 10), context.opaqueRegion().asRect()); 862 EXPECT_EQ_RECT(IntRect(10, 10, 10, 10), context.opaqueRegion().asRect());
863 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 863 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
864 864
865 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 865 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
866 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 866 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
867 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 867 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
868 868
869 context.drawBitmap(alphaBitmap, 10, 0, &paint); 869 context.drawBitmap(alphaBitmap, 10, 0, &paint);
870 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 870 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
871 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 871 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
872 872
873 context.drawBitmap(alphaBitmap, 10, 1, &paint); 873 context.drawBitmap(alphaBitmap, 10, 1, &paint);
874 EXPECT_EQ_RECT(IntRect(10, 11, 90, 89), context.opaqueRegion().asRect()); 874 EXPECT_EQ_RECT(IntRect(10, 11, 90, 89), context.opaqueRegion().asRect());
875 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 875 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 SkBitmap bitmap; 941 SkBitmap bitmap;
942 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 942 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400);
943 bitmap.allocPixels(); 943 bitmap.allocPixels();
944 bitmap.eraseColor(0); 944 bitmap.eraseColor(0);
945 SkCanvas canvas(bitmap); 945 SkCanvas canvas(bitmap);
946 946
947 GraphicsContext context(&canvas); 947 GraphicsContext context(&canvas);
948 context.setTrackOpaqueRegion(true); 948 context.setTrackOpaqueRegion(true);
949 949
950 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 950 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
951 context.fillRect(FloatRect(20, 20, 10, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 951 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver);
952 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect()); 952 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect());
953 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 953 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
954 954
955 context.clearRect(FloatRect(20, 20, 10, 10)); 955 context.clearRect(FloatRect(20, 20, 10, 10));
956 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 956 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
957 957
958 context.beginTransparencyLayer(0.5); 958 context.beginTransparencyLayer(0.5);
959 context.save(); 959 context.save();
960 context.fillRect(FloatRect(20, 20, 10, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 960 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver);
961 context.restore(); 961 context.restore();
962 context.endTransparencyLayer(); 962 context.endTransparencyLayer();
963 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 963 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
964 964
965 context.clearRect(FloatRect(20, 20, 10, 10)); 965 context.clearRect(FloatRect(20, 20, 10, 10));
966 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 966 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
967 967
968 context.beginTransparencyLayer(0.5); 968 context.beginTransparencyLayer(0.5);
969 context.fillRect(FloatRect(20, 20, 10, 10), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 969 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver);
970 context.endTransparencyLayer(); 970 context.endTransparencyLayer();
971 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 971 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
972 } 972 }
973 973
974 TEST(PlatformContextSkiaTest, UnboundedDrawsAreClipped) 974 TEST(PlatformContextSkiaTest, UnboundedDrawsAreClipped)
975 { 975 {
976 SkBitmap bitmap; 976 SkBitmap bitmap;
977 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 977 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400);
978 bitmap.allocPixels(); 978 bitmap.allocPixels();
979 bitmap.eraseColor(0); 979 bitmap.eraseColor(0);
(...skipping 12 matching lines...) Expand all
992 context.setLineCap(SquareCap); 992 context.setLineCap(SquareCap);
993 context.setStrokeStyle(SolidStroke); 993 context.setStrokeStyle(SolidStroke);
994 994
995 // Make skia unable to compute fast bounds for our paths. 995 // Make skia unable to compute fast bounds for our paths.
996 DashArray dashArray; 996 DashArray dashArray;
997 dashArray.append(1); 997 dashArray.append(1);
998 dashArray.append(0); 998 dashArray.append(0);
999 context.setLineDash(dashArray, 0); 999 context.setLineDash(dashArray, 0);
1000 1000
1001 // Make the device opaque in 10,10 40x40. 1001 // Make the device opaque in 10,10 40x40.
1002 context.fillRect(FloatRect(10, 10, 40, 40), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 1002 context.fillRect(FloatRect(10, 10, 40, 40), opaque, CompositeSourceOver);
1003 EXPECT_EQ_RECT(IntRect(10, 10, 40, 40), context.opaqueRegion().asRect()); 1003 EXPECT_EQ_RECT(IntRect(10, 10, 40, 40), context.opaqueRegion().asRect());
1004 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 1004 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
1005 1005
1006 // Clip to the left edge of the opaque area. 1006 // Clip to the left edge of the opaque area.
1007 context.clip(IntRect(10, 10, 10, 40)); 1007 context.clip(IntRect(10, 10, 10, 40));
1008 1008
1009 // Draw a path that gets clipped. This should destroy the opaque area but on ly inside the clip. 1009 // Draw a path that gets clipped. This should destroy the opaque area but on ly inside the clip.
1010 context.setCompositeOperation(CompositeSourceOut); 1010 context.setCompositeOperation(CompositeSourceOut);
1011 context.setFillColor(alpha, ColorSpaceDeviceRGB); 1011 context.setFillColor(alpha);
1012 path.moveTo(FloatPoint(10, 10)); 1012 path.moveTo(FloatPoint(10, 10));
1013 path.addLineTo(FloatPoint(40, 40)); 1013 path.addLineTo(FloatPoint(40, 40));
1014 context.strokePath(path); 1014 context.strokePath(path);
1015 1015
1016 EXPECT_EQ_RECT(IntRect(20, 10, 30, 40), context.opaqueRegion().asRect()); 1016 EXPECT_EQ_RECT(IntRect(20, 10, 30, 40), context.opaqueRegion().asRect());
1017 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 1017 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
1018 } 1018 }
1019 1019
1020 TEST(PlatformContextSkiaTest, PreserveOpaqueOnlyMattersForFirstLayer) 1020 TEST(PlatformContextSkiaTest, PreserveOpaqueOnlyMattersForFirstLayer)
1021 { 1021 {
(...skipping 16 matching lines...) Expand all
1038 context.setLineCap(SquareCap); 1038 context.setLineCap(SquareCap);
1039 context.setStrokeStyle(SolidStroke); 1039 context.setStrokeStyle(SolidStroke);
1040 1040
1041 // Make skia unable to compute fast bounds for our paths. 1041 // Make skia unable to compute fast bounds for our paths.
1042 DashArray dashArray; 1042 DashArray dashArray;
1043 dashArray.append(1); 1043 dashArray.append(1);
1044 dashArray.append(0); 1044 dashArray.append(0);
1045 context.setLineDash(dashArray, 0); 1045 context.setLineDash(dashArray, 0);
1046 1046
1047 // Make the device opaque in 10,10 40x40. 1047 // Make the device opaque in 10,10 40x40.
1048 context.fillRect(FloatRect(10, 10, 40, 40), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 1048 context.fillRect(FloatRect(10, 10, 40, 40), opaque, CompositeSourceOver);
1049 EXPECT_EQ_RECT(IntRect(10, 10, 40, 40), context.opaqueRegion().asRect()); 1049 EXPECT_EQ_RECT(IntRect(10, 10, 40, 40), context.opaqueRegion().asRect());
1050 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 1050 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
1051 1051
1052 // Begin a layer that preserves opaque. 1052 // Begin a layer that preserves opaque.
1053 context.setCompositeOperation(CompositeSourceOver); 1053 context.setCompositeOperation(CompositeSourceOver);
1054 context.beginTransparencyLayer(0.5); 1054 context.beginTransparencyLayer(0.5);
1055 1055
1056 // Begin a layer that does not preserve opaque. 1056 // Begin a layer that does not preserve opaque.
1057 context.setCompositeOperation(CompositeSourceOut); 1057 context.setCompositeOperation(CompositeSourceOut);
1058 context.beginTransparencyLayer(0.5); 1058 context.beginTransparencyLayer(0.5);
1059 1059
1060 // This should not destroy the device opaqueness. 1060 // This should not destroy the device opaqueness.
1061 context.fillRect(FloatRect(10, 10, 40, 40), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 1061 context.fillRect(FloatRect(10, 10, 40, 40), opaque, CompositeSourceOver);
1062 1062
1063 // This should not destroy the device opaqueness either. 1063 // This should not destroy the device opaqueness either.
1064 context.setFillColor(opaque, ColorSpaceDeviceRGB); 1064 context.setFillColor(opaque);
1065 path.moveTo(FloatPoint(10, 10)); 1065 path.moveTo(FloatPoint(10, 10));
1066 path.addLineTo(FloatPoint(40, 40)); 1066 path.addLineTo(FloatPoint(40, 40));
1067 context.strokePath(path); 1067 context.strokePath(path);
1068 1068
1069 context.endTransparencyLayer(); 1069 context.endTransparencyLayer();
1070 context.endTransparencyLayer(); 1070 context.endTransparencyLayer();
1071 EXPECT_EQ_RECT(IntRect(10, 10, 40, 40), context.opaqueRegion().asRect()); 1071 EXPECT_EQ_RECT(IntRect(10, 10, 40, 40), context.opaqueRegion().asRect());
1072 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 1072 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
1073 1073
1074 // Now begin a layer that does not preserve opaque and draw through it to th e device. 1074 // Now begin a layer that does not preserve opaque and draw through it to th e device.
1075 context.setCompositeOperation(CompositeSourceOut); 1075 context.setCompositeOperation(CompositeSourceOut);
1076 context.beginTransparencyLayer(0.5); 1076 context.beginTransparencyLayer(0.5);
1077 1077
1078 // This should destroy the device opaqueness. 1078 // This should destroy the device opaqueness.
1079 context.fillRect(FloatRect(10, 10, 40, 40), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 1079 context.fillRect(FloatRect(10, 10, 40, 40), opaque, CompositeSourceOver);
1080 1080
1081 context.endTransparencyLayer(); 1081 context.endTransparencyLayer();
1082 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 1082 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
1083 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 1083 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
1084 1084
1085 // Now we draw with a path for which it cannot compute fast bounds. This sho uld destroy the entire opaque region. 1085 // Now we draw with a path for which it cannot compute fast bounds. This sho uld destroy the entire opaque region.
1086 1086
1087 context.setCompositeOperation(CompositeSourceOut); 1087 context.setCompositeOperation(CompositeSourceOut);
1088 context.beginTransparencyLayer(0.5); 1088 context.beginTransparencyLayer(0.5);
1089 1089
1090 // This should nuke the device opaqueness. 1090 // This should nuke the device opaqueness.
1091 context.setFillColor(opaque, ColorSpaceDeviceRGB); 1091 context.setFillColor(opaque);
1092 path.moveTo(FloatPoint(10, 10)); 1092 path.moveTo(FloatPoint(10, 10));
1093 path.addLineTo(FloatPoint(40, 40)); 1093 path.addLineTo(FloatPoint(40, 40));
1094 context.strokePath(path); 1094 context.strokePath(path);
1095 1095
1096 context.endTransparencyLayer(); 1096 context.endTransparencyLayer();
1097 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 1097 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
1098 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 1098 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
1099 } 1099 }
1100 1100
1101 } // namespace 1101 } // namespace
OLDNEW
« no previous file with comments | « Source/WebKit/chromium/tests/DragImageTest.cpp ('k') | Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698