| Index: third_party/WebKit/Source/platform/scheduler/CancellableTaskFactoryTest.cpp
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/CancellableTaskFactoryTest.cpp b/third_party/WebKit/Source/platform/scheduler/CancellableTaskFactoryTest.cpp
|
| deleted file mode 100644
|
| index 58f6059609a8f960af8fb21cc21d42bbb4f37209..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/Source/platform/scheduler/CancellableTaskFactoryTest.cpp
|
| +++ /dev/null
|
| @@ -1,200 +0,0 @@
|
| -// Copyright 2015 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 "platform/scheduler/CancellableTaskFactory.h"
|
| -
|
| -#include "platform/heap/Handle.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "wtf/PtrUtil.h"
|
| -#include <memory>
|
| -
|
| -namespace blink {
|
| -
|
| -namespace {
|
| -
|
| -class TestCancellableTaskFactory final : public CancellableTaskFactory {
|
| - public:
|
| - explicit TestCancellableTaskFactory(std::unique_ptr<WTF::Closure> closure)
|
| - : CancellableTaskFactory(std::move(closure)) {}
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -using CancellableTaskFactoryTest = testing::Test;
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, IsPending_TaskNotCreated) {
|
| - TestCancellableTaskFactory factory(nullptr);
|
| -
|
| - EXPECT_FALSE(factory.isPending());
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, IsPending_TaskCreated) {
|
| - TestCancellableTaskFactory factory(nullptr);
|
| - std::unique_ptr<WebTaskRunner::Task> task =
|
| - wrapUnique(factory.cancelAndCreate());
|
| -
|
| - EXPECT_TRUE(factory.isPending());
|
| -}
|
| -
|
| -void EmptyFn() {}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, IsPending_TaskCreatedAndRun) {
|
| - TestCancellableTaskFactory factory(WTF::bind(&EmptyFn));
|
| - {
|
| - std::unique_ptr<WebTaskRunner::Task> task =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - task->run();
|
| - }
|
| -
|
| - EXPECT_FALSE(factory.isPending());
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, IsPending_TaskCreatedAndDestroyed) {
|
| - TestCancellableTaskFactory factory(nullptr);
|
| - delete factory.cancelAndCreate();
|
| -
|
| - EXPECT_FALSE(factory.isPending());
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, IsPending_TaskCreatedAndCancelled) {
|
| - TestCancellableTaskFactory factory(nullptr);
|
| - std::unique_ptr<WebTaskRunner::Task> task =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - factory.cancel();
|
| -
|
| - EXPECT_FALSE(factory.isPending());
|
| -}
|
| -
|
| -void AddOne(int* ptr) {
|
| - *ptr += 1;
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, Run_ClosureIsExecuted) {
|
| - int executionCount = 0;
|
| - TestCancellableTaskFactory factory(
|
| - WTF::bind(&AddOne, WTF::unretained(&executionCount)));
|
| - std::unique_ptr<WebTaskRunner::Task> task =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - task->run();
|
| -
|
| - EXPECT_EQ(1, executionCount);
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, Run_ClosureIsExecutedOnlyOnce) {
|
| - int executionCount = 0;
|
| - TestCancellableTaskFactory factory(
|
| - WTF::bind(&AddOne, WTF::unretained(&executionCount)));
|
| - std::unique_ptr<WebTaskRunner::Task> task =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - task->run();
|
| - task->run();
|
| - task->run();
|
| - task->run();
|
| -
|
| - EXPECT_EQ(1, executionCount);
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, Run_FactoryDestructionPreventsExecution) {
|
| - int executionCount = 0;
|
| - std::unique_ptr<WebTaskRunner::Task> task;
|
| - {
|
| - TestCancellableTaskFactory factory(
|
| - WTF::bind(&AddOne, WTF::unretained(&executionCount)));
|
| - task = wrapUnique(factory.cancelAndCreate());
|
| - }
|
| - task->run();
|
| -
|
| - EXPECT_EQ(0, executionCount);
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, Run_TasksInSequence) {
|
| - int executionCount = 0;
|
| - TestCancellableTaskFactory factory(
|
| - WTF::bind(&AddOne, WTF::unretained(&executionCount)));
|
| -
|
| - std::unique_ptr<WebTaskRunner::Task> taskA =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - taskA->run();
|
| - EXPECT_EQ(1, executionCount);
|
| -
|
| - std::unique_ptr<WebTaskRunner::Task> taskB =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - taskB->run();
|
| - EXPECT_EQ(2, executionCount);
|
| -
|
| - std::unique_ptr<WebTaskRunner::Task> taskC =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - taskC->run();
|
| - EXPECT_EQ(3, executionCount);
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, Cancel) {
|
| - int executionCount = 0;
|
| - TestCancellableTaskFactory factory(
|
| - WTF::bind(&AddOne, WTF::unretained(&executionCount)));
|
| - std::unique_ptr<WebTaskRunner::Task> task =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - factory.cancel();
|
| - task->run();
|
| -
|
| - EXPECT_EQ(0, executionCount);
|
| -}
|
| -
|
| -TEST_F(CancellableTaskFactoryTest, CreatingANewTaskCancelsPreviousOnes) {
|
| - int executionCount = 0;
|
| - TestCancellableTaskFactory factory(
|
| - WTF::bind(&AddOne, WTF::unretained(&executionCount)));
|
| -
|
| - std::unique_ptr<WebTaskRunner::Task> taskA =
|
| - wrapUnique(factory.cancelAndCreate());
|
| - std::unique_ptr<WebTaskRunner::Task> taskB =
|
| - wrapUnique(factory.cancelAndCreate());
|
| -
|
| - taskA->run();
|
| - EXPECT_EQ(0, executionCount);
|
| -
|
| - taskB->run();
|
| - EXPECT_EQ(1, executionCount);
|
| -}
|
| -
|
| -namespace {
|
| -
|
| -class GCObject final : public GarbageCollectedFinalized<GCObject> {
|
| - public:
|
| - GCObject()
|
| - : m_factory(CancellableTaskFactory::create(this, &GCObject::run)) {}
|
| -
|
| - ~GCObject() { s_destructed++; }
|
| -
|
| - void run() { s_invoked++; }
|
| -
|
| - DEFINE_INLINE_TRACE() {}
|
| -
|
| - static int s_destructed;
|
| - static int s_invoked;
|
| -
|
| - std::unique_ptr<CancellableTaskFactory> m_factory;
|
| -};
|
| -
|
| -int GCObject::s_destructed = 0;
|
| -int GCObject::s_invoked = 0;
|
| -
|
| -} // namespace
|
| -
|
| -TEST(CancellableTaskFactoryTest, GarbageCollectedWeak) {
|
| - GCObject* object = new GCObject();
|
| - std::unique_ptr<WebTaskRunner::Task> task =
|
| - wrapUnique(object->m_factory->cancelAndCreate());
|
| - object = nullptr;
|
| - ThreadState::current()->collectAllGarbage();
|
| - task->run();
|
| - // The owning object will have been GCed and the task will have
|
| - // lost its weak reference. Verify that it wasn't invoked.
|
| - EXPECT_EQ(0, GCObject::s_invoked);
|
| -
|
| - // ..and just to make sure |object| was indeed destructed.
|
| - EXPECT_EQ(1, GCObject::s_destructed);
|
| -}
|
| -
|
| -} // namespace blink
|
|
|