diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
commit | 43a42f108af6bcbd91f2672731c3047c26213af1 (patch) | |
tree | 7fa092e5f5d873c72f2486a70e26be26f7a38bec /Source/WebKit/chromium/tests/DeferredImageDecoderTest.cpp | |
parent | d9cf437c840c6eb7417bdd97e6c40979255d3158 (diff) | |
download | qtwebkit-43a42f108af6bcbd91f2672731c3047c26213af1.tar.gz |
Imported WebKit commit 302e7806bff028bd1167a1ec7c86a1ee00ecfb49 (http://svn.webkit.org/repository/webkit/trunk@132067)
New snapshot that fixes build without QtWidgets
Diffstat (limited to 'Source/WebKit/chromium/tests/DeferredImageDecoderTest.cpp')
-rw-r--r-- | Source/WebKit/chromium/tests/DeferredImageDecoderTest.cpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/Source/WebKit/chromium/tests/DeferredImageDecoderTest.cpp b/Source/WebKit/chromium/tests/DeferredImageDecoderTest.cpp new file mode 100644 index 000000000..482549805 --- /dev/null +++ b/Source/WebKit/chromium/tests/DeferredImageDecoderTest.cpp @@ -0,0 +1,102 @@ +/* + * 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 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 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 "DeferredImageDecoder.h" + +#include "ImageDecodingStore.h" +#include "MockImageDecoder.h" +#include "NativeImageSkia.h" +#include "SkCanvas.h" +#include "SkDevice.h" +#include "SkPicture.h" +#include <gtest/gtest.h> + +using namespace WebCore; + +namespace { + +class DeferredImageDecoderTest : public ::testing::Test { +public: + virtual void SetUp() + { + ImageDecodingStore::initializeOnMainThread(); + m_actualDecoder = new MockImageDecoder(); + m_actualDecoder->setSize(600, 613); + m_lazyDecoder = DeferredImageDecoder::createForTesting(adoptPtr(m_actualDecoder)); + m_canvas.setDevice(new SkDevice(SkBitmap::kARGB_8888_Config, 100, 100))->unref(); + } + + virtual void TearDown() + { + ImageDecodingStore::shutdown(); + } + +protected: + // Don't own this but saves the pointer to query states. + MockImageDecoder* m_actualDecoder; + OwnPtr<DeferredImageDecoder> m_lazyDecoder; + SkPicture m_picture; + SkCanvas m_canvas; +}; + +TEST_F(DeferredImageDecoderTest, drawIntoSkPicture) +{ + OwnPtr<NativeImageSkia> image(adoptPtr(m_lazyDecoder->frameBufferAtIndex(0)->asNewNativeImage())); + EXPECT_EQ(m_actualDecoder->size().width(), image->bitmap().width()); + EXPECT_EQ(m_actualDecoder->size().height(), image->bitmap().height()); + EXPECT_FALSE(image->bitmap().isNull()); + EXPECT_TRUE(image->bitmap().isImmutable()); + + SkCanvas* tempCanvas = m_picture.beginRecording(100, 100); + tempCanvas->drawBitmap(image->bitmap(), 0, 0); + m_picture.endRecording(); + EXPECT_EQ(0, m_actualDecoder->frameBufferRequestCount()); + + m_canvas.drawPicture(m_picture); + EXPECT_EQ(1, m_actualDecoder->frameBufferRequestCount()); +} + +TEST_F(DeferredImageDecoderTest, drawScaledIntoSkPicture) +{ + OwnPtr<NativeImageSkia> image(adoptPtr(m_lazyDecoder->frameBufferAtIndex(0)->asNewNativeImage())); + SkBitmap scaledBitmap = image->resizedBitmap(SkISize::Make(50, 51), SkIRect::MakeWH(50, 51)); + EXPECT_FALSE(scaledBitmap.isNull()); + EXPECT_TRUE(scaledBitmap.isImmutable()); + EXPECT_EQ(50, scaledBitmap.width()); + EXPECT_EQ(51, scaledBitmap.height()); + EXPECT_EQ(0, m_actualDecoder->frameBufferRequestCount()); + + SkCanvas* tempCanvas = m_picture.beginRecording(100, 100); + tempCanvas->drawBitmap(scaledBitmap, 0, 0); + m_picture.endRecording(); + EXPECT_EQ(0, m_actualDecoder->frameBufferRequestCount()); + + m_canvas.drawPicture(m_picture); + EXPECT_EQ(1, m_actualDecoder->frameBufferRequestCount()); +} + +} // namespace |