Commit a30e9a7d authored by tzik's avatar tzik Committed by Commit bot

Remove WebTaskRunner::Task

WebTaskRunner::Task is replaced by WTF::Closure/CrossThreadClosure,
and no longer used in the production.

Review-Url: https://codereview.chromium.org/2568063003
Cr-Commit-Position: refs/heads/master@{#437992}
parent 02f72919
...@@ -60,22 +60,6 @@ class BLINK_PLATFORM_EXPORT WebTaskRunner { ...@@ -60,22 +60,6 @@ class BLINK_PLATFORM_EXPORT WebTaskRunner {
public: public:
virtual ~WebTaskRunner() {} virtual ~WebTaskRunner() {}
class BLINK_PLATFORM_EXPORT Task {
public:
virtual ~Task() {}
virtual void run() = 0;
};
// Schedule a task to be run on the the associated WebThread.
// Takes ownership of |Task|. Can be called from any thread.
virtual void postTask(const WebTraceLocation&, Task*) = 0;
// Schedule a task to be run after |delayMs| on the the associated WebThread.
// Takes ownership of |Task|. Can be called from any thread.
virtual void postDelayedTask(const WebTraceLocation&,
Task*,
double delayMs) = 0;
// Schedule a task to be run after |delayMs| on the the associated WebThread. // Schedule a task to be run after |delayMs| on the the associated WebThread.
// Can be called from any thread. // Can be called from any thread.
virtual void postDelayedTask(const WebTraceLocation&, virtual void postDelayedTask(const WebTraceLocation&,
......
...@@ -19,24 +19,6 @@ WebTaskRunnerImpl::WebTaskRunnerImpl(scoped_refptr<TaskQueue> task_queue) ...@@ -19,24 +19,6 @@ WebTaskRunnerImpl::WebTaskRunnerImpl(scoped_refptr<TaskQueue> task_queue)
WebTaskRunnerImpl::~WebTaskRunnerImpl() {} WebTaskRunnerImpl::~WebTaskRunnerImpl() {}
void WebTaskRunnerImpl::postTask(const blink::WebTraceLocation& location,
blink::WebTaskRunner::Task* task) {
task_queue_->PostTask(location,
base::Bind(&WebTaskRunnerImpl::runTask,
base::Passed(base::WrapUnique(task))));
}
void WebTaskRunnerImpl::postDelayedTask(const blink::WebTraceLocation& location,
blink::WebTaskRunner::Task* task,
double delayMs) {
DCHECK_GE(delayMs, 0.0) << location.function_name() << " "
<< location.file_name();
task_queue_->PostDelayedTask(location,
base::Bind(&WebTaskRunnerImpl::runTask,
base::Passed(base::WrapUnique(task))),
base::TimeDelta::FromMillisecondsD(delayMs));
}
void WebTaskRunnerImpl::postDelayedTask(const WebTraceLocation& location, void WebTaskRunnerImpl::postDelayedTask(const WebTraceLocation& location,
const base::Closure& task, const base::Closure& task,
double delayMs) { double delayMs) {
...@@ -76,10 +58,5 @@ base::SingleThreadTaskRunner* WebTaskRunnerImpl::toSingleThreadTaskRunner() { ...@@ -76,10 +58,5 @@ base::SingleThreadTaskRunner* WebTaskRunnerImpl::toSingleThreadTaskRunner() {
return task_queue_.get(); return task_queue_.get();
} }
void WebTaskRunnerImpl::runTask(
std::unique_ptr<blink::WebTaskRunner::Task> task) {
task->run();
}
} // namespace scheduler } // namespace scheduler
} // namespace blink } // namespace blink
...@@ -24,11 +24,6 @@ class BLINK_PLATFORM_EXPORT WebTaskRunnerImpl : public WebTaskRunner { ...@@ -24,11 +24,6 @@ class BLINK_PLATFORM_EXPORT WebTaskRunnerImpl : public WebTaskRunner {
~WebTaskRunnerImpl() override; ~WebTaskRunnerImpl() override;
// WebTaskRunner implementation: // WebTaskRunner implementation:
void postTask(const WebTraceLocation& web_location,
WebTaskRunner::Task* task) override;
void postDelayedTask(const WebTraceLocation& web_location,
WebTaskRunner::Task* task,
double delayMs) override;
void postDelayedTask(const WebTraceLocation&, void postDelayedTask(const WebTraceLocation&,
const base::Closure&, const base::Closure&,
double delayMs) override; double delayMs) override;
...@@ -38,14 +33,6 @@ class BLINK_PLATFORM_EXPORT WebTaskRunnerImpl : public WebTaskRunner { ...@@ -38,14 +33,6 @@ class BLINK_PLATFORM_EXPORT WebTaskRunnerImpl : public WebTaskRunner {
std::unique_ptr<WebTaskRunner> clone() override; std::unique_ptr<WebTaskRunner> clone() override;
base::SingleThreadTaskRunner* toSingleThreadTaskRunner() override; base::SingleThreadTaskRunner* toSingleThreadTaskRunner() override;
// WebTaskRunner::Task should be wrapped by base::Passed() when
// used with base::Bind(). See https://crbug.com/551356.
// runTask() is a helper to call WebTaskRunner::Task::run from
// std::unique_ptr<WebTaskRunner::Task>.
// runTask() is placed here because std::unique_ptr<> cannot be used from
// Blink.
static void runTask(std::unique_ptr<WebTaskRunner::Task>);
private: private:
base::TimeTicks Now() const; base::TimeTicks Now() const;
......
...@@ -22,17 +22,8 @@ namespace blink { ...@@ -22,17 +22,8 @@ namespace blink {
namespace scheduler { namespace scheduler {
namespace { namespace {
class NopTask : public blink::WebTaskRunner::Task { class MockTask {
public: public:
~NopTask() override {}
void run() override {}
};
class MockTask : public blink::WebTaskRunner::Task {
public:
~MockTask() override {}
MOCK_METHOD0(run, void()); MOCK_METHOD0(run, void());
}; };
...@@ -57,17 +48,9 @@ class TestObserver : public blink::WebThread::TaskObserver { ...@@ -57,17 +48,9 @@ class TestObserver : public blink::WebThread::TaskObserver {
std::string* calls_; // NOT OWNED std::string* calls_; // NOT OWNED
}; };
class TestTask : public blink::WebTaskRunner::Task { void runTestTask(std::string* calls) {
public: calls->append(" run");
explicit TestTask(std::string* calls) : calls_(calls) {} }
~TestTask() override {}
void run() override { calls_->append(" run"); }
private:
std::string* calls_; // NOT OWNED
};
void addTaskObserver(WebThreadImplForWorkerScheduler* thread, void addTaskObserver(WebThreadImplForWorkerScheduler* thread,
TestObserver* observer) { TestObserver* observer) {
...@@ -123,33 +106,35 @@ class WebThreadImplForWorkerSchedulerTest : public testing::Test { ...@@ -123,33 +106,35 @@ class WebThreadImplForWorkerSchedulerTest : public testing::Test {
}; };
TEST_F(WebThreadImplForWorkerSchedulerTest, TestDefaultTask) { TEST_F(WebThreadImplForWorkerSchedulerTest, TestDefaultTask) {
std::unique_ptr<MockTask> task(new MockTask()); MockTask task;
base::WaitableEvent completion( base::WaitableEvent completion(
base::WaitableEvent::ResetPolicy::AUTOMATIC, base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED); base::WaitableEvent::InitialState::NOT_SIGNALED);
EXPECT_CALL(*task, run()); EXPECT_CALL(task, run());
ON_CALL(*task, run()) ON_CALL(task, run()).WillByDefault(Invoke([&completion]() {
.WillByDefault(Invoke([&completion]() { completion.Signal(); })); completion.Signal();
}));
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task)));
completion.Wait(); completion.Wait();
} }
TEST_F(WebThreadImplForWorkerSchedulerTest, TEST_F(WebThreadImplForWorkerSchedulerTest,
TestTaskExecutedBeforeThreadDeletion) { TestTaskExecutedBeforeThreadDeletion) {
std::unique_ptr<MockTask> task(new MockTask()); MockTask task;
base::WaitableEvent completion( base::WaitableEvent completion(
base::WaitableEvent::ResetPolicy::AUTOMATIC, base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED); base::WaitableEvent::InitialState::NOT_SIGNALED);
EXPECT_CALL(*task, run()); EXPECT_CALL(task, run());
ON_CALL(*task, run()) ON_CALL(task, run()).WillByDefault(Invoke([&completion]() {
.WillByDefault(Invoke([&completion]() { completion.Signal(); })); completion.Signal();
}));
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task)));
thread_.reset(); thread_.reset();
} }
...@@ -163,10 +148,10 @@ TEST_F(WebThreadImplForWorkerSchedulerTest, TestIdleTask) { ...@@ -163,10 +148,10 @@ TEST_F(WebThreadImplForWorkerSchedulerTest, TestIdleTask) {
ON_CALL(*task, run(_)) ON_CALL(*task, run(_))
.WillByDefault(Invoke([&completion](double) { completion.Signal(); })); .WillByDefault(Invoke([&completion](double) { completion.Signal(); }));
thread_->postIdleTask(blink::WebTraceLocation(), task.release()); thread_->postIdleTask(BLINK_FROM_HERE, task.release());
// We need to post a wakeup task or idle work will never happen. // We need to post a wakeup task or idle work will never happen.
thread_->getWebTaskRunner()->postDelayedTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postDelayedTask(BLINK_FROM_HERE,
new NopTask(), 50ll); WTF::bind([] {}), 50ll);
completion.Wait(); completion.Wait();
} }
...@@ -177,8 +162,8 @@ TEST_F(WebThreadImplForWorkerSchedulerTest, TestTaskObserver) { ...@@ -177,8 +162,8 @@ TEST_F(WebThreadImplForWorkerSchedulerTest, TestTaskObserver) {
RunOnWorkerThread(FROM_HERE, RunOnWorkerThread(FROM_HERE,
base::Bind(&addTaskObserver, thread_.get(), &observer)); base::Bind(&addTaskObserver, thread_.get(), &observer));
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
new TestTask(&calls)); BLINK_FROM_HERE, WTF::bind(&runTestTask, WTF::unretained(&calls)));
RunOnWorkerThread(FROM_HERE, RunOnWorkerThread(FROM_HERE,
base::Bind(&removeTaskObserver, thread_.get(), &observer)); base::Bind(&removeTaskObserver, thread_.get(), &observer));
...@@ -191,17 +176,18 @@ TEST_F(WebThreadImplForWorkerSchedulerTest, TestTaskObserver) { ...@@ -191,17 +176,18 @@ TEST_F(WebThreadImplForWorkerSchedulerTest, TestTaskObserver) {
} }
TEST_F(WebThreadImplForWorkerSchedulerTest, TestShutdown) { TEST_F(WebThreadImplForWorkerSchedulerTest, TestShutdown) {
std::unique_ptr<MockTask> task(new MockTask()); MockTask task;
std::unique_ptr<MockTask> delayed_task(new MockTask()); MockTask delayed_task;
EXPECT_CALL(*task, run()).Times(0); EXPECT_CALL(task, run()).Times(0);
EXPECT_CALL(*delayed_task, run()).Times(0); EXPECT_CALL(delayed_task, run()).Times(0);
RunOnWorkerThread(FROM_HERE, base::Bind(&shutdownOnThread, thread_.get())); RunOnWorkerThread(FROM_HERE, base::Bind(&shutdownOnThread, thread_.get()));
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task)));
thread_->getWebTaskRunner()->postDelayedTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postDelayedTask(
task.release(), 50ll); BLINK_FROM_HERE,
WTF::bind(&MockTask::run, WTF::unretained(&delayed_task)), 50ll);
thread_.reset(); thread_.reset();
} }
......
...@@ -57,23 +57,21 @@ class WebFrameSchedulerImplTest : public testing::Test { ...@@ -57,23 +57,21 @@ class WebFrameSchedulerImplTest : public testing::Test {
}; };
namespace { namespace {
class RepeatingTask : public blink::WebTaskRunner::Task {
public:
RepeatingTask(blink::WebTaskRunner* web_task_runner, int* run_count)
: web_task_runner_(web_task_runner), run_count_(run_count) {}
~RepeatingTask() override {} void runRepeatingTask(WebTaskRunner* task_runner, int* run_count);
void run() override { std::unique_ptr<WTF::Closure> makeRepeatingTask(
(*run_count_)++; blink::WebTaskRunner* task_runner,
web_task_runner_->postDelayedTask( int* run_count) {
BLINK_FROM_HERE, new RepeatingTask(web_task_runner_, run_count_), 1.0); return WTF::bind(&runRepeatingTask, WTF::unretained(task_runner),
} WTF::unretained(run_count));
}
private: void runRepeatingTask(WebTaskRunner* task_runner, int* run_count) {
blink::WebTaskRunner* web_task_runner_; // NOT OWNED ++*run_count;
int* run_count_; // NOT OWNED task_runner->postDelayedTask(BLINK_FROM_HERE,
}; makeRepeatingTask(task_runner, run_count), 1.0);
}
void IncrementCounter(int* counter) { void IncrementCounter(int* counter) {
++*counter; ++*counter;
...@@ -87,7 +85,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_PageInForeground) { ...@@ -87,7 +85,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_PageInForeground) {
int run_count = 0; int run_count = 0;
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
BLINK_FROM_HERE, BLINK_FROM_HERE,
new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
1.0); 1.0);
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
...@@ -101,7 +99,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_PageInBackground) { ...@@ -101,7 +99,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_PageInBackground) {
int run_count = 0; int run_count = 0;
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
BLINK_FROM_HERE, BLINK_FROM_HERE,
new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
1.0); 1.0);
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
...@@ -115,7 +113,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_SameOrigin) { ...@@ -115,7 +113,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_SameOrigin) {
int run_count = 0; int run_count = 0;
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
BLINK_FROM_HERE, BLINK_FROM_HERE,
new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
1.0); 1.0);
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
...@@ -130,7 +128,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameVisible_CrossOrigin) { ...@@ -130,7 +128,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameVisible_CrossOrigin) {
int run_count = 0; int run_count = 0;
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
BLINK_FROM_HERE, BLINK_FROM_HERE,
new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
1.0); 1.0);
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
...@@ -145,7 +143,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_CrossOrigin) { ...@@ -145,7 +143,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_CrossOrigin) {
int run_count = 0; int run_count = 0;
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
BLINK_FROM_HERE, BLINK_FROM_HERE,
new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
1.0); 1.0);
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
...@@ -159,7 +157,7 @@ TEST_F(WebFrameSchedulerImplTest, PageInBackground_ThrottlingDisabled) { ...@@ -159,7 +157,7 @@ TEST_F(WebFrameSchedulerImplTest, PageInBackground_ThrottlingDisabled) {
int run_count = 0; int run_count = 0;
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
BLINK_FROM_HERE, BLINK_FROM_HERE,
new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
1.0); 1.0);
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
...@@ -174,7 +172,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_CrossOrigin_Throttl ...@@ -174,7 +172,7 @@ TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_CrossOrigin_Throttl
int run_count = 0; int run_count = 0;
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
BLINK_FROM_HERE, BLINK_FROM_HERE,
new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
1.0); 1.0);
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
......
...@@ -26,7 +26,7 @@ namespace { ...@@ -26,7 +26,7 @@ namespace {
const int kWorkBatchSize = 2; const int kWorkBatchSize = 2;
class MockTask : public blink::WebTaskRunner::Task { class MockTask {
public: public:
MOCK_METHOD0(run, void()); MOCK_METHOD0(run, void());
}; };
...@@ -73,17 +73,17 @@ class WebThreadImplForRendererSchedulerTest : public testing::Test { ...@@ -73,17 +73,17 @@ class WebThreadImplForRendererSchedulerTest : public testing::Test {
TEST_F(WebThreadImplForRendererSchedulerTest, TestTaskObserver) { TEST_F(WebThreadImplForRendererSchedulerTest, TestTaskObserver) {
MockTaskObserver observer; MockTaskObserver observer;
thread_->addTaskObserver(&observer); thread_->addTaskObserver(&observer);
std::unique_ptr<MockTask> task(new MockTask()); MockTask task;
{ {
testing::InSequence sequence; testing::InSequence sequence;
EXPECT_CALL(observer, willProcessTask()); EXPECT_CALL(observer, willProcessTask());
EXPECT_CALL(*task, run()); EXPECT_CALL(task, run());
EXPECT_CALL(observer, didProcessTask()); EXPECT_CALL(observer, didProcessTask());
} }
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task)));
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
thread_->removeTaskObserver(&observer); thread_->removeTaskObserver(&observer);
} }
...@@ -91,18 +91,18 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestTaskObserver) { ...@@ -91,18 +91,18 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestTaskObserver) {
TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithOneTask) { TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithOneTask) {
MockTaskObserver observer; MockTaskObserver observer;
thread_->addTaskObserver(&observer); thread_->addTaskObserver(&observer);
std::unique_ptr<MockTask> task(new MockTask()); MockTask task;
SetWorkBatchSizeForTesting(kWorkBatchSize); SetWorkBatchSizeForTesting(kWorkBatchSize);
{ {
testing::InSequence sequence; testing::InSequence sequence;
EXPECT_CALL(observer, willProcessTask()); EXPECT_CALL(observer, willProcessTask());
EXPECT_CALL(*task, run()); EXPECT_CALL(task, run());
EXPECT_CALL(observer, didProcessTask()); EXPECT_CALL(observer, didProcessTask());
} }
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task)));
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
thread_->removeTaskObserver(&observer); thread_->removeTaskObserver(&observer);
} }
...@@ -110,25 +110,25 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithOneTask) { ...@@ -110,25 +110,25 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithOneTask) {
TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithTwoTasks) { TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithTwoTasks) {
MockTaskObserver observer; MockTaskObserver observer;
thread_->addTaskObserver(&observer); thread_->addTaskObserver(&observer);
std::unique_ptr<MockTask> task1(new MockTask()); MockTask task1;
std::unique_ptr<MockTask> task2(new MockTask()); MockTask task2;
SetWorkBatchSizeForTesting(kWorkBatchSize); SetWorkBatchSizeForTesting(kWorkBatchSize);
{ {
testing::InSequence sequence; testing::InSequence sequence;
EXPECT_CALL(observer, willProcessTask()); EXPECT_CALL(observer, willProcessTask());
EXPECT_CALL(*task1, run()); EXPECT_CALL(task1, run());
EXPECT_CALL(observer, didProcessTask()); EXPECT_CALL(observer, didProcessTask());
EXPECT_CALL(observer, willProcessTask()); EXPECT_CALL(observer, willProcessTask());
EXPECT_CALL(*task2, run()); EXPECT_CALL(task2, run());
EXPECT_CALL(observer, didProcessTask()); EXPECT_CALL(observer, didProcessTask());
} }
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task1.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task1)));
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task2.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task2)));
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
thread_->removeTaskObserver(&observer); thread_->removeTaskObserver(&observer);
} }
...@@ -136,52 +136,43 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithTwoTasks) { ...@@ -136,52 +136,43 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithTwoTasks) {
TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithThreeTasks) { TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithThreeTasks) {
MockTaskObserver observer; MockTaskObserver observer;
thread_->addTaskObserver(&observer); thread_->addTaskObserver(&observer);
std::unique_ptr<MockTask> task1(new MockTask()); MockTask task1;
std::unique_ptr<MockTask> task2(new MockTask()); MockTask task2;
std::unique_ptr<MockTask> task3(new MockTask()); MockTask task3;
SetWorkBatchSizeForTesting(kWorkBatchSize); SetWorkBatchSizeForTesting(kWorkBatchSize);
{ {
testing::InSequence sequence; testing::InSequence sequence;
EXPECT_CALL(observer, willProcessTask()); EXPECT_CALL(observer, willProcessTask());
EXPECT_CALL(*task1, run()); EXPECT_CALL(task1, run());
EXPECT_CALL(observer, didProcessTask()); EXPECT_CALL(observer, didProcessTask());
EXPECT_CALL(observer, willProcessTask()); EXPECT_CALL(observer, willProcessTask());
EXPECT_CALL(*task2, run()); EXPECT_CALL(task2, run());
EXPECT_CALL(observer, didProcessTask()); EXPECT_CALL(observer, didProcessTask());
EXPECT_CALL(observer, willProcessTask()); EXPECT_CALL(observer, willProcessTask());
EXPECT_CALL(*task3, run()); EXPECT_CALL(task3, run());
EXPECT_CALL(observer, didProcessTask()); EXPECT_CALL(observer, didProcessTask());
} }
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task1.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task1)));
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task2.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task2)));
thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread_->getWebTaskRunner()->postTask(
task3.release()); BLINK_FROM_HERE, WTF::bind(&MockTask::run, WTF::unretained(&task3)));
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
thread_->removeTaskObserver(&observer); thread_->removeTaskObserver(&observer);
} }
class ExitRunLoopTask : public blink::WebTaskRunner::Task {
public:
ExitRunLoopTask(base::RunLoop* run_loop) : run_loop_(run_loop) {}
void run() override { run_loop_->Quit(); }
private:
base::RunLoop* run_loop_;
};
void EnterRunLoop(base::MessageLoop* message_loop, blink::WebThread* thread) { void EnterRunLoop(base::MessageLoop* message_loop, blink::WebThread* thread) {
// Note: WebThreads do not support nested run loops, which is why we use a // Note: WebThreads do not support nested run loops, which is why we use a
// run loop directly. // run loop directly.
base::RunLoop run_loop; base::RunLoop run_loop;
thread->getWebTaskRunner()->postTask(blink::WebTraceLocation(), thread->getWebTaskRunner()->postTask(
new ExitRunLoopTask(&run_loop)); BLINK_FROM_HERE,
WTF::bind(&base::RunLoop::Quit, WTF::unretained(&run_loop)));
message_loop->SetNestableTasksAllowed(true); message_loop->SetNestableTasksAllowed(true);
run_loop.Run(); run_loop.Run();
} }
......
...@@ -68,17 +68,6 @@ void FakeWebTaskRunner::setTime(double new_time) { ...@@ -68,17 +68,6 @@ void FakeWebTaskRunner::setTime(double new_time) {
data_->time_ = new_time; data_->time_ = new_time;
} }
void FakeWebTaskRunner::postTask(const WebTraceLocation&, Task*) {
NOTREACHED();
}
void FakeWebTaskRunner::postDelayedTask(const WebTraceLocation&,
Task* task,
double) {
data_->task_queue_.push_back(
base::Bind(&WebTaskRunner::Task::run, base::Owned(task)));
}
void FakeWebTaskRunner::postDelayedTask(const WebTraceLocation&, void FakeWebTaskRunner::postDelayedTask(const WebTraceLocation&,
const base::Closure& closure, const base::Closure& closure,
double) { double) {
......
...@@ -25,8 +25,6 @@ class FakeWebTaskRunner : public WebTaskRunner { ...@@ -25,8 +25,6 @@ class FakeWebTaskRunner : public WebTaskRunner {
void setTime(double new_time); void setTime(double new_time);
// WebTaskRunner implementation: // WebTaskRunner implementation:
void postTask(const WebTraceLocation&, Task*) override;
void postDelayedTask(const WebTraceLocation&, Task*, double) override;
void postDelayedTask(const WebTraceLocation&, void postDelayedTask(const WebTraceLocation&,
const base::Closure&, const base::Closure&,
double) override; double) override;
......
...@@ -108,9 +108,6 @@ class TestingPlatformMockScheduler : public WebScheduler { ...@@ -108,9 +108,6 @@ class TestingPlatformMockScheduler : public WebScheduler {
void resumeTimerQueue() override {} void resumeTimerQueue() override {}
void addPendingNavigation(WebScheduler::NavigatingFrameType) override {} void addPendingNavigation(WebScheduler::NavigatingFrameType) override {}
void removePendingNavigation(WebScheduler::NavigatingFrameType) override {} void removePendingNavigation(WebScheduler::NavigatingFrameType) override {}
private:
WTF::Deque<std::unique_ptr<WebTaskRunner::Task>> m_tasks;
}; };
class TestingPlatformSupport : public Platform { class TestingPlatformSupport : public Platform {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment