Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(463)

Side by Side Diff: components/scheduler/child/webthread_impl_for_worker_scheduler_unittest.cc

Issue 2028193002: Migrate WaitableEvent to enum-based constructor in components/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@WEvent_enums
Patch Set: rm comment explaining true/false Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/scheduler/child/webthread_impl_for_worker_scheduler.h" 5 #include "components/scheduler/child/webthread_impl_for_worker_scheduler.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/synchronization/waitable_event.h" 8 #include "base/synchronization/waitable_event.h"
9 #include "components/scheduler/child/web_scheduler_impl.h" 9 #include "components/scheduler/child/web_scheduler_impl.h"
10 #include "components/scheduler/child/worker_scheduler_impl.h" 10 #include "components/scheduler/child/worker_scheduler_impl.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 91
92 ~WebThreadImplForWorkerSchedulerTest() override {} 92 ~WebThreadImplForWorkerSchedulerTest() override {}
93 93
94 void SetUp() override { 94 void SetUp() override {
95 thread_.reset(new WebThreadImplForWorkerScheduler("test thread")); 95 thread_.reset(new WebThreadImplForWorkerScheduler("test thread"));
96 thread_->Init(); 96 thread_->Init();
97 } 97 }
98 98
99 void RunOnWorkerThread(const tracked_objects::Location& from_here, 99 void RunOnWorkerThread(const tracked_objects::Location& from_here,
100 const base::Closure& task) { 100 const base::Closure& task) {
101 base::WaitableEvent completion(false, false); 101 base::WaitableEvent completion(
102 base::WaitableEvent::ResetPolicy::AUTOMATIC,
103 base::WaitableEvent::InitialState::NOT_SIGNALED);
102 thread_->GetTaskRunner()->PostTask( 104 thread_->GetTaskRunner()->PostTask(
103 from_here, 105 from_here,
104 base::Bind(&WebThreadImplForWorkerSchedulerTest::RunOnWorkerThreadTask, 106 base::Bind(&WebThreadImplForWorkerSchedulerTest::RunOnWorkerThreadTask,
105 base::Unretained(this), task, &completion)); 107 base::Unretained(this), task, &completion));
106 completion.Wait(); 108 completion.Wait();
107 } 109 }
108 110
109 protected: 111 protected:
110 void RunOnWorkerThreadTask(const base::Closure& task, 112 void RunOnWorkerThreadTask(const base::Closure& task,
111 base::WaitableEvent* completion) { 113 base::WaitableEvent* completion) {
112 task.Run(); 114 task.Run();
113 completion->Signal(); 115 completion->Signal();
114 } 116 }
115 117
116 std::unique_ptr<WebThreadImplForWorkerScheduler> thread_; 118 std::unique_ptr<WebThreadImplForWorkerScheduler> thread_;
117 119
118 DISALLOW_COPY_AND_ASSIGN(WebThreadImplForWorkerSchedulerTest); 120 DISALLOW_COPY_AND_ASSIGN(WebThreadImplForWorkerSchedulerTest);
119 }; 121 };
120 122
121 TEST_F(WebThreadImplForWorkerSchedulerTest, TestDefaultTask) { 123 TEST_F(WebThreadImplForWorkerSchedulerTest, TestDefaultTask) {
122 std::unique_ptr<MockTask> task(new MockTask()); 124 std::unique_ptr<MockTask> task(new MockTask());
123 base::WaitableEvent completion(false, false); 125 base::WaitableEvent completion(
126 base::WaitableEvent::ResetPolicy::AUTOMATIC,
127 base::WaitableEvent::InitialState::NOT_SIGNALED);
124 128
125 EXPECT_CALL(*task, run()); 129 EXPECT_CALL(*task, run());
126 ON_CALL(*task, run()) 130 ON_CALL(*task, run())
127 .WillByDefault(Invoke([&completion]() { completion.Signal(); })); 131 .WillByDefault(Invoke([&completion]() { completion.Signal(); }));
128 132
129 thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), 133 thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(),
130 task.release()); 134 task.release());
131 completion.Wait(); 135 completion.Wait();
132 } 136 }
133 137
134 TEST_F(WebThreadImplForWorkerSchedulerTest, 138 TEST_F(WebThreadImplForWorkerSchedulerTest,
135 TestTaskExecutedBeforeThreadDeletion) { 139 TestTaskExecutedBeforeThreadDeletion) {
136 std::unique_ptr<MockTask> task(new MockTask()); 140 std::unique_ptr<MockTask> task(new MockTask());
137 base::WaitableEvent completion(false, false); 141 base::WaitableEvent completion(
142 base::WaitableEvent::ResetPolicy::AUTOMATIC,
143 base::WaitableEvent::InitialState::NOT_SIGNALED);
138 144
139 EXPECT_CALL(*task, run()); 145 EXPECT_CALL(*task, run());
140 ON_CALL(*task, run()) 146 ON_CALL(*task, run())
141 .WillByDefault(Invoke([&completion]() { completion.Signal(); })); 147 .WillByDefault(Invoke([&completion]() { completion.Signal(); }));
142 148
143 thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), 149 thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(),
144 task.release()); 150 task.release());
145 thread_.reset(); 151 thread_.reset();
146 } 152 }
147 153
148 TEST_F(WebThreadImplForWorkerSchedulerTest, TestIdleTask) { 154 TEST_F(WebThreadImplForWorkerSchedulerTest, TestIdleTask) {
149 std::unique_ptr<MockIdleTask> task(new MockIdleTask()); 155 std::unique_ptr<MockIdleTask> task(new MockIdleTask());
150 base::WaitableEvent completion(false, false); 156 base::WaitableEvent completion(
157 base::WaitableEvent::ResetPolicy::AUTOMATIC,
158 base::WaitableEvent::InitialState::NOT_SIGNALED);
151 159
152 EXPECT_CALL(*task, run(_)); 160 EXPECT_CALL(*task, run(_));
153 ON_CALL(*task, run(_)) 161 ON_CALL(*task, run(_))
154 .WillByDefault(Invoke([&completion](double) { completion.Signal(); })); 162 .WillByDefault(Invoke([&completion](double) { completion.Signal(); }));
155 163
156 thread_->postIdleTask(blink::WebTraceLocation(), task.release()); 164 thread_->postIdleTask(blink::WebTraceLocation(), task.release());
157 // We need to post a wakeup task or idle work will never happen. 165 // We need to post a wakeup task or idle work will never happen.
158 thread_->getWebTaskRunner()->postDelayedTask(blink::WebTraceLocation(), 166 thread_->getWebTaskRunner()->postDelayedTask(blink::WebTraceLocation(),
159 new NopTask(), 50ll); 167 new NopTask(), 50ll);
160 168
(...skipping 28 matching lines...) Expand all
189 197
190 RunOnWorkerThread(FROM_HERE, base::Bind(&shutdownOnThread, thread_.get())); 198 RunOnWorkerThread(FROM_HERE, base::Bind(&shutdownOnThread, thread_.get()));
191 thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(), 199 thread_->getWebTaskRunner()->postTask(blink::WebTraceLocation(),
192 task.release()); 200 task.release());
193 thread_->getWebTaskRunner()->postDelayedTask(blink::WebTraceLocation(), 201 thread_->getWebTaskRunner()->postDelayedTask(blink::WebTraceLocation(),
194 task.release(), 50ll); 202 task.release(), 50ll);
195 thread_.reset(); 203 thread_.reset();
196 } 204 }
197 205
198 } // namespace scheduler 206 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698