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

Side by Side Diff: Source/web/tests/Canvas2DLayerBridgeTest.cpp

Issue 117703004: Free temporary GPU and memory resources held by inactive or hidden 2D canvases (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fixed upstream git branch Created 7 years 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 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 m_layerBridge->beginDestruction(); 63 m_layerBridge->beginDestruction();
64 } 64 }
65 65
66 Canvas2DLayerBridge* operator->() { return m_layerBridge.get(); } 66 Canvas2DLayerBridge* operator->() { return m_layerBridge.get(); }
67 Canvas2DLayerBridge* get() { return m_layerBridge.get(); } 67 Canvas2DLayerBridge* get() { return m_layerBridge.get(); }
68 68
69 private: 69 private:
70 RefPtr<Canvas2DLayerBridge> m_layerBridge; 70 RefPtr<Canvas2DLayerBridge> m_layerBridge;
71 }; 71 };
72 72
73 class FakeCanvas2DLayerBridgeClient : public Canvas2DLayerBridgeClient {
74 public:
75 virtual ~FakeCanvas2DLayerBridgeClient() { }
76 virtual bool hidden() const OVERRIDE { return false; }
77 };
78
73 } // namespace 79 } // namespace
74 80
75 class Canvas2DLayerBridgeTest : public Test { 81 class Canvas2DLayerBridgeTest : public Test {
76 protected: 82 protected:
77 void fullLifecycleTest() 83 void fullLifecycleTest()
78 { 84 {
79 RefPtr<GraphicsContext3D> mainContext = GraphicsContext3D::createGraphic sContextFromWebContext(adoptPtr(new MockCanvasContext)); 85 RefPtr<GraphicsContext3D> mainContext = GraphicsContext3D::createGraphic sContextFromWebContext(adoptPtr(new MockCanvasContext));
80 86
81 MockCanvasContext& mainMock = *static_cast<MockCanvasContext*>(mainConte xt->webContext()); 87 MockCanvasContext& mainMock = *static_cast<MockCanvasContext*>(mainConte xt->webContext());
82 88
83 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(SkSu rface::NewRasterPMColor(300, 150))); 89 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(SkSu rface::NewRasterPMColor(300, 150)));
84 90
85 ::testing::Mock::VerifyAndClearExpectations(&mainMock); 91 ::testing::Mock::VerifyAndClearExpectations(&mainMock);
86 92
87 { 93 {
88 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(mainC ontext.release(), canvas.release(), 0, NonOpaque))); 94 FakeCanvas2DLayerBridgeClient client;
95 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(&clie nt, mainContext.release(), canvas.release(), 0, NonOpaque)));
89 96
90 ::testing::Mock::VerifyAndClearExpectations(&mainMock); 97 ::testing::Mock::VerifyAndClearExpectations(&mainMock);
91 98
92 EXPECT_CALL(mainMock, flush()); 99 EXPECT_CALL(mainMock, flush());
93 unsigned textureId = bridge->getBackingTexture(); 100 unsigned textureId = bridge->getBackingTexture();
94 EXPECT_EQ(textureId, 0u); 101 EXPECT_EQ(textureId, 0u);
95 102
96 ::testing::Mock::VerifyAndClearExpectations(&mainMock); 103 ::testing::Mock::VerifyAndClearExpectations(&mainMock);
97 } // bridge goes out of scope here 104 } // bridge goes out of scope here
98 105
99 ::testing::Mock::VerifyAndClearExpectations(&mainMock); 106 ::testing::Mock::VerifyAndClearExpectations(&mainMock);
100 } 107 }
101 }; 108 };
102 109
103 namespace { 110 namespace {
104 111
105 TEST_F(Canvas2DLayerBridgeTest, testFullLifecycleSingleThreaded) 112 TEST_F(Canvas2DLayerBridgeTest, testFullLifecycleSingleThreaded)
106 { 113 {
107 fullLifecycleTest(); 114 fullLifecycleTest();
108 } 115 }
109 116
110 } // namespace 117 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698