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

Side by Side Diff: third_party/WebKit/Source/modules/fetch/CompositeDataConsumerHandleTest.cpp

Issue 2177243002: Use per-frame TaskRunner instead of thread's default in DataConsumerHandle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@data_consumer_handle_unique_ptr
Patch Set: update Created 4 years, 4 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 "modules/fetch/CompositeDataConsumerHandle.h" 5 #include "modules/fetch/CompositeDataConsumerHandle.h"
6 6
7 #include "modules/fetch/DataConsumerHandleTestUtil.h" 7 #include "modules/fetch/DataConsumerHandleTestUtil.h"
8 #include "platform/CrossThreadFunctional.h" 8 #include "platform/CrossThreadFunctional.h"
9 #include "platform/WaitableEvent.h" 9 #include "platform/WaitableEvent.h"
10 #include "platform/heap/Handle.h" 10 #include "platform/heap/Handle.h"
(...skipping 28 matching lines...) Expand all
39 using Flags = WebDataConsumerHandle::Flags; 39 using Flags = WebDataConsumerHandle::Flags;
40 MOCK_METHOD4(read, Result(void*, size_t, Flags, size_t*)); 40 MOCK_METHOD4(read, Result(void*, size_t, Flags, size_t*));
41 MOCK_METHOD3(beginRead, Result(const void**, Flags, size_t*)); 41 MOCK_METHOD3(beginRead, Result(const void**, Flags, size_t*));
42 MOCK_METHOD1(endRead, Result(size_t)); 42 MOCK_METHOD1(endRead, Result(size_t));
43 }; 43 };
44 44
45 class MockHandle : public WebDataConsumerHandle { 45 class MockHandle : public WebDataConsumerHandle {
46 public: 46 public:
47 static std::unique_ptr<StrictMock<MockHandle>> create() { return wrapUnique( new StrictMock<MockHandle>); } 47 static std::unique_ptr<StrictMock<MockHandle>> create() { return wrapUnique( new StrictMock<MockHandle>); }
48 48
49 MOCK_METHOD1(obtainReader, std::unique_ptr<Reader>(Client*)); 49 MOCK_METHOD1(obtainReaderMock, std::unique_ptr<Reader>(Client*));
50 std::unique_ptr<Reader> obtainReader(Client* client, std::unique_ptr<WebTask Runner>) override
51 {
52 return obtainReaderMock(client);
53 }
50 54
51 private: 55 private:
52 const char* debugName() const override { return "MockHandle in CompositeData ConsumerHandleTest"; } 56 const char* debugName() const override { return "MockHandle in CompositeData ConsumerHandleTest"; }
53 }; 57 };
54 58
55 class ThreadingRegistrationTest : public DataConsumerHandleTestUtil::ThreadingTe stBase { 59 class ThreadingRegistrationTest : public DataConsumerHandleTestUtil::ThreadingTe stBase {
56 public: 60 public:
57 using Self = ThreadingRegistrationTest; 61 using Self = ThreadingRegistrationTest;
58 static PassRefPtr<Self> create() { return adoptRef(new Self); } 62 static PassRefPtr<Self> create() { return adoptRef(new Self); }
59 63
60 void run() 64 void run()
61 { 65 {
62 ThreadHolder holder(this); 66 ThreadHolder holder(this);
63 m_waitableEvent = wrapUnique(new WaitableEvent()); 67 m_waitableEvent = wrapUnique(new WaitableEvent());
64 68
65 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, crossThreadBind(&Self:: createHandle, wrapPassRefPtr(this))); 69 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, crossThreadBind(&Self:: createHandle, wrapPassRefPtr(this)));
66 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, crossThreadBind(&Self::o btainReader, wrapPassRefPtr(this))); 70 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, crossThreadBind(&Self::o btainReader, wrapPassRefPtr(this)));
67 } 71 }
68 72
69 private: 73 private:
70 ThreadingRegistrationTest() = default; 74 ThreadingRegistrationTest() = default;
71 75
72 void createHandle() 76 void createHandle()
73 { 77 {
74 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater); 78 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater);
75 m_waitableEvent->signal(); 79 m_waitableEvent->signal();
76 } 80 }
77 void obtainReader() 81 void obtainReader()
78 { 82 {
79 m_reader = m_handle->obtainReader(&m_client); 83 m_reader = m_handle->obtainReader(&m_client, m_context->getReadingThread TaskRunner()->clone());
80 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this))); 84 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this)));
81 } 85 }
82 void update() 86 void update()
83 { 87 {
84 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 88 m_updater->update(DataConsumerHandle::create("handle2", m_context));
85 m_updater.clear(); 89 m_updater.clear();
86 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this))); 90 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this)));
87 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDo ne, wrapPassRefPtr(this))); 91 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDo ne, wrapPassRefPtr(this)));
88 } 92 }
89 93
(...skipping 19 matching lines...) Expand all
109 ThreadingRegistrationDeleteHandleTest() = default; 113 ThreadingRegistrationDeleteHandleTest() = default;
110 114
111 void createHandle() 115 void createHandle()
112 { 116 {
113 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater); 117 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater);
114 m_waitableEvent->signal(); 118 m_waitableEvent->signal();
115 } 119 }
116 120
117 void obtainReader() 121 void obtainReader()
118 { 122 {
119 m_reader = m_handle->obtainReader(&m_client); 123 m_reader = m_handle->obtainReader(&m_client, m_context->getReadingThread TaskRunner()->clone());
120 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this))); 124 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this)));
121 } 125 }
122 void update() 126 void update()
123 { 127 {
124 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 128 m_updater->update(DataConsumerHandle::create("handle2", m_context));
125 m_updater.clear(); 129 m_updater.clear();
126 m_handle = nullptr; 130 m_handle = nullptr;
127 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this))); 131 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this)));
128 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDo ne, wrapPassRefPtr(this))); 132 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDo ne, wrapPassRefPtr(this)));
129 } 133 }
(...skipping 20 matching lines...) Expand all
150 ThreadingRegistrationDeleteReaderTest() = default; 154 ThreadingRegistrationDeleteReaderTest() = default;
151 155
152 void createHandle() 156 void createHandle()
153 { 157 {
154 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater); 158 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater);
155 m_waitableEvent->signal(); 159 m_waitableEvent->signal();
156 } 160 }
157 161
158 void obtainReader() 162 void obtainReader()
159 { 163 {
160 m_reader = m_handle->obtainReader(&m_client); 164 m_reader = m_handle->obtainReader(&m_client, m_context->getReadingThread TaskRunner()->clone());
161 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this))); 165 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this)));
162 } 166 }
163 void update() 167 void update()
164 { 168 {
165 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this))); 169 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this)));
166 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 170 m_updater->update(DataConsumerHandle::create("handle2", m_context));
167 m_updater.clear(); 171 m_updater.clear();
168 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this))); 172 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this)));
169 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDo ne, wrapPassRefPtr(this))); 173 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDo ne, wrapPassRefPtr(this)));
170 } 174 }
(...skipping 21 matching lines...) Expand all
192 ThreadingUpdatingReaderWhileUpdatingTest() = default; 196 ThreadingUpdatingReaderWhileUpdatingTest() = default;
193 197
194 void createHandle() 198 void createHandle()
195 { 199 {
196 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater); 200 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater);
197 m_waitableEvent->signal(); 201 m_waitableEvent->signal();
198 } 202 }
199 203
200 void obtainReader() 204 void obtainReader()
201 { 205 {
202 m_reader = m_handle->obtainReader(&m_client); 206 m_reader = m_handle->obtainReader(&m_client, m_context->getReadingThread TaskRunner()->clone());
203 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this))); 207 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this)));
204 m_updateEvent->wait(); 208 m_updateEvent->wait();
205 } 209 }
206 210
207 void update() 211 void update()
208 { 212 {
209 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::reobtain Reader, wrapPassRefPtr(this))); 213 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::reobtain Reader, wrapPassRefPtr(this)));
210 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 214 m_updater->update(DataConsumerHandle::create("handle2", m_context));
211 m_updater.clear(); 215 m_updater.clear();
212 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this))); 216 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetRea der, wrapPassRefPtr(this)));
213 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDo ne, wrapPassRefPtr(this))); 217 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDo ne, wrapPassRefPtr(this)));
214 m_updateEvent->signal(); 218 m_updateEvent->signal();
215 } 219 }
216 220
217 void reobtainReader() 221 void reobtainReader()
218 { 222 {
219 m_reader = nullptr; 223 m_reader = nullptr;
220 m_reader = m_handle->obtainReader(&m_client); 224 m_reader = m_handle->obtainReader(&m_client, m_context->getReadingThread TaskRunner()->clone());
221 } 225 }
222 226
223 std::unique_ptr<WebDataConsumerHandle> m_handle; 227 std::unique_ptr<WebDataConsumerHandle> m_handle;
224 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater; 228 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater;
225 std::unique_ptr<WaitableEvent> m_updateEvent; 229 std::unique_ptr<WaitableEvent> m_updateEvent;
226 }; 230 };
227 231
228 class ThreadingRegistrationUpdateTwiceAtOneTimeTest : public DataConsumerHandleT estUtil::ThreadingTestBase { 232 class ThreadingRegistrationUpdateTwiceAtOneTimeTest : public DataConsumerHandleT estUtil::ThreadingTestBase {
229 public: 233 public:
230 using Self = ThreadingRegistrationUpdateTwiceAtOneTimeTest; 234 using Self = ThreadingRegistrationUpdateTwiceAtOneTimeTest;
(...skipping 13 matching lines...) Expand all
244 ThreadingRegistrationUpdateTwiceAtOneTimeTest() = default; 248 ThreadingRegistrationUpdateTwiceAtOneTimeTest() = default;
245 249
246 void createHandle() 250 void createHandle()
247 { 251 {
248 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater); 252 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater);
249 m_waitableEvent->signal(); 253 m_waitableEvent->signal();
250 } 254 }
251 255
252 void obtainReader() 256 void obtainReader()
253 { 257 {
254 m_reader = m_handle->obtainReader(&m_client); 258 m_reader = m_handle->obtainReader(&m_client, m_context->getReadingThread TaskRunner()->clone());
255 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this))); 259 postTaskToUpdatingThread(BLINK_FROM_HERE, crossThreadBind(&Self::update, wrapPassRefPtr(this)));
256 // Stalls this thread while updating handles. 260 // Stalls this thread while updating handles.
257 m_updateEvent->wait(); 261 m_updateEvent->wait();
258 } 262 }
259 void update() 263 void update()
260 { 264 {
261 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 265 m_updater->update(DataConsumerHandle::create("handle2", m_context));
262 m_updater->update(DataConsumerHandle::create("handle3", m_context)); 266 m_updater->update(DataConsumerHandle::create("handle3", m_context));
263 m_updateEvent->signal(); 267 m_updateEvent->signal();
264 m_updater.clear(); 268 m_updater.clear();
(...skipping 15 matching lines...) Expand all
280 284
281 std::unique_ptr<MockHandle> handle1 = MockHandle::create(); 285 std::unique_ptr<MockHandle> handle1 = MockHandle::create();
282 std::unique_ptr<MockHandle> handle2 = MockHandle::create(); 286 std::unique_ptr<MockHandle> handle2 = MockHandle::create();
283 287
284 // They will be adopted by |obtainReader|. 288 // They will be adopted by |obtainReader|.
285 MockReader* reader1 = MockReader::create().release(); 289 MockReader* reader1 = MockReader::create().release();
286 MockReader* reader2 = MockReader::create().release(); 290 MockReader* reader2 = MockReader::create().release();
287 291
288 InSequence s; 292 InSequence s;
289 EXPECT_CALL(checkpoint, Call(0)); 293 EXPECT_CALL(checkpoint, Call(0));
290 EXPECT_CALL(*handle1, obtainReader(&client)).WillOnce(Return(ByMove(WTF::wra pUnique(reader1)))); 294 EXPECT_CALL(*handle1, obtainReaderMock(&client)).WillOnce(Return(ByMove(WTF: :wrapUnique(reader1))));
291 EXPECT_CALL(checkpoint, Call(1)); 295 EXPECT_CALL(checkpoint, Call(1));
292 EXPECT_CALL(*reader1, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R eturn(kOk)); 296 EXPECT_CALL(*reader1, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R eturn(kOk));
293 EXPECT_CALL(checkpoint, Call(2)); 297 EXPECT_CALL(checkpoint, Call(2));
294 EXPECT_CALL(*handle2, obtainReader(&client)).WillOnce(Return(ByMove(WTF::wra pUnique(reader2)))); 298 EXPECT_CALL(*handle2, obtainReaderMock(&client)).WillOnce(Return(ByMove(WTF: :wrapUnique(reader2))));
295 EXPECT_CALL(checkpoint, Call(3)); 299 EXPECT_CALL(checkpoint, Call(3));
296 EXPECT_CALL(*reader2, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R eturn(kOk)); 300 EXPECT_CALL(*reader2, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R eturn(kOk));
297 EXPECT_CALL(checkpoint, Call(4)); 301 EXPECT_CALL(checkpoint, Call(4));
298 302
299 CompositeDataConsumerHandle::Updater* updater = nullptr; 303 CompositeDataConsumerHandle::Updater* updater = nullptr;
300 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater); 304 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater);
301 checkpoint.Call(0); 305 checkpoint.Call(0);
302 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (&client); 306 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (&client, getCurrentTaskRunner());
303 checkpoint.Call(1); 307 checkpoint.Call(1);
304 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size)); 308 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size));
305 checkpoint.Call(2); 309 checkpoint.Call(2);
306 updater->update(std::move(handle2)); 310 updater->update(std::move(handle2));
307 checkpoint.Call(3); 311 checkpoint.Call(3);
308 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size)); 312 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size));
309 checkpoint.Call(4); 313 checkpoint.Call(4);
310 } 314 }
311 315
312 TEST(CompositeDataConsumerHandleTest, TwoPhaseRead) 316 TEST(CompositeDataConsumerHandleTest, TwoPhaseRead)
313 { 317 {
314 const void* p = nullptr; 318 const void* p = nullptr;
315 size_t size = 0; 319 size_t size = 0;
316 Checkpoint checkpoint; 320 Checkpoint checkpoint;
317 321
318 std::unique_ptr<MockHandle> handle1 = MockHandle::create(); 322 std::unique_ptr<MockHandle> handle1 = MockHandle::create();
319 std::unique_ptr<MockHandle> handle2 = MockHandle::create(); 323 std::unique_ptr<MockHandle> handle2 = MockHandle::create();
320 324
321 // They are adopted by |obtainReader|. 325 // They are adopted by |obtainReader|.
322 MockReader* reader1 = MockReader::create().release(); 326 MockReader* reader1 = MockReader::create().release();
323 MockReader* reader2 = MockReader::create().release(); 327 MockReader* reader2 = MockReader::create().release();
324 328
325 InSequence s; 329 InSequence s;
326 EXPECT_CALL(checkpoint, Call(0)); 330 EXPECT_CALL(checkpoint, Call(0));
327 EXPECT_CALL(*handle1, obtainReader(nullptr)).WillOnce(Return(ByMove(WTF::wra pUnique(reader1)))); 331 EXPECT_CALL(*handle1, obtainReaderMock(nullptr)).WillOnce(Return(ByMove(WTF: :wrapUnique(reader1))));
328 EXPECT_CALL(checkpoint, Call(1)); 332 EXPECT_CALL(checkpoint, Call(1));
329 EXPECT_CALL(*reader1, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); 333 EXPECT_CALL(*reader1, beginRead(&p, kNone, &size)).WillOnce(Return(kOk));
330 EXPECT_CALL(checkpoint, Call(2)); 334 EXPECT_CALL(checkpoint, Call(2));
331 EXPECT_CALL(*reader1, endRead(0)).WillOnce(Return(kOk)); 335 EXPECT_CALL(*reader1, endRead(0)).WillOnce(Return(kOk));
332 EXPECT_CALL(checkpoint, Call(3)); 336 EXPECT_CALL(checkpoint, Call(3));
333 EXPECT_CALL(*handle2, obtainReader(nullptr)).WillOnce(Return(ByMove(WTF::wra pUnique(reader2)))); 337 EXPECT_CALL(*handle2, obtainReaderMock(nullptr)).WillOnce(Return(ByMove(WTF: :wrapUnique(reader2))));
334 EXPECT_CALL(checkpoint, Call(4)); 338 EXPECT_CALL(checkpoint, Call(4));
335 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); 339 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kOk));
336 EXPECT_CALL(checkpoint, Call(5)); 340 EXPECT_CALL(checkpoint, Call(5));
337 EXPECT_CALL(*reader2, endRead(0)).WillOnce(Return(kOk)); 341 EXPECT_CALL(*reader2, endRead(0)).WillOnce(Return(kOk));
338 EXPECT_CALL(checkpoint, Call(6)); 342 EXPECT_CALL(checkpoint, Call(6));
339 343
340 CompositeDataConsumerHandle::Updater* updater = nullptr; 344 CompositeDataConsumerHandle::Updater* updater = nullptr;
341 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater); 345 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater);
342 checkpoint.Call(0); 346 checkpoint.Call(0);
343 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (nullptr); 347 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (nullptr, getCurrentTaskRunner());
344 checkpoint.Call(1); 348 checkpoint.Call(1);
345 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); 349 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size));
346 checkpoint.Call(2); 350 checkpoint.Call(2);
347 EXPECT_EQ(kOk, reader->endRead(0)); 351 EXPECT_EQ(kOk, reader->endRead(0));
348 checkpoint.Call(3); 352 checkpoint.Call(3);
349 updater->update(std::move(handle2)); 353 updater->update(std::move(handle2));
350 checkpoint.Call(4); 354 checkpoint.Call(4);
351 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); 355 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size));
352 checkpoint.Call(5); 356 checkpoint.Call(5);
353 EXPECT_EQ(kOk, reader->endRead(0)); 357 EXPECT_EQ(kOk, reader->endRead(0));
(...skipping 10 matching lines...) Expand all
364 std::unique_ptr<MockHandle> handle2 = MockHandle::create(); 368 std::unique_ptr<MockHandle> handle2 = MockHandle::create();
365 std::unique_ptr<MockHandle> handle3 = MockHandle::create(); 369 std::unique_ptr<MockHandle> handle3 = MockHandle::create();
366 370
367 // They are adopted by |obtainReader|. 371 // They are adopted by |obtainReader|.
368 MockReader* reader1 = MockReader::create().release(); 372 MockReader* reader1 = MockReader::create().release();
369 MockReader* reader2 = MockReader::create().release(); 373 MockReader* reader2 = MockReader::create().release();
370 MockReader* reader3 = MockReader::create().release(); 374 MockReader* reader3 = MockReader::create().release();
371 375
372 InSequence s; 376 InSequence s;
373 EXPECT_CALL(checkpoint, Call(0)); 377 EXPECT_CALL(checkpoint, Call(0));
374 EXPECT_CALL(*handle1, obtainReader(nullptr)).WillOnce(Return(ByMove(WTF::wra pUnique(reader1)))); 378 EXPECT_CALL(*handle1, obtainReaderMock(nullptr)).WillOnce(Return(ByMove(WTF: :wrapUnique(reader1))));
375 EXPECT_CALL(checkpoint, Call(1)); 379 EXPECT_CALL(checkpoint, Call(1));
376 EXPECT_CALL(*reader1, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); 380 EXPECT_CALL(*reader1, beginRead(&p, kNone, &size)).WillOnce(Return(kOk));
377 EXPECT_CALL(checkpoint, Call(2)); 381 EXPECT_CALL(checkpoint, Call(2));
378 EXPECT_CALL(checkpoint, Call(3)); 382 EXPECT_CALL(checkpoint, Call(3));
379 EXPECT_CALL(*reader1, endRead(0)).WillOnce(Return(kOk)); 383 EXPECT_CALL(*reader1, endRead(0)).WillOnce(Return(kOk));
380 EXPECT_CALL(*handle2, obtainReader(nullptr)).WillOnce(Return(ByMove(WTF::wra pUnique(reader2)))); 384 EXPECT_CALL(*handle2, obtainReaderMock(nullptr)).WillOnce(Return(ByMove(WTF: :wrapUnique(reader2))));
381 EXPECT_CALL(checkpoint, Call(4)); 385 EXPECT_CALL(checkpoint, Call(4));
382 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kShouldWa it)); 386 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kShouldWa it));
383 EXPECT_CALL(checkpoint, Call(5)); 387 EXPECT_CALL(checkpoint, Call(5));
384 EXPECT_CALL(*handle3, obtainReader(nullptr)).WillOnce(Return(ByMove(WTF::wra pUnique(reader3)))); 388 EXPECT_CALL(*handle3, obtainReaderMock(nullptr)).WillOnce(Return(ByMove(WTF: :wrapUnique(reader3))));
385 EXPECT_CALL(checkpoint, Call(6)); 389 EXPECT_CALL(checkpoint, Call(6));
386 EXPECT_CALL(*reader3, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); 390 EXPECT_CALL(*reader3, beginRead(&p, kNone, &size)).WillOnce(Return(kOk));
387 EXPECT_CALL(checkpoint, Call(7)); 391 EXPECT_CALL(checkpoint, Call(7));
388 EXPECT_CALL(*reader3, endRead(0)).WillOnce(Return(kOk)); 392 EXPECT_CALL(*reader3, endRead(0)).WillOnce(Return(kOk));
389 EXPECT_CALL(checkpoint, Call(8)); 393 EXPECT_CALL(checkpoint, Call(8));
390 394
391 CompositeDataConsumerHandle::Updater* updater = nullptr; 395 CompositeDataConsumerHandle::Updater* updater = nullptr;
392 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater); 396 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater);
393 checkpoint.Call(0); 397 checkpoint.Call(0);
394 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (nullptr); 398 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (nullptr, getCurrentTaskRunner());
395 checkpoint.Call(1); 399 checkpoint.Call(1);
396 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); 400 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size));
397 checkpoint.Call(2); 401 checkpoint.Call(2);
398 updater->update(std::move(handle2)); 402 updater->update(std::move(handle2));
399 checkpoint.Call(3); 403 checkpoint.Call(3);
400 EXPECT_EQ(kOk, reader->endRead(0)); 404 EXPECT_EQ(kOk, reader->endRead(0));
401 checkpoint.Call(4); 405 checkpoint.Call(4);
402 EXPECT_EQ(kShouldWait, reader->beginRead(&p, kNone, &size)); 406 EXPECT_EQ(kShouldWait, reader->beginRead(&p, kNone, &size));
403 checkpoint.Call(5); 407 checkpoint.Call(5);
404 updater->update(std::move(handle3)); 408 updater->update(std::move(handle3));
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 { 488 {
485 RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create(); 489 RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create();
486 CompositeDataConsumerHandle::Updater* updater = nullptr; 490 CompositeDataConsumerHandle::Updater* updater = nullptr;
487 // Test this function doesn't crash. 491 // Test this function doesn't crash.
488 test->run(CompositeDataConsumerHandle::create(createDoneDataConsumerHandle() , &updater)); 492 test->run(CompositeDataConsumerHandle::create(createDoneDataConsumerHandle() , &updater));
489 } 493 }
490 494
491 } // namespace 495 } // namespace
492 496
493 } // namespace blink 497 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698