Index: cc/CCThreadedTest.h |
diff --git a/cc/CCThreadedTest.h b/cc/CCThreadedTest.h |
index fea740a93abe0f9a25fe9c9422d02262cb666b38..1bada3fe8ba58ee85267218342baaa1a798df963 100644 |
--- a/cc/CCThreadedTest.h |
+++ b/cc/CCThreadedTest.h |
@@ -1,208 +1,6 @@ |
-// Copyright 2011 The Chromium Authors. All rights reserved. |
+// Copyright 2012 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CCThreadedTest_h |
-#define CCThreadedTest_h |
- |
-#include "CCLayerTreeHost.h" |
-#include "CCLayerTreeHostImpl.h" |
-#include "CCScopedThreadProxy.h" |
-#include "CompositorFakeWebGraphicsContext3D.h" |
-#include "base/hash_tables.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include <public/WebAnimationDelegate.h> |
-#include <public/WebThread.h> |
- |
-namespace cc { |
-class CCLayerImpl; |
-class CCLayerTreeHost; |
-class CCLayerTreeHostClient; |
-class CCLayerTreeHostImpl; |
-class GraphicsContext3D; |
-} |
- |
-namespace WebKitTests { |
- |
-// Used by test stubs to notify the test when something interesting happens. |
-class TestHooks : public WebKit::WebAnimationDelegate { |
-public: |
- virtual void beginCommitOnCCThread(cc::CCLayerTreeHostImpl*) { } |
- virtual void commitCompleteOnCCThread(cc::CCLayerTreeHostImpl*) { } |
- virtual bool prepareToDrawOnCCThread(cc::CCLayerTreeHostImpl*); |
- virtual void drawLayersOnCCThread(cc::CCLayerTreeHostImpl*) { } |
- virtual void animateLayers(cc::CCLayerTreeHostImpl*, double monotonicTime) { } |
- virtual void willAnimateLayers(cc::CCLayerTreeHostImpl*, double monotonicTime) { } |
- virtual void applyScrollAndScale(const cc::IntSize&, float) { } |
- virtual void animate(double monotonicTime) { } |
- virtual void layout() { } |
- virtual void didRecreateOutputSurface(bool succeeded) { } |
- virtual void didAddAnimation() { } |
- virtual void didCommit() { } |
- virtual void didCommitAndDrawFrame() { } |
- virtual void scheduleComposite() { } |
- |
- // Implementation of WebAnimationDelegate |
- virtual void notifyAnimationStarted(double time) OVERRIDE { } |
- virtual void notifyAnimationFinished(double time) OVERRIDE { } |
- |
- virtual scoped_ptr<WebKit::WebCompositorOutputSurface> createOutputSurface(); |
-}; |
- |
-class TimeoutTask; |
-class BeginTask; |
- |
-class MockCCLayerTreeHostClient : public cc::CCLayerTreeHostClient { |
-}; |
- |
-// The CCThreadedTests runs with the main loop running. It instantiates a single MockLayerTreeHost and associated |
-// MockLayerTreeHostImpl/MockLayerTreeHostClient. |
-// |
-// beginTest() is called once the main message loop is running and the layer tree host is initialized. |
-// |
-// Key stages of the drawing loop, e.g. drawing or commiting, redirect to CCThreadedTest methods of similar names. |
-// To track the commit process, override these functions. |
-// |
-// The test continues until someone calls endTest. endTest can be called on any thread, but be aware that |
-// ending the test is an asynchronous process. |
-class CCThreadedTest : public testing::Test, public TestHooks { |
-public: |
- virtual ~CCThreadedTest(); |
- |
- virtual void afterTest() = 0; |
- virtual void beginTest() = 0; |
- |
- void endTest(); |
- void endTestAfterDelay(int delayMilliseconds); |
- |
- void postSetNeedsAnimateToMainThread(); |
- void postAddAnimationToMainThread(); |
- void postAddInstantAnimationToMainThread(); |
- void postSetNeedsCommitToMainThread(); |
- void postAcquireLayerTextures(); |
- void postSetNeedsRedrawToMainThread(); |
- void postSetNeedsAnimateAndCommitToMainThread(); |
- void postSetVisibleToMainThread(bool visible); |
- void postDidAddAnimationToMainThread(); |
- |
- void doBeginTest(); |
- void timeout(); |
- |
- void clearTimeout() { m_timeoutTask = 0; } |
- |
- cc::CCLayerTreeHost* layerTreeHost() { return m_layerTreeHost.get(); } |
- |
-protected: |
- CCThreadedTest(); |
- |
- virtual void initializeSettings(cc::CCLayerTreeSettings&) { } |
- |
- virtual void scheduleComposite() OVERRIDE; |
- |
- void realEndTest(); |
- |
- void dispatchSetNeedsAnimate(); |
- void dispatchAddInstantAnimation(); |
- void dispatchAddAnimation(); |
- void dispatchSetNeedsAnimateAndCommit(); |
- void dispatchSetNeedsCommit(); |
- void dispatchAcquireLayerTextures(); |
- void dispatchSetNeedsRedraw(); |
- void dispatchSetVisible(bool); |
- void dispatchComposite(); |
- void dispatchDidAddAnimation(); |
- |
- virtual void runTest(bool threaded); |
- WebKit::WebThread* webThread() const { return m_webThread.get(); } |
- |
- cc::CCLayerTreeSettings m_settings; |
- OwnPtr<MockCCLayerTreeHostClient> m_client; |
- scoped_ptr<cc::CCLayerTreeHost> m_layerTreeHost; |
- |
-protected: |
- RefPtr<cc::CCScopedThreadProxy> m_mainThreadProxy; |
- |
-private: |
- bool m_beginning; |
- bool m_endWhenBeginReturns; |
- bool m_timedOut; |
- bool m_finished; |
- bool m_scheduled; |
- bool m_started; |
- |
- OwnPtr<WebKit::WebThread> m_webThread; |
- TimeoutTask* m_timeoutTask; |
- BeginTask* m_beginTask; |
-}; |
- |
-class CCThreadedTestThreadOnly : public CCThreadedTest { |
-public: |
- void runTestThreaded() |
- { |
- CCThreadedTest::runTest(true); |
- } |
-}; |
- |
-// Adapts CCLayerTreeHostImpl for test. Runs real code, then invokes test hooks. |
-class MockLayerTreeHostImpl : public cc::CCLayerTreeHostImpl { |
-public: |
- static scoped_ptr<MockLayerTreeHostImpl> create(TestHooks*, const cc::CCLayerTreeSettings&, cc::CCLayerTreeHostImplClient*); |
- |
- virtual void beginCommit() OVERRIDE; |
- virtual void commitComplete() OVERRIDE; |
- virtual bool prepareToDraw(FrameData&) OVERRIDE; |
- virtual void drawLayers(const FrameData&) OVERRIDE; |
- |
- // Make these public. |
- typedef std::vector<cc::CCLayerImpl*> CCLayerList; |
- using CCLayerTreeHostImpl::calculateRenderSurfaceLayerList; |
- |
-protected: |
- virtual void animateLayers(double monotonicTime, double wallClockTime) OVERRIDE; |
- virtual base::TimeDelta lowFrequencyAnimationInterval() const OVERRIDE; |
- |
-private: |
- MockLayerTreeHostImpl(TestHooks*, const cc::CCLayerTreeSettings&, cc::CCLayerTreeHostImplClient*); |
- |
- TestHooks* m_testHooks; |
-}; |
- |
-class CompositorFakeWebGraphicsContext3DWithTextureTracking : public WebKit::CompositorFakeWebGraphicsContext3D { |
-public: |
- static PassOwnPtr<CompositorFakeWebGraphicsContext3DWithTextureTracking> create(Attributes); |
- virtual ~CompositorFakeWebGraphicsContext3DWithTextureTracking(); |
- |
- virtual WebKit::WebGLId createTexture(); |
- |
- virtual void deleteTexture(WebKit::WebGLId texture); |
- |
- virtual void bindTexture(WebKit::WGC3Denum target, WebKit::WebGLId texture); |
- |
- int numTextures() const; |
- int texture(int texture) const; |
- void resetTextures(); |
- |
- int numUsedTextures() const; |
- bool usedTexture(int texture) const; |
- void resetUsedTextures(); |
- |
-private: |
- explicit CompositorFakeWebGraphicsContext3DWithTextureTracking(Attributes attrs); |
- |
- Vector<WebKit::WebGLId> m_textures; |
- base::hash_set<WebKit::WebGLId> m_usedTextures; |
-}; |
- |
-} // namespace WebKitTests |
- |
-#define SINGLE_AND_MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) \ |
- TEST_F(TEST_FIXTURE_NAME, runSingleThread) \ |
- { \ |
- runTest(false); \ |
- } \ |
- TEST_F(TEST_FIXTURE_NAME, runMultiThread) \ |
- { \ |
- runTest(true); \ |
- } |
- |
-#endif // CCThreadedTest_h |
+// Temporary forwarding header |
+#include "cc/threaded_unittest.h" |