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

Side by Side Diff: cc/occlusion_tracker_unittest.cc

Issue 11189043: cc: Rename cc classes and members to match filenames (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "config.h" 5 #include "config.h"
6 6
7 #include "CCOcclusionTracker.h" 7 #include "CCOcclusionTracker.h"
8 8
9 #include "CCLayerAnimationController.h" 9 #include "CCLayerAnimationController.h"
10 #include "CCLayerImpl.h" 10 #include "CCLayerImpl.h"
(...skipping 11 matching lines...) Expand all
22 #include <public/WebFilterOperation.h> 22 #include <public/WebFilterOperation.h>
23 #include <public/WebFilterOperations.h> 23 #include <public/WebFilterOperations.h>
24 #include <public/WebTransformationMatrix.h> 24 #include <public/WebTransformationMatrix.h>
25 25
26 using namespace cc; 26 using namespace cc;
27 using namespace WebKit; 27 using namespace WebKit;
28 using namespace WebKitTests; 28 using namespace WebKitTests;
29 29
30 namespace { 30 namespace {
31 31
32 class TestContentLayerChromium : public LayerChromium { 32 class TestContentLayer : public Layer {
33 public: 33 public:
34 TestContentLayerChromium() 34 TestContentLayer()
35 : LayerChromium() 35 : Layer()
36 , m_overrideOpaqueContentsRect(false) 36 , m_overrideOpaqueContentsRect(false)
37 { 37 {
38 } 38 }
39 39
40 virtual bool drawsContent() const OVERRIDE { return true; } 40 virtual bool drawsContent() const OVERRIDE { return true; }
41 virtual Region visibleContentOpaqueRegion() const OVERRIDE 41 virtual Region visibleContentOpaqueRegion() const OVERRIDE
42 { 42 {
43 if (m_overrideOpaqueContentsRect) 43 if (m_overrideOpaqueContentsRect)
44 return intersection(m_opaqueContentsRect, visibleContentRect()); 44 return intersection(m_opaqueContentsRect, visibleContentRect());
45 return LayerChromium::visibleContentOpaqueRegion(); 45 return Layer::visibleContentOpaqueRegion();
46 } 46 }
47 void setOpaqueContentsRect(const IntRect& opaqueContentsRect) 47 void setOpaqueContentsRect(const IntRect& opaqueContentsRect)
48 { 48 {
49 m_overrideOpaqueContentsRect = true; 49 m_overrideOpaqueContentsRect = true;
50 m_opaqueContentsRect = opaqueContentsRect; 50 m_opaqueContentsRect = opaqueContentsRect;
51 } 51 }
52 52
53 private: 53 private:
54 virtual ~TestContentLayerChromium() 54 virtual ~TestContentLayer()
55 { 55 {
56 } 56 }
57 57
58 bool m_overrideOpaqueContentsRect; 58 bool m_overrideOpaqueContentsRect;
59 IntRect m_opaqueContentsRect; 59 IntRect m_opaqueContentsRect;
60 }; 60 };
61 61
62 class TestContentLayerImpl : public CCLayerImpl { 62 class TestContentLayerImpl : public LayerImpl {
63 public: 63 public:
64 TestContentLayerImpl(int id) 64 TestContentLayerImpl(int id)
65 : CCLayerImpl(id) 65 : LayerImpl(id)
66 , m_overrideOpaqueContentsRect(false) 66 , m_overrideOpaqueContentsRect(false)
67 { 67 {
68 setDrawsContent(true); 68 setDrawsContent(true);
69 } 69 }
70 70
71 virtual Region visibleContentOpaqueRegion() const OVERRIDE 71 virtual Region visibleContentOpaqueRegion() const OVERRIDE
72 { 72 {
73 if (m_overrideOpaqueContentsRect) 73 if (m_overrideOpaqueContentsRect)
74 return intersection(m_opaqueContentsRect, visibleContentRect()); 74 return intersection(m_opaqueContentsRect, visibleContentRect());
75 return CCLayerImpl::visibleContentOpaqueRegion(); 75 return LayerImpl::visibleContentOpaqueRegion();
76 } 76 }
77 void setOpaqueContentsRect(const IntRect& opaqueContentsRect) 77 void setOpaqueContentsRect(const IntRect& opaqueContentsRect)
78 { 78 {
79 m_overrideOpaqueContentsRect = true; 79 m_overrideOpaqueContentsRect = true;
80 m_opaqueContentsRect = opaqueContentsRect; 80 m_opaqueContentsRect = opaqueContentsRect;
81 } 81 }
82 82
83 private: 83 private:
84 bool m_overrideOpaqueContentsRect; 84 bool m_overrideOpaqueContentsRect;
85 IntRect m_opaqueContentsRect; 85 IntRect m_opaqueContentsRect;
86 }; 86 };
87 87
88 template<typename LayerType, typename RenderSurfaceType> 88 template<typename LayerType, typename RenderSurfaceType>
89 class TestCCOcclusionTrackerWithClip : public TestCCOcclusionTrackerBase<LayerTy pe, RenderSurfaceType> { 89 class TestOcclusionTrackerWithClip : public TestOcclusionTrackerBase<LayerType, RenderSurfaceType> {
90 public: 90 public:
91 TestCCOcclusionTrackerWithClip(IntRect viewportRect, bool recordMetricsForFr ame = false) 91 TestOcclusionTrackerWithClip(IntRect viewportRect, bool recordMetricsForFram e = false)
92 : TestCCOcclusionTrackerBase<LayerType, RenderSurfaceType>(viewportRect, recordMetricsForFrame) 92 : TestOcclusionTrackerBase<LayerType, RenderSurfaceType>(viewportRect, r ecordMetricsForFrame)
93 , m_overrideLayerClipRect(false) 93 , m_overrideLayerClipRect(false)
94 { 94 {
95 } 95 }
96 96
97 void setLayerClipRect(const IntRect& rect) { m_overrideLayerClipRect = true; m_layerClipRect = rect;} 97 void setLayerClipRect(const IntRect& rect) { m_overrideLayerClipRect = true; m_layerClipRect = rect;}
98 void useDefaultLayerClipRect() { m_overrideLayerClipRect = false; } 98 void useDefaultLayerClipRect() { m_overrideLayerClipRect = false; }
99 99
100 protected: 100 protected:
101 virtual IntRect layerClipRectInTarget(const LayerType* layer) const { return m_overrideLayerClipRect ? m_layerClipRect : CCOcclusionTrackerBase<LayerType, R enderSurfaceType>::layerClipRectInTarget(layer); } 101 virtual IntRect layerClipRectInTarget(const LayerType* layer) const { return m_overrideLayerClipRect ? m_layerClipRect : OcclusionTrackerBase<LayerType, Ren derSurfaceType>::layerClipRectInTarget(layer); }
102 102
103 private: 103 private:
104 bool m_overrideLayerClipRect; 104 bool m_overrideLayerClipRect;
105 IntRect m_layerClipRect; 105 IntRect m_layerClipRect;
106 }; 106 };
107 107
108 struct CCOcclusionTrackerTestMainThreadTypes { 108 struct OcclusionTrackerTestMainThreadTypes {
109 typedef LayerChromium LayerType; 109 typedef Layer LayerType;
110 typedef RenderSurfaceChromium RenderSurfaceType; 110 typedef RenderSurface RenderSurfaceType;
111 typedef TestContentLayerChromium ContentLayerType; 111 typedef TestContentLayer ContentLayerType;
112 typedef scoped_refptr<LayerChromium> LayerPtrType; 112 typedef scoped_refptr<Layer> LayerPtrType;
113 typedef scoped_refptr<ContentLayerType> ContentLayerPtrType; 113 typedef scoped_refptr<ContentLayerType> ContentLayerPtrType;
114 typedef CCLayerIterator<LayerChromium, std::vector<scoped_refptr<LayerChromi um> >, RenderSurfaceChromium, CCLayerIteratorActions::FrontToBack> LayerIterator ; 114 typedef LayerIterator<Layer, std::vector<scoped_refptr<Layer> >, RenderSurfa ce, LayerIteratorActions::FrontToBack> LayerIterator;
115 typedef CCOcclusionTracker OcclusionTrackerType; 115 typedef OcclusionTracker OcclusionTrackerType;
116 116
117 static LayerPtrType createLayer() 117 static LayerPtrType createLayer()
118 { 118 {
119 return LayerChromium::create(); 119 return Layer::create();
120 } 120 }
121 static ContentLayerPtrType createContentLayer() { return make_scoped_refptr( new ContentLayerType()); } 121 static ContentLayerPtrType createContentLayer() { return make_scoped_refptr( new ContentLayerType()); }
122 122
123 static LayerPtrType passLayerPtr(ContentLayerPtrType& layer) 123 static LayerPtrType passLayerPtr(ContentLayerPtrType& layer)
124 { 124 {
125 return layer.release(); 125 return layer.release();
126 } 126 }
127 127
128 static LayerPtrType passLayerPtr(LayerPtrType& layer) 128 static LayerPtrType passLayerPtr(LayerPtrType& layer)
129 { 129 {
130 return layer.release(); 130 return layer.release();
131 } 131 }
132 132
133 static void destroyLayer(LayerPtrType& layer) 133 static void destroyLayer(LayerPtrType& layer)
134 { 134 {
135 layer = NULL; 135 layer = NULL;
136 } 136 }
137 }; 137 };
138 138
139 struct CCOcclusionTrackerTestImplThreadTypes { 139 struct OcclusionTrackerTestImplThreadTypes {
140 typedef CCLayerImpl LayerType; 140 typedef LayerImpl LayerType;
141 typedef CCRenderSurface RenderSurfaceType; 141 typedef RenderSurfaceImpl RenderSurfaceType;
142 typedef TestContentLayerImpl ContentLayerType; 142 typedef TestContentLayerImpl ContentLayerType;
143 typedef scoped_ptr<CCLayerImpl> LayerPtrType; 143 typedef scoped_ptr<LayerImpl> LayerPtrType;
144 typedef scoped_ptr<ContentLayerType> ContentLayerPtrType; 144 typedef scoped_ptr<ContentLayerType> ContentLayerPtrType;
145 typedef CCLayerIterator<CCLayerImpl, std::vector<CCLayerImpl*>, CCRenderSurf ace, CCLayerIteratorActions::FrontToBack> LayerIterator; 145 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, LayerIteratorActions::FrontToBack> LayerIterator;
146 typedef CCOcclusionTrackerImpl OcclusionTrackerType; 146 typedef OcclusionTrackerImpl OcclusionTrackerType;
147 147
148 static LayerPtrType createLayer() { return CCLayerImpl::create(nextCCLayerIm plId++); } 148 static LayerPtrType createLayer() { return LayerImpl::create(nextLayerImplId ++); }
149 static ContentLayerPtrType createContentLayer() { return make_scoped_ptr(new ContentLayerType(nextCCLayerImplId++)); } 149 static ContentLayerPtrType createContentLayer() { return make_scoped_ptr(new ContentLayerType(nextLayerImplId++)); }
150 static int nextCCLayerImplId; 150 static int nextLayerImplId;
151 151
152 static LayerPtrType passLayerPtr(LayerPtrType& layer) 152 static LayerPtrType passLayerPtr(LayerPtrType& layer)
153 { 153 {
154 return layer.Pass(); 154 return layer.Pass();
155 } 155 }
156 156
157 static LayerPtrType passLayerPtr(ContentLayerPtrType& layer) 157 static LayerPtrType passLayerPtr(ContentLayerPtrType& layer)
158 { 158 {
159 return layer.PassAs<LayerType>(); 159 return layer.PassAs<LayerType>();
160 } 160 }
161 161
162 static void destroyLayer(LayerPtrType& layer) 162 static void destroyLayer(LayerPtrType& layer)
163 { 163 {
164 layer.reset(); 164 layer.reset();
165 } 165 }
166 }; 166 };
167 167
168 int CCOcclusionTrackerTestImplThreadTypes::nextCCLayerImplId = 1; 168 int OcclusionTrackerTestImplThreadTypes::nextLayerImplId = 1;
169 169
170 template<typename Types, bool opaqueLayers> 170 template<typename Types, bool opaqueLayers>
171 class CCOcclusionTrackerTest : public testing::Test { 171 class OcclusionTrackerTest : public testing::Test {
172 protected: 172 protected:
173 CCOcclusionTrackerTest() 173 OcclusionTrackerTest()
174 : testing::Test() 174 : testing::Test()
175 { } 175 { }
176 176
177 virtual void runMyTest() = 0; 177 virtual void runMyTest() = 0;
178 178
179 virtual void TearDown() 179 virtual void TearDown()
180 { 180 {
181 Types::destroyLayer(m_root); 181 Types::destroyLayer(m_root);
182 m_renderSurfaceLayerListChromium.clear(); 182 m_renderSurfaceLayerList.clear();
183 m_renderSurfaceLayerListImpl.clear(); 183 m_renderSurfaceLayerListImpl.clear();
184 m_replicaLayers.clear(); 184 m_replicaLayers.clear();
185 m_maskLayers.clear(); 185 m_maskLayers.clear();
186 CCLayerTreeHost::setNeedsFilterContext(false); 186 LayerTreeHost::setNeedsFilterContext(false);
187 } 187 }
188 188
189 typename Types::ContentLayerType* createRoot(const WebTransformationMatrix& transform, const FloatPoint& position, const IntSize& bounds) 189 typename Types::ContentLayerType* createRoot(const WebTransformationMatrix& transform, const FloatPoint& position, const IntSize& bounds)
190 { 190 {
191 typename Types::ContentLayerPtrType layer(Types::createContentLayer()); 191 typename Types::ContentLayerPtrType layer(Types::createContentLayer());
192 typename Types::ContentLayerType* layerPtr = layer.get(); 192 typename Types::ContentLayerType* layerPtr = layer.get();
193 setProperties(layerPtr, transform, position, bounds); 193 setProperties(layerPtr, transform, position, bounds);
194 194
195 ASSERT(!m_root); 195 ASSERT(!m_root);
196 m_root = Types::passLayerPtr(layer); 196 m_root = Types::passLayerPtr(layer);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 WebFilterOperations filters; 259 WebFilterOperations filters;
260 filters.append(WebFilterOperation::createGrayscaleFilter(0.5)); 260 filters.append(WebFilterOperation::createGrayscaleFilter(0.5));
261 layer->setFilters(filters); 261 layer->setFilters(filters);
262 return layer; 262 return layer;
263 } 263 }
264 264
265 void calcDrawEtc(TestContentLayerImpl* root) 265 void calcDrawEtc(TestContentLayerImpl* root)
266 { 266 {
267 ASSERT(root == m_root.get()); 267 ASSERT(root == m_root.get());
268 int dummyMaxTextureSize = 512; 268 int dummyMaxTextureSize = 512;
269 CCLayerSorter layerSorter; 269 LayerSorter layerSorter;
270 270
271 ASSERT(!root->renderSurface()); 271 ASSERT(!root->renderSurface());
272 272
273 CCLayerTreeHostCommon::calculateDrawTransforms(root, root->bounds(), 1, &layerSorter, dummyMaxTextureSize, m_renderSurfaceLayerListImpl); 273 LayerTreeHostCommon::calculateDrawTransforms(root, root->bounds(), 1, &l ayerSorter, dummyMaxTextureSize, m_renderSurfaceLayerListImpl);
274 274
275 m_layerIterator = m_layerIteratorBegin = Types::LayerIterator::begin(&m_ renderSurfaceLayerListImpl); 275 m_layerIterator = m_layerIteratorBegin = Types::LayerIterator::begin(&m_ renderSurfaceLayerListImpl);
276 } 276 }
277 277
278 void calcDrawEtc(TestContentLayerChromium* root) 278 void calcDrawEtc(TestContentLayer* root)
279 { 279 {
280 ASSERT(root == m_root.get()); 280 ASSERT(root == m_root.get());
281 int dummyMaxTextureSize = 512; 281 int dummyMaxTextureSize = 512;
282 282
283 ASSERT(!root->renderSurface()); 283 ASSERT(!root->renderSurface());
284 284
285 CCLayerTreeHostCommon::calculateDrawTransforms(root, root->bounds(), 1, dummyMaxTextureSize, m_renderSurfaceLayerListChromium); 285 LayerTreeHostCommon::calculateDrawTransforms(root, root->bounds(), 1, du mmyMaxTextureSize, m_renderSurfaceLayerList);
286 286
287 m_layerIterator = m_layerIteratorBegin = Types::LayerIterator::begin(&m_ renderSurfaceLayerListChromium); 287 m_layerIterator = m_layerIteratorBegin = Types::LayerIterator::begin(&m_ renderSurfaceLayerList);
288 } 288 }
289 289
290 void enterLayer(typename Types::LayerType* layer, typename Types::OcclusionT rackerType& occlusion) 290 void enterLayer(typename Types::LayerType* layer, typename Types::OcclusionT rackerType& occlusion)
291 { 291 {
292 ASSERT_EQ(layer, *m_layerIterator); 292 ASSERT_EQ(layer, *m_layerIterator);
293 ASSERT_TRUE(m_layerIterator.representsItself()); 293 ASSERT_TRUE(m_layerIterator.representsItself());
294 occlusion.enterLayer(m_layerIterator); 294 occlusion.enterLayer(m_layerIterator);
295 } 295 }
296 296
297 void leaveLayer(typename Types::LayerType* layer, typename Types::OcclusionT rackerType& occlusion) 297 void leaveLayer(typename Types::LayerType* layer, typename Types::OcclusionT rackerType& occlusion)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 private: 343 private:
344 void setBaseProperties(typename Types::LayerType* layer, const WebTransforma tionMatrix& transform, const FloatPoint& position, const IntSize& bounds) 344 void setBaseProperties(typename Types::LayerType* layer, const WebTransforma tionMatrix& transform, const FloatPoint& position, const IntSize& bounds)
345 { 345 {
346 layer->setTransform(transform); 346 layer->setTransform(transform);
347 layer->setSublayerTransform(WebTransformationMatrix()); 347 layer->setSublayerTransform(WebTransformationMatrix());
348 layer->setAnchorPoint(FloatPoint(0, 0)); 348 layer->setAnchorPoint(FloatPoint(0, 0));
349 layer->setPosition(position); 349 layer->setPosition(position);
350 layer->setBounds(bounds); 350 layer->setBounds(bounds);
351 } 351 }
352 352
353 void setProperties(LayerChromium* layer, const WebTransformationMatrix& tran sform, const FloatPoint& position, const IntSize& bounds) 353 void setProperties(Layer* layer, const WebTransformationMatrix& transform, c onst FloatPoint& position, const IntSize& bounds)
354 { 354 {
355 setBaseProperties(layer, transform, position, bounds); 355 setBaseProperties(layer, transform, position, bounds);
356 } 356 }
357 357
358 void setProperties(CCLayerImpl* layer, const WebTransformationMatrix& transf orm, const FloatPoint& position, const IntSize& bounds) 358 void setProperties(LayerImpl* layer, const WebTransformationMatrix& transfor m, const FloatPoint& position, const IntSize& bounds)
359 { 359 {
360 setBaseProperties(layer, transform, position, bounds); 360 setBaseProperties(layer, transform, position, bounds);
361 361
362 layer->setContentBounds(layer->bounds()); 362 layer->setContentBounds(layer->bounds());
363 } 363 }
364 364
365 void setReplica(LayerChromium* owningLayer, scoped_refptr<LayerChromium> lay er) 365 void setReplica(Layer* owningLayer, scoped_refptr<Layer> layer)
366 { 366 {
367 owningLayer->setReplicaLayer(layer.get()); 367 owningLayer->setReplicaLayer(layer.get());
368 m_replicaLayers.push_back(layer); 368 m_replicaLayers.push_back(layer);
369 } 369 }
370 370
371 void setReplica(CCLayerImpl* owningLayer, scoped_ptr<CCLayerImpl> layer) 371 void setReplica(LayerImpl* owningLayer, scoped_ptr<LayerImpl> layer)
372 { 372 {
373 owningLayer->setReplicaLayer(layer.Pass()); 373 owningLayer->setReplicaLayer(layer.Pass());
374 } 374 }
375 375
376 void setMask(LayerChromium* owningLayer, scoped_refptr<LayerChromium> layer) 376 void setMask(Layer* owningLayer, scoped_refptr<Layer> layer)
377 { 377 {
378 owningLayer->setMaskLayer(layer.get()); 378 owningLayer->setMaskLayer(layer.get());
379 m_maskLayers.push_back(layer); 379 m_maskLayers.push_back(layer);
380 } 380 }
381 381
382 void setMask(CCLayerImpl* owningLayer, scoped_ptr<CCLayerImpl> layer) 382 void setMask(LayerImpl* owningLayer, scoped_ptr<LayerImpl> layer)
383 { 383 {
384 owningLayer->setMaskLayer(layer.Pass()); 384 owningLayer->setMaskLayer(layer.Pass());
385 } 385 }
386 386
387 // These hold ownership of the layers for the duration of the test. 387 // These hold ownership of the layers for the duration of the test.
388 typename Types::LayerPtrType m_root; 388 typename Types::LayerPtrType m_root;
389 std::vector<scoped_refptr<LayerChromium> > m_renderSurfaceLayerListChromium; 389 std::vector<scoped_refptr<Layer> > m_renderSurfaceLayerList;
390 std::vector<CCLayerImpl*> m_renderSurfaceLayerListImpl; 390 std::vector<LayerImpl*> m_renderSurfaceLayerListImpl;
391 typename Types::LayerIterator m_layerIteratorBegin; 391 typename Types::LayerIterator m_layerIteratorBegin;
392 typename Types::LayerIterator m_layerIterator; 392 typename Types::LayerIterator m_layerIterator;
393 typename Types::LayerType* m_lastLayerVisited; 393 typename Types::LayerType* m_lastLayerVisited;
394 std::vector<scoped_refptr<LayerChromium> > m_replicaLayers; 394 std::vector<scoped_refptr<Layer> > m_replicaLayers;
395 std::vector<scoped_refptr<LayerChromium> > m_maskLayers; 395 std::vector<scoped_refptr<Layer> > m_maskLayers;
396 }; 396 };
397 397
398 #define RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName) \ 398 #define RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName) \
399 class ClassName##MainThreadOpaqueLayers : public ClassName<CCOcclusionTracke rTestMainThreadTypes, true> { \ 399 class ClassName##MainThreadOpaqueLayers : public ClassName<OcclusionTrackerT estMainThreadTypes, true> { \
400 public: \ 400 public: \
401 ClassName##MainThreadOpaqueLayers() : ClassName<CCOcclusionTrackerTestMa inThreadTypes, true>() { } \ 401 ClassName##MainThreadOpaqueLayers() : ClassName<OcclusionTrackerTestMain ThreadTypes, true>() { } \
402 }; \ 402 }; \
403 TEST_F(ClassName##MainThreadOpaqueLayers, runTest) { runMyTest(); } 403 TEST_F(ClassName##MainThreadOpaqueLayers, runTest) { runMyTest(); }
404 #define RUN_TEST_MAIN_THREAD_OPAQUE_PAINTS(ClassName) \ 404 #define RUN_TEST_MAIN_THREAD_OPAQUE_PAINTS(ClassName) \
405 class ClassName##MainThreadOpaquePaints : public ClassName<CCOcclusionTracke rTestMainThreadTypes, false> { \ 405 class ClassName##MainThreadOpaquePaints : public ClassName<OcclusionTrackerT estMainThreadTypes, false> { \
406 public: \ 406 public: \
407 ClassName##MainThreadOpaquePaints() : ClassName<CCOcclusionTrackerTestMa inThreadTypes, false>() { } \ 407 ClassName##MainThreadOpaquePaints() : ClassName<OcclusionTrackerTestMain ThreadTypes, false>() { } \
408 }; \ 408 }; \
409 TEST_F(ClassName##MainThreadOpaquePaints, runTest) { runMyTest(); } 409 TEST_F(ClassName##MainThreadOpaquePaints, runTest) { runMyTest(); }
410 410
411 #define RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName) \ 411 #define RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName) \
412 class ClassName##ImplThreadOpaqueLayers : public ClassName<CCOcclusionTracke rTestImplThreadTypes, true> { \ 412 class ClassName##ImplThreadOpaqueLayers : public ClassName<OcclusionTrackerT estImplThreadTypes, true> { \
413 DebugScopedSetImplThread impl; \ 413 DebugScopedSetImplThread impl; \
414 public: \ 414 public: \
415 ClassName##ImplThreadOpaqueLayers() : ClassName<CCOcclusionTrackerTestIm plThreadTypes, true>() { } \ 415 ClassName##ImplThreadOpaqueLayers() : ClassName<OcclusionTrackerTestImpl ThreadTypes, true>() { } \
416 }; \ 416 }; \
417 TEST_F(ClassName##ImplThreadOpaqueLayers, runTest) { runMyTest(); } 417 TEST_F(ClassName##ImplThreadOpaqueLayers, runTest) { runMyTest(); }
418 #define RUN_TEST_IMPL_THREAD_OPAQUE_PAINTS(ClassName) \ 418 #define RUN_TEST_IMPL_THREAD_OPAQUE_PAINTS(ClassName) \
419 class ClassName##ImplThreadOpaquePaints : public ClassName<CCOcclusionTracke rTestImplThreadTypes, false> { \ 419 class ClassName##ImplThreadOpaquePaints : public ClassName<OcclusionTrackerT estImplThreadTypes, false> { \
420 DebugScopedSetImplThread impl; \ 420 DebugScopedSetImplThread impl; \
421 public: \ 421 public: \
422 ClassName##ImplThreadOpaquePaints() : ClassName<CCOcclusionTrackerTestIm plThreadTypes, false>() { } \ 422 ClassName##ImplThreadOpaquePaints() : ClassName<OcclusionTrackerTestImpl ThreadTypes, false>() { } \
423 }; \ 423 }; \
424 TEST_F(ClassName##ImplThreadOpaquePaints, runTest) { runMyTest(); } 424 TEST_F(ClassName##ImplThreadOpaquePaints, runTest) { runMyTest(); }
425 425
426 #define ALL_CCOCCLUSIONTRACKER_TEST(ClassName) \ 426 #define ALL_OCCLUSIONTRACKER_TEST(ClassName) \
427 RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName) \ 427 RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName) \
428 RUN_TEST_MAIN_THREAD_OPAQUE_PAINTS(ClassName) \ 428 RUN_TEST_MAIN_THREAD_OPAQUE_PAINTS(ClassName) \
429 RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName) \ 429 RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName) \
430 RUN_TEST_IMPL_THREAD_OPAQUE_PAINTS(ClassName) 430 RUN_TEST_IMPL_THREAD_OPAQUE_PAINTS(ClassName)
431 431
432 #define MAIN_THREAD_TEST(ClassName) \ 432 #define MAIN_THREAD_TEST(ClassName) \
433 RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName) 433 RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName)
434 434
435 #define IMPL_THREAD_TEST(ClassName) \ 435 #define IMPL_THREAD_TEST(ClassName) \
436 RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName) 436 RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName)
437 437
438 #define MAIN_AND_IMPL_THREAD_TEST(ClassName) \ 438 #define MAIN_AND_IMPL_THREAD_TEST(ClassName) \
439 RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName) \ 439 RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName) \
440 RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName) 440 RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName)
441 441
442 template<class Types, bool opaqueLayers> 442 template<class Types, bool opaqueLayers>
443 class CCOcclusionTrackerTestIdentityTransforms : public CCOcclusionTrackerTest<T ypes, opaqueLayers> { 443 class OcclusionTrackerTestIdentityTransforms : public OcclusionTrackerTest<Types , opaqueLayers> {
444 protected: 444 protected:
445 void runMyTest() 445 void runMyTest()
446 { 446 {
447 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 447 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
448 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(30, 30), IntSize(500, 500), true); 448 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(30, 30), IntSize(500, 500), true);
449 this->calcDrawEtc(parent); 449 this->calcDrawEtc(parent);
450 450
451 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 451 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
452 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 452 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
453 453
454 this->visitLayer(layer, occlusion); 454 this->visitLayer(layer, occlusion);
455 this->enterLayer(parent, occlusion); 455 this->enterLayer(parent, occlusion);
456 456
457 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInScreenSpace ().bounds()); 457 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInScreenSpace ().bounds());
458 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 458 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
459 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInTargetSurfa ce().bounds()); 459 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInTargetSurfa ce().bounds());
460 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 460 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
461 461
(...skipping 16 matching lines...) Expand all
478 EXPECT_RECT_EQ(IntRect(29, 29, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(29, 29, 70, 70))); 478 EXPECT_RECT_EQ(IntRect(29, 29, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(29, 29, 70, 70)));
479 EXPECT_RECT_EQ(IntRect(30, 29, 70, 1), occlusion.unoccludedContentRect(p arent, IntRect(30, 29, 70, 70))); 479 EXPECT_RECT_EQ(IntRect(30, 29, 70, 1), occlusion.unoccludedContentRect(p arent, IntRect(30, 29, 70, 70)));
480 EXPECT_RECT_EQ(IntRect(31, 29, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 29, 70, 70))); 480 EXPECT_RECT_EQ(IntRect(31, 29, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 29, 70, 70)));
481 EXPECT_RECT_EQ(IntRect(100, 30, 1, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 30, 70, 70))); 481 EXPECT_RECT_EQ(IntRect(100, 30, 1, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 30, 70, 70)));
482 EXPECT_RECT_EQ(IntRect(31, 31, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 31, 70, 70))); 482 EXPECT_RECT_EQ(IntRect(31, 31, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 31, 70, 70)));
483 EXPECT_RECT_EQ(IntRect(30, 100, 70, 1), occlusion.unoccludedContentRect( parent, IntRect(30, 31, 70, 70))); 483 EXPECT_RECT_EQ(IntRect(30, 100, 70, 1), occlusion.unoccludedContentRect( parent, IntRect(30, 31, 70, 70)));
484 EXPECT_RECT_EQ(IntRect(29, 31, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(29, 31, 70, 70))); 484 EXPECT_RECT_EQ(IntRect(29, 31, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(29, 31, 70, 70)));
485 } 485 }
486 }; 486 };
487 487
488 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestIdentityTransforms); 488 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestIdentityTransforms);
489 489
490 template<class Types, bool opaqueLayers> 490 template<class Types, bool opaqueLayers>
491 class CCOcclusionTrackerTestRotatedChild : public CCOcclusionTrackerTest<Types, opaqueLayers> { 491 class OcclusionTrackerTestRotatedChild : public OcclusionTrackerTest<Types, opaq ueLayers> {
492 protected: 492 protected:
493 void runMyTest() 493 void runMyTest()
494 { 494 {
495 WebTransformationMatrix layerTransform; 495 WebTransformationMatrix layerTransform;
496 layerTransform.translate(250, 250); 496 layerTransform.translate(250, 250);
497 layerTransform.rotate(90); 497 layerTransform.rotate(90);
498 layerTransform.translate(-250, -250); 498 layerTransform.translate(-250, -250);
499 499
500 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 500 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
501 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true); 501 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true);
502 this->calcDrawEtc(parent); 502 this->calcDrawEtc(parent);
503 503
504 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 504 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
505 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 505 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
506 506
507 this->visitLayer(layer, occlusion); 507 this->visitLayer(layer, occlusion);
508 this->enterLayer(parent, occlusion); 508 this->enterLayer(parent, occlusion);
509 509
510 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInScreenSpace ().bounds()); 510 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInScreenSpace ().bounds());
511 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 511 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
512 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInTargetSurfa ce().bounds()); 512 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInTargetSurfa ce().bounds());
513 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 513 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
514 514
(...skipping 16 matching lines...) Expand all
531 EXPECT_RECT_EQ(IntRect(29, 29, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(29, 29, 70, 70))); 531 EXPECT_RECT_EQ(IntRect(29, 29, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(29, 29, 70, 70)));
532 EXPECT_RECT_EQ(IntRect(30, 29, 70, 1), occlusion.unoccludedContentRect(p arent, IntRect(30, 29, 70, 70))); 532 EXPECT_RECT_EQ(IntRect(30, 29, 70, 1), occlusion.unoccludedContentRect(p arent, IntRect(30, 29, 70, 70)));
533 EXPECT_RECT_EQ(IntRect(31, 29, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 29, 70, 70))); 533 EXPECT_RECT_EQ(IntRect(31, 29, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 29, 70, 70)));
534 EXPECT_RECT_EQ(IntRect(100, 30, 1, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 30, 70, 70))); 534 EXPECT_RECT_EQ(IntRect(100, 30, 1, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 30, 70, 70)));
535 EXPECT_RECT_EQ(IntRect(31, 31, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 31, 70, 70))); 535 EXPECT_RECT_EQ(IntRect(31, 31, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(31, 31, 70, 70)));
536 EXPECT_RECT_EQ(IntRect(30, 100, 70, 1), occlusion.unoccludedContentRect( parent, IntRect(30, 31, 70, 70))); 536 EXPECT_RECT_EQ(IntRect(30, 100, 70, 1), occlusion.unoccludedContentRect( parent, IntRect(30, 31, 70, 70)));
537 EXPECT_RECT_EQ(IntRect(29, 31, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(29, 31, 70, 70))); 537 EXPECT_RECT_EQ(IntRect(29, 31, 70, 70), occlusion.unoccludedContentRect( parent, IntRect(29, 31, 70, 70)));
538 } 538 }
539 }; 539 };
540 540
541 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestRotatedChild); 541 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestRotatedChild);
542 542
543 template<class Types, bool opaqueLayers> 543 template<class Types, bool opaqueLayers>
544 class CCOcclusionTrackerTestTranslatedChild : public CCOcclusionTrackerTest<Type s, opaqueLayers> { 544 class OcclusionTrackerTestTranslatedChild : public OcclusionTrackerTest<Types, o paqueLayers> {
545 protected: 545 protected:
546 void runMyTest() 546 void runMyTest()
547 { 547 {
548 WebTransformationMatrix layerTransform; 548 WebTransformationMatrix layerTransform;
549 layerTransform.translate(20, 20); 549 layerTransform.translate(20, 20);
550 550
551 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 551 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
552 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true); 552 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true);
553 this->calcDrawEtc(parent); 553 this->calcDrawEtc(parent);
554 554
555 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 555 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
556 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 556 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
557 557
558 this->visitLayer(layer, occlusion); 558 this->visitLayer(layer, occlusion);
559 this->enterLayer(parent, occlusion); 559 this->enterLayer(parent, occlusion);
560 560
561 EXPECT_RECT_EQ(IntRect(50, 50, 50, 50), occlusion.occlusionInScreenSpace ().bounds()); 561 EXPECT_RECT_EQ(IntRect(50, 50, 50, 50), occlusion.occlusionInScreenSpace ().bounds());
562 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 562 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
563 EXPECT_RECT_EQ(IntRect(50, 50, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds()); 563 EXPECT_RECT_EQ(IntRect(50, 50, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds());
564 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 564 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
565 565
(...skipping 28 matching lines...) Expand all
594 EXPECT_RECT_EQ(IntRect(50, 49, 50, 1), occlusion.unoccludedContentRect(p arent, IntRect(50, 49, 50, 50))); 594 EXPECT_RECT_EQ(IntRect(50, 49, 50, 1), occlusion.unoccludedContentRect(p arent, IntRect(50, 49, 50, 50)));
595 EXPECT_RECT_EQ(IntRect(51, 49, 49, 1), occlusion.unoccludedContentRect(p arent, IntRect(51, 49, 50, 50))); 595 EXPECT_RECT_EQ(IntRect(51, 49, 49, 1), occlusion.unoccludedContentRect(p arent, IntRect(51, 49, 50, 50)));
596 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(51, 50, 50, 50)).isEmpty()); 596 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(51, 50, 50, 50)).isEmpty());
597 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(51, 51, 50, 50)).isEmpty()); 597 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(51, 51, 50, 50)).isEmpty());
598 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(50, 51, 50, 50)).isEmpty()); 598 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(50, 51, 50, 50)).isEmpty());
599 EXPECT_RECT_EQ(IntRect(49, 51, 1, 49), occlusion.unoccludedContentRect(p arent, IntRect(49, 51, 50, 50))); 599 EXPECT_RECT_EQ(IntRect(49, 51, 1, 49), occlusion.unoccludedContentRect(p arent, IntRect(49, 51, 50, 50)));
600 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 600 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
601 } 601 }
602 }; 602 };
603 603
604 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestTranslatedChild); 604 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestTranslatedChild);
605 605
606 template<class Types, bool opaqueLayers> 606 template<class Types, bool opaqueLayers>
607 class CCOcclusionTrackerTestChildInRotatedChild : public CCOcclusionTrackerTest< Types, opaqueLayers> { 607 class OcclusionTrackerTestChildInRotatedChild : public OcclusionTrackerTest<Type s, opaqueLayers> {
608 protected: 608 protected:
609 void runMyTest() 609 void runMyTest()
610 { 610 {
611 WebTransformationMatrix childTransform; 611 WebTransformationMatrix childTransform;
612 childTransform.translate(250, 250); 612 childTransform.translate(250, 250);
613 childTransform.rotate(90); 613 childTransform.rotate(90);
614 childTransform.translate(-250, -250); 614 childTransform.translate(-250, -250);
615 615
616 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 616 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
617 parent->setMasksToBounds(true); 617 parent->setMasksToBounds(true);
618 typename Types::LayerType* child = this->createLayer(parent, childTransf orm, FloatPoint(30, 30), IntSize(500, 500)); 618 typename Types::LayerType* child = this->createLayer(parent, childTransf orm, FloatPoint(30, 30), IntSize(500, 500));
619 child->setMasksToBounds(true); 619 child->setMasksToBounds(true);
620 typename Types::ContentLayerType* layer = this->createDrawingLayer(child , this->identityMatrix, FloatPoint(10, 10), IntSize(500, 500), true); 620 typename Types::ContentLayerType* layer = this->createDrawingLayer(child , this->identityMatrix, FloatPoint(10, 10), IntSize(500, 500), true);
621 this->calcDrawEtc(parent); 621 this->calcDrawEtc(parent);
622 622
623 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 623 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
624 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 624 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
625 625
626 this->visitLayer(layer, occlusion); 626 this->visitLayer(layer, occlusion);
627 this->enterContributingSurface(child, occlusion); 627 this->enterContributingSurface(child, occlusion);
628 628
629 EXPECT_RECT_EQ(IntRect(30, 40, 70, 60), occlusion.occlusionInScreenSpace ().bounds()); 629 EXPECT_RECT_EQ(IntRect(30, 40, 70, 60), occlusion.occlusionInScreenSpace ().bounds());
630 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 630 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
631 EXPECT_RECT_EQ(IntRect(10, 430, 60, 70), occlusion.occlusionInTargetSurf ace().bounds()); 631 EXPECT_RECT_EQ(IntRect(10, 430, 60, 70), occlusion.occlusionInTargetSurf ace().bounds());
632 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 632 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
633 633
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 | | | | | | | | 674 | | | | | | | |
675 | | | | | | |10| 675 | | | | | | |10|
676 +--|-------------------------------+ | | +-- ----------------------------|--+ 676 +--|-------------------------------+ | | +-- ----------------------------|--+
677 | | | 490 | 677 | | | 490 |
678 +---------------------------------+ +----- ----------------------------+ 678 +---------------------------------+ +----- ----------------------------+
679 500 500 679 500 500
680 */ 680 */
681 } 681 }
682 }; 682 };
683 683
684 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestChildInRotatedChild); 684 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestChildInRotatedChild);
685 685
686 template<class Types, bool opaqueLayers> 686 template<class Types, bool opaqueLayers>
687 class CCOcclusionTrackerTestVisitTargetTwoTimes : public CCOcclusionTrackerTest< Types, opaqueLayers> { 687 class OcclusionTrackerTestVisitTargetTwoTimes : public OcclusionTrackerTest<Type s, opaqueLayers> {
688 protected: 688 protected:
689 void runMyTest() 689 void runMyTest()
690 { 690 {
691 WebTransformationMatrix childTransform; 691 WebTransformationMatrix childTransform;
692 childTransform.translate(250, 250); 692 childTransform.translate(250, 250);
693 childTransform.rotate(90); 693 childTransform.rotate(90);
694 childTransform.translate(-250, -250); 694 childTransform.translate(-250, -250);
695 695
696 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 696 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
697 parent->setMasksToBounds(true); 697 parent->setMasksToBounds(true);
698 typename Types::LayerType* child = this->createLayer(parent, childTransf orm, FloatPoint(30, 30), IntSize(500, 500)); 698 typename Types::LayerType* child = this->createLayer(parent, childTransf orm, FloatPoint(30, 30), IntSize(500, 500));
699 child->setMasksToBounds(true); 699 child->setMasksToBounds(true);
700 typename Types::ContentLayerType* layer = this->createDrawingLayer(child , this->identityMatrix, FloatPoint(10, 10), IntSize(500, 500), true); 700 typename Types::ContentLayerType* layer = this->createDrawingLayer(child , this->identityMatrix, FloatPoint(10, 10), IntSize(500, 500), true);
701 // |child2| makes |parent|'s surface get considered by CCOcclusionTracke r first, instead of |child|'s. This exercises different code in 701 // |child2| makes |parent|'s surface get considered by OcclusionTracker first, instead of |child|'s. This exercises different code in
702 // leaveToTargetRenderSurface, as the target surface has already been se en. 702 // leaveToTargetRenderSurface, as the target surface has already been se en.
703 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare nt, this->identityMatrix, FloatPoint(30, 30), IntSize(60, 20), true); 703 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare nt, this->identityMatrix, FloatPoint(30, 30), IntSize(60, 20), true);
704 this->calcDrawEtc(parent); 704 this->calcDrawEtc(parent);
705 705
706 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 706 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
707 occlusion.setLayerClipRect(IntRect(-10, -10, 1000, 1000)); 707 occlusion.setLayerClipRect(IntRect(-10, -10, 1000, 1000));
708 708
709 this->visitLayer(child2, occlusion); 709 this->visitLayer(child2, occlusion);
710 710
711 EXPECT_RECT_EQ(IntRect(30, 30, 60, 20), occlusion.occlusionInScreenSpace ().bounds()); 711 EXPECT_RECT_EQ(IntRect(30, 30, 60, 20), occlusion.occlusionInScreenSpace ().bounds());
712 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 712 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
713 EXPECT_RECT_EQ(IntRect(30, 30, 60, 20), occlusion.occlusionInTargetSurfa ce().bounds()); 713 EXPECT_RECT_EQ(IntRect(30, 30, 60, 20), occlusion.occlusionInTargetSurfa ce().bounds());
714 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 714 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
715 715
716 this->visitLayer(layer, occlusion); 716 this->visitLayer(layer, occlusion);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 | | | | | | | | 786 | | | | | | | |
787 | | | | | | |10| 787 | | | | | | |10|
788 +--|-------------------------------+ | | +-- ----------------------------|--+ 788 +--|-------------------------------+ | | +-- ----------------------------|--+
789 | | | 490 | 789 | | | 490 |
790 +---------------------------------+ +----- ----------------------------+ 790 +---------------------------------+ +----- ----------------------------+
791 500 500 791 500 500
792 */ 792 */
793 } 793 }
794 }; 794 };
795 795
796 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestVisitTargetTwoTimes); 796 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestVisitTargetTwoTimes);
797 797
798 template<class Types, bool opaqueLayers> 798 template<class Types, bool opaqueLayers>
799 class CCOcclusionTrackerTestSurfaceRotatedOffAxis : public CCOcclusionTrackerTes t<Types, opaqueLayers> { 799 class OcclusionTrackerTestSurfaceRotatedOffAxis : public OcclusionTrackerTest<Ty pes, opaqueLayers> {
800 protected: 800 protected:
801 void runMyTest() 801 void runMyTest()
802 { 802 {
803 WebTransformationMatrix childTransform; 803 WebTransformationMatrix childTransform;
804 childTransform.translate(250, 250); 804 childTransform.translate(250, 250);
805 childTransform.rotate(95); 805 childTransform.rotate(95);
806 childTransform.translate(-250, -250); 806 childTransform.translate(-250, -250);
807 807
808 WebTransformationMatrix layerTransform; 808 WebTransformationMatrix layerTransform;
809 layerTransform.translate(10, 10); 809 layerTransform.translate(10, 10);
810 810
811 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 811 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
812 typename Types::LayerType* child = this->createLayer(parent, childTransf orm, FloatPoint(30, 30), IntSize(500, 500)); 812 typename Types::LayerType* child = this->createLayer(parent, childTransf orm, FloatPoint(30, 30), IntSize(500, 500));
813 child->setMasksToBounds(true); 813 child->setMasksToBounds(true);
814 typename Types::ContentLayerType* layer = this->createDrawingLayer(child , layerTransform, FloatPoint(0, 0), IntSize(500, 500), true); 814 typename Types::ContentLayerType* layer = this->createDrawingLayer(child , layerTransform, FloatPoint(0, 0), IntSize(500, 500), true);
815 this->calcDrawEtc(parent); 815 this->calcDrawEtc(parent);
816 816
817 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 817 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
818 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 818 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
819 819
820 IntRect clippedLayerInChild = CCMathUtil::mapClippedRect(layerTransform, layer->visibleContentRect()); 820 IntRect clippedLayerInChild = MathUtil::mapClippedRect(layerTransform, l ayer->visibleContentRect());
821 821
822 this->visitLayer(layer, occlusion); 822 this->visitLayer(layer, occlusion);
823 this->enterContributingSurface(child, occlusion); 823 this->enterContributingSurface(child, occlusion);
824 824
825 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInScreenSpace().bounds()); 825 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInScreenSpace().bounds());
826 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 826 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size());
827 EXPECT_RECT_EQ(clippedLayerInChild, occlusion.occlusionInTargetSurface() .bounds()); 827 EXPECT_RECT_EQ(clippedLayerInChild, occlusion.occlusionInTargetSurface() .bounds());
828 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 828 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
829 829
830 EXPECT_TRUE(occlusion.occluded(child, clippedLayerInChild)); 830 EXPECT_TRUE(occlusion.occluded(child, clippedLayerInChild));
(...skipping 21 matching lines...) Expand all
852 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInScreenSpace().bounds()); 852 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInScreenSpace().bounds());
853 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 853 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size());
854 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInTargetSurface().bounds()) ; 854 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInTargetSurface().bounds()) ;
855 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 855 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size());
856 856
857 EXPECT_FALSE(occlusion.occluded(parent, IntRect(75, 55, 1, 1))); 857 EXPECT_FALSE(occlusion.occluded(parent, IntRect(75, 55, 1, 1)));
858 EXPECT_RECT_EQ(IntRect(75, 55, 1, 1), occlusion.unoccludedContentRect(pa rent, IntRect(75, 55, 1, 1))); 858 EXPECT_RECT_EQ(IntRect(75, 55, 1, 1), occlusion.unoccludedContentRect(pa rent, IntRect(75, 55, 1, 1)));
859 } 859 }
860 }; 860 };
861 861
862 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestSurfaceRotatedOffAxis); 862 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceRotatedOffAxis);
863 863
864 template<class Types, bool opaqueLayers> 864 template<class Types, bool opaqueLayers>
865 class CCOcclusionTrackerTestSurfaceWithTwoOpaqueChildren : public CCOcclusionTra ckerTest<Types, opaqueLayers> { 865 class OcclusionTrackerTestSurfaceWithTwoOpaqueChildren : public OcclusionTracker Test<Types, opaqueLayers> {
866 protected: 866 protected:
867 void runMyTest() 867 void runMyTest()
868 { 868 {
869 WebTransformationMatrix childTransform; 869 WebTransformationMatrix childTransform;
870 childTransform.translate(250, 250); 870 childTransform.translate(250, 250);
871 childTransform.rotate(90); 871 childTransform.rotate(90);
872 childTransform.translate(-250, -250); 872 childTransform.translate(-250, -250);
873 873
874 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 874 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
875 parent->setMasksToBounds(true); 875 parent->setMasksToBounds(true);
876 typename Types::LayerType* child = this->createLayer(parent, childTransf orm, FloatPoint(30, 30), IntSize(500, 500)); 876 typename Types::LayerType* child = this->createLayer(parent, childTransf orm, FloatPoint(30, 30), IntSize(500, 500));
877 child->setMasksToBounds(true); 877 child->setMasksToBounds(true);
878 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil d, this->identityMatrix, FloatPoint(10, 10), IntSize(500, 500), true); 878 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil d, this->identityMatrix, FloatPoint(10, 10), IntSize(500, 500), true);
879 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d, this->identityMatrix, FloatPoint(10, 450), IntSize(500, 60), true); 879 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d, this->identityMatrix, FloatPoint(10, 450), IntSize(500, 60), true);
880 this->calcDrawEtc(parent); 880 this->calcDrawEtc(parent);
881 881
882 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 882 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
883 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 883 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
884 884
885 this->visitLayer(layer2, occlusion); 885 this->visitLayer(layer2, occlusion);
886 this->visitLayer(layer1, occlusion); 886 this->visitLayer(layer1, occlusion);
887 this->enterContributingSurface(child, occlusion); 887 this->enterContributingSurface(child, occlusion);
888 888
889 EXPECT_RECT_EQ(IntRect(30, 40, 70, 60), occlusion.occlusionInScreenSpace ().bounds()); 889 EXPECT_RECT_EQ(IntRect(30, 40, 70, 60), occlusion.occlusionInScreenSpace ().bounds());
890 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 890 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
891 EXPECT_RECT_EQ(IntRect(10, 430, 60, 70), occlusion.occlusionInTargetSurf ace().bounds()); 891 EXPECT_RECT_EQ(IntRect(10, 430, 60, 70), occlusion.occlusionInTargetSurf ace().bounds());
892 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 892 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 | | | | | 941 | | | | |
942 | | | |10| 942 | | | |10|
943 | +------------|-----------------|--+ 943 | +------------|-----------------|--+
944 | | 490 | 944 | | 490 |
945 +---------------+-----------------+ 945 +---------------+-----------------+
946 60 440 946 60 440
947 */ 947 */
948 } 948 }
949 }; 949 };
950 950
951 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestSurfaceWithTwoOpaqueChildren); 951 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceWithTwoOpaqueChildren);
952 952
953 template<class Types, bool opaqueLayers> 953 template<class Types, bool opaqueLayers>
954 class CCOcclusionTrackerTestOverlappingSurfaceSiblings : public CCOcclusionTrack erTest<Types, opaqueLayers> { 954 class OcclusionTrackerTestOverlappingSurfaceSiblings : public OcclusionTrackerTe st<Types, opaqueLayers> {
955 protected: 955 protected:
956 void runMyTest() 956 void runMyTest()
957 { 957 {
958 WebTransformationMatrix childTransform; 958 WebTransformationMatrix childTransform;
959 childTransform.translate(250, 250); 959 childTransform.translate(250, 250);
960 childTransform.rotate(90); 960 childTransform.rotate(90);
961 childTransform.translate(-250, -250); 961 childTransform.translate(-250, -250);
962 962
963 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 963 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
964 parent->setMasksToBounds(true); 964 parent->setMasksToBounds(true);
965 typename Types::LayerType* child1 = this->createSurface(parent, childTra nsform, FloatPoint(30, 30), IntSize(10, 10)); 965 typename Types::LayerType* child1 = this->createSurface(parent, childTra nsform, FloatPoint(30, 30), IntSize(10, 10));
966 typename Types::LayerType* child2 = this->createSurface(parent, childTra nsform, FloatPoint(20, 40), IntSize(10, 10)); 966 typename Types::LayerType* child2 = this->createSurface(parent, childTra nsform, FloatPoint(20, 40), IntSize(10, 10));
967 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil d1, this->identityMatrix, FloatPoint(-10, -10), IntSize(510, 510), true); 967 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil d1, this->identityMatrix, FloatPoint(-10, -10), IntSize(510, 510), true);
968 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d2, this->identityMatrix, FloatPoint(-10, -10), IntSize(510, 510), true); 968 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d2, this->identityMatrix, FloatPoint(-10, -10), IntSize(510, 510), true);
969 this->calcDrawEtc(parent); 969 this->calcDrawEtc(parent);
970 970
971 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 971 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
972 occlusion.setLayerClipRect(IntRect(-20, -20, 1000, 1000)); 972 occlusion.setLayerClipRect(IntRect(-20, -20, 1000, 1000));
973 973
974 this->visitLayer(layer2, occlusion); 974 this->visitLayer(layer2, occlusion);
975 this->enterContributingSurface(child2, occlusion); 975 this->enterContributingSurface(child2, occlusion);
976 976
977 EXPECT_RECT_EQ(IntRect(20, 30, 80, 70), occlusion.occlusionInScreenSpace ().bounds()); 977 EXPECT_RECT_EQ(IntRect(20, 30, 80, 70), occlusion.occlusionInScreenSpace ().bounds());
978 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 978 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
979 EXPECT_RECT_EQ(IntRect(-10, 420, 70, 80), occlusion.occlusionInTargetSur face().bounds()); 979 EXPECT_RECT_EQ(IntRect(-10, 420, 70, 80), occlusion.occlusionInTargetSur face().bounds());
980 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 980 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
981 981
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 | | | | 1051 | | | |
1052 | | | | 1052 | | | |
1053 | +--------------------------------|-+ 1053 | +--------------------------------|-+
1054 | | 1054 | |
1055 +----------------------------------+ 1055 +----------------------------------+
1056 510 1056 510
1057 */ 1057 */
1058 } 1058 }
1059 }; 1059 };
1060 1060
1061 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestOverlappingSurfaceSiblings); 1061 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestOverlappingSurfaceSiblings);
1062 1062
1063 template<class Types, bool opaqueLayers> 1063 template<class Types, bool opaqueLayers>
1064 class CCOcclusionTrackerTestOverlappingSurfaceSiblingsWithTwoTransforms : public CCOcclusionTrackerTest<Types, opaqueLayers> { 1064 class OcclusionTrackerTestOverlappingSurfaceSiblingsWithTwoTransforms : public O cclusionTrackerTest<Types, opaqueLayers> {
1065 protected: 1065 protected:
1066 void runMyTest() 1066 void runMyTest()
1067 { 1067 {
1068 WebTransformationMatrix child1Transform; 1068 WebTransformationMatrix child1Transform;
1069 child1Transform.translate(250, 250); 1069 child1Transform.translate(250, 250);
1070 child1Transform.rotate(-90); 1070 child1Transform.rotate(-90);
1071 child1Transform.translate(-250, -250); 1071 child1Transform.translate(-250, -250);
1072 1072
1073 WebTransformationMatrix child2Transform; 1073 WebTransformationMatrix child2Transform;
1074 child2Transform.translate(250, 250); 1074 child2Transform.translate(250, 250);
1075 child2Transform.rotate(90); 1075 child2Transform.rotate(90);
1076 child2Transform.translate(-250, -250); 1076 child2Transform.translate(-250, -250);
1077 1077
1078 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 1078 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
1079 parent->setMasksToBounds(true); 1079 parent->setMasksToBounds(true);
1080 typename Types::LayerType* child1 = this->createSurface(parent, child1Tr ansform, FloatPoint(30, 20), IntSize(10, 10)); 1080 typename Types::LayerType* child1 = this->createSurface(parent, child1Tr ansform, FloatPoint(30, 20), IntSize(10, 10));
1081 typename Types::LayerType* child2 = this->createDrawingSurface(parent, c hild2Transform, FloatPoint(20, 40), IntSize(10, 10), false); 1081 typename Types::LayerType* child2 = this->createDrawingSurface(parent, c hild2Transform, FloatPoint(20, 40), IntSize(10, 10), false);
1082 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil d1, this->identityMatrix, FloatPoint(-10, -20), IntSize(510, 510), true); 1082 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil d1, this->identityMatrix, FloatPoint(-10, -20), IntSize(510, 510), true);
1083 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d2, this->identityMatrix, FloatPoint(-10, -10), IntSize(510, 510), true); 1083 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d2, this->identityMatrix, FloatPoint(-10, -10), IntSize(510, 510), true);
1084 this->calcDrawEtc(parent); 1084 this->calcDrawEtc(parent);
1085 1085
1086 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1086 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1087 occlusion.setLayerClipRect(IntRect(-30, -30, 1000, 1000)); 1087 occlusion.setLayerClipRect(IntRect(-30, -30, 1000, 1000));
1088 1088
1089 this->visitLayer(layer2, occlusion); 1089 this->visitLayer(layer2, occlusion);
1090 this->enterLayer(child2, occlusion); 1090 this->enterLayer(child2, occlusion);
1091 1091
1092 EXPECT_RECT_EQ(IntRect(20, 30, 80, 70), occlusion.occlusionInScreenSpace ().bounds()); 1092 EXPECT_RECT_EQ(IntRect(20, 30, 80, 70), occlusion.occlusionInScreenSpace ().bounds());
1093 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1093 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1094 EXPECT_RECT_EQ(IntRect(-10, 420, 70, 80), occlusion.occlusionInTargetSur face().bounds()); 1094 EXPECT_RECT_EQ(IntRect(-10, 420, 70, 80), occlusion.occlusionInTargetSur face().bounds());
1095 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1095 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
1096 1096
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 | | | | 1159 | | | |
1160 | | 520 | | 1160 | | 520 | |
1161 +----------------------------------+ | 1161 +----------------------------------+ |
1162 | | 1162 | |
1163 +----------------------------------+ 1163 +----------------------------------+
1164 510 1164 510
1165 */ 1165 */
1166 } 1166 }
1167 }; 1167 };
1168 1168
1169 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestOverlappingSurfaceSiblingsWith TwoTransforms); 1169 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestOverlappingSurfaceSiblingsWithTwoT ransforms);
1170 1170
1171 template<class Types, bool opaqueLayers> 1171 template<class Types, bool opaqueLayers>
1172 class CCOcclusionTrackerTestFilters : public CCOcclusionTrackerTest<Types, opaqu eLayers> { 1172 class OcclusionTrackerTestFilters : public OcclusionTrackerTest<Types, opaqueLay ers> {
1173 protected: 1173 protected:
1174 void runMyTest() 1174 void runMyTest()
1175 { 1175 {
1176 WebTransformationMatrix layerTransform; 1176 WebTransformationMatrix layerTransform;
1177 layerTransform.translate(250, 250); 1177 layerTransform.translate(250, 250);
1178 layerTransform.rotate(90); 1178 layerTransform.rotate(90);
1179 layerTransform.translate(-250, -250); 1179 layerTransform.translate(-250, -250);
1180 1180
1181 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 1181 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
1182 parent->setMasksToBounds(true); 1182 parent->setMasksToBounds(true);
1183 typename Types::ContentLayerType* blurLayer = this->createDrawingLayer(p arent, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true); 1183 typename Types::ContentLayerType* blurLayer = this->createDrawingLayer(p arent, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true);
1184 typename Types::ContentLayerType* opaqueLayer = this->createDrawingLayer (parent, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true); 1184 typename Types::ContentLayerType* opaqueLayer = this->createDrawingLayer (parent, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true);
1185 typename Types::ContentLayerType* opacityLayer = this->createDrawingLaye r(parent, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true); 1185 typename Types::ContentLayerType* opacityLayer = this->createDrawingLaye r(parent, layerTransform, FloatPoint(30, 30), IntSize(500, 500), true);
1186 1186
1187 WebFilterOperations filters; 1187 WebFilterOperations filters;
1188 filters.append(WebFilterOperation::createBlurFilter(10)); 1188 filters.append(WebFilterOperation::createBlurFilter(10));
1189 blurLayer->setFilters(filters); 1189 blurLayer->setFilters(filters);
1190 1190
1191 filters.clear(); 1191 filters.clear();
1192 filters.append(WebFilterOperation::createGrayscaleFilter(0.5)); 1192 filters.append(WebFilterOperation::createGrayscaleFilter(0.5));
1193 opaqueLayer->setFilters(filters); 1193 opaqueLayer->setFilters(filters);
1194 1194
1195 filters.clear(); 1195 filters.clear();
1196 filters.append(WebFilterOperation::createOpacityFilter(0.5)); 1196 filters.append(WebFilterOperation::createOpacityFilter(0.5));
1197 opacityLayer->setFilters(filters); 1197 opacityLayer->setFilters(filters);
1198 1198
1199 this->calcDrawEtc(parent); 1199 this->calcDrawEtc(parent);
1200 1200
1201 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1201 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1202 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1202 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1203 1203
1204 // Opacity layer won't contribute to occlusion. 1204 // Opacity layer won't contribute to occlusion.
1205 this->visitLayer(opacityLayer, occlusion); 1205 this->visitLayer(opacityLayer, occlusion);
1206 this->enterContributingSurface(opacityLayer, occlusion); 1206 this->enterContributingSurface(opacityLayer, occlusion);
1207 1207
1208 EXPECT_TRUE(occlusion.occlusionInScreenSpace().isEmpty()); 1208 EXPECT_TRUE(occlusion.occlusionInScreenSpace().isEmpty());
1209 EXPECT_TRUE(occlusion.occlusionInTargetSurface().isEmpty()); 1209 EXPECT_TRUE(occlusion.occlusionInTargetSurface().isEmpty());
1210 1210
1211 // And has nothing to contribute to its parent surface. 1211 // And has nothing to contribute to its parent surface.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1243 // But the opaque layer's occlusion is preserved on the parent. 1243 // But the opaque layer's occlusion is preserved on the parent.
1244 this->leaveContributingSurface(blurLayer, occlusion); 1244 this->leaveContributingSurface(blurLayer, occlusion);
1245 this->enterLayer(parent, occlusion); 1245 this->enterLayer(parent, occlusion);
1246 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInScreenSpace ().bounds()); 1246 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInScreenSpace ().bounds());
1247 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1247 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1248 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInTargetSurfa ce().bounds()); 1248 EXPECT_RECT_EQ(IntRect(30, 30, 70, 70), occlusion.occlusionInTargetSurfa ce().bounds());
1249 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1249 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
1250 } 1250 }
1251 }; 1251 };
1252 1252
1253 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestFilters); 1253 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestFilters);
1254 1254
1255 template<class Types, bool opaqueLayers> 1255 template<class Types, bool opaqueLayers>
1256 class CCOcclusionTrackerTestReplicaDoesOcclude : public CCOcclusionTrackerTest<T ypes, opaqueLayers> { 1256 class OcclusionTrackerTestReplicaDoesOcclude : public OcclusionTrackerTest<Types , opaqueLayers> {
1257 protected: 1257 protected:
1258 void runMyTest() 1258 void runMyTest()
1259 { 1259 {
1260 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200)); 1260 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200));
1261 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 100), IntSize(50, 50), true); 1261 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 100), IntSize(50, 50), true);
1262 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(50, 5 0), IntSize()); 1262 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(50, 5 0), IntSize());
1263 this->calcDrawEtc(parent); 1263 this->calcDrawEtc(parent);
1264 1264
1265 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1265 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1266 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1266 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1267 1267
1268 this->visitLayer(surface, occlusion); 1268 this->visitLayer(surface, occlusion);
1269 1269
1270 EXPECT_RECT_EQ(IntRect(0, 100, 50, 50), occlusion.occlusionInScreenSpace ().bounds()); 1270 EXPECT_RECT_EQ(IntRect(0, 100, 50, 50), occlusion.occlusionInScreenSpace ().bounds());
1271 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1271 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1272 EXPECT_RECT_EQ(IntRect(0, 0, 50, 50), occlusion.occlusionInTargetSurface ().bounds()); 1272 EXPECT_RECT_EQ(IntRect(0, 0, 50, 50), occlusion.occlusionInTargetSurface ().bounds());
1273 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1273 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
1274 1274
1275 this->visitContributingSurface(surface, occlusion); 1275 this->visitContributingSurface(surface, occlusion);
1276 this->enterLayer(parent, occlusion); 1276 this->enterLayer(parent, occlusion);
1277 1277
1278 // The surface and replica should both be occluding the parent. 1278 // The surface and replica should both be occluding the parent.
1279 EXPECT_RECT_EQ(IntRect(0, 100, 100, 100), occlusion.occlusionInTargetSur face().bounds()); 1279 EXPECT_RECT_EQ(IntRect(0, 100, 100, 100), occlusion.occlusionInTargetSur face().bounds());
1280 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 1280 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size());
1281 } 1281 }
1282 }; 1282 };
1283 1283
1284 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestReplicaDoesOcclude); 1284 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaDoesOcclude);
1285 1285
1286 template<class Types, bool opaqueLayers> 1286 template<class Types, bool opaqueLayers>
1287 class CCOcclusionTrackerTestReplicaWithClipping : public CCOcclusionTrackerTest< Types, opaqueLayers> { 1287 class OcclusionTrackerTestReplicaWithClipping : public OcclusionTrackerTest<Type s, opaqueLayers> {
1288 protected: 1288 protected:
1289 void runMyTest() 1289 void runMyTest()
1290 { 1290 {
1291 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 170)); 1291 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 170));
1292 parent->setMasksToBounds(true); 1292 parent->setMasksToBounds(true);
1293 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 100), IntSize(50, 50), true); 1293 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 100), IntSize(50, 50), true);
1294 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(50, 5 0), IntSize()); 1294 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(50, 5 0), IntSize());
1295 this->calcDrawEtc(parent); 1295 this->calcDrawEtc(parent);
1296 1296
1297 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1297 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1298 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1298 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1299 1299
1300 this->visitLayer(surface, occlusion); 1300 this->visitLayer(surface, occlusion);
1301 1301
1302 EXPECT_RECT_EQ(IntRect(0, 100, 50, 50), occlusion.occlusionInScreenSpace ().bounds()); 1302 EXPECT_RECT_EQ(IntRect(0, 100, 50, 50), occlusion.occlusionInScreenSpace ().bounds());
1303 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1303 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1304 EXPECT_RECT_EQ(IntRect(0, 0, 50, 50), occlusion.occlusionInTargetSurface ().bounds()); 1304 EXPECT_RECT_EQ(IntRect(0, 0, 50, 50), occlusion.occlusionInTargetSurface ().bounds());
1305 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1305 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
1306 1306
1307 this->visitContributingSurface(surface, occlusion); 1307 this->visitContributingSurface(surface, occlusion);
1308 this->enterLayer(parent, occlusion); 1308 this->enterLayer(parent, occlusion);
1309 1309
1310 // The surface and replica should both be occluding the parent. 1310 // The surface and replica should both be occluding the parent.
1311 EXPECT_RECT_EQ(IntRect(0, 100, 100, 70), occlusion.occlusionInTargetSurf ace().bounds()); 1311 EXPECT_RECT_EQ(IntRect(0, 100, 100, 70), occlusion.occlusionInTargetSurf ace().bounds());
1312 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 1312 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size());
1313 } 1313 }
1314 }; 1314 };
1315 1315
1316 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestReplicaWithClipping); 1316 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithClipping);
1317 1317
1318 template<class Types, bool opaqueLayers> 1318 template<class Types, bool opaqueLayers>
1319 class CCOcclusionTrackerTestReplicaWithMask : public CCOcclusionTrackerTest<Type s, opaqueLayers> { 1319 class OcclusionTrackerTestReplicaWithMask : public OcclusionTrackerTest<Types, o paqueLayers> {
1320 protected: 1320 protected:
1321 void runMyTest() 1321 void runMyTest()
1322 { 1322 {
1323 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200)); 1323 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200));
1324 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 100), IntSize(50, 50), true); 1324 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 100), IntSize(50, 50), true);
1325 typename Types::LayerType* replica = this->createReplicaLayer(surface, t his->identityMatrix, FloatPoint(50, 50), IntSize()); 1325 typename Types::LayerType* replica = this->createReplicaLayer(surface, t his->identityMatrix, FloatPoint(50, 50), IntSize());
1326 this->createMaskLayer(replica, IntSize(10, 10)); 1326 this->createMaskLayer(replica, IntSize(10, 10));
1327 this->calcDrawEtc(parent); 1327 this->calcDrawEtc(parent);
1328 1328
1329 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1329 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1330 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1330 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1331 1331
1332 this->visitLayer(surface, occlusion); 1332 this->visitLayer(surface, occlusion);
1333 1333
1334 EXPECT_RECT_EQ(IntRect(0, 100, 50, 50), occlusion.occlusionInScreenSpace ().bounds()); 1334 EXPECT_RECT_EQ(IntRect(0, 100, 50, 50), occlusion.occlusionInScreenSpace ().bounds());
1335 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1335 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1336 EXPECT_RECT_EQ(IntRect(0, 0, 50, 50), occlusion.occlusionInTargetSurface ().bounds()); 1336 EXPECT_RECT_EQ(IntRect(0, 0, 50, 50), occlusion.occlusionInTargetSurface ().bounds());
1337 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1337 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
1338 1338
1339 this->visitContributingSurface(surface, occlusion); 1339 this->visitContributingSurface(surface, occlusion);
1340 this->enterLayer(parent, occlusion); 1340 this->enterLayer(parent, occlusion);
1341 1341
1342 // The replica should not be occluding the parent, since it has a mask a pplied to it. 1342 // The replica should not be occluding the parent, since it has a mask a pplied to it.
1343 EXPECT_RECT_EQ(IntRect(0, 100, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds()); 1343 EXPECT_RECT_EQ(IntRect(0, 100, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds());
1344 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1344 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
1345 } 1345 }
1346 }; 1346 };
1347 1347
1348 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestReplicaWithMask); 1348 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithMask);
1349 1349
1350 template<class Types, bool opaqueLayers> 1350 template<class Types, bool opaqueLayers>
1351 class CCOcclusionTrackerTestLayerClipRectOutsideChild : public CCOcclusionTracke rTest<Types, opaqueLayers> { 1351 class OcclusionTrackerTestLayerClipRectOutsideChild : public OcclusionTrackerTes t<Types, opaqueLayers> {
1352 protected: 1352 protected:
1353 void runMyTest() 1353 void runMyTest()
1354 { 1354 {
1355 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1355 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1356 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1356 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1357 this->calcDrawEtc(parent); 1357 this->calcDrawEtc(parent);
1358 1358
1359 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1359 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1360 occlusion.setLayerClipRect(IntRect(200, 100, 100, 100)); 1360 occlusion.setLayerClipRect(IntRect(200, 100, 100, 100));
1361 1361
1362 this->enterLayer(layer, occlusion); 1362 this->enterLayer(layer, occlusion);
1363 1363
1364 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1364 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1365 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1365 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1366 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1366 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1367 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1367 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1368 EXPECT_FALSE(occlusion.occluded(layer, IntRect(200, 100, 100, 100))); 1368 EXPECT_FALSE(occlusion.occluded(layer, IntRect(200, 100, 100, 100)));
1369 1369
(...skipping 12 matching lines...) Expand all
1382 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 100, 100, 100))); 1382 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 100, 100, 100)));
1383 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 0, 100, 100))); 1383 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 0, 100, 100)));
1384 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 200, 100, 100))); 1384 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 200, 100, 100)));
1385 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 200, 100, 100))); 1385 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 200, 100, 100)));
1386 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))); 1386 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)));
1387 1387
1388 EXPECT_RECT_EQ(IntRect(200, 100, 100, 100), occlusion.unoccludedContentR ect(parent, IntRect(0, 0, 300, 300))); 1388 EXPECT_RECT_EQ(IntRect(200, 100, 100, 100), occlusion.unoccludedContentR ect(parent, IntRect(0, 0, 300, 300)));
1389 } 1389 }
1390 }; 1390 };
1391 1391
1392 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestLayerClipRectOutsideChild); 1392 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestLayerClipRectOutsideChild);
1393 1393
1394 template<class Types, bool opaqueLayers> 1394 template<class Types, bool opaqueLayers>
1395 class CCOcclusionTrackerTestViewportRectOutsideChild : public CCOcclusionTracker Test<Types, opaqueLayers> { 1395 class OcclusionTrackerTestViewportRectOutsideChild : public OcclusionTrackerTest <Types, opaqueLayers> {
1396 protected: 1396 protected:
1397 void runMyTest() 1397 void runMyTest()
1398 { 1398 {
1399 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1399 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1400 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1400 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1401 this->calcDrawEtc(parent); 1401 this->calcDrawEtc(parent);
1402 1402
1403 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(200, 100, 100, 100)); 1403 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(200, 100, 100, 100));
1404 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1404 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1405 1405
1406 this->enterLayer(layer, occlusion); 1406 this->enterLayer(layer, occlusion);
1407 1407
1408 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1408 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1409 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1409 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1410 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1410 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1411 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1411 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1412 EXPECT_FALSE(occlusion.occluded(layer, IntRect(200, 100, 100, 100))); 1412 EXPECT_FALSE(occlusion.occluded(layer, IntRect(200, 100, 100, 100)));
1413 1413
(...skipping 12 matching lines...) Expand all
1426 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 100, 100, 100))); 1426 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 100, 100, 100)));
1427 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 0, 100, 100))); 1427 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 0, 100, 100)));
1428 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 200, 100, 100))); 1428 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 200, 100, 100)));
1429 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 200, 100, 100))); 1429 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 200, 100, 100)));
1430 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))); 1430 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)));
1431 1431
1432 EXPECT_RECT_EQ(IntRect(200, 100, 100, 100), occlusion.unoccludedContentR ect(parent, IntRect(0, 0, 300, 300))); 1432 EXPECT_RECT_EQ(IntRect(200, 100, 100, 100), occlusion.unoccludedContentR ect(parent, IntRect(0, 0, 300, 300)));
1433 } 1433 }
1434 }; 1434 };
1435 1435
1436 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestViewportRectOutsideChild); 1436 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestViewportRectOutsideChild);
1437 1437
1438 template<class Types, bool opaqueLayers> 1438 template<class Types, bool opaqueLayers>
1439 class CCOcclusionTrackerTestLayerClipRectOverChild : public CCOcclusionTrackerTe st<Types, opaqueLayers> { 1439 class OcclusionTrackerTestLayerClipRectOverChild : public OcclusionTrackerTest<T ypes, opaqueLayers> {
1440 protected: 1440 protected:
1441 void runMyTest() 1441 void runMyTest()
1442 { 1442 {
1443 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1443 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1444 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1444 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1445 this->calcDrawEtc(parent); 1445 this->calcDrawEtc(parent);
1446 1446
1447 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1447 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1448 occlusion.setLayerClipRect(IntRect(100, 100, 100, 100)); 1448 occlusion.setLayerClipRect(IntRect(100, 100, 100, 100));
1449 1449
1450 this->enterLayer(layer, occlusion); 1450 this->enterLayer(layer, occlusion);
1451 1451
1452 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1452 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1453 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1453 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1454 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1454 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1455 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1455 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1456 1456
1457 this->leaveLayer(layer, occlusion); 1457 this->leaveLayer(layer, occlusion);
1458 this->visitContributingSurface(layer, occlusion); 1458 this->visitContributingSurface(layer, occlusion);
1459 this->enterLayer(parent, occlusion); 1459 this->enterLayer(parent, occlusion);
1460 1460
1461 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 0, 100, 100))); 1461 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 0, 100, 100)));
1462 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 100, 100, 100))); 1462 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 100, 100, 100)));
1463 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 0, 100, 100))); 1463 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 0, 100, 100)));
1464 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 100, 100, 100))); 1464 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 100, 100, 100)));
1465 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 100, 100, 100))); 1465 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 100, 100, 100)));
1466 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 0, 100, 100))); 1466 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 0, 100, 100)));
1467 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 200, 100, 100))); 1467 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 200, 100, 100)));
1468 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 200, 100, 100))); 1468 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 200, 100, 100)));
1469 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))); 1469 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)));
1470 1470
1471 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 3 00)).isEmpty()); 1471 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 3 00)).isEmpty());
1472 } 1472 }
1473 }; 1473 };
1474 1474
1475 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestLayerClipRectOverChild); 1475 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestLayerClipRectOverChild);
1476 1476
1477 template<class Types, bool opaqueLayers> 1477 template<class Types, bool opaqueLayers>
1478 class CCOcclusionTrackerTestViewportRectOverChild : public CCOcclusionTrackerTes t<Types, opaqueLayers> { 1478 class OcclusionTrackerTestViewportRectOverChild : public OcclusionTrackerTest<Ty pes, opaqueLayers> {
1479 protected: 1479 protected:
1480 void runMyTest() 1480 void runMyTest()
1481 { 1481 {
1482 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1482 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1483 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1483 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1484 this->calcDrawEtc(parent); 1484 this->calcDrawEtc(parent);
1485 1485
1486 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(100, 100, 100, 100)); 1486 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(100, 100, 100, 100));
1487 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1487 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1488 1488
1489 this->enterLayer(layer, occlusion); 1489 this->enterLayer(layer, occlusion);
1490 1490
1491 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1491 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1492 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1492 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1493 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1493 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1494 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1494 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1495 1495
1496 this->leaveLayer(layer, occlusion); 1496 this->leaveLayer(layer, occlusion);
1497 this->visitContributingSurface(layer, occlusion); 1497 this->visitContributingSurface(layer, occlusion);
1498 this->enterLayer(parent, occlusion); 1498 this->enterLayer(parent, occlusion);
1499 1499
1500 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 0, 100, 100))); 1500 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 0, 100, 100)));
1501 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 100, 100, 100))); 1501 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 100, 100, 100)));
1502 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 0, 100, 100))); 1502 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 0, 100, 100)));
1503 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 100, 100, 100))); 1503 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 100, 100, 100)));
1504 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 100, 100, 100))); 1504 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 100, 100, 100)));
1505 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 0, 100, 100))); 1505 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 0, 100, 100)));
1506 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 200, 100, 100))); 1506 EXPECT_TRUE(occlusion.occluded(parent, IntRect(0, 200, 100, 100)));
1507 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 200, 100, 100))); 1507 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 200, 100, 100)));
1508 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))); 1508 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)));
1509 1509
1510 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 3 00)).isEmpty()); 1510 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 3 00)).isEmpty());
1511 } 1511 }
1512 }; 1512 };
1513 1513
1514 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestViewportRectOverChild); 1514 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestViewportRectOverChild);
1515 1515
1516 template<class Types, bool opaqueLayers> 1516 template<class Types, bool opaqueLayers>
1517 class CCOcclusionTrackerTestLayerClipRectPartlyOverChild : public CCOcclusionTra ckerTest<Types, opaqueLayers> { 1517 class OcclusionTrackerTestLayerClipRectPartlyOverChild : public OcclusionTracker Test<Types, opaqueLayers> {
1518 protected: 1518 protected:
1519 void runMyTest() 1519 void runMyTest()
1520 { 1520 {
1521 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1521 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1522 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1522 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1523 this->calcDrawEtc(parent); 1523 this->calcDrawEtc(parent);
1524 1524
1525 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1525 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1526 occlusion.setLayerClipRect(IntRect(50, 50, 200, 200)); 1526 occlusion.setLayerClipRect(IntRect(50, 50, 200, 200));
1527 1527
1528 this->enterLayer(layer, occlusion); 1528 this->enterLayer(layer, occlusion);
1529 1529
1530 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1530 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1531 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1531 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1532 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1532 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1533 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1533 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1534 1534
1535 this->leaveLayer(layer, occlusion); 1535 this->leaveLayer(layer, occlusion);
(...skipping 11 matching lines...) Expand all
1547 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))); 1547 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)));
1548 1548
1549 EXPECT_RECT_EQ(IntRect(50, 50, 200, 200), occlusion.unoccludedContentRec t(parent, IntRect(0, 0, 300, 300))); 1549 EXPECT_RECT_EQ(IntRect(50, 50, 200, 200), occlusion.unoccludedContentRec t(parent, IntRect(0, 0, 300, 300)));
1550 EXPECT_RECT_EQ(IntRect(200, 50, 50, 50), occlusion.unoccludedContentRect (parent, IntRect(0, 0, 300, 100))); 1550 EXPECT_RECT_EQ(IntRect(200, 50, 50, 50), occlusion.unoccludedContentRect (parent, IntRect(0, 0, 300, 100)));
1551 EXPECT_RECT_EQ(IntRect(200, 100, 50, 100), occlusion.unoccludedContentRe ct(parent, IntRect(0, 100, 300, 100))); 1551 EXPECT_RECT_EQ(IntRect(200, 100, 50, 100), occlusion.unoccludedContentRe ct(parent, IntRect(0, 100, 300, 100)));
1552 EXPECT_RECT_EQ(IntRect(200, 100, 50, 100), occlusion.unoccludedContentRe ct(parent, IntRect(200, 100, 100, 100))); 1552 EXPECT_RECT_EQ(IntRect(200, 100, 50, 100), occlusion.unoccludedContentRe ct(parent, IntRect(200, 100, 100, 100)));
1553 EXPECT_RECT_EQ(IntRect(100, 200, 100, 50), occlusion.unoccludedContentRe ct(parent, IntRect(100, 200, 100, 100))); 1553 EXPECT_RECT_EQ(IntRect(100, 200, 100, 50), occlusion.unoccludedContentRe ct(parent, IntRect(100, 200, 100, 100)));
1554 } 1554 }
1555 }; 1555 };
1556 1556
1557 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestLayerClipRectPartlyOverChild); 1557 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestLayerClipRectPartlyOverChild);
1558 1558
1559 template<class Types, bool opaqueLayers> 1559 template<class Types, bool opaqueLayers>
1560 class CCOcclusionTrackerTestViewportRectPartlyOverChild : public CCOcclusionTrac kerTest<Types, opaqueLayers> { 1560 class OcclusionTrackerTestViewportRectPartlyOverChild : public OcclusionTrackerT est<Types, opaqueLayers> {
1561 protected: 1561 protected:
1562 void runMyTest() 1562 void runMyTest()
1563 { 1563 {
1564 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1564 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1565 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1565 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1566 this->calcDrawEtc(parent); 1566 this->calcDrawEtc(parent);
1567 1567
1568 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(50, 50, 200, 200)); 1568 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(50, 50, 200, 200));
1569 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1569 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1570 1570
1571 this->enterLayer(layer, occlusion); 1571 this->enterLayer(layer, occlusion);
1572 1572
1573 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1573 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1574 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1574 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1575 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1575 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1576 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1576 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1577 1577
1578 this->leaveLayer(layer, occlusion); 1578 this->leaveLayer(layer, occlusion);
(...skipping 11 matching lines...) Expand all
1590 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))); 1590 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)));
1591 1591
1592 EXPECT_RECT_EQ(IntRect(50, 50, 200, 200), occlusion.unoccludedContentRec t(parent, IntRect(0, 0, 300, 300))); 1592 EXPECT_RECT_EQ(IntRect(50, 50, 200, 200), occlusion.unoccludedContentRec t(parent, IntRect(0, 0, 300, 300)));
1593 EXPECT_RECT_EQ(IntRect(200, 50, 50, 50), occlusion.unoccludedContentRect (parent, IntRect(0, 0, 300, 100))); 1593 EXPECT_RECT_EQ(IntRect(200, 50, 50, 50), occlusion.unoccludedContentRect (parent, IntRect(0, 0, 300, 100)));
1594 EXPECT_RECT_EQ(IntRect(200, 100, 50, 100), occlusion.unoccludedContentRe ct(parent, IntRect(0, 100, 300, 100))); 1594 EXPECT_RECT_EQ(IntRect(200, 100, 50, 100), occlusion.unoccludedContentRe ct(parent, IntRect(0, 100, 300, 100)));
1595 EXPECT_RECT_EQ(IntRect(200, 100, 50, 100), occlusion.unoccludedContentRe ct(parent, IntRect(200, 100, 100, 100))); 1595 EXPECT_RECT_EQ(IntRect(200, 100, 50, 100), occlusion.unoccludedContentRe ct(parent, IntRect(200, 100, 100, 100)));
1596 EXPECT_RECT_EQ(IntRect(100, 200, 100, 50), occlusion.unoccludedContentRe ct(parent, IntRect(100, 200, 100, 100))); 1596 EXPECT_RECT_EQ(IntRect(100, 200, 100, 50), occlusion.unoccludedContentRe ct(parent, IntRect(100, 200, 100, 100)));
1597 } 1597 }
1598 }; 1598 };
1599 1599
1600 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestViewportRectPartlyOverChild); 1600 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestViewportRectPartlyOverChild);
1601 1601
1602 template<class Types, bool opaqueLayers> 1602 template<class Types, bool opaqueLayers>
1603 class CCOcclusionTrackerTestLayerClipRectOverNothing : public CCOcclusionTracker Test<Types, opaqueLayers> { 1603 class OcclusionTrackerTestLayerClipRectOverNothing : public OcclusionTrackerTest <Types, opaqueLayers> {
1604 protected: 1604 protected:
1605 void runMyTest() 1605 void runMyTest()
1606 { 1606 {
1607 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1607 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1608 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1608 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1609 this->calcDrawEtc(parent); 1609 this->calcDrawEtc(parent);
1610 1610
1611 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1611 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1612 occlusion.setLayerClipRect(IntRect(500, 500, 100, 100)); 1612 occlusion.setLayerClipRect(IntRect(500, 500, 100, 100));
1613 1613
1614 this->enterLayer(layer, occlusion); 1614 this->enterLayer(layer, occlusion);
1615 1615
1616 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1616 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1617 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1617 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1618 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1618 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1619 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1619 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1620 1620
1621 this->leaveLayer(layer, occlusion); 1621 this->leaveLayer(layer, occlusion);
(...skipping 11 matching lines...) Expand all
1633 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))); 1633 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)));
1634 1634
1635 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 3 00)).isEmpty()); 1635 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 3 00)).isEmpty());
1636 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 1 00)).isEmpty()); 1636 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 1 00)).isEmpty());
1637 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 100, 300, 100)).isEmpty()); 1637 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 100, 300, 100)).isEmpty());
1638 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(200, 100, 10 0, 100)).isEmpty()); 1638 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(200, 100, 10 0, 100)).isEmpty());
1639 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(100, 200, 10 0, 100)).isEmpty()); 1639 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(100, 200, 10 0, 100)).isEmpty());
1640 } 1640 }
1641 }; 1641 };
1642 1642
1643 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestLayerClipRectOverNothing); 1643 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestLayerClipRectOverNothing);
1644 1644
1645 template<class Types, bool opaqueLayers> 1645 template<class Types, bool opaqueLayers>
1646 class CCOcclusionTrackerTestViewportRectOverNothing : public CCOcclusionTrackerT est<Types, opaqueLayers> { 1646 class OcclusionTrackerTestViewportRectOverNothing : public OcclusionTrackerTest< Types, opaqueLayers> {
1647 protected: 1647 protected:
1648 void runMyTest() 1648 void runMyTest()
1649 { 1649 {
1650 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1650 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1651 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1651 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1652 this->calcDrawEtc(parent); 1652 this->calcDrawEtc(parent);
1653 1653
1654 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(500, 500, 100, 100)); 1654 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(500, 500, 100, 100));
1655 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1655 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1656 1656
1657 this->enterLayer(layer, occlusion); 1657 this->enterLayer(layer, occlusion);
1658 1658
1659 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1659 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1660 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1660 EXPECT_TRUE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1661 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1661 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1662 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1662 EXPECT_TRUE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1663 1663
1664 this->leaveLayer(layer, occlusion); 1664 this->leaveLayer(layer, occlusion);
(...skipping 11 matching lines...) Expand all
1676 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))); 1676 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)));
1677 1677
1678 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 3 00)).isEmpty()); 1678 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 3 00)).isEmpty());
1679 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 1 00)).isEmpty()); 1679 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 0, 300, 1 00)).isEmpty());
1680 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 100, 300, 100)).isEmpty()); 1680 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(0, 100, 300, 100)).isEmpty());
1681 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(200, 100, 10 0, 100)).isEmpty()); 1681 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(200, 100, 10 0, 100)).isEmpty());
1682 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(100, 200, 10 0, 100)).isEmpty()); 1682 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, IntRect(100, 200, 10 0, 100)).isEmpty());
1683 } 1683 }
1684 }; 1684 };
1685 1685
1686 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestViewportRectOverNothing); 1686 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestViewportRectOverNothing);
1687 1687
1688 template<class Types, bool opaqueLayers> 1688 template<class Types, bool opaqueLayers>
1689 class CCOcclusionTrackerTestLayerClipRectForLayerOffOrigin : public CCOcclusionT rackerTest<Types, opaqueLayers> { 1689 class OcclusionTrackerTestLayerClipRectForLayerOffOrigin : public OcclusionTrack erTest<Types, opaqueLayers> {
1690 protected: 1690 protected:
1691 void runMyTest() 1691 void runMyTest()
1692 { 1692 {
1693 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1693 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1694 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true); 1694 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), true);
1695 this->calcDrawEtc(parent); 1695 this->calcDrawEtc(parent);
1696 1696
1697 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1697 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1698 this->enterLayer(layer, occlusion); 1698 this->enterLayer(layer, occlusion);
1699 1699
1700 // This layer is translated when drawn into its target. So if the clip r ect given from the target surface 1700 // This layer is translated when drawn into its target. So if the clip r ect given from the target surface
1701 // is not in that target space, then after translating these query rects into the target, they will fall outside 1701 // is not in that target space, then after translating these query rects into the target, they will fall outside
1702 // the clip and be considered occluded. 1702 // the clip and be considered occluded.
1703 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1703 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1704 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1704 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1705 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1705 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1706 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1706 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1707 } 1707 }
1708 }; 1708 };
1709 1709
1710 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestLayerClipRectForLayerOffOrigin ); 1710 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestLayerClipRectForLayerOffOrigin);
1711 1711
1712 template<class Types, bool opaqueLayers> 1712 template<class Types, bool opaqueLayers>
1713 class CCOcclusionTrackerTestOpaqueContentsRegionEmpty : public CCOcclusionTracke rTest<Types, opaqueLayers> { 1713 class OcclusionTrackerTestOpaqueContentsRegionEmpty : public OcclusionTrackerTes t<Types, opaqueLayers> {
1714 protected: 1714 protected:
1715 void runMyTest() 1715 void runMyTest()
1716 { 1716 {
1717 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1717 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1718 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), false); 1718 typename Types::ContentLayerType* layer = this->createDrawingSurface(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 200), false);
1719 this->calcDrawEtc(parent); 1719 this->calcDrawEtc(parent);
1720 1720
1721 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1721 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1722 this->enterLayer(layer, occlusion); 1722 this->enterLayer(layer, occlusion);
1723 1723
1724 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 0, 100, 100))); 1724 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 0, 100, 100)));
1725 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 0, 100, 100))); 1725 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 0, 100, 100)));
1726 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 100, 100, 100))); 1726 EXPECT_FALSE(occlusion.occluded(layer, IntRect(0, 100, 100, 100)));
1727 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100))); 1727 EXPECT_FALSE(occlusion.occluded(layer, IntRect(100, 100, 100, 100)));
1728 1728
1729 // Occluded since its outside the surface bounds. 1729 // Occluded since its outside the surface bounds.
1730 EXPECT_TRUE(occlusion.occluded(layer, IntRect(200, 100, 100, 100))); 1730 EXPECT_TRUE(occlusion.occluded(layer, IntRect(200, 100, 100, 100)));
1731 1731
1732 // Test without any clip rect. 1732 // Test without any clip rect.
1733 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 1733 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
1734 EXPECT_FALSE(occlusion.occluded(layer, IntRect(200, 100, 100, 100))); 1734 EXPECT_FALSE(occlusion.occluded(layer, IntRect(200, 100, 100, 100)));
1735 occlusion.useDefaultLayerClipRect(); 1735 occlusion.useDefaultLayerClipRect();
1736 1736
1737 this->leaveLayer(layer, occlusion); 1737 this->leaveLayer(layer, occlusion);
1738 this->visitContributingSurface(layer, occlusion); 1738 this->visitContributingSurface(layer, occlusion);
1739 this->enterLayer(parent, occlusion); 1739 this->enterLayer(parent, occlusion);
1740 1740
1741 EXPECT_TRUE(occlusion.occlusionInScreenSpace().bounds().isEmpty()); 1741 EXPECT_TRUE(occlusion.occlusionInScreenSpace().bounds().isEmpty());
1742 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 1742 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size());
1743 } 1743 }
1744 }; 1744 };
1745 1745
1746 MAIN_AND_IMPL_THREAD_TEST(CCOcclusionTrackerTestOpaqueContentsRegionEmpty); 1746 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionEmpty);
1747 1747
1748 template<class Types, bool opaqueLayers> 1748 template<class Types, bool opaqueLayers>
1749 class CCOcclusionTrackerTestOpaqueContentsRegionNonEmpty : public CCOcclusionTra ckerTest<Types, opaqueLayers> { 1749 class OcclusionTrackerTestOpaqueContentsRegionNonEmpty : public OcclusionTracker Test<Types, opaqueLayers> {
1750 protected: 1750 protected:
1751 void runMyTest() 1751 void runMyTest()
1752 { 1752 {
1753 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1753 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1754 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(100, 100), IntSize(200, 200), false); 1754 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(100, 100), IntSize(200, 200), false);
1755 this->calcDrawEtc(parent); 1755 this->calcDrawEtc(parent);
1756 1756
1757 { 1757 {
1758 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename T ypes::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1758 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1759 layer->setOpaqueContentsRect(IntRect(0, 0, 100, 100)); 1759 layer->setOpaqueContentsRect(IntRect(0, 0, 100, 100));
1760 1760
1761 this->resetLayerIterator(); 1761 this->resetLayerIterator();
1762 this->visitLayer(layer, occlusion); 1762 this->visitLayer(layer, occlusion);
1763 this->enterLayer(parent, occlusion); 1763 this->enterLayer(parent, occlusion);
1764 1764
1765 EXPECT_RECT_EQ(IntRect(100, 100, 100, 100), occlusion.occlusionInScr eenSpace().bounds()); 1765 EXPECT_RECT_EQ(IntRect(100, 100, 100, 100), occlusion.occlusionInScr eenSpace().bounds());
1766 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1766 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1767 1767
1768 EXPECT_FALSE(occlusion.occluded(parent, IntRect(0, 100, 100, 100))); 1768 EXPECT_FALSE(occlusion.occluded(parent, IntRect(0, 100, 100, 100)));
1769 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 100, 100, 100))) ; 1769 EXPECT_TRUE(occlusion.occluded(parent, IntRect(100, 100, 100, 100))) ;
1770 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)) ); 1770 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)) );
1771 } 1771 }
1772 1772
1773 { 1773 {
1774 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename T ypes::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1774 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1775 layer->setOpaqueContentsRect(IntRect(20, 20, 180, 180)); 1775 layer->setOpaqueContentsRect(IntRect(20, 20, 180, 180));
1776 1776
1777 this->resetLayerIterator(); 1777 this->resetLayerIterator();
1778 this->visitLayer(layer, occlusion); 1778 this->visitLayer(layer, occlusion);
1779 this->enterLayer(parent, occlusion); 1779 this->enterLayer(parent, occlusion);
1780 1780
1781 EXPECT_RECT_EQ(IntRect(120, 120, 180, 180), occlusion.occlusionInScr eenSpace().bounds()); 1781 EXPECT_RECT_EQ(IntRect(120, 120, 180, 180), occlusion.occlusionInScr eenSpace().bounds());
1782 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1782 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1783 1783
1784 EXPECT_FALSE(occlusion.occluded(parent, IntRect(0, 100, 100, 100))); 1784 EXPECT_FALSE(occlusion.occluded(parent, IntRect(0, 100, 100, 100)));
1785 EXPECT_FALSE(occlusion.occluded(parent, IntRect(100, 100, 100, 100)) ); 1785 EXPECT_FALSE(occlusion.occluded(parent, IntRect(100, 100, 100, 100)) );
1786 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))) ; 1786 EXPECT_TRUE(occlusion.occluded(parent, IntRect(200, 200, 100, 100))) ;
1787 } 1787 }
1788 1788
1789 { 1789 {
1790 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename T ypes::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1790 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1791 layer->setOpaqueContentsRect(IntRect(150, 150, 100, 100)); 1791 layer->setOpaqueContentsRect(IntRect(150, 150, 100, 100));
1792 1792
1793 this->resetLayerIterator(); 1793 this->resetLayerIterator();
1794 this->visitLayer(layer, occlusion); 1794 this->visitLayer(layer, occlusion);
1795 this->enterLayer(parent, occlusion); 1795 this->enterLayer(parent, occlusion);
1796 1796
1797 EXPECT_RECT_EQ(IntRect(250, 250, 50, 50), occlusion.occlusionInScree nSpace().bounds()); 1797 EXPECT_RECT_EQ(IntRect(250, 250, 50, 50), occlusion.occlusionInScree nSpace().bounds());
1798 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1798 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1799 1799
1800 EXPECT_FALSE(occlusion.occluded(parent, IntRect(0, 100, 100, 100))); 1800 EXPECT_FALSE(occlusion.occluded(parent, IntRect(0, 100, 100, 100)));
1801 EXPECT_FALSE(occlusion.occluded(parent, IntRect(100, 100, 100, 100)) ); 1801 EXPECT_FALSE(occlusion.occluded(parent, IntRect(100, 100, 100, 100)) );
1802 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)) ); 1802 EXPECT_FALSE(occlusion.occluded(parent, IntRect(200, 200, 100, 100)) );
1803 } 1803 }
1804 } 1804 }
1805 }; 1805 };
1806 1806
1807 MAIN_AND_IMPL_THREAD_TEST(CCOcclusionTrackerTestOpaqueContentsRegionNonEmpty); 1807 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionNonEmpty);
1808 1808
1809 template<class Types, bool opaqueLayers> 1809 template<class Types, bool opaqueLayers>
1810 class CCOcclusionTrackerTest3dTransform : public CCOcclusionTrackerTest<Types, o paqueLayers> { 1810 class OcclusionTrackerTest3dTransform : public OcclusionTrackerTest<Types, opaqu eLayers> {
1811 protected: 1811 protected:
1812 void runMyTest() 1812 void runMyTest()
1813 { 1813 {
1814 WebTransformationMatrix transform; 1814 WebTransformationMatrix transform;
1815 transform.rotate3d(0, 30, 0); 1815 transform.rotate3d(0, 30, 0);
1816 1816
1817 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1817 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1818 typename Types::LayerType* container = this->createLayer(parent, this->i dentityMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1818 typename Types::LayerType* container = this->createLayer(parent, this->i dentityMatrix, FloatPoint(0, 0), IntSize(300, 300));
1819 typename Types::ContentLayerType* layer = this->createDrawingLayer(conta iner, transform, FloatPoint(100, 100), IntSize(200, 200), true); 1819 typename Types::ContentLayerType* layer = this->createDrawingLayer(conta iner, transform, FloatPoint(100, 100), IntSize(200, 200), true);
1820 this->calcDrawEtc(parent); 1820 this->calcDrawEtc(parent);
1821 1821
1822 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1822 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1823 this->enterLayer(layer, occlusion); 1823 this->enterLayer(layer, occlusion);
1824 1824
1825 // The layer is rotated in 3d but without preserving 3d, so it only gets resized. 1825 // The layer is rotated in 3d but without preserving 3d, so it only gets resized.
1826 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), occlusion.unoccludedContentRect( layer, IntRect(0, 0, 200, 200))); 1826 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), occlusion.unoccludedContentRect( layer, IntRect(0, 0, 200, 200)));
1827 } 1827 }
1828 }; 1828 };
1829 1829
1830 MAIN_AND_IMPL_THREAD_TEST(CCOcclusionTrackerTest3dTransform); 1830 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTest3dTransform);
1831 1831
1832 template<class Types, bool opaqueLayers> 1832 template<class Types, bool opaqueLayers>
1833 class CCOcclusionTrackerTestUnsorted3dLayers : public CCOcclusionTrackerTest<Typ es, opaqueLayers> { 1833 class OcclusionTrackerTestUnsorted3dLayers : public OcclusionTrackerTest<Types, opaqueLayers> {
1834 protected: 1834 protected:
1835 void runMyTest() 1835 void runMyTest()
1836 { 1836 {
1837 // Currently, the main thread layer iterator does not iterate over 3d it ems in 1837 // Currently, the main thread layer iterator does not iterate over 3d it ems in
1838 // sorted order, because layer sorting is not performed on the main thre ad. 1838 // sorted order, because layer sorting is not performed on the main thre ad.
1839 // Because of this, the occlusion tracker cannot assume that a 3d layer occludes 1839 // Because of this, the occlusion tracker cannot assume that a 3d layer occludes
1840 // other layers that have not yet been iterated over. For now, the expec ted 1840 // other layers that have not yet been iterated over. For now, the expec ted
1841 // behavior is that a 3d layer simply does not add any occlusion to the occlusion 1841 // behavior is that a 3d layer simply does not add any occlusion to the occlusion
1842 // tracker. 1842 // tracker.
1843 1843
1844 WebTransformationMatrix translationToFront; 1844 WebTransformationMatrix translationToFront;
1845 translationToFront.translate3d(0, 0, -10); 1845 translationToFront.translate3d(0, 0, -10);
1846 WebTransformationMatrix translationToBack; 1846 WebTransformationMatrix translationToBack;
1847 translationToFront.translate3d(0, 0, -100); 1847 translationToFront.translate3d(0, 0, -100);
1848 1848
1849 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1849 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1850 typename Types::ContentLayerType* child1 = this->createDrawingLayer(pare nt, translationToBack, FloatPoint(0, 0), IntSize(100, 100), true); 1850 typename Types::ContentLayerType* child1 = this->createDrawingLayer(pare nt, translationToBack, FloatPoint(0, 0), IntSize(100, 100), true);
1851 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare nt, translationToFront, FloatPoint(50, 50), IntSize(100, 100), true); 1851 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare nt, translationToFront, FloatPoint(50, 50), IntSize(100, 100), true);
1852 parent->setPreserves3D(true); 1852 parent->setPreserves3D(true);
1853 1853
1854 this->calcDrawEtc(parent); 1854 this->calcDrawEtc(parent);
1855 1855
1856 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1856 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1857 this->visitLayer(child2, occlusion); 1857 this->visitLayer(child2, occlusion);
1858 EXPECT_TRUE(occlusion.occlusionInScreenSpace().isEmpty()); 1858 EXPECT_TRUE(occlusion.occlusionInScreenSpace().isEmpty());
1859 EXPECT_TRUE(occlusion.occlusionInTargetSurface().isEmpty()); 1859 EXPECT_TRUE(occlusion.occlusionInTargetSurface().isEmpty());
1860 1860
1861 this->visitLayer(child1, occlusion); 1861 this->visitLayer(child1, occlusion);
1862 EXPECT_TRUE(occlusion.occlusionInScreenSpace().isEmpty()); 1862 EXPECT_TRUE(occlusion.occlusionInScreenSpace().isEmpty());
1863 EXPECT_TRUE(occlusion.occlusionInTargetSurface().isEmpty()); 1863 EXPECT_TRUE(occlusion.occlusionInTargetSurface().isEmpty());
1864 } 1864 }
1865 }; 1865 };
1866 1866
1867 // This test will have different layer ordering on the impl thread; the test wil l only work on the main thread. 1867 // This test will have different layer ordering on the impl thread; the test wil l only work on the main thread.
1868 MAIN_THREAD_TEST(CCOcclusionTrackerTestUnsorted3dLayers); 1868 MAIN_THREAD_TEST(OcclusionTrackerTestUnsorted3dLayers);
1869 1869
1870 template<class Types, bool opaqueLayers> 1870 template<class Types, bool opaqueLayers>
1871 class CCOcclusionTrackerTestPerspectiveTransform : public CCOcclusionTrackerTest <Types, opaqueLayers> { 1871 class OcclusionTrackerTestPerspectiveTransform : public OcclusionTrackerTest<Typ es, opaqueLayers> {
1872 protected: 1872 protected:
1873 void runMyTest() 1873 void runMyTest()
1874 { 1874 {
1875 WebTransformationMatrix transform; 1875 WebTransformationMatrix transform;
1876 transform.translate(150, 150); 1876 transform.translate(150, 150);
1877 transform.applyPerspective(400); 1877 transform.applyPerspective(400);
1878 transform.rotate3d(1, 0, 0, -30); 1878 transform.rotate3d(1, 0, 0, -30);
1879 transform.translate(-150, -150); 1879 transform.translate(-150, -150);
1880 1880
1881 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1881 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
1882 typename Types::LayerType* container = this->createLayer(parent, this->i dentityMatrix, FloatPoint(0, 0), IntSize(300, 300)); 1882 typename Types::LayerType* container = this->createLayer(parent, this->i dentityMatrix, FloatPoint(0, 0), IntSize(300, 300));
1883 typename Types::ContentLayerType* layer = this->createDrawingLayer(conta iner, transform, FloatPoint(100, 100), IntSize(200, 200), true); 1883 typename Types::ContentLayerType* layer = this->createDrawingLayer(conta iner, transform, FloatPoint(100, 100), IntSize(200, 200), true);
1884 container->setPreserves3D(true); 1884 container->setPreserves3D(true);
1885 layer->setPreserves3D(true); 1885 layer->setPreserves3D(true);
1886 this->calcDrawEtc(parent); 1886 this->calcDrawEtc(parent);
1887 1887
1888 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1888 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1889 this->enterLayer(layer, occlusion); 1889 this->enterLayer(layer, occlusion);
1890 1890
1891 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), occlusion.unoccludedContentRect( layer, IntRect(0, 0, 200, 200))); 1891 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), occlusion.unoccludedContentRect( layer, IntRect(0, 0, 200, 200)));
1892 } 1892 }
1893 }; 1893 };
1894 1894
1895 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read. 1895 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read.
1896 IMPL_THREAD_TEST(CCOcclusionTrackerTestPerspectiveTransform); 1896 IMPL_THREAD_TEST(OcclusionTrackerTestPerspectiveTransform);
1897 1897
1898 template<class Types, bool opaqueLayers> 1898 template<class Types, bool opaqueLayers>
1899 class CCOcclusionTrackerTestPerspectiveTransformBehindCamera : public CCOcclusio nTrackerTest<Types, opaqueLayers> { 1899 class OcclusionTrackerTestPerspectiveTransformBehindCamera : public OcclusionTra ckerTest<Types, opaqueLayers> {
1900 protected: 1900 protected:
1901 void runMyTest() 1901 void runMyTest()
1902 { 1902 {
1903 // This test is based on the platform/chromium/compositing/3d-corners.ht ml layout test. 1903 // This test is based on the platform/chromium/compositing/3d-corners.ht ml layout test.
1904 WebTransformationMatrix transform; 1904 WebTransformationMatrix transform;
1905 transform.translate(250, 50); 1905 transform.translate(250, 50);
1906 transform.applyPerspective(10); 1906 transform.applyPerspective(10);
1907 transform.translate(-250, -50); 1907 transform.translate(-250, -50);
1908 transform.translate(250, 50); 1908 transform.translate(250, 50);
1909 transform.rotate3d(1, 0, 0, -167); 1909 transform.rotate3d(1, 0, 0, -167);
1910 transform.translate(-250, -50); 1910 transform.translate(-250, -50);
1911 1911
1912 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(500, 100)); 1912 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(500, 100));
1913 typename Types::LayerType* container = this->createLayer(parent, this->i dentityMatrix, FloatPoint(0, 0), IntSize(500, 500)); 1913 typename Types::LayerType* container = this->createLayer(parent, this->i dentityMatrix, FloatPoint(0, 0), IntSize(500, 500));
1914 typename Types::ContentLayerType* layer = this->createDrawingLayer(conta iner, transform, FloatPoint(0, 0), IntSize(500, 500), true); 1914 typename Types::ContentLayerType* layer = this->createDrawingLayer(conta iner, transform, FloatPoint(0, 0), IntSize(500, 500), true);
1915 container->setPreserves3D(true); 1915 container->setPreserves3D(true);
1916 layer->setPreserves3D(true); 1916 layer->setPreserves3D(true);
1917 this->calcDrawEtc(parent); 1917 this->calcDrawEtc(parent);
1918 1918
1919 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1919 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1920 this->enterLayer(layer, occlusion); 1920 this->enterLayer(layer, occlusion);
1921 1921
1922 // The bottom 11 pixel rows of this layer remain visible inside the cont ainer, after translation to the target surface. When translated back, 1922 // The bottom 11 pixel rows of this layer remain visible inside the cont ainer, after translation to the target surface. When translated back,
1923 // this will include many more pixels but must include at least the bott om 11 rows. 1923 // this will include many more pixels but must include at least the bott om 11 rows.
1924 EXPECT_TRUE(occlusion.unoccludedContentRect(layer, IntRect(0, 0, 500, 50 0)).contains(IntRect(0, 489, 500, 11))); 1924 EXPECT_TRUE(occlusion.unoccludedContentRect(layer, IntRect(0, 0, 500, 50 0)).contains(IntRect(0, 489, 500, 11)));
1925 } 1925 }
1926 }; 1926 };
1927 1927
1928 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read. 1928 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read.
1929 IMPL_THREAD_TEST(CCOcclusionTrackerTestPerspectiveTransformBehindCamera); 1929 IMPL_THREAD_TEST(OcclusionTrackerTestPerspectiveTransformBehindCamera);
1930 1930
1931 template<class Types, bool opaqueLayers> 1931 template<class Types, bool opaqueLayers>
1932 class CCOcclusionTrackerTestLayerBehindCameraDoesNotOcclude : public CCOcclusion TrackerTest<Types, opaqueLayers> { 1932 class OcclusionTrackerTestLayerBehindCameraDoesNotOcclude : public OcclusionTrac kerTest<Types, opaqueLayers> {
1933 protected: 1933 protected:
1934 void runMyTest() 1934 void runMyTest()
1935 { 1935 {
1936 WebTransformationMatrix transform; 1936 WebTransformationMatrix transform;
1937 transform.translate(50, 50); 1937 transform.translate(50, 50);
1938 transform.applyPerspective(100); 1938 transform.applyPerspective(100);
1939 transform.translate3d(0, 0, 110); 1939 transform.translate3d(0, 0, 110);
1940 transform.translate(-50, -50); 1940 transform.translate(-50, -50);
1941 1941
1942 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 1942 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
1943 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, transform, FloatPoint(0, 0), IntSize(100, 100), true); 1943 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, transform, FloatPoint(0, 0), IntSize(100, 100), true);
1944 parent->setPreserves3D(true); 1944 parent->setPreserves3D(true);
1945 layer->setPreserves3D(true); 1945 layer->setPreserves3D(true);
1946 this->calcDrawEtc(parent); 1946 this->calcDrawEtc(parent);
1947 1947
1948 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1948 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1949 1949
1950 // The |layer| is entirely behind the camera and should not occlude. 1950 // The |layer| is entirely behind the camera and should not occlude.
1951 this->visitLayer(layer, occlusion); 1951 this->visitLayer(layer, occlusion);
1952 this->enterLayer(parent, occlusion); 1952 this->enterLayer(parent, occlusion);
1953 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 1953 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size());
1954 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 1954 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size());
1955 } 1955 }
1956 }; 1956 };
1957 1957
1958 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read. 1958 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read.
1959 IMPL_THREAD_TEST(CCOcclusionTrackerTestLayerBehindCameraDoesNotOcclude); 1959 IMPL_THREAD_TEST(OcclusionTrackerTestLayerBehindCameraDoesNotOcclude);
1960 1960
1961 template<class Types, bool opaqueLayers> 1961 template<class Types, bool opaqueLayers>
1962 class CCOcclusionTrackerTestLargePixelsOccludeInsideClipRect : public CCOcclusio nTrackerTest<Types, opaqueLayers> { 1962 class OcclusionTrackerTestLargePixelsOccludeInsideClipRect : public OcclusionTra ckerTest<Types, opaqueLayers> {
1963 protected: 1963 protected:
1964 void runMyTest() 1964 void runMyTest()
1965 { 1965 {
1966 WebTransformationMatrix transform; 1966 WebTransformationMatrix transform;
1967 transform.translate(50, 50); 1967 transform.translate(50, 50);
1968 transform.applyPerspective(100); 1968 transform.applyPerspective(100);
1969 transform.translate3d(0, 0, 99); 1969 transform.translate3d(0, 0, 99);
1970 transform.translate(-50, -50); 1970 transform.translate(-50, -50);
1971 1971
1972 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100)); 1972 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 100));
1973 parent->setMasksToBounds(true); 1973 parent->setMasksToBounds(true);
1974 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, transform, FloatPoint(0, 0), IntSize(100, 100), true); 1974 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, transform, FloatPoint(0, 0), IntSize(100, 100), true);
1975 parent->setPreserves3D(true); 1975 parent->setPreserves3D(true);
1976 layer->setPreserves3D(true); 1976 layer->setPreserves3D(true);
1977 this->calcDrawEtc(parent); 1977 this->calcDrawEtc(parent);
1978 1978
1979 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 1979 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
1980 1980
1981 // This is very close to the camera, so pixels in its visibleContentRect will actually go outside of the layer's clipRect. 1981 // This is very close to the camera, so pixels in its visibleContentRect will actually go outside of the layer's clipRect.
1982 // Ensure that those pixels don't occlude things outside the clipRect. 1982 // Ensure that those pixels don't occlude things outside the clipRect.
1983 this->visitLayer(layer, occlusion); 1983 this->visitLayer(layer, occlusion);
1984 this->enterLayer(parent, occlusion); 1984 this->enterLayer(parent, occlusion);
1985 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInTargetSurfa ce().bounds()); 1985 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInTargetSurfa ce().bounds());
1986 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1986 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
1987 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInScreenSpace ().bounds()); 1987 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInScreenSpace ().bounds());
1988 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1988 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
1989 } 1989 }
1990 }; 1990 };
1991 1991
1992 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read. 1992 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read.
1993 IMPL_THREAD_TEST(CCOcclusionTrackerTestLargePixelsOccludeInsideClipRect); 1993 IMPL_THREAD_TEST(OcclusionTrackerTestLargePixelsOccludeInsideClipRect);
1994 1994
1995 template<class Types, bool opaqueLayers> 1995 template<class Types, bool opaqueLayers>
1996 class CCOcclusionTrackerTestAnimationOpacity1OnMainThread : public CCOcclusionTr ackerTest<Types, opaqueLayers> { 1996 class OcclusionTrackerTestAnimationOpacity1OnMainThread : public OcclusionTracke rTest<Types, opaqueLayers> {
1997 protected: 1997 protected:
1998 void runMyTest() 1998 void runMyTest()
1999 { 1999 {
2000 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 2000 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
2001 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true); 2001 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true);
2002 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true); 2002 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true);
2003 typename Types::ContentLayerType* surfaceChild = this->createDrawingLaye r(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 300), true); 2003 typename Types::ContentLayerType* surfaceChild = this->createDrawingLaye r(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 300), true);
2004 typename Types::ContentLayerType* surfaceChild2 = this->createDrawingLay er(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 300), true); 2004 typename Types::ContentLayerType* surfaceChild2 = this->createDrawingLay er(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 300), true);
2005 typename Types::ContentLayerType* parent2 = this->createDrawingLayer(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), false); 2005 typename Types::ContentLayerType* parent2 = this->createDrawingLayer(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), false);
2006 typename Types::ContentLayerType* topmost = this->createDrawingLayer(par ent, this->identityMatrix, FloatPoint(250, 0), IntSize(50, 300), true); 2006 typename Types::ContentLayerType* topmost = this->createDrawingLayer(par ent, this->identityMatrix, FloatPoint(250, 0), IntSize(50, 300), true);
2007 2007
2008 addOpacityTransitionToController(*layer->layerAnimationController(), 10, 0, 1, false); 2008 addOpacityTransitionToController(*layer->layerAnimationController(), 10, 0, 1, false);
2009 addOpacityTransitionToController(*surface->layerAnimationController(), 1 0, 0, 1, false); 2009 addOpacityTransitionToController(*surface->layerAnimationController(), 1 0, 0, 1, false);
2010 this->calcDrawEtc(parent); 2010 this->calcDrawEtc(parent);
2011 2011
2012 EXPECT_TRUE(layer->drawOpacityIsAnimating()); 2012 EXPECT_TRUE(layer->drawOpacityIsAnimating());
2013 EXPECT_FALSE(surface->drawOpacityIsAnimating()); 2013 EXPECT_FALSE(surface->drawOpacityIsAnimating());
2014 EXPECT_TRUE(surface->renderSurface()->drawOpacityIsAnimating()); 2014 EXPECT_TRUE(surface->renderSurface()->drawOpacityIsAnimating());
2015 2015
2016 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2016 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2017 2017
2018 this->visitLayer(topmost, occlusion); 2018 this->visitLayer(topmost, occlusion);
2019 this->enterLayer(parent2, occlusion); 2019 this->enterLayer(parent2, occlusion);
2020 // This occlusion will affect all surfaces. 2020 // This occlusion will affect all surfaces.
2021 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContentRect( parent2, IntRect(0, 0, 300, 300))); 2021 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContentRect( parent2, IntRect(0, 0, 300, 300)));
2022 this->leaveLayer(parent2, occlusion); 2022 this->leaveLayer(parent2, occlusion);
2023 2023
2024 this->visitLayer(surfaceChild2, occlusion); 2024 this->visitLayer(surfaceChild2, occlusion);
2025 this->enterLayer(surfaceChild, occlusion); 2025 this->enterLayer(surfaceChild, occlusion);
2026 EXPECT_RECT_EQ(IntRect(100, 0, 100, 300), occlusion.unoccludedContentRec t(surfaceChild, IntRect(0, 0, 300, 300))); 2026 EXPECT_RECT_EQ(IntRect(100, 0, 100, 300), occlusion.unoccludedContentRec t(surfaceChild, IntRect(0, 0, 300, 300)));
2027 this->leaveLayer(surfaceChild, occlusion); 2027 this->leaveLayer(surfaceChild, occlusion);
2028 this->enterLayer(surface, occlusion); 2028 this->enterLayer(surface, occlusion);
2029 EXPECT_RECT_EQ(IntRect(200, 0, 50, 300), occlusion.unoccludedContentRect (surface, IntRect(0, 0, 300, 300))); 2029 EXPECT_RECT_EQ(IntRect(200, 0, 50, 300), occlusion.unoccludedContentRect (surface, IntRect(0, 0, 300, 300)));
2030 this->leaveLayer(surface, occlusion); 2030 this->leaveLayer(surface, occlusion);
2031 2031
2032 this->enterContributingSurface(surface, occlusion); 2032 this->enterContributingSurface(surface, occlusion);
2033 // Occlusion within the surface is lost when leaving the animating surfa ce. 2033 // Occlusion within the surface is lost when leaving the animating surfa ce.
2034 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 300, 300))); 2034 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 300, 300)));
2035 this->leaveContributingSurface(surface, occlusion); 2035 this->leaveContributingSurface(surface, occlusion);
2036 2036
2037 this->visitLayer(layer, occlusion); 2037 this->visitLayer(layer, occlusion);
2038 this->enterLayer(parent, occlusion); 2038 this->enterLayer(parent, occlusion);
2039 2039
2040 // Occlusion is not added for the animating |layer|. 2040 // Occlusion is not added for the animating |layer|.
2041 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContentRect( parent, IntRect(0, 0, 300, 300))); 2041 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContentRect( parent, IntRect(0, 0, 300, 300)));
2042 } 2042 }
2043 }; 2043 };
2044 2044
2045 MAIN_THREAD_TEST(CCOcclusionTrackerTestAnimationOpacity1OnMainThread); 2045 MAIN_THREAD_TEST(OcclusionTrackerTestAnimationOpacity1OnMainThread);
2046 2046
2047 template<class Types, bool opaqueLayers> 2047 template<class Types, bool opaqueLayers>
2048 class CCOcclusionTrackerTestAnimationOpacity0OnMainThread : public CCOcclusionTr ackerTest<Types, opaqueLayers> { 2048 class OcclusionTrackerTestAnimationOpacity0OnMainThread : public OcclusionTracke rTest<Types, opaqueLayers> {
2049 protected: 2049 protected:
2050 void runMyTest() 2050 void runMyTest()
2051 { 2051 {
2052 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 2052 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
2053 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true); 2053 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true);
2054 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true); 2054 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true);
2055 typename Types::ContentLayerType* surfaceChild = this->createDrawingLaye r(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 300), true); 2055 typename Types::ContentLayerType* surfaceChild = this->createDrawingLaye r(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 300), true);
2056 typename Types::ContentLayerType* surfaceChild2 = this->createDrawingLay er(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 300), true); 2056 typename Types::ContentLayerType* surfaceChild2 = this->createDrawingLay er(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 300), true);
2057 typename Types::ContentLayerType* parent2 = this->createDrawingLayer(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), false); 2057 typename Types::ContentLayerType* parent2 = this->createDrawingLayer(par ent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), false);
2058 typename Types::ContentLayerType* topmost = this->createDrawingLayer(par ent, this->identityMatrix, FloatPoint(250, 0), IntSize(50, 300), true); 2058 typename Types::ContentLayerType* topmost = this->createDrawingLayer(par ent, this->identityMatrix, FloatPoint(250, 0), IntSize(50, 300), true);
2059 2059
2060 addOpacityTransitionToController(*layer->layerAnimationController(), 10, 1, 0, false); 2060 addOpacityTransitionToController(*layer->layerAnimationController(), 10, 1, 0, false);
2061 addOpacityTransitionToController(*surface->layerAnimationController(), 1 0, 1, 0, false); 2061 addOpacityTransitionToController(*surface->layerAnimationController(), 1 0, 1, 0, false);
2062 this->calcDrawEtc(parent); 2062 this->calcDrawEtc(parent);
2063 2063
2064 EXPECT_TRUE(layer->drawOpacityIsAnimating()); 2064 EXPECT_TRUE(layer->drawOpacityIsAnimating());
2065 EXPECT_FALSE(surface->drawOpacityIsAnimating()); 2065 EXPECT_FALSE(surface->drawOpacityIsAnimating());
2066 EXPECT_TRUE(surface->renderSurface()->drawOpacityIsAnimating()); 2066 EXPECT_TRUE(surface->renderSurface()->drawOpacityIsAnimating());
2067 2067
2068 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2068 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2069 2069
2070 this->visitLayer(topmost, occlusion); 2070 this->visitLayer(topmost, occlusion);
2071 this->enterLayer(parent2, occlusion); 2071 this->enterLayer(parent2, occlusion);
2072 // This occlusion will affect all surfaces. 2072 // This occlusion will affect all surfaces.
2073 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContentRect( parent, IntRect(0, 0, 300, 300))); 2073 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContentRect( parent, IntRect(0, 0, 300, 300)));
2074 this->leaveLayer(parent2, occlusion); 2074 this->leaveLayer(parent2, occlusion);
2075 2075
2076 this->visitLayer(surfaceChild2, occlusion); 2076 this->visitLayer(surfaceChild2, occlusion);
2077 this->enterLayer(surfaceChild, occlusion); 2077 this->enterLayer(surfaceChild, occlusion);
2078 EXPECT_RECT_EQ(IntRect(100, 0, 100, 300), occlusion.unoccludedContentRec t(surfaceChild, IntRect(0, 0, 300, 300))); 2078 EXPECT_RECT_EQ(IntRect(100, 0, 100, 300), occlusion.unoccludedContentRec t(surfaceChild, IntRect(0, 0, 300, 300)));
2079 this->leaveLayer(surfaceChild, occlusion); 2079 this->leaveLayer(surfaceChild, occlusion);
2080 this->enterLayer(surface, occlusion); 2080 this->enterLayer(surface, occlusion);
2081 EXPECT_RECT_EQ(IntRect(200, 0, 50, 300), occlusion.unoccludedContentRect (surface, IntRect(0, 0, 300, 300))); 2081 EXPECT_RECT_EQ(IntRect(200, 0, 50, 300), occlusion.unoccludedContentRect (surface, IntRect(0, 0, 300, 300)));
2082 this->leaveLayer(surface, occlusion); 2082 this->leaveLayer(surface, occlusion);
2083 2083
2084 this->enterContributingSurface(surface, occlusion); 2084 this->enterContributingSurface(surface, occlusion);
2085 // Occlusion within the surface is lost when leaving the animating surfa ce. 2085 // Occlusion within the surface is lost when leaving the animating surfa ce.
2086 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 300, 300))); 2086 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 300, 300)));
2087 this->leaveContributingSurface(surface, occlusion); 2087 this->leaveContributingSurface(surface, occlusion);
2088 2088
2089 this->visitLayer(layer, occlusion); 2089 this->visitLayer(layer, occlusion);
2090 this->enterLayer(parent, occlusion); 2090 this->enterLayer(parent, occlusion);
2091 2091
2092 // Occlusion is not added for the animating |layer|. 2092 // Occlusion is not added for the animating |layer|.
2093 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContentRect( parent, IntRect(0, 0, 300, 300))); 2093 EXPECT_RECT_EQ(IntRect(0, 0, 250, 300), occlusion.unoccludedContentRect( parent, IntRect(0, 0, 300, 300)));
2094 } 2094 }
2095 }; 2095 };
2096 2096
2097 MAIN_THREAD_TEST(CCOcclusionTrackerTestAnimationOpacity0OnMainThread); 2097 MAIN_THREAD_TEST(OcclusionTrackerTestAnimationOpacity0OnMainThread);
2098 2098
2099 template<class Types, bool opaqueLayers> 2099 template<class Types, bool opaqueLayers>
2100 class CCOcclusionTrackerTestAnimationTranslateOnMainThread : public CCOcclusionT rackerTest<Types, opaqueLayers> { 2100 class OcclusionTrackerTestAnimationTranslateOnMainThread : public OcclusionTrack erTest<Types, opaqueLayers> {
2101 protected: 2101 protected:
2102 void runMyTest() 2102 void runMyTest()
2103 { 2103 {
2104 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 2104 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
2105 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true); 2105 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true);
2106 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true); 2106 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 300), true);
2107 typename Types::ContentLayerType* surfaceChild = this->createDrawingLaye r(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 300), true); 2107 typename Types::ContentLayerType* surfaceChild = this->createDrawingLaye r(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(200, 300), true);
2108 typename Types::ContentLayerType* surfaceChild2 = this->createDrawingLay er(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 300), true); 2108 typename Types::ContentLayerType* surfaceChild2 = this->createDrawingLay er(surface, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 300), true);
2109 typename Types::ContentLayerType* surface2 = this->createDrawingSurface( parent, this->identityMatrix, FloatPoint(0, 0), IntSize(50, 300), true); 2109 typename Types::ContentLayerType* surface2 = this->createDrawingSurface( parent, this->identityMatrix, FloatPoint(0, 0), IntSize(50, 300), true);
2110 2110
2111 addAnimatedTransformToController(*layer->layerAnimationController(), 10, 30, 0); 2111 addAnimatedTransformToController(*layer->layerAnimationController(), 10, 30, 0);
2112 addAnimatedTransformToController(*surface->layerAnimationController(), 1 0, 30, 0); 2112 addAnimatedTransformToController(*surface->layerAnimationController(), 1 0, 30, 0);
2113 addAnimatedTransformToController(*surfaceChild->layerAnimationController (), 10, 30, 0); 2113 addAnimatedTransformToController(*surfaceChild->layerAnimationController (), 10, 30, 0);
2114 this->calcDrawEtc(parent); 2114 this->calcDrawEtc(parent);
2115 2115
2116 EXPECT_TRUE(layer->drawTransformIsAnimating()); 2116 EXPECT_TRUE(layer->drawTransformIsAnimating());
2117 EXPECT_TRUE(layer->screenSpaceTransformIsAnimating()); 2117 EXPECT_TRUE(layer->screenSpaceTransformIsAnimating());
2118 EXPECT_TRUE(surface->renderSurface()->targetSurfaceTransformsAreAnimatin g()); 2118 EXPECT_TRUE(surface->renderSurface()->targetSurfaceTransformsAreAnimatin g());
2119 EXPECT_TRUE(surface->renderSurface()->screenSpaceTransformsAreAnimating( )); 2119 EXPECT_TRUE(surface->renderSurface()->screenSpaceTransformsAreAnimating( ));
2120 // The surface owning layer doesn't animate against its own surface. 2120 // The surface owning layer doesn't animate against its own surface.
2121 EXPECT_FALSE(surface->drawTransformIsAnimating()); 2121 EXPECT_FALSE(surface->drawTransformIsAnimating());
2122 EXPECT_TRUE(surface->screenSpaceTransformIsAnimating()); 2122 EXPECT_TRUE(surface->screenSpaceTransformIsAnimating());
2123 EXPECT_TRUE(surfaceChild->drawTransformIsAnimating()); 2123 EXPECT_TRUE(surfaceChild->drawTransformIsAnimating());
2124 EXPECT_TRUE(surfaceChild->screenSpaceTransformIsAnimating()); 2124 EXPECT_TRUE(surfaceChild->screenSpaceTransformIsAnimating());
2125 2125
2126 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2126 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2127 2127
2128 this->visitLayer(surface2, occlusion); 2128 this->visitLayer(surface2, occlusion);
2129 this->enterContributingSurface(surface2, occlusion); 2129 this->enterContributingSurface(surface2, occlusion);
2130 2130
2131 EXPECT_RECT_EQ(IntRect(0, 0, 50, 300), occlusion.occlusionInScreenSpace( ).bounds()); 2131 EXPECT_RECT_EQ(IntRect(0, 0, 50, 300), occlusion.occlusionInScreenSpace( ).bounds());
2132 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2132 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2133 2133
2134 this->leaveContributingSurface(surface2, occlusion); 2134 this->leaveContributingSurface(surface2, occlusion);
2135 this->enterLayer(surfaceChild2, occlusion); 2135 this->enterLayer(surfaceChild2, occlusion);
2136 2136
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2179 // The |surface| is moving in the screen and in its target, so all occlu sion within the surface is lost when leaving it. 2179 // The |surface| is moving in the screen and in its target, so all occlu sion within the surface is lost when leaving it.
2180 EXPECT_RECT_EQ(IntRect(50, 0, 250, 300), occlusion.unoccludedContentRect (parent, IntRect(0, 0, 300, 300))); 2180 EXPECT_RECT_EQ(IntRect(50, 0, 250, 300), occlusion.unoccludedContentRect (parent, IntRect(0, 0, 300, 300)));
2181 this->leaveLayer(layer, occlusion); 2181 this->leaveLayer(layer, occlusion);
2182 2182
2183 this->enterLayer(parent, occlusion); 2183 this->enterLayer(parent, occlusion);
2184 // The |layer| is animating in the screen and in its target, so no occlu sion is added. 2184 // The |layer| is animating in the screen and in its target, so no occlu sion is added.
2185 EXPECT_RECT_EQ(IntRect(50, 0, 250, 300), occlusion.unoccludedContentRect (parent, IntRect(0, 0, 300, 300))); 2185 EXPECT_RECT_EQ(IntRect(50, 0, 250, 300), occlusion.unoccludedContentRect (parent, IntRect(0, 0, 300, 300)));
2186 } 2186 }
2187 }; 2187 };
2188 2188
2189 MAIN_THREAD_TEST(CCOcclusionTrackerTestAnimationTranslateOnMainThread); 2189 MAIN_THREAD_TEST(OcclusionTrackerTestAnimationTranslateOnMainThread);
2190 2190
2191 template<class Types, bool opaqueLayers> 2191 template<class Types, bool opaqueLayers>
2192 class CCOcclusionTrackerTestSurfaceOcclusionTranslatesToParent : public CCOcclus ionTrackerTest<Types, opaqueLayers> { 2192 class OcclusionTrackerTestSurfaceOcclusionTranslatesToParent : public OcclusionT rackerTest<Types, opaqueLayers> {
2193 protected: 2193 protected:
2194 void runMyTest() 2194 void runMyTest()
2195 { 2195 {
2196 WebTransformationMatrix surfaceTransform; 2196 WebTransformationMatrix surfaceTransform;
2197 surfaceTransform.translate(300, 300); 2197 surfaceTransform.translate(300, 300);
2198 surfaceTransform.scale(2); 2198 surfaceTransform.scale(2);
2199 surfaceTransform.translate(-150, -150); 2199 surfaceTransform.translate(-150, -150);
2200 2200
2201 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(500, 500)); 2201 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(500, 500));
2202 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, surfaceTransform, FloatPoint(0, 0), IntSize(300, 300), false); 2202 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, surfaceTransform, FloatPoint(0, 0), IntSize(300, 300), false);
2203 typename Types::ContentLayerType* surface2 = this->createDrawingSurface( parent, this->identityMatrix, FloatPoint(50, 50), IntSize(300, 300), false); 2203 typename Types::ContentLayerType* surface2 = this->createDrawingSurface( parent, this->identityMatrix, FloatPoint(50, 50), IntSize(300, 300), false);
2204 surface->setOpaqueContentsRect(IntRect(0, 0, 200, 200)); 2204 surface->setOpaqueContentsRect(IntRect(0, 0, 200, 200));
2205 surface2->setOpaqueContentsRect(IntRect(0, 0, 200, 200)); 2205 surface2->setOpaqueContentsRect(IntRect(0, 0, 200, 200));
2206 this->calcDrawEtc(parent); 2206 this->calcDrawEtc(parent);
2207 2207
2208 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2208 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2209 2209
2210 this->visitLayer(surface2, occlusion); 2210 this->visitLayer(surface2, occlusion);
2211 this->visitContributingSurface(surface2, occlusion); 2211 this->visitContributingSurface(surface2, occlusion);
2212 2212
2213 EXPECT_RECT_EQ(IntRect(50, 50, 200, 200), occlusion.occlusionInScreenSpa ce().bounds()); 2213 EXPECT_RECT_EQ(IntRect(50, 50, 200, 200), occlusion.occlusionInScreenSpa ce().bounds());
2214 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2214 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2215 EXPECT_RECT_EQ(IntRect(50, 50, 200, 200), occlusion.occlusionInTargetSur face().bounds()); 2215 EXPECT_RECT_EQ(IntRect(50, 50, 200, 200), occlusion.occlusionInTargetSur face().bounds());
2216 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2216 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2217 2217
2218 // Clear any stored occlusion. 2218 // Clear any stored occlusion.
2219 occlusion.setOcclusionInScreenSpace(Region()); 2219 occlusion.setOcclusionInScreenSpace(Region());
2220 occlusion.setOcclusionInTargetSurface(Region()); 2220 occlusion.setOcclusionInTargetSurface(Region());
2221 2221
2222 this->visitLayer(surface, occlusion); 2222 this->visitLayer(surface, occlusion);
2223 this->visitContributingSurface(surface, occlusion); 2223 this->visitContributingSurface(surface, occlusion);
2224 2224
2225 EXPECT_RECT_EQ(IntRect(0, 0, 400, 400), occlusion.occlusionInScreenSpace ().bounds()); 2225 EXPECT_RECT_EQ(IntRect(0, 0, 400, 400), occlusion.occlusionInScreenSpace ().bounds());
2226 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2226 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2227 EXPECT_RECT_EQ(IntRect(0, 0, 400, 400), occlusion.occlusionInTargetSurfa ce().bounds()); 2227 EXPECT_RECT_EQ(IntRect(0, 0, 400, 400), occlusion.occlusionInTargetSurfa ce().bounds());
2228 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2228 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2229 } 2229 }
2230 }; 2230 };
2231 2231
2232 MAIN_AND_IMPL_THREAD_TEST(CCOcclusionTrackerTestSurfaceOcclusionTranslatesToPare nt); 2232 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesToParent );
2233 2233
2234 template<class Types, bool opaqueLayers> 2234 template<class Types, bool opaqueLayers>
2235 class CCOcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping : public CCOc clusionTrackerTest<Types, opaqueLayers> { 2235 class OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping : public Occlus ionTrackerTest<Types, opaqueLayers> {
2236 protected: 2236 protected:
2237 void runMyTest() 2237 void runMyTest()
2238 { 2238 {
2239 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300)); 2239 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 300));
2240 parent->setMasksToBounds(true); 2240 parent->setMasksToBounds(true);
2241 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, FloatPoint(0, 0), IntSize(500, 300), false); 2241 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, FloatPoint(0, 0), IntSize(500, 300), false);
2242 surface->setOpaqueContentsRect(IntRect(0, 0, 400, 200)); 2242 surface->setOpaqueContentsRect(IntRect(0, 0, 400, 200));
2243 this->calcDrawEtc(parent); 2243 this->calcDrawEtc(parent);
2244 2244
2245 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2245 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2246 2246
2247 this->visitLayer(surface, occlusion); 2247 this->visitLayer(surface, occlusion);
2248 this->visitContributingSurface(surface, occlusion); 2248 this->visitContributingSurface(surface, occlusion);
2249 2249
2250 EXPECT_RECT_EQ(IntRect(0, 0, 300, 200), occlusion.occlusionInScreenSpace ().bounds()); 2250 EXPECT_RECT_EQ(IntRect(0, 0, 300, 200), occlusion.occlusionInScreenSpace ().bounds());
2251 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2251 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2252 EXPECT_RECT_EQ(IntRect(0, 0, 300, 200), occlusion.occlusionInTargetSurfa ce().bounds()); 2252 EXPECT_RECT_EQ(IntRect(0, 0, 300, 200), occlusion.occlusionInTargetSurfa ce().bounds());
2253 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2253 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2254 } 2254 }
2255 }; 2255 };
2256 2256
2257 MAIN_AND_IMPL_THREAD_TEST(CCOcclusionTrackerTestSurfaceOcclusionTranslatesWithCl ipping); 2257 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesWithClip ping);
2258 2258
2259 template<class Types, bool opaqueLayers> 2259 template<class Types, bool opaqueLayers>
2260 class CCOcclusionTrackerTestReplicaOccluded : public CCOcclusionTrackerTest<Type s, opaqueLayers> { 2260 class OcclusionTrackerTestReplicaOccluded : public OcclusionTrackerTest<Types, o paqueLayers> {
2261 protected: 2261 protected:
2262 void runMyTest() 2262 void runMyTest()
2263 { 2263 {
2264 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200)); 2264 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200));
2265 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true); 2265 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true);
2266 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(0, 10 0), IntSize(100, 100)); 2266 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(0, 10 0), IntSize(100, 100));
2267 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, FloatPoint(0, 100), IntSize(100, 100), true); 2267 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, FloatPoint(0, 100), IntSize(100, 100), true);
2268 this->calcDrawEtc(parent); 2268 this->calcDrawEtc(parent);
2269 2269
2270 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2270 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2271 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2271 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2272 2272
2273 // |topmost| occludes the replica, but not the surface itself. 2273 // |topmost| occludes the replica, but not the surface itself.
2274 this->visitLayer(topmost, occlusion); 2274 this->visitLayer(topmost, occlusion);
2275 2275
2276 EXPECT_RECT_EQ(IntRect(0, 100, 100, 100), occlusion.occlusionInScreenSpa ce().bounds()); 2276 EXPECT_RECT_EQ(IntRect(0, 100, 100, 100), occlusion.occlusionInScreenSpa ce().bounds());
2277 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2277 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2278 EXPECT_RECT_EQ(IntRect(0, 100, 100, 100), occlusion.occlusionInTargetSur face().bounds()); 2278 EXPECT_RECT_EQ(IntRect(0, 100, 100, 100), occlusion.occlusionInTargetSur face().bounds());
2279 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2279 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2280 2280
2281 this->visitLayer(surface, occlusion); 2281 this->visitLayer(surface, occlusion);
2282 2282
2283 EXPECT_RECT_EQ(IntRect(0, 0, 100, 200), occlusion.occlusionInScreenSpace ().bounds()); 2283 EXPECT_RECT_EQ(IntRect(0, 0, 100, 200), occlusion.occlusionInScreenSpace ().bounds());
2284 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2284 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2285 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInTargetSurfa ce().bounds()); 2285 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInTargetSurfa ce().bounds());
2286 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2286 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2287 2287
2288 this->enterContributingSurface(surface, occlusion); 2288 this->enterContributingSurface(surface, occlusion);
2289 2289
2290 // Surface is not occluded so it shouldn't think it is. 2290 // Surface is not occluded so it shouldn't think it is.
2291 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 100, 100))); 2291 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 100, 100)));
2292 } 2292 }
2293 }; 2293 };
2294 2294
2295 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestReplicaOccluded); 2295 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaOccluded);
2296 2296
2297 template<class Types, bool opaqueLayers> 2297 template<class Types, bool opaqueLayers>
2298 class CCOcclusionTrackerTestSurfaceWithReplicaUnoccluded : public CCOcclusionTra ckerTest<Types, opaqueLayers> { 2298 class OcclusionTrackerTestSurfaceWithReplicaUnoccluded : public OcclusionTracker Test<Types, opaqueLayers> {
2299 protected: 2299 protected:
2300 void runMyTest() 2300 void runMyTest()
2301 { 2301 {
2302 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200)); 2302 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200));
2303 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true); 2303 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true);
2304 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(0, 10 0), IntSize(100, 100)); 2304 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(0, 10 0), IntSize(100, 100));
2305 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, FloatPoint(0, 0), IntSize(100, 110), true); 2305 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, FloatPoint(0, 0), IntSize(100, 110), true);
2306 this->calcDrawEtc(parent); 2306 this->calcDrawEtc(parent);
2307 2307
2308 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2308 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2309 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2309 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2310 2310
2311 // |topmost| occludes the surface, but not the entire surface's replica. 2311 // |topmost| occludes the surface, but not the entire surface's replica.
2312 this->visitLayer(topmost, occlusion); 2312 this->visitLayer(topmost, occlusion);
2313 2313
2314 EXPECT_RECT_EQ(IntRect(0, 0, 100, 110), occlusion.occlusionInScreenSpace ().bounds()); 2314 EXPECT_RECT_EQ(IntRect(0, 0, 100, 110), occlusion.occlusionInScreenSpace ().bounds());
2315 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2315 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2316 EXPECT_RECT_EQ(IntRect(0, 0, 100, 110), occlusion.occlusionInTargetSurfa ce().bounds()); 2316 EXPECT_RECT_EQ(IntRect(0, 0, 100, 110), occlusion.occlusionInTargetSurfa ce().bounds());
2317 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2317 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2318 2318
2319 this->visitLayer(surface, occlusion); 2319 this->visitLayer(surface, occlusion);
2320 2320
2321 EXPECT_RECT_EQ(IntRect(0, 0, 100, 110), occlusion.occlusionInScreenSpace ().bounds()); 2321 EXPECT_RECT_EQ(IntRect(0, 0, 100, 110), occlusion.occlusionInScreenSpace ().bounds());
2322 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2322 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2323 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInTargetSurfa ce().bounds()); 2323 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInTargetSurfa ce().bounds());
2324 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2324 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2325 2325
2326 this->enterContributingSurface(surface, occlusion); 2326 this->enterContributingSurface(surface, occlusion);
2327 2327
2328 // Surface is occluded, but only the top 10px of the replica. 2328 // Surface is occluded, but only the top 10px of the replica.
2329 EXPECT_RECT_EQ(IntRect(0, 0, 0, 0), occlusion.unoccludedContributingSurf aceContentRect(surface, false, IntRect(0, 0, 100, 100))); 2329 EXPECT_RECT_EQ(IntRect(0, 0, 0, 0), occlusion.unoccludedContributingSurf aceContentRect(surface, false, IntRect(0, 0, 100, 100)));
2330 EXPECT_RECT_EQ(IntRect(0, 10, 100, 90), occlusion.unoccludedContributing SurfaceContentRect(surface, true, IntRect(0, 0, 100, 100))); 2330 EXPECT_RECT_EQ(IntRect(0, 10, 100, 90), occlusion.unoccludedContributing SurfaceContentRect(surface, true, IntRect(0, 0, 100, 100)));
2331 } 2331 }
2332 }; 2332 };
2333 2333
2334 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestSurfaceWithReplicaUnoccluded); 2334 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceWithReplicaUnoccluded);
2335 2335
2336 template<class Types, bool opaqueLayers> 2336 template<class Types, bool opaqueLayers>
2337 class CCOcclusionTrackerTestSurfaceAndReplicaOccludedDifferently : public CCOccl usionTrackerTest<Types, opaqueLayers> { 2337 class OcclusionTrackerTestSurfaceAndReplicaOccludedDifferently : public Occlusio nTrackerTest<Types, opaqueLayers> {
2338 protected: 2338 protected:
2339 void runMyTest() 2339 void runMyTest()
2340 { 2340 {
2341 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200)); 2341 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200));
2342 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true); 2342 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true);
2343 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(0, 10 0), IntSize(100, 100)); 2343 this->createReplicaLayer(surface, this->identityMatrix, FloatPoint(0, 10 0), IntSize(100, 100));
2344 typename Types::LayerType* overSurface = this->createDrawingLayer(parent , this->identityMatrix, FloatPoint(0, 0), IntSize(40, 100), true); 2344 typename Types::LayerType* overSurface = this->createDrawingLayer(parent , this->identityMatrix, FloatPoint(0, 0), IntSize(40, 100), true);
2345 typename Types::LayerType* overReplica = this->createDrawingLayer(parent , this->identityMatrix, FloatPoint(0, 100), IntSize(50, 100), true); 2345 typename Types::LayerType* overReplica = this->createDrawingLayer(parent , this->identityMatrix, FloatPoint(0, 100), IntSize(50, 100), true);
2346 this->calcDrawEtc(parent); 2346 this->calcDrawEtc(parent);
2347 2347
2348 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2348 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2349 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2349 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2350 2350
2351 // These occlude the surface and replica differently, so we can test eac h one. 2351 // These occlude the surface and replica differently, so we can test eac h one.
2352 this->visitLayer(overReplica, occlusion); 2352 this->visitLayer(overReplica, occlusion);
2353 this->visitLayer(overSurface, occlusion); 2353 this->visitLayer(overSurface, occlusion);
2354 2354
2355 EXPECT_RECT_EQ(IntRect(0, 0, 50, 200), occlusion.occlusionInScreenSpace( ).bounds()); 2355 EXPECT_RECT_EQ(IntRect(0, 0, 50, 200), occlusion.occlusionInScreenSpace( ).bounds());
2356 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 2356 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size());
2357 EXPECT_RECT_EQ(IntRect(0, 0, 50, 200), occlusion.occlusionInTargetSurfac e().bounds()); 2357 EXPECT_RECT_EQ(IntRect(0, 0, 50, 200), occlusion.occlusionInTargetSurfac e().bounds());
2358 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 2358 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size());
2359 2359
2360 this->visitLayer(surface, occlusion); 2360 this->visitLayer(surface, occlusion);
2361 2361
2362 EXPECT_RECT_EQ(IntRect(0, 0, 100, 200), occlusion.occlusionInScreenSpace ().bounds()); 2362 EXPECT_RECT_EQ(IntRect(0, 0, 100, 200), occlusion.occlusionInScreenSpace ().bounds());
2363 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 2363 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size());
2364 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInTargetSurfa ce().bounds()); 2364 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.occlusionInTargetSurfa ce().bounds());
2365 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2365 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2366 2366
2367 this->enterContributingSurface(surface, occlusion); 2367 this->enterContributingSurface(surface, occlusion);
2368 2368
2369 // Surface and replica are occluded different amounts. 2369 // Surface and replica are occluded different amounts.
2370 EXPECT_RECT_EQ(IntRect(40, 0, 60, 100), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 100, 100))); 2370 EXPECT_RECT_EQ(IntRect(40, 0, 60, 100), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 100, 100)));
2371 EXPECT_RECT_EQ(IntRect(50, 0, 50, 100), occlusion.unoccludedContributing SurfaceContentRect(surface, true, IntRect(0, 0, 100, 100))); 2371 EXPECT_RECT_EQ(IntRect(50, 0, 50, 100), occlusion.unoccludedContributing SurfaceContentRect(surface, true, IntRect(0, 0, 100, 100)));
2372 } 2372 }
2373 }; 2373 };
2374 2374
2375 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestSurfaceAndReplicaOccludedDiffe rently); 2375 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceAndReplicaOccludedDifferent ly);
2376 2376
2377 template<class Types, bool opaqueLayers> 2377 template<class Types, bool opaqueLayers>
2378 class CCOcclusionTrackerTestSurfaceChildOfSurface : public CCOcclusionTrackerTes t<Types, opaqueLayers> { 2378 class OcclusionTrackerTestSurfaceChildOfSurface : public OcclusionTrackerTest<Ty pes, opaqueLayers> {
2379 protected: 2379 protected:
2380 void runMyTest() 2380 void runMyTest()
2381 { 2381 {
2382 // This test verifies that the surface cliprect does not end up empty an d clip away the entire unoccluded rect. 2382 // This test verifies that the surface cliprect does not end up empty an d clip away the entire unoccluded rect.
2383 2383
2384 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200)); 2384 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200));
2385 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true); 2385 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true);
2386 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur face, this->identityMatrix, FloatPoint(0, 10), IntSize(100, 50), true); 2386 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur face, this->identityMatrix, FloatPoint(0, 10), IntSize(100, 50), true);
2387 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, FloatPoint(0, 0), IntSize(100, 50), true); 2387 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, FloatPoint(0, 0), IntSize(100, 50), true);
2388 this->calcDrawEtc(parent); 2388 this->calcDrawEtc(parent);
2389 2389
2390 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(-100, -100, 1000, 1000)); 2390 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(-100, -100, 1000, 1000));
2391 2391
2392 // |topmost| occludes everything partially so we know occlusion is happe ning at all. 2392 // |topmost| occludes everything partially so we know occlusion is happe ning at all.
2393 this->visitLayer(topmost, occlusion); 2393 this->visitLayer(topmost, occlusion);
2394 2394
2395 EXPECT_RECT_EQ(IntRect(0, 0, 100, 50), occlusion.occlusionInScreenSpace( ).bounds()); 2395 EXPECT_RECT_EQ(IntRect(0, 0, 100, 50), occlusion.occlusionInScreenSpace( ).bounds());
2396 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2396 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2397 EXPECT_RECT_EQ(IntRect(0, 0, 100, 50), occlusion.occlusionInTargetSurfac e().bounds()); 2397 EXPECT_RECT_EQ(IntRect(0, 0, 100, 50), occlusion.occlusionInTargetSurfac e().bounds());
2398 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2398 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2399 2399
2400 this->visitLayer(surfaceChild, occlusion); 2400 this->visitLayer(surfaceChild, occlusion);
(...skipping 22 matching lines...) Expand all
2423 EXPECT_RECT_EQ(IntRect(0, 10, 100, 50), occlusion.occlusionInTargetSurfa ce().bounds()); 2423 EXPECT_RECT_EQ(IntRect(0, 10, 100, 50), occlusion.occlusionInTargetSurfa ce().bounds());
2424 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2424 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2425 this->leaveLayer(surface, occlusion); 2425 this->leaveLayer(surface, occlusion);
2426 2426
2427 this->enterContributingSurface(surface, occlusion); 2427 this->enterContributingSurface(surface, occlusion);
2428 // The surface's parent does have a clipRect as it is the root layer. 2428 // The surface's parent does have a clipRect as it is the root layer.
2429 EXPECT_RECT_EQ(IntRect(0, 50, 100, 50), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 100, 100))); 2429 EXPECT_RECT_EQ(IntRect(0, 50, 100, 50), occlusion.unoccludedContributing SurfaceContentRect(surface, false, IntRect(0, 0, 100, 100)));
2430 } 2430 }
2431 }; 2431 };
2432 2432
2433 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestSurfaceChildOfSurface); 2433 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceChildOfSurface);
2434 2434
2435 template<class Types, bool opaqueLayers> 2435 template<class Types, bool opaqueLayers>
2436 class CCOcclusionTrackerTestTopmostSurfaceIsClippedToViewport : public CCOcclusi onTrackerTest<Types, opaqueLayers> { 2436 class OcclusionTrackerTestTopmostSurfaceIsClippedToViewport : public OcclusionTr ackerTest<Types, opaqueLayers> {
2437 protected: 2437 protected:
2438 void runMyTest() 2438 void runMyTest()
2439 { 2439 {
2440 // This test verifies that the top-most surface is considered occluded o utside of its target's clipRect and outside the viewport rect. 2440 // This test verifies that the top-most surface is considered occluded o utside of its target's clipRect and outside the viewport rect.
2441 2441
2442 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200)); 2442 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(100, 200));
2443 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 300), true); 2443 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 300), true);
2444 this->calcDrawEtc(parent); 2444 this->calcDrawEtc(parent);
2445 2445
2446 { 2446 {
2447 // Make a viewport rect that is larger than the root layer. 2447 // Make a viewport rect that is larger than the root layer.
2448 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename T ypes::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2448 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2449 2449
2450 this->visitLayer(surface, occlusion); 2450 this->visitLayer(surface, occlusion);
2451 2451
2452 // The root layer always has a clipRect. So the parent of |surface| has a clipRect giving the surface itself a clipRect. 2452 // The root layer always has a clipRect. So the parent of |surface| has a clipRect giving the surface itself a clipRect.
2453 this->enterContributingSurface(surface, occlusion); 2453 this->enterContributingSurface(surface, occlusion);
2454 // Make sure the parent's clipRect clips the unoccluded region of th e child surface. 2454 // Make sure the parent's clipRect clips the unoccluded region of th e child surface.
2455 EXPECT_RECT_EQ(IntRect(0, 0, 100, 200), occlusion.unoccludedContribu tingSurfaceContentRect(surface, false, IntRect(0, 0, 100, 300))); 2455 EXPECT_RECT_EQ(IntRect(0, 0, 100, 200), occlusion.unoccludedContribu tingSurfaceContentRect(surface, false, IntRect(0, 0, 100, 300)));
2456 } 2456 }
2457 this->resetLayerIterator(); 2457 this->resetLayerIterator();
2458 { 2458 {
2459 // Make a viewport rect that is smaller than the root layer. 2459 // Make a viewport rect that is smaller than the root layer.
2460 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename T ypes::RenderSurfaceType> occlusion(IntRect(0, 0, 100, 100)); 2460 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(IntRect(0, 0, 100, 100));
2461 2461
2462 this->visitLayer(surface, occlusion); 2462 this->visitLayer(surface, occlusion);
2463 2463
2464 // The root layer always has a clipRect. So the parent of |surface| has a clipRect giving the surface itself a clipRect. 2464 // The root layer always has a clipRect. So the parent of |surface| has a clipRect giving the surface itself a clipRect.
2465 this->enterContributingSurface(surface, occlusion); 2465 this->enterContributingSurface(surface, occlusion);
2466 // Make sure the viewport rect clips the unoccluded region of the ch ild surface. 2466 // Make sure the viewport rect clips the unoccluded region of the ch ild surface.
2467 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.unoccludedContribu tingSurfaceContentRect(surface, false, IntRect(0, 0, 100, 300))); 2467 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), occlusion.unoccludedContribu tingSurfaceContentRect(surface, false, IntRect(0, 0, 100, 300)));
2468 } 2468 }
2469 } 2469 }
2470 }; 2470 };
2471 2471
2472 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestTopmostSurfaceIsClippedToViewp ort); 2472 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestTopmostSurfaceIsClippedToViewport) ;
2473 2473
2474 template<class Types, bool opaqueLayers> 2474 template<class Types, bool opaqueLayers>
2475 class CCOcclusionTrackerTestSurfaceChildOfClippingSurface : public CCOcclusionTr ackerTest<Types, opaqueLayers> { 2475 class OcclusionTrackerTestSurfaceChildOfClippingSurface : public OcclusionTracke rTest<Types, opaqueLayers> {
2476 protected: 2476 protected:
2477 void runMyTest() 2477 void runMyTest()
2478 { 2478 {
2479 // This test verifies that the surface cliprect does not end up empty an d clip away the entire unoccluded rect. 2479 // This test verifies that the surface cliprect does not end up empty an d clip away the entire unoccluded rect.
2480 2480
2481 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(80, 200)); 2481 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(80, 200));
2482 parent->setMasksToBounds(true); 2482 parent->setMasksToBounds(true);
2483 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true); 2483 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), true);
2484 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur face, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), false); 2484 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur face, this->identityMatrix, FloatPoint(0, 0), IntSize(100, 100), false);
2485 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, FloatPoint(0, 0), IntSize(100, 50), true); 2485 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, FloatPoint(0, 0), IntSize(100, 50), true);
2486 this->calcDrawEtc(parent); 2486 this->calcDrawEtc(parent);
2487 2487
2488 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2488 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2489 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2489 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2490 2490
2491 // |topmost| occludes everything partially so we know occlusion is happe ning at all. 2491 // |topmost| occludes everything partially so we know occlusion is happe ning at all.
2492 this->visitLayer(topmost, occlusion); 2492 this->visitLayer(topmost, occlusion);
2493 2493
2494 EXPECT_RECT_EQ(IntRect(0, 0, 80, 50), occlusion.occlusionInScreenSpace() .bounds()); 2494 EXPECT_RECT_EQ(IntRect(0, 0, 80, 50), occlusion.occlusionInScreenSpace() .bounds());
2495 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2495 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2496 EXPECT_RECT_EQ(IntRect(0, 0, 80, 50), occlusion.occlusionInTargetSurface ().bounds()); 2496 EXPECT_RECT_EQ(IntRect(0, 0, 80, 50), occlusion.occlusionInTargetSurface ().bounds());
2497 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2497 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2498 2498
(...skipping 14 matching lines...) Expand all
2513 EXPECT_RECT_EQ(IntRect(0, 50, 80, 50), occlusion.unoccludedContributingS urfaceContentRect(surfaceChild, false, IntRect(0, 0, 100, 100))); 2513 EXPECT_RECT_EQ(IntRect(0, 50, 80, 50), occlusion.unoccludedContributingS urfaceContentRect(surfaceChild, false, IntRect(0, 0, 100, 100)));
2514 this->leaveContributingSurface(surfaceChild, occlusion); 2514 this->leaveContributingSurface(surfaceChild, occlusion);
2515 2515
2516 this->visitLayer(surface, occlusion); 2516 this->visitLayer(surface, occlusion);
2517 this->enterContributingSurface(surface, occlusion); 2517 this->enterContributingSurface(surface, occlusion);
2518 // The surface's parent does have a clipRect as it is the root layer. 2518 // The surface's parent does have a clipRect as it is the root layer.
2519 EXPECT_RECT_EQ(IntRect(0, 50, 80, 50), occlusion.unoccludedContributingS urfaceContentRect(surface, false, IntRect(0, 0, 100, 100))); 2519 EXPECT_RECT_EQ(IntRect(0, 50, 80, 50), occlusion.unoccludedContributingS urfaceContentRect(surface, false, IntRect(0, 0, 100, 100)));
2520 } 2520 }
2521 }; 2521 };
2522 2522
2523 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestSurfaceChildOfClippingSurface) ; 2523 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceChildOfClippingSurface);
2524 2524
2525 template<class Types, bool opaqueLayers> 2525 template<class Types, bool opaqueLayers>
2526 class CCOcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter : public CCOcclusionTrackerTest<Types, opaqueLayers> { 2526 class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter : public Oc clusionTrackerTest<Types, opaqueLayers> {
2527 protected: 2527 protected:
2528 void runMyTest() 2528 void runMyTest()
2529 { 2529 {
2530 WebTransformationMatrix scaleByHalf; 2530 WebTransformationMatrix scaleByHalf;
2531 scaleByHalf.scale(0.5); 2531 scaleByHalf.scale(0.5);
2532 2532
2533 // Make a surface and its replica, each 50x50, that are completely surro unded by opaque layers which are above them in the z-order. 2533 // Make a surface and its replica, each 50x50, that are completely surro unded by opaque layers which are above them in the z-order.
2534 // The surface is scaled to test that the pixel moving is done in the ta rget space, where the background filter is applied, but the surface 2534 // The surface is scaled to test that the pixel moving is done in the ta rget space, where the background filter is applied, but the surface
2535 // appears at 50, 50 and the replica at 200, 50. 2535 // appears at 50, 50 and the replica at 200, 50.
2536 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150)); 2536 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150));
2537 typename Types::LayerType* filteredSurface = this->createDrawingLayer(pa rent, scaleByHalf, FloatPoint(50, 50), IntSize(100, 100), false); 2537 typename Types::LayerType* filteredSurface = this->createDrawingLayer(pa rent, scaleByHalf, FloatPoint(50, 50), IntSize(100, 100), false);
2538 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(300, 0), IntSize()); 2538 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(300, 0), IntSize());
2539 typename Types::LayerType* occludingLayer1 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 50), true); 2539 typename Types::LayerType* occludingLayer1 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 50), true);
2540 typename Types::LayerType* occludingLayer2 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 100), IntSize(300, 50), true); 2540 typename Types::LayerType* occludingLayer2 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 100), IntSize(300, 50), true);
2541 typename Types::LayerType* occludingLayer3 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 50), IntSize(50, 50), true); 2541 typename Types::LayerType* occludingLayer3 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 50), IntSize(50, 50), true);
2542 typename Types::LayerType* occludingLayer4 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(100, 50), IntSize(100, 50), true); 2542 typename Types::LayerType* occludingLayer4 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(100, 50), IntSize(100, 50), true);
2543 typename Types::LayerType* occludingLayer5 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(250, 50), IntSize(50, 50), true); 2543 typename Types::LayerType* occludingLayer5 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(250, 50), IntSize(50, 50), true);
2544 2544
2545 // Filters make the layer own a surface. 2545 // Filters make the layer own a surface.
2546 WebFilterOperations filters; 2546 WebFilterOperations filters;
2547 filters.append(WebFilterOperation::createBlurFilter(10)); 2547 filters.append(WebFilterOperation::createBlurFilter(10));
2548 filteredSurface->setBackgroundFilters(filters); 2548 filteredSurface->setBackgroundFilters(filters);
2549 2549
2550 // Save the distance of influence for the blur effect. 2550 // Save the distance of influence for the blur effect.
2551 int outsetTop, outsetRight, outsetBottom, outsetLeft; 2551 int outsetTop, outsetRight, outsetBottom, outsetLeft;
2552 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft); 2552 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft);
2553 2553
2554 this->calcDrawEtc(parent); 2554 this->calcDrawEtc(parent);
2555 2555
2556 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2556 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2557 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2557 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2558 2558
2559 // These layers occlude pixels directly beside the filteredSurface. Beca use filtered surface blends pixels in a radius, it will 2559 // These layers occlude pixels directly beside the filteredSurface. Beca use filtered surface blends pixels in a radius, it will
2560 // need to see some of the pixels (up to radius far) underneath the occl udingLayers. 2560 // need to see some of the pixels (up to radius far) underneath the occl udingLayers.
2561 this->visitLayer(occludingLayer5, occlusion); 2561 this->visitLayer(occludingLayer5, occlusion);
2562 this->visitLayer(occludingLayer4, occlusion); 2562 this->visitLayer(occludingLayer4, occlusion);
2563 this->visitLayer(occludingLayer3, occlusion); 2563 this->visitLayer(occludingLayer3, occlusion);
2564 this->visitLayer(occludingLayer2, occlusion); 2564 this->visitLayer(occludingLayer2, occlusion);
2565 this->visitLayer(occludingLayer1, occlusion); 2565 this->visitLayer(occludingLayer1, occlusion);
2566 2566
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2638 testRect.move(-1, 0); 2638 testRect.move(-1, 0);
2639 testRect.expand(1, 0); 2639 testRect.expand(1, 0);
2640 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedContentRect(parent, testR ect)); 2640 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedContentRect(parent, testR ect));
2641 testRect = outsetRect; 2641 testRect = outsetRect;
2642 testRect.move(0, -1); 2642 testRect.move(0, -1);
2643 testRect.expand(0, 1); 2643 testRect.expand(0, 1);
2644 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedContentRect(parent, testR ect)); 2644 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedContentRect(parent, testR ect));
2645 } 2645 }
2646 }; 2646 };
2647 2647
2648 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestDontOccludePixelsNeededForBack groundFilter); 2648 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontOccludePixelsNeededForBackgrou ndFilter);
2649 2649
2650 template<class Types, bool opaqueLayers> 2650 template<class Types, bool opaqueLayers>
2651 class CCOcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice : public CC OcclusionTrackerTest<Types, opaqueLayers> { 2651 class OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice : public Occl usionTrackerTest<Types, opaqueLayers> {
2652 protected: 2652 protected:
2653 void runMyTest() 2653 void runMyTest()
2654 { 2654 {
2655 WebTransformationMatrix scaleByHalf; 2655 WebTransformationMatrix scaleByHalf;
2656 scaleByHalf.scale(0.5); 2656 scaleByHalf.scale(0.5);
2657 2657
2658 // Makes two surfaces that completely cover |parent|. The occlusion both above and below the filters will be reduced by each of them. 2658 // Makes two surfaces that completely cover |parent|. The occlusion both above and below the filters will be reduced by each of them.
2659 typename Types::ContentLayerType* root = this->createRoot(this->identity Matrix, FloatPoint(0, 0), IntSize(75, 75)); 2659 typename Types::ContentLayerType* root = this->createRoot(this->identity Matrix, FloatPoint(0, 0), IntSize(75, 75));
2660 typename Types::LayerType* parent = this->createSurface(root, scaleByHal f, FloatPoint(0, 0), IntSize(150, 150)); 2660 typename Types::LayerType* parent = this->createSurface(root, scaleByHal f, FloatPoint(0, 0), IntSize(150, 150));
2661 parent->setMasksToBounds(true); 2661 parent->setMasksToBounds(true);
2662 typename Types::LayerType* filteredSurface1 = this->createDrawingLayer(p arent, scaleByHalf, FloatPoint(0, 0), IntSize(300, 300), false); 2662 typename Types::LayerType* filteredSurface1 = this->createDrawingLayer(p arent, scaleByHalf, FloatPoint(0, 0), IntSize(300, 300), false);
2663 typename Types::LayerType* filteredSurface2 = this->createDrawingLayer(p arent, scaleByHalf, FloatPoint(0, 0), IntSize(300, 300), false); 2663 typename Types::LayerType* filteredSurface2 = this->createDrawingLayer(p arent, scaleByHalf, FloatPoint(0, 0), IntSize(300, 300), false);
2664 typename Types::LayerType* occludingLayerAbove = this->createDrawingLaye r(parent, this->identityMatrix, FloatPoint(100, 100), IntSize(50, 50), true); 2664 typename Types::LayerType* occludingLayerAbove = this->createDrawingLaye r(parent, this->identityMatrix, FloatPoint(100, 100), IntSize(50, 50), true);
2665 2665
2666 // Filters make the layers own surfaces. 2666 // Filters make the layers own surfaces.
2667 WebFilterOperations filters; 2667 WebFilterOperations filters;
2668 filters.append(WebFilterOperation::createBlurFilter(3)); 2668 filters.append(WebFilterOperation::createBlurFilter(3));
2669 filteredSurface1->setBackgroundFilters(filters); 2669 filteredSurface1->setBackgroundFilters(filters);
2670 filteredSurface2->setBackgroundFilters(filters); 2670 filteredSurface2->setBackgroundFilters(filters);
2671 2671
2672 // Save the distance of influence for the blur effect. 2672 // Save the distance of influence for the blur effect.
2673 int outsetTop, outsetRight, outsetBottom, outsetLeft; 2673 int outsetTop, outsetRight, outsetBottom, outsetLeft;
2674 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft); 2674 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft);
2675 2675
2676 this->calcDrawEtc(root); 2676 this->calcDrawEtc(root);
2677 2677
2678 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2678 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2679 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2679 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2680 2680
2681 this->visitLayer(occludingLayerAbove, occlusion); 2681 this->visitLayer(occludingLayerAbove, occlusion);
2682 EXPECT_RECT_EQ(IntRect(100 / 2, 100 / 2, 50 / 2, 50 / 2), occlusion.occl usionInScreenSpace().bounds()); 2682 EXPECT_RECT_EQ(IntRect(100 / 2, 100 / 2, 50 / 2, 50 / 2), occlusion.occl usionInScreenSpace().bounds());
2683 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2683 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
2684 EXPECT_RECT_EQ(IntRect(100, 100, 50, 50), occlusion.occlusionInTargetSur face().bounds()); 2684 EXPECT_RECT_EQ(IntRect(100, 100, 50, 50), occlusion.occlusionInTargetSur face().bounds());
2685 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2685 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
2686 2686
2687 this->visitLayer(filteredSurface2, occlusion); 2687 this->visitLayer(filteredSurface2, occlusion);
2688 this->visitContributingSurface(filteredSurface2, occlusion); 2688 this->visitContributingSurface(filteredSurface2, occlusion);
(...skipping 11 matching lines...) Expand all
2700 outsetTop = (outsetTop + 1) / 2; 2700 outsetTop = (outsetTop + 1) / 2;
2701 outsetRight = (outsetRight + 1) / 2; 2701 outsetRight = (outsetRight + 1) / 2;
2702 outsetBottom = (outsetBottom + 1) / 2; 2702 outsetBottom = (outsetBottom + 1) / 2;
2703 outsetLeft = (outsetLeft + 1) / 2; 2703 outsetLeft = (outsetLeft + 1) / 2;
2704 expectedOcclusion = IntRect(100 / 2 + outsetRight * 2, 100 / 2 + outsetB ottom * 2, 50 / 2 - (outsetLeft + outsetRight) * 2, 50 /2 - (outsetTop + outsetB ottom) * 2); 2704 expectedOcclusion = IntRect(100 / 2 + outsetRight * 2, 100 / 2 + outsetB ottom * 2, 50 / 2 - (outsetLeft + outsetRight) * 2, 50 /2 - (outsetTop + outsetB ottom) * 2);
2705 2705
2706 EXPECT_RECT_EQ(expectedOcclusion, occlusion.occlusionInScreenSpace().rec ts()[0]); 2706 EXPECT_RECT_EQ(expectedOcclusion, occlusion.occlusionInScreenSpace().rec ts()[0]);
2707 } 2707 }
2708 }; 2708 };
2709 2709
2710 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestTwoBackgroundFiltersReduceOccl usionTwice); 2710 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusio nTwice);
2711 2711
2712 template<class Types, bool opaqueLayers> 2712 template<class Types, bool opaqueLayers>
2713 class CCOcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip : public CCOcclusionTrackerTest<Types, opaqueLayers> { 2713 class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip : p ublic OcclusionTrackerTest<Types, opaqueLayers> {
2714 protected: 2714 protected:
2715 void runMyTest() 2715 void runMyTest()
2716 { 2716 {
2717 // Make a surface and its replica, each 50x50, that are completely surro unded by opaque layers which are above them in the z-order. 2717 // Make a surface and its replica, each 50x50, that are completely surro unded by opaque layers which are above them in the z-order.
2718 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150)); 2718 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150));
2719 // We stick the filtered surface inside a clipping surface so that we ca n make sure the clip is honored when exposing pixels for 2719 // We stick the filtered surface inside a clipping surface so that we ca n make sure the clip is honored when exposing pixels for
2720 // the background filter. 2720 // the background filter.
2721 typename Types::LayerType* clippingSurface = this->createSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 70)); 2721 typename Types::LayerType* clippingSurface = this->createSurface(parent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 70));
2722 clippingSurface->setMasksToBounds(true); 2722 clippingSurface->setMasksToBounds(true);
2723 typename Types::LayerType* filteredSurface = this->createDrawingLayer(cl ippingSurface, this->identityMatrix, FloatPoint(50, 50), IntSize(50, 50), false) ; 2723 typename Types::LayerType* filteredSurface = this->createDrawingLayer(cl ippingSurface, this->identityMatrix, FloatPoint(50, 50), IntSize(50, 50), false) ;
2724 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(150, 0), IntSize()); 2724 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(150, 0), IntSize());
2725 typename Types::LayerType* occludingLayer1 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 50), true); 2725 typename Types::LayerType* occludingLayer1 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 0), IntSize(300, 50), true);
2726 typename Types::LayerType* occludingLayer2 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 100), IntSize(300, 50), true); 2726 typename Types::LayerType* occludingLayer2 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 100), IntSize(300, 50), true);
2727 typename Types::LayerType* occludingLayer3 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 50), IntSize(50, 50), true); 2727 typename Types::LayerType* occludingLayer3 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(0, 50), IntSize(50, 50), true);
2728 typename Types::LayerType* occludingLayer4 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(100, 50), IntSize(100, 50), true); 2728 typename Types::LayerType* occludingLayer4 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(100, 50), IntSize(100, 50), true);
2729 typename Types::LayerType* occludingLayer5 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(250, 50), IntSize(50, 50), true); 2729 typename Types::LayerType* occludingLayer5 = this->createDrawingLayer(pa rent, this->identityMatrix, FloatPoint(250, 50), IntSize(50, 50), true);
2730 2730
2731 // Filters make the layer own a surface. This filter is large enough tha t it goes outside the bottom of the clippingSurface. 2731 // Filters make the layer own a surface. This filter is large enough tha t it goes outside the bottom of the clippingSurface.
2732 WebFilterOperations filters; 2732 WebFilterOperations filters;
2733 filters.append(WebFilterOperation::createBlurFilter(12)); 2733 filters.append(WebFilterOperation::createBlurFilter(12));
2734 filteredSurface->setBackgroundFilters(filters); 2734 filteredSurface->setBackgroundFilters(filters);
2735 2735
2736 // Save the distance of influence for the blur effect. 2736 // Save the distance of influence for the blur effect.
2737 int outsetTop, outsetRight, outsetBottom, outsetLeft; 2737 int outsetTop, outsetRight, outsetBottom, outsetLeft;
2738 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft); 2738 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft);
2739 2739
2740 this->calcDrawEtc(parent); 2740 this->calcDrawEtc(parent);
2741 2741
2742 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2742 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2743 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2743 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2744 2744
2745 // These layers occlude pixels directly beside the filteredSurface. Beca use filtered surface blends pixels in a radius, it will 2745 // These layers occlude pixels directly beside the filteredSurface. Beca use filtered surface blends pixels in a radius, it will
2746 // need to see some of the pixels (up to radius far) underneath the occl udingLayers. 2746 // need to see some of the pixels (up to radius far) underneath the occl udingLayers.
2747 this->visitLayer(occludingLayer5, occlusion); 2747 this->visitLayer(occludingLayer5, occlusion);
2748 this->visitLayer(occludingLayer4, occlusion); 2748 this->visitLayer(occludingLayer4, occlusion);
2749 this->visitLayer(occludingLayer3, occlusion); 2749 this->visitLayer(occludingLayer3, occlusion);
2750 this->visitLayer(occludingLayer2, occlusion); 2750 this->visitLayer(occludingLayer2, occlusion);
2751 this->visitLayer(occludingLayer1, occlusion); 2751 this->visitLayer(occludingLayer1, occlusion);
2752 2752
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
2825 testRect.move(-1, 0); 2825 testRect.move(-1, 0);
2826 testRect.expand(1, 0); 2826 testRect.expand(1, 0);
2827 EXPECT_RECT_EQ(clippedOutsetRect, occlusion.unoccludedContentRect(clippi ngSurface, testRect)); 2827 EXPECT_RECT_EQ(clippedOutsetRect, occlusion.unoccludedContentRect(clippi ngSurface, testRect));
2828 testRect = outsetRect; 2828 testRect = outsetRect;
2829 testRect.move(0, -1); 2829 testRect.move(0, -1);
2830 testRect.expand(0, 1); 2830 testRect.expand(0, 1);
2831 EXPECT_RECT_EQ(clippedOutsetRect, occlusion.unoccludedContentRect(clippi ngSurface, testRect)); 2831 EXPECT_RECT_EQ(clippedOutsetRect, occlusion.unoccludedContentRect(clippi ngSurface, testRect));
2832 } 2832 }
2833 }; 2833 };
2834 2834
2835 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestDontOccludePixelsNeededForBack groundFilterWithClip); 2835 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontOccludePixelsNeededForBackgrou ndFilterWithClip);
2836 2836
2837 template<class Types, bool opaqueLayers> 2837 template<class Types, bool opaqueLayers>
2838 class CCOcclusionTrackerTestDontReduceOcclusionBelowBackgroundFilter : public CC OcclusionTrackerTest<Types, opaqueLayers> { 2838 class OcclusionTrackerTestDontReduceOcclusionBelowBackgroundFilter : public Occl usionTrackerTest<Types, opaqueLayers> {
2839 protected: 2839 protected:
2840 void runMyTest() 2840 void runMyTest()
2841 { 2841 {
2842 WebTransformationMatrix scaleByHalf; 2842 WebTransformationMatrix scaleByHalf;
2843 scaleByHalf.scale(0.5); 2843 scaleByHalf.scale(0.5);
2844 2844
2845 // Make a surface and its replica, each 50x50, with a smaller 30x30 laye r centered below each. 2845 // Make a surface and its replica, each 50x50, with a smaller 30x30 laye r centered below each.
2846 // The surface is scaled to test that the pixel moving is done in the ta rget space, where the background filter is applied, but the surface 2846 // The surface is scaled to test that the pixel moving is done in the ta rget space, where the background filter is applied, but the surface
2847 // appears at 50, 50 and the replica at 200, 50. 2847 // appears at 50, 50 and the replica at 200, 50.
2848 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150)); 2848 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150));
2849 typename Types::LayerType* behindSurfaceLayer = this->createDrawingLayer (parent, this->identityMatrix, FloatPoint(60, 60), IntSize(30, 30), true); 2849 typename Types::LayerType* behindSurfaceLayer = this->createDrawingLayer (parent, this->identityMatrix, FloatPoint(60, 60), IntSize(30, 30), true);
2850 typename Types::LayerType* behindReplicaLayer = this->createDrawingLayer (parent, this->identityMatrix, FloatPoint(210, 60), IntSize(30, 30), true); 2850 typename Types::LayerType* behindReplicaLayer = this->createDrawingLayer (parent, this->identityMatrix, FloatPoint(210, 60), IntSize(30, 30), true);
2851 typename Types::LayerType* filteredSurface = this->createDrawingLayer(pa rent, scaleByHalf, FloatPoint(50, 50), IntSize(100, 100), false); 2851 typename Types::LayerType* filteredSurface = this->createDrawingLayer(pa rent, scaleByHalf, FloatPoint(50, 50), IntSize(100, 100), false);
2852 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(300, 0), IntSize()); 2852 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(300, 0), IntSize());
2853 2853
2854 // Filters make the layer own a surface. 2854 // Filters make the layer own a surface.
2855 WebFilterOperations filters; 2855 WebFilterOperations filters;
2856 filters.append(WebFilterOperation::createBlurFilter(3)); 2856 filters.append(WebFilterOperation::createBlurFilter(3));
2857 filteredSurface->setBackgroundFilters(filters); 2857 filteredSurface->setBackgroundFilters(filters);
2858 2858
2859 this->calcDrawEtc(parent); 2859 this->calcDrawEtc(parent);
2860 2860
2861 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2861 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2862 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2862 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2863 2863
2864 // The surface has a background blur, so it blurs non-opaque pixels belo w it. 2864 // The surface has a background blur, so it blurs non-opaque pixels belo w it.
2865 this->visitLayer(filteredSurface, occlusion); 2865 this->visitLayer(filteredSurface, occlusion);
2866 this->visitContributingSurface(filteredSurface, occlusion); 2866 this->visitContributingSurface(filteredSurface, occlusion);
2867 2867
2868 this->visitLayer(behindReplicaLayer, occlusion); 2868 this->visitLayer(behindReplicaLayer, occlusion);
2869 this->visitLayer(behindSurfaceLayer, occlusion); 2869 this->visitLayer(behindSurfaceLayer, occlusion);
2870 2870
2871 // The layers behind the surface are not blurred, and their occlusion do es not change, until we leave the surface. 2871 // The layers behind the surface are not blurred, and their occlusion do es not change, until we leave the surface.
2872 // So it should not be modified by the filter here. 2872 // So it should not be modified by the filter here.
2873 IntRect occlusionBehindSurface = IntRect(60, 60, 30, 30); 2873 IntRect occlusionBehindSurface = IntRect(60, 60, 30, 30);
2874 IntRect occlusionBehindReplica = IntRect(210, 60, 30, 30); 2874 IntRect occlusionBehindReplica = IntRect(210, 60, 30, 30);
2875 2875
2876 IntRect expectedOpaqueBounds = unionRect(occlusionBehindSurface, occlusi onBehindReplica); 2876 IntRect expectedOpaqueBounds = unionRect(occlusionBehindSurface, occlusi onBehindReplica);
2877 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInScreenSpace(). bounds()); 2877 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInScreenSpace(). bounds());
2878 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 2878 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size());
2879 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInTargetSurface( ).bounds()); 2879 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInTargetSurface( ).bounds());
2880 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 2880 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size());
2881 } 2881 }
2882 }; 2882 };
2883 2883
2884 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestDontReduceOcclusionBelowBackgr oundFilter); 2884 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionBelowBackground Filter);
2885 2885
2886 template<class Types, bool opaqueLayers> 2886 template<class Types, bool opaqueLayers>
2887 class CCOcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded : pu blic CCOcclusionTrackerTest<Types, opaqueLayers> { 2887 class OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded : publ ic OcclusionTrackerTest<Types, opaqueLayers> {
2888 protected: 2888 protected:
2889 void runMyTest() 2889 void runMyTest()
2890 { 2890 {
2891 WebTransformationMatrix scaleByHalf; 2891 WebTransformationMatrix scaleByHalf;
2892 scaleByHalf.scale(0.5); 2892 scaleByHalf.scale(0.5);
2893 2893
2894 // Make a surface and its replica, each 50x50, that are completely occlu ded by opaque layers which are above them in the z-order. 2894 // Make a surface and its replica, each 50x50, that are completely occlu ded by opaque layers which are above them in the z-order.
2895 // The surface is scaled to test that the pixel moving is done in the ta rget space, where the background filter is applied, but the surface 2895 // The surface is scaled to test that the pixel moving is done in the ta rget space, where the background filter is applied, but the surface
2896 // appears at 50, 50 and the replica at 200, 50. 2896 // appears at 50, 50 and the replica at 200, 50.
2897 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150)); 2897 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150));
2898 typename Types::LayerType* filteredSurface = this->createDrawingLayer(pa rent, scaleByHalf, FloatPoint(50, 50), IntSize(100, 100), false); 2898 typename Types::LayerType* filteredSurface = this->createDrawingLayer(pa rent, scaleByHalf, FloatPoint(50, 50), IntSize(100, 100), false);
2899 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(300, 0), IntSize()); 2899 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(300, 0), IntSize());
2900 typename Types::LayerType* aboveSurfaceLayer = this->createDrawingLayer( parent, this->identityMatrix, FloatPoint(50, 50), IntSize(50, 50), true); 2900 typename Types::LayerType* aboveSurfaceLayer = this->createDrawingLayer( parent, this->identityMatrix, FloatPoint(50, 50), IntSize(50, 50), true);
2901 typename Types::LayerType* aboveReplicaLayer = this->createDrawingLayer( parent, this->identityMatrix, FloatPoint(200, 50), IntSize(50, 50), true); 2901 typename Types::LayerType* aboveReplicaLayer = this->createDrawingLayer( parent, this->identityMatrix, FloatPoint(200, 50), IntSize(50, 50), true);
2902 2902
2903 // Filters make the layer own a surface. 2903 // Filters make the layer own a surface.
2904 WebFilterOperations filters; 2904 WebFilterOperations filters;
2905 filters.append(WebFilterOperation::createBlurFilter(3)); 2905 filters.append(WebFilterOperation::createBlurFilter(3));
2906 filteredSurface->setBackgroundFilters(filters); 2906 filteredSurface->setBackgroundFilters(filters);
2907 2907
2908 this->calcDrawEtc(parent); 2908 this->calcDrawEtc(parent);
2909 2909
2910 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2910 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2911 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2911 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2912 2912
2913 this->visitLayer(aboveReplicaLayer, occlusion); 2913 this->visitLayer(aboveReplicaLayer, occlusion);
2914 this->visitLayer(aboveSurfaceLayer, occlusion); 2914 this->visitLayer(aboveSurfaceLayer, occlusion);
2915 2915
2916 // The surface has a background blur, so it blurs non-opaque pixels belo w it. 2916 // The surface has a background blur, so it blurs non-opaque pixels belo w it.
2917 this->visitLayer(filteredSurface, occlusion); 2917 this->visitLayer(filteredSurface, occlusion);
2918 this->visitContributingSurface(filteredSurface, occlusion); 2918 this->visitContributingSurface(filteredSurface, occlusion);
2919 2919
2920 // The filter is completely occluded, so it should not blur anything and reduce any occlusion. 2920 // The filter is completely occluded, so it should not blur anything and reduce any occlusion.
2921 IntRect occlusionAboveSurface = IntRect(50, 50, 50, 50); 2921 IntRect occlusionAboveSurface = IntRect(50, 50, 50, 50);
2922 IntRect occlusionAboveReplica = IntRect(200, 50, 50, 50); 2922 IntRect occlusionAboveReplica = IntRect(200, 50, 50, 50);
2923 2923
2924 IntRect expectedOpaqueBounds = unionRect(occlusionAboveSurface, occlusio nAboveReplica); 2924 IntRect expectedOpaqueBounds = unionRect(occlusionAboveSurface, occlusio nAboveReplica);
2925 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInScreenSpace(). bounds()); 2925 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInScreenSpace(). bounds());
2926 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 2926 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size());
2927 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInTargetSurface( ).bounds()); 2927 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInTargetSurface( ).bounds());
2928 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 2928 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size());
2929 } 2929 }
2930 }; 2930 };
2931 2931
2932 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestDontReduceOcclusionIfBackgroun dFilterIsOccluded); 2932 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionIfBackgroundFil terIsOccluded);
2933 2933
2934 template<class Types, bool opaqueLayers> 2934 template<class Types, bool opaqueLayers>
2935 class CCOcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOcclud ed : public CCOcclusionTrackerTest<Types, opaqueLayers> { 2935 class OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded : public OcclusionTrackerTest<Types, opaqueLayers> {
2936 protected: 2936 protected:
2937 void runMyTest() 2937 void runMyTest()
2938 { 2938 {
2939 WebTransformationMatrix scaleByHalf; 2939 WebTransformationMatrix scaleByHalf;
2940 scaleByHalf.scale(0.5); 2940 scaleByHalf.scale(0.5);
2941 2941
2942 // Make a surface and its replica, each 50x50, that are partially occlud ed by opaque layers which are above them in the z-order. 2942 // Make a surface and its replica, each 50x50, that are partially occlud ed by opaque layers which are above them in the z-order.
2943 // The surface is scaled to test that the pixel moving is done in the ta rget space, where the background filter is applied, but the surface 2943 // The surface is scaled to test that the pixel moving is done in the ta rget space, where the background filter is applied, but the surface
2944 // appears at 50, 50 and the replica at 200, 50. 2944 // appears at 50, 50 and the replica at 200, 50.
2945 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150)); 2945 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(300, 150));
2946 typename Types::LayerType* filteredSurface = this->createDrawingLayer(pa rent, scaleByHalf, FloatPoint(50, 50), IntSize(100, 100), false); 2946 typename Types::LayerType* filteredSurface = this->createDrawingLayer(pa rent, scaleByHalf, FloatPoint(50, 50), IntSize(100, 100), false);
2947 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(300, 0), IntSize()); 2947 this->createReplicaLayer(filteredSurface, this->identityMatrix, FloatPoi nt(300, 0), IntSize());
2948 typename Types::LayerType* aboveSurfaceLayer = this->createDrawingLayer( parent, this->identityMatrix, FloatPoint(70, 50), IntSize(30, 50), true); 2948 typename Types::LayerType* aboveSurfaceLayer = this->createDrawingLayer( parent, this->identityMatrix, FloatPoint(70, 50), IntSize(30, 50), true);
2949 typename Types::LayerType* aboveReplicaLayer = this->createDrawingLayer( parent, this->identityMatrix, FloatPoint(200, 50), IntSize(30, 50), true); 2949 typename Types::LayerType* aboveReplicaLayer = this->createDrawingLayer( parent, this->identityMatrix, FloatPoint(200, 50), IntSize(30, 50), true);
2950 typename Types::LayerType* besideSurfaceLayer = this->createDrawingLayer (parent, this->identityMatrix, FloatPoint(90, 40), IntSize(10, 10), true); 2950 typename Types::LayerType* besideSurfaceLayer = this->createDrawingLayer (parent, this->identityMatrix, FloatPoint(90, 40), IntSize(10, 10), true);
2951 typename Types::LayerType* besideReplicaLayer = this->createDrawingLayer (parent, this->identityMatrix, FloatPoint(200, 40), IntSize(10, 10), true); 2951 typename Types::LayerType* besideReplicaLayer = this->createDrawingLayer (parent, this->identityMatrix, FloatPoint(200, 40), IntSize(10, 10), true);
2952 2952
2953 // Filters make the layer own a surface. 2953 // Filters make the layer own a surface.
2954 WebFilterOperations filters; 2954 WebFilterOperations filters;
2955 filters.append(WebFilterOperation::createBlurFilter(3)); 2955 filters.append(WebFilterOperation::createBlurFilter(3));
2956 filteredSurface->setBackgroundFilters(filters); 2956 filteredSurface->setBackgroundFilters(filters);
2957 2957
2958 // Save the distance of influence for the blur effect. 2958 // Save the distance of influence for the blur effect.
2959 int outsetTop, outsetRight, outsetBottom, outsetLeft; 2959 int outsetTop, outsetRight, outsetBottom, outsetLeft;
2960 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft); 2960 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft);
2961 2961
2962 this->calcDrawEtc(parent); 2962 this->calcDrawEtc(parent);
2963 2963
2964 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 2964 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
2965 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 2965 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
2966 2966
2967 this->visitLayer(besideReplicaLayer, occlusion); 2967 this->visitLayer(besideReplicaLayer, occlusion);
2968 this->visitLayer(besideSurfaceLayer, occlusion); 2968 this->visitLayer(besideSurfaceLayer, occlusion);
2969 this->visitLayer(aboveReplicaLayer, occlusion); 2969 this->visitLayer(aboveReplicaLayer, occlusion);
2970 this->visitLayer(aboveSurfaceLayer, occlusion); 2970 this->visitLayer(aboveSurfaceLayer, occlusion);
2971 2971
2972 // The surface has a background blur, so it blurs non-opaque pixels belo w it. 2972 // The surface has a background blur, so it blurs non-opaque pixels belo w it.
2973 this->visitLayer(filteredSurface, occlusion); 2973 this->visitLayer(filteredSurface, occlusion);
2974 this->visitContributingSurface(filteredSurface, occlusion); 2974 this->visitContributingSurface(filteredSurface, occlusion);
(...skipping 19 matching lines...) Expand all
2994 for (size_t i = 0; i < expectedOcclusion.rects().size(); ++i) { 2994 for (size_t i = 0; i < expectedOcclusion.rects().size(); ++i) {
2995 IntRect expectedRect = expectedOcclusion.rects()[i]; 2995 IntRect expectedRect = expectedOcclusion.rects()[i];
2996 IntRect screenRect = occlusion.occlusionInScreenSpace().rects()[i]; 2996 IntRect screenRect = occlusion.occlusionInScreenSpace().rects()[i];
2997 IntRect targetRect = occlusion.occlusionInTargetSurface().rects()[i] ; 2997 IntRect targetRect = occlusion.occlusionInTargetSurface().rects()[i] ;
2998 EXPECT_EQ(expectedRect, screenRect); 2998 EXPECT_EQ(expectedRect, screenRect);
2999 EXPECT_EQ(expectedRect, targetRect); 2999 EXPECT_EQ(expectedRect, targetRect);
3000 } 3000 }
3001 } 3001 }
3002 }; 3002 };
3003 3003
3004 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestReduceOcclusionWhenBackgroundF ilterIsPartiallyOccluded); 3004 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReduceOcclusionWhenBackgroundFilte rIsPartiallyOccluded);
3005 3005
3006 template<class Types, bool opaqueLayers> 3006 template<class Types, bool opaqueLayers>
3007 class CCOcclusionTrackerTestMinimumTrackingSize : public CCOcclusionTrackerTest< Types, opaqueLayers> { 3007 class OcclusionTrackerTestMinimumTrackingSize : public OcclusionTrackerTest<Type s, opaqueLayers> {
3008 protected: 3008 protected:
3009 void runMyTest() 3009 void runMyTest()
3010 { 3010 {
3011 IntSize trackingSize(100, 100); 3011 IntSize trackingSize(100, 100);
3012 IntSize belowTrackingSize(99, 99); 3012 IntSize belowTrackingSize(99, 99);
3013 3013
3014 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(400, 400)); 3014 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, FloatPoint(0, 0), IntSize(400, 400));
3015 typename Types::LayerType* large = this->createDrawingLayer(parent, this ->identityMatrix, FloatPoint(0, 0), trackingSize, true); 3015 typename Types::LayerType* large = this->createDrawingLayer(parent, this ->identityMatrix, FloatPoint(0, 0), trackingSize, true);
3016 typename Types::LayerType* small = this->createDrawingLayer(parent, this ->identityMatrix, FloatPoint(0, 0), belowTrackingSize, true); 3016 typename Types::LayerType* small = this->createDrawingLayer(parent, this ->identityMatrix, FloatPoint(0, 0), belowTrackingSize, true);
3017 this->calcDrawEtc(parent); 3017 this->calcDrawEtc(parent);
3018 3018
3019 TestCCOcclusionTrackerWithClip<typename Types::LayerType, typename Types ::RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000)); 3019 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(IntRect(0, 0, 1000, 1000));
3020 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000)); 3020 occlusion.setLayerClipRect(IntRect(0, 0, 1000, 1000));
3021 occlusion.setMinimumTrackingSize(trackingSize); 3021 occlusion.setMinimumTrackingSize(trackingSize);
3022 3022
3023 // The small layer is not tracked because it is too small. 3023 // The small layer is not tracked because it is too small.
3024 this->visitLayer(small, occlusion); 3024 this->visitLayer(small, occlusion);
3025 3025
3026 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInScreenSpace().bounds()); 3026 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInScreenSpace().bounds());
3027 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 3027 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size());
3028 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInTargetSurface().bounds()) ; 3028 EXPECT_RECT_EQ(IntRect(), occlusion.occlusionInTargetSurface().bounds()) ;
3029 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 3029 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size());
3030 3030
3031 // The large layer is tracked as it is large enough. 3031 // The large layer is tracked as it is large enough.
3032 this->visitLayer(large, occlusion); 3032 this->visitLayer(large, occlusion);
3033 3033
3034 EXPECT_RECT_EQ(IntRect(IntPoint(), trackingSize), occlusion.occlusionInS creenSpace().bounds()); 3034 EXPECT_RECT_EQ(IntRect(IntPoint(), trackingSize), occlusion.occlusionInS creenSpace().bounds());
3035 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 3035 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
3036 EXPECT_RECT_EQ(IntRect(IntPoint(), trackingSize), occlusion.occlusionInT argetSurface().bounds()); 3036 EXPECT_RECT_EQ(IntRect(IntPoint(), trackingSize), occlusion.occlusionInT argetSurface().bounds());
3037 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 3037 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
3038 } 3038 }
3039 }; 3039 };
3040 3040
3041 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestMinimumTrackingSize); 3041 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestMinimumTrackingSize);
3042 3042
3043 } // namespace 3043 } // namespace
OLDNEW
« cc/active_animation.h ('K') | « cc/occlusion_tracker.cc ('k') | cc/overdraw_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698