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

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

Issue 10690121: Merge 121076 - [chromium] LayerRendererChromium is not getting visibility messages in single thread… (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1180/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 FakeCCRendererClient() 76 FakeCCRendererClient()
77 : m_setFullRootLayerDamageCount(0) 77 : m_setFullRootLayerDamageCount(0)
78 , m_rootLayer(CCLayerImpl::create(1)) 78 , m_rootLayer(CCLayerImpl::create(1))
79 , m_memoryAllocationLimitBytes(0) 79 , m_memoryAllocationLimitBytes(0)
80 { 80 {
81 m_rootLayer->createRenderSurface(); 81 m_rootLayer->createRenderSurface();
82 m_rootRenderPass = CCRenderPass::create(m_rootLayer->renderSurface()); 82 m_rootRenderPass = CCRenderPass::create(m_rootLayer->renderSurface());
83 } 83 }
84 84
85 // CCRendererClient methods. 85 // CCRendererClient methods.
86 virtual const IntSize& deviceViewportSize() const OVERRIDE { static IntSize fakeSize; return fakeSize; } 86 virtual const IntSize& deviceViewportSize() const OVERRIDE { static IntSize fakeSize(1, 1); return fakeSize; }
87 virtual const CCLayerTreeSettings& settings() const OVERRIDE { static CCLaye rTreeSettings fakeSettings; return fakeSettings; } 87 virtual const CCLayerTreeSettings& settings() const OVERRIDE { static CCLaye rTreeSettings fakeSettings; return fakeSettings; }
88 virtual void didLoseContext() OVERRIDE { } 88 virtual void didLoseContext() OVERRIDE { }
89 virtual void onSwapBuffersComplete() OVERRIDE { } 89 virtual void onSwapBuffersComplete() OVERRIDE { }
90 virtual void setFullRootLayerDamage() OVERRIDE { m_setFullRootLayerDamageCou nt++; } 90 virtual void setFullRootLayerDamage() OVERRIDE { m_setFullRootLayerDamageCou nt++; }
91 virtual void setContentsMemoryAllocationLimitBytes(size_t bytes) OVERRIDE { m_memoryAllocationLimitBytes = bytes; } 91 virtual void releaseContentsTextures() OVERRIDE { }
92 virtual void setMemoryAllocationLimitBytes(size_t bytes) OVERRIDE { m_memory AllocationLimitBytes = bytes; }
92 93
93 // Methods added for test. 94 // Methods added for test.
94 int setFullRootLayerDamageCount() const { return m_setFullRootLayerDamageCou nt; } 95 int setFullRootLayerDamageCount() const { return m_setFullRootLayerDamageCou nt; }
95 96
96 CCRenderPass* rootRenderPass() { return m_rootRenderPass.get(); } 97 CCRenderPass* rootRenderPass() { return m_rootRenderPass.get(); }
97 98
98 size_t memoryAllocationLimitBytes() const { return m_memoryAllocationLimitBy tes; } 99 size_t memoryAllocationLimitBytes() const { return m_memoryAllocationLimitBy tes; }
99 100
100 private: 101 private:
101 int m_setFullRootLayerDamageCount; 102 int m_setFullRootLayerDamageCount;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 { 161 {
161 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferYes); 162 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferYes);
162 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount()); 163 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount());
163 EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded()); 164 EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded());
164 165
165 swapBuffers(); 166 swapBuffers();
166 EXPECT_EQ(1, m_mockContext.frameCount()); 167 EXPECT_EQ(1, m_mockContext.frameCount());
167 } 168 }
168 169
169 // Test LayerRendererChromium discardFramebuffer functionality: 170 // Test LayerRendererChromium discardFramebuffer functionality:
170 // Suggest discarding framebuffer when one exists. 171 // Suggest discarding framebuffer when one exists and the renderer is not visibl e.
171 // Expected: it is discarded and damage tracker is reset. 172 // Expected: it is discarded and damage tracker is reset.
172 TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoShouldDiscardBackbufferAndD amageRootLayer) 173 TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoShouldDiscardBackbufferAndD amageRootLayerWhileNotVisible)
173 { 174 {
175 m_layerRendererChromium.setVisible(false);
174 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); 176 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo);
175 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 177 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
176 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); 178 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded());
177 } 179 }
178 180
179 // Test LayerRendererChromium discardFramebuffer functionality: 181 // Test LayerRendererChromium discardFramebuffer functionality:
182 // Suggest discarding framebuffer when one exists and the renderer is visible.
183 // Expected: the allocation is ignored.
184 TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoDoNothingWhenVisible)
185 {
186 m_layerRendererChromium.setVisible(true);
187 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo);
188 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount());
189 EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded());
190 }
191
192
193 // Test LayerRendererChromium discardFramebuffer functionality:
180 // Suggest discarding framebuffer when one does not exist. 194 // Suggest discarding framebuffer when one does not exist.
181 // Expected: it does nothing. 195 // Expected: it does nothing.
182 TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNo thing) 196 TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNo thing)
183 { 197 {
198 m_layerRendererChromium.setVisible(false);
184 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); 199 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo);
185 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 200 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
186 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); 201 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded());
187 202
188 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); 203 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo);
189 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 204 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
190 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); 205 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded());
191 } 206 }
192 207
193 // Test LayerRendererChromium discardFramebuffer functionality: 208 // Test LayerRendererChromium discardFramebuffer functionality:
194 // Suggest discarding framebuffer, then try to swapBuffers.
195 // Expected: framebuffer is discarded, swaps are ignored, and damage is reset af ter discard and after each swap.
196 TEST_F(LayerRendererChromiumTest, SwapBuffersWhileBackbufferDiscardedShouldIgnor eSwapAndDamageRootLayer)
197 {
198 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo);
199 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded());
200 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
201
202 swapBuffers();
203 EXPECT_EQ(0, m_mockContext.frameCount());
204 EXPECT_EQ(2, m_mockClient.setFullRootLayerDamageCount());
205
206 swapBuffers();
207 EXPECT_EQ(0, m_mockContext.frameCount());
208 EXPECT_EQ(3, m_mockClient.setFullRootLayerDamageCount());
209 }
210
211 // Test LayerRendererChromium discardFramebuffer functionality:
212 // Begin drawing a frame while a framebuffer is discarded. 209 // Begin drawing a frame while a framebuffer is discarded.
213 // Expected: will recreate framebuffer. 210 // Expected: will recreate framebuffer.
214 TEST_F(LayerRendererChromiumTest, DiscardedBackbufferIsRecreatredForScopeDuratio n) 211 TEST_F(LayerRendererChromiumTest, DiscardedBackbufferIsRecreatedForScopeDuration )
215 { 212 {
213 m_layerRendererChromium.setVisible(false);
216 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); 214 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo);
217 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); 215 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded());
218 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 216 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
219 217
218 m_layerRendererChromium.setVisible(true);
220 m_layerRendererChromium.beginDrawingFrame(m_mockClient.rootRenderPass()); 219 m_layerRendererChromium.beginDrawingFrame(m_mockClient.rootRenderPass());
221 EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded()); 220 EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded());
222 221
223 swapBuffers(); 222 swapBuffers();
224 EXPECT_EQ(1, m_mockContext.frameCount()); 223 EXPECT_EQ(1, m_mockContext.frameCount());
225 } 224 }
226 225
226 TEST_F(LayerRendererChromiumTest, FramebufferDiscardedAfterReadbackWhenNotVisibl e)
227 {
228 m_layerRendererChromium.setVisible(false);
229 m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo);
230 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded());
231 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
232
233 char pixels[4];
234 m_layerRendererChromium.beginDrawingFrame(m_mockClient.rootRenderPass());
235 EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded());
236
237 m_layerRendererChromium.getFramebufferPixels(pixels, IntRect(0, 0, 1, 1));
238 EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded());
239 EXPECT_EQ(2, m_mockClient.setFullRootLayerDamageCount());
240 }
241
227 class ForbidSynchronousCallContext : public FakeWebGraphicsContext3D { 242 class ForbidSynchronousCallContext : public FakeWebGraphicsContext3D {
228 public: 243 public:
229 ForbidSynchronousCallContext() { } 244 ForbidSynchronousCallContext() { }
230 245
231 virtual bool getActiveAttrib(WebGLId program, WGC3Duint index, ActiveInfo&) { ADD_FAILURE(); return false; } 246 virtual bool getActiveAttrib(WebGLId program, WGC3Duint index, ActiveInfo&) { ADD_FAILURE(); return false; }
232 virtual bool getActiveUniform(WebGLId program, WGC3Duint index, ActiveInfo&) { ADD_FAILURE(); return false; } 247 virtual bool getActiveUniform(WebGLId program, WGC3Duint index, ActiveInfo&) { ADD_FAILURE(); return false; }
233 virtual void getAttachedShaders(WebGLId program, WGC3Dsizei maxCount, WGC3Ds izei* count, WebGLId* shaders) { ADD_FAILURE(); } 248 virtual void getAttachedShaders(WebGLId program, WGC3Dsizei maxCount, WGC3Ds izei* count, WebGLId* shaders) { ADD_FAILURE(); }
234 virtual WGC3Dint getAttribLocation(WebGLId program, const WGC3Dchar* name) { ADD_FAILURE(); return 0; } 249 virtual WGC3Dint getAttribLocation(WebGLId program, const WGC3Dchar* name) { ADD_FAILURE(); return 0; }
235 virtual void getBooleanv(WGC3Denum pname, WGC3Dboolean* value) { ADD_FAILURE (); } 250 virtual void getBooleanv(WGC3Denum pname, WGC3Dboolean* value) { ADD_FAILURE (); }
236 virtual void getBufferParameteriv(WGC3Denum target, WGC3Denum pname, WGC3Din t* value) { ADD_FAILURE(); } 251 virtual void getBufferParameteriv(WGC3Denum target, WGC3Denum pname, WGC3Din t* value) { ADD_FAILURE(); }
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 mockClient.rootRenderPass()->setHasTransparentBackground(true); 426 mockClient.rootRenderPass()->setHasTransparentBackground(true);
412 427
413 EXPECT_TRUE(layerRendererChromium.initialize()); 428 EXPECT_TRUE(layerRendererChromium.initialize());
414 429
415 layerRendererChromium.beginDrawingFrame(mockClient.rootRenderPass()); 430 layerRendererChromium.beginDrawingFrame(mockClient.rootRenderPass());
416 layerRendererChromium.drawRenderPass(mockClient.rootRenderPass(), FloatRect( )); 431 layerRendererChromium.drawRenderPass(mockClient.rootRenderPass(), FloatRect( ));
417 layerRendererChromium.finishDrawingFrame(); 432 layerRendererChromium.finishDrawingFrame();
418 433
419 EXPECT_EQ(1, static_cast<ClearCountingContext*>(GraphicsContext3DPrivate::ex tractWebGraphicsContext3D(context.get()))->clearCount()); 434 EXPECT_EQ(1, static_cast<ClearCountingContext*>(GraphicsContext3DPrivate::ex tractWebGraphicsContext3D(context.get()))->clearCount());
420 } 435 }
OLDNEW
« no previous file with comments | « Source/WebKit/chromium/tests/FakeWebGraphicsContext3D.h ('k') | Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698