Index: third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreatorTest.cpp |
diff --git a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreatorTest.cpp b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreatorTest.cpp |
deleted file mode 100644 |
index 8ea339267604b23a3890efac1af160eb074122c5..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreatorTest.cpp |
+++ /dev/null |
@@ -1,195 +0,0 @@ |
-// Copyright 2016 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. |
- |
-#include "core/html/canvas/CanvasAsyncBlobCreator.h" |
- |
-#include "core/html/ImageData.h" |
-#include "platform/Task.h" |
-#include "platform/testing/UnitTestHelpers.h" |
-#include "public/platform/Platform.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "wtf/Functional.h" |
- |
-namespace blink { |
- |
-typedef CanvasAsyncBlobCreator::IdleTaskStatus IdleTaskStatus; |
- |
-class MockCanvasAsyncBlobCreator : public CanvasAsyncBlobCreator { |
-public: |
- MockCanvasAsyncBlobCreator(PassRefPtr<DOMUint8ClampedArray> data, const IntSize& size) |
- : CanvasAsyncBlobCreator(data, "image/png", size, nullptr) |
- { |
- } |
- |
- CanvasAsyncBlobCreator::IdleTaskStatus idleTaskStatus() |
- { |
- return m_idleTaskStatus; |
- } |
- |
- MOCK_METHOD0(signalTaskSwitchInStartTimeoutEventForTesting, void()); |
- MOCK_METHOD0(signalTaskSwitchInCompleteTimeoutEventForTesting, void()); |
- |
-protected: |
- void createBlobAndCall() override { }; |
- void createNullptrAndCall() override { }; |
- void clearAlternativeSelfReference() override; |
- void postDelayedTaskToMainThread(const WebTraceLocation&, Task*, double delayMs) override; |
-}; |
- |
-void MockCanvasAsyncBlobCreator::clearAlternativeSelfReference() |
-{ |
- testing::exitRunLoop(); |
-} |
- |
-void MockCanvasAsyncBlobCreator::postDelayedTaskToMainThread(const WebTraceLocation& location, Task* task, double delayMs) |
-{ |
- Platform::current()->mainThread()->taskRunner()->postTask(location, task); |
-} |
- |
-//============================================================================== |
- |
-class MockCanvasAsyncBlobCreatorWithoutStart : public MockCanvasAsyncBlobCreator { |
-public: |
- MockCanvasAsyncBlobCreatorWithoutStart(PassRefPtr<DOMUint8ClampedArray> data, const IntSize& size) |
- : MockCanvasAsyncBlobCreator(data, size) |
- { |
- } |
- |
-protected: |
- void scheduleInitiatePngEncoding() override |
- { |
- // Deliberately make scheduleInitiatePngEncoding do nothing so that idle task never starts |
- this->clearSelfReference(); |
- } |
-}; |
- |
-//============================================================================== |
- |
-class MockCanvasAsyncBlobCreatorWithoutComplete : public MockCanvasAsyncBlobCreator { |
-public: |
- MockCanvasAsyncBlobCreatorWithoutComplete(PassRefPtr<DOMUint8ClampedArray> data, const IntSize& size) |
- : MockCanvasAsyncBlobCreator(data, size) |
- { |
- } |
- |
-protected: |
- void scheduleInitiatePngEncoding() override |
- { |
- Platform::current()->mainThread()->taskRunner()->postTask(BLINK_FROM_HERE, |
- bind(&MockCanvasAsyncBlobCreatorWithoutComplete::initiatePngEncoding, this, std::numeric_limits<double>::max())); |
- } |
- |
- void idleEncodeRowsPng(double deadlineSeconds) override |
- { |
- // Deliberately make idleEncodeRowsPng do nothing so that idle task never completes |
- this->clearSelfReference(); |
- } |
-}; |
- |
-//============================================================================== |
- |
-class CanvasAsyncBlobCreatorTest : public ::testing::Test { |
-public: |
- void prepareMockCanvasAsyncBlobCreatorWithoutStart(); |
- void prepareMockCanvasAsyncBlobCreatorWithoutComplete(); |
- void prepareMockCanvasAsyncBlobCreatorFail(); |
- |
-protected: |
- CanvasAsyncBlobCreatorTest(); |
- MockCanvasAsyncBlobCreator* asyncBlobCreator() { return m_asyncBlobCreator.get(); } |
- void TearDown() override; |
- |
-private: |
- RefPtr<MockCanvasAsyncBlobCreator> m_asyncBlobCreator; |
-}; |
- |
-CanvasAsyncBlobCreatorTest::CanvasAsyncBlobCreatorTest() |
-{ |
-} |
- |
-void CanvasAsyncBlobCreatorTest::prepareMockCanvasAsyncBlobCreatorWithoutStart() |
-{ |
- IntSize testSize(20, 20); |
- ImageData* imageData = ImageData::create(testSize); |
- RefPtr<DOMUint8ClampedArray> imageDataRef(imageData->data()); |
- |
- m_asyncBlobCreator = adoptRef(new MockCanvasAsyncBlobCreatorWithoutStart(imageDataRef.release(), testSize)); |
-} |
- |
-void CanvasAsyncBlobCreatorTest::prepareMockCanvasAsyncBlobCreatorWithoutComplete() |
-{ |
- IntSize testSize(20, 20); |
- ImageData* imageData = ImageData::create(testSize); |
- RefPtr<DOMUint8ClampedArray> imageDataRef(imageData->data()); |
- |
- m_asyncBlobCreator = adoptRef(new MockCanvasAsyncBlobCreatorWithoutComplete(imageDataRef.release(), testSize)); |
-} |
- |
-void CanvasAsyncBlobCreatorTest::prepareMockCanvasAsyncBlobCreatorFail() |
-{ |
- IntSize testSize(0, 0); |
- ImageData* imageData = ImageData::create(testSize); |
- RefPtr<DOMUint8ClampedArray> imageDataRef(imageData->data()); |
- |
- // We reuse the class MockCanvasAsyncBlobCreatorWithoutComplete because this |
- // test case is expected to fail at initialization step before completion. |
- m_asyncBlobCreator = adoptRef(new MockCanvasAsyncBlobCreatorWithoutComplete(imageDataRef.release(), testSize)); |
-} |
- |
-void CanvasAsyncBlobCreatorTest::TearDown() |
-{ |
- ASSERT(!!m_asyncBlobCreator->m_alternativeSelfRef); |
- m_asyncBlobCreator->m_alternativeSelfRef.clear(); |
- m_asyncBlobCreator = nullptr; |
-} |
- |
-//============================================================================== |
- |
-TEST_F(CanvasAsyncBlobCreatorTest, IdleTaskNotStartedWhenStartTimeoutEventHappens) |
-{ |
- // This test mocks the scenario when idle task is not started when the |
- // StartTimeoutEvent is inspecting the idle task status. |
- // The whole image encoding process (including initialization) will then |
- // become carried out in the alternative code path instead. |
- this->prepareMockCanvasAsyncBlobCreatorWithoutStart(); |
- EXPECT_CALL(*(asyncBlobCreator()), signalTaskSwitchInStartTimeoutEventForTesting()); |
- |
- this->asyncBlobCreator()->scheduleAsyncBlobCreation(true); |
- testing::enterRunLoop(); |
- |
- ::testing::Mock::VerifyAndClearExpectations(asyncBlobCreator()); |
- EXPECT_EQ(IdleTaskStatus::IdleTaskSwitchedToMainThreadTask, this->asyncBlobCreator()->idleTaskStatus()); |
-} |
- |
-TEST_F(CanvasAsyncBlobCreatorTest, IdleTaskNotCompletedWhenCompleteTimeoutEventHappens) |
-{ |
- // This test mocks the scenario when idle task is not completed when the |
- // CompleteTimeoutEvent is inspecting the idle task status. |
- // The remaining image encoding process (excluding initialization) will |
- // then become carried out in the alternative code path instead. |
- this->prepareMockCanvasAsyncBlobCreatorWithoutComplete(); |
- EXPECT_CALL(*(asyncBlobCreator()), signalTaskSwitchInCompleteTimeoutEventForTesting()); |
- |
- this->asyncBlobCreator()->scheduleAsyncBlobCreation(true); |
- testing::enterRunLoop(); |
- |
- ::testing::Mock::VerifyAndClearExpectations(asyncBlobCreator()); |
- EXPECT_EQ(IdleTaskStatus::IdleTaskSwitchedToMainThreadTask, this->asyncBlobCreator()->idleTaskStatus()); |
-} |
- |
-TEST_F(CanvasAsyncBlobCreatorTest, IdleTaskFailedWhenStartTimeoutEventHappens) |
-{ |
- // This test mocks the scenario when idle task is not failed during when |
- // either the StartTimeoutEvent or the CompleteTimeoutEvent is inspecting |
- // the idle task status. |
- this->prepareMockCanvasAsyncBlobCreatorFail(); |
- |
- this->asyncBlobCreator()->scheduleAsyncBlobCreation(true); |
- testing::enterRunLoop(); |
- |
- EXPECT_EQ(IdleTaskStatus::IdleTaskFailed, this->asyncBlobCreator()->idleTaskStatus()); |
-} |
- |
-} |