diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-11 09:43:24 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-11 09:43:24 +0200 |
commit | 1b914638db989aaa98631a1c1e02c7b2d44805d8 (patch) | |
tree | 87f4fd2c7b38db320079a5de8877890d2ca3c485 /Source/WebKit/chromium/tests/TextureLayerChromiumTest.cpp | |
parent | 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (diff) | |
download | qtwebkit-1b914638db989aaa98631a1c1e02c7b2d44805d8.tar.gz |
Imported WebKit commit 9a52e27980f47e8b0d8f8b7cc0fd7b5741bceb92 (http://svn.webkit.org/repository/webkit/trunk@116736)
New snapshot to include QDeclarative* -> QQml* build fixes
Diffstat (limited to 'Source/WebKit/chromium/tests/TextureLayerChromiumTest.cpp')
-rw-r--r-- | Source/WebKit/chromium/tests/TextureLayerChromiumTest.cpp | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/Source/WebKit/chromium/tests/TextureLayerChromiumTest.cpp b/Source/WebKit/chromium/tests/TextureLayerChromiumTest.cpp new file mode 100644 index 000000000..b60017fd9 --- /dev/null +++ b/Source/WebKit/chromium/tests/TextureLayerChromiumTest.cpp @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2012 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" + +#include "TextureLayerChromium.h" + +#include "FakeCCLayerTreeHostClient.h" +#include "WebCompositor.h" +#include "cc/CCLayerTreeHost.h" +#include <gmock/gmock.h> +#include <gtest/gtest.h> + +using namespace WebCore; +using ::testing::Mock; +using ::testing::_; +using ::testing::AtLeast; +using ::testing::AnyNumber; + +namespace { + +class MockCCLayerTreeHost : public CCLayerTreeHost { +public: + MockCCLayerTreeHost() + : CCLayerTreeHost(&m_fakeClient, CCSettings()) + { + initialize(); + } + + MOCK_METHOD0(acquireLayerTextures, void()); + +private: + FakeCCLayerTreeHostClient m_fakeClient; +}; + + +class TextureLayerChromiumTest : public testing::Test { +protected: + virtual void SetUp() + { + // Initialize without threading support. + WebKit::WebCompositor::initialize(0); + m_layerTreeHost = adoptPtr(new MockCCLayerTreeHost); + } + + virtual void TearDown() + { + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(AnyNumber()); + + m_layerTreeHost->setRootLayer(0); + m_layerTreeHost.clear(); + WebKit::WebCompositor::shutdown(); + } + + OwnPtr<MockCCLayerTreeHost> m_layerTreeHost; +}; + +TEST_F(TextureLayerChromiumTest, syncImplWhenChangingTextureId) +{ + RefPtr<TextureLayerChromium> testLayer = TextureLayerChromium::create(0); + ASSERT_TRUE(testLayer); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(AnyNumber()); + m_layerTreeHost->setRootLayer(testLayer); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); + EXPECT_EQ(testLayer->layerTreeHost(), m_layerTreeHost.get()); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0); + testLayer->setTextureId(1); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(AtLeast(1)); + testLayer->setTextureId(2); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(AtLeast(1)); + testLayer->setTextureId(0); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); +} + +TEST_F(TextureLayerChromiumTest, syncImplWhenRemovingFromTree) +{ + RefPtr<LayerChromium> rootLayer = LayerChromium::create(); + ASSERT_TRUE(rootLayer); + RefPtr<LayerChromium> childLayer = LayerChromium::create(); + ASSERT_TRUE(childLayer); + rootLayer->addChild(childLayer); + RefPtr<TextureLayerChromium> testLayer = TextureLayerChromium::create(0); + ASSERT_TRUE(testLayer); + testLayer->setTextureId(0); + childLayer->addChild(testLayer); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(AnyNumber()); + m_layerTreeHost->setRootLayer(rootLayer); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0); + testLayer->removeFromParent(); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0); + childLayer->addChild(testLayer); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0); + testLayer->setTextureId(1); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); + + EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(AtLeast(1)); + testLayer->removeFromParent(); + Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); +} + +} // anonymous namespace |