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

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

Issue 2050123002: Remove OwnPtr from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: First attempt to land. 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 "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/ThreadSafeFunctional.h" 8 #include "platform/ThreadSafeFunctional.h"
9 #include "platform/WaitableEvent.h" 9 #include "platform/WaitableEvent.h"
10 #include "platform/heap/Handle.h" 10 #include "platform/heap/Handle.h"
11 #include "public/platform/Platform.h" 11 #include "public/platform/Platform.h"
12 #include "public/platform/WebThread.h" 12 #include "public/platform/WebThread.h"
13 #include "public/platform/WebTraceLocation.h" 13 #include "public/platform/WebTraceLocation.h"
14 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "wtf/Locker.h" 16 #include "wtf/Locker.h"
17 #include "wtf/PtrUtil.h"
18 #include <memory>
17 19
18 namespace blink { 20 namespace blink {
19 21
20 namespace { 22 namespace {
21 23
22 using ::testing::InSequence; 24 using ::testing::InSequence;
23 using ::testing::Return; 25 using ::testing::Return;
24 using ::testing::StrictMock; 26 using ::testing::StrictMock;
25 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>; 27 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>;
26 28
27 const WebDataConsumerHandle::Result kShouldWait = WebDataConsumerHandle::ShouldW ait; 29 const WebDataConsumerHandle::Result kShouldWait = WebDataConsumerHandle::ShouldW ait;
28 const WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok; 30 const WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok;
29 const WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone; 31 const WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone;
30 32
31 class MockReader : public WebDataConsumerHandle::Reader { 33 class MockReader : public WebDataConsumerHandle::Reader {
32 public: 34 public:
33 static PassOwnPtr<StrictMock<MockReader>> create() { return adoptPtr(new Str ictMock<MockReader>); } 35 static std::unique_ptr<StrictMock<MockReader>> create() { return wrapUnique( new StrictMock<MockReader>); }
34 36
35 using Result = WebDataConsumerHandle::Result; 37 using Result = WebDataConsumerHandle::Result;
36 using Flags = WebDataConsumerHandle::Flags; 38 using Flags = WebDataConsumerHandle::Flags;
37 MOCK_METHOD4(read, Result(void*, size_t, Flags, size_t*)); 39 MOCK_METHOD4(read, Result(void*, size_t, Flags, size_t*));
38 MOCK_METHOD3(beginRead, Result(const void**, Flags, size_t*)); 40 MOCK_METHOD3(beginRead, Result(const void**, Flags, size_t*));
39 MOCK_METHOD1(endRead, Result(size_t)); 41 MOCK_METHOD1(endRead, Result(size_t));
40 }; 42 };
41 43
42 class MockHandle : public WebDataConsumerHandle { 44 class MockHandle : public WebDataConsumerHandle {
43 public: 45 public:
44 static PassOwnPtr<StrictMock<MockHandle>> create() { return adoptPtr(new Str ictMock<MockHandle>); } 46 static std::unique_ptr<StrictMock<MockHandle>> create() { return wrapUnique( new StrictMock<MockHandle>); }
45 47
46 MOCK_METHOD1(obtainReaderInternal, Reader*(Client*)); 48 MOCK_METHOD1(obtainReaderInternal, Reader*(Client*));
47 49
48 private: 50 private:
49 const char* debugName() const override { return "MockHandle in CompositeData ConsumerHandleTest"; } 51 const char* debugName() const override { return "MockHandle in CompositeData ConsumerHandleTest"; }
50 }; 52 };
51 53
52 class ThreadingRegistrationTest : public DataConsumerHandleTestUtil::ThreadingTe stBase { 54 class ThreadingRegistrationTest : public DataConsumerHandleTestUtil::ThreadingTe stBase {
53 public: 55 public:
54 using Self = ThreadingRegistrationTest; 56 using Self = ThreadingRegistrationTest;
55 static PassRefPtr<Self> create() { return adoptRef(new Self); } 57 static PassRefPtr<Self> create() { return adoptRef(new Self); }
56 58
57 void run() 59 void run()
58 { 60 {
59 ThreadHolder holder(this); 61 ThreadHolder holder(this);
60 m_waitableEvent = adoptPtr(new WaitableEvent()); 62 m_waitableEvent = wrapUnique(new WaitableEvent());
61 63
62 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this)); 64 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this));
63 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this)); 65 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this));
64 } 66 }
65 67
66 private: 68 private:
67 ThreadingRegistrationTest() = default; 69 ThreadingRegistrationTest() = default;
68 70
69 void createHandle() 71 void createHandle()
70 { 72 {
71 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater); 73 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater);
72 m_waitableEvent->signal(); 74 m_waitableEvent->signal();
73 } 75 }
74 void obtainReader() 76 void obtainReader()
75 { 77 {
76 m_reader = m_handle->obtainReader(&m_client); 78 m_reader = m_handle->obtainReader(&m_client);
77 postTaskToUpdatingThread(BLINK_FROM_HERE, threadSafeBind(&Self::update, this)); 79 postTaskToUpdatingThread(BLINK_FROM_HERE, threadSafeBind(&Self::update, this));
78 } 80 }
79 void update() 81 void update()
80 { 82 {
81 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 83 m_updater->update(DataConsumerHandle::create("handle2", m_context));
82 m_updater.clear(); 84 m_updater.clear();
83 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this)); 85 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this));
84 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this)); 86 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this));
85 } 87 }
86 88
87 OwnPtr<WebDataConsumerHandle> m_handle; 89 std::unique_ptr<WebDataConsumerHandle> m_handle;
88 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater; 90 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater;
89 }; 91 };
90 92
91 class ThreadingRegistrationDeleteHandleTest : public DataConsumerHandleTestUtil: :ThreadingTestBase { 93 class ThreadingRegistrationDeleteHandleTest : public DataConsumerHandleTestUtil: :ThreadingTestBase {
92 public: 94 public:
93 using Self = ThreadingRegistrationDeleteHandleTest; 95 using Self = ThreadingRegistrationDeleteHandleTest;
94 static PassRefPtr<Self> create() { return adoptRef(new Self); } 96 static PassRefPtr<Self> create() { return adoptRef(new Self); }
95 97
96 void run() 98 void run()
97 { 99 {
98 ThreadHolder holder(this); 100 ThreadHolder holder(this);
99 m_waitableEvent = adoptPtr(new WaitableEvent()); 101 m_waitableEvent = wrapUnique(new WaitableEvent());
100 102
101 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this)); 103 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this));
102 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this)); 104 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this));
103 } 105 }
104 106
105 private: 107 private:
106 ThreadingRegistrationDeleteHandleTest() = default; 108 ThreadingRegistrationDeleteHandleTest() = default;
107 109
108 void createHandle() 110 void createHandle()
109 { 111 {
110 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater); 112 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater);
111 m_waitableEvent->signal(); 113 m_waitableEvent->signal();
112 } 114 }
113 115
114 void obtainReader() 116 void obtainReader()
115 { 117 {
116 m_reader = m_handle->obtainReader(&m_client); 118 m_reader = m_handle->obtainReader(&m_client);
117 postTaskToUpdatingThread(BLINK_FROM_HERE, threadSafeBind(&Self::update, this)); 119 postTaskToUpdatingThread(BLINK_FROM_HERE, threadSafeBind(&Self::update, this));
118 } 120 }
119 void update() 121 void update()
120 { 122 {
121 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 123 m_updater->update(DataConsumerHandle::create("handle2", m_context));
122 m_updater.clear(); 124 m_updater.clear();
123 m_handle = nullptr; 125 m_handle = nullptr;
124 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this)); 126 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this));
125 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this)); 127 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this));
126 } 128 }
127 129
128 OwnPtr<WebDataConsumerHandle> m_handle; 130 std::unique_ptr<WebDataConsumerHandle> m_handle;
129 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater; 131 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater;
130 }; 132 };
131 133
132 class ThreadingRegistrationDeleteReaderTest : public DataConsumerHandleTestUtil: :ThreadingTestBase { 134 class ThreadingRegistrationDeleteReaderTest : public DataConsumerHandleTestUtil: :ThreadingTestBase {
133 public: 135 public:
134 using Self = ThreadingRegistrationDeleteReaderTest; 136 using Self = ThreadingRegistrationDeleteReaderTest;
135 static PassRefPtr<Self> create() { return adoptRef(new Self); } 137 static PassRefPtr<Self> create() { return adoptRef(new Self); }
136 138
137 void run() 139 void run()
138 { 140 {
139 ThreadHolder holder(this); 141 ThreadHolder holder(this);
140 m_waitableEvent = adoptPtr(new WaitableEvent()); 142 m_waitableEvent = wrapUnique(new WaitableEvent());
141 143
142 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this)); 144 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this));
143 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this)); 145 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this));
144 } 146 }
145 147
146 private: 148 private:
147 ThreadingRegistrationDeleteReaderTest() = default; 149 ThreadingRegistrationDeleteReaderTest() = default;
148 150
149 void createHandle() 151 void createHandle()
150 { 152 {
151 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater); 153 m_handle = CompositeDataConsumerHandle::create(DataConsumerHandle::creat e("handle1", m_context), &m_updater);
152 m_waitableEvent->signal(); 154 m_waitableEvent->signal();
153 } 155 }
154 156
155 void obtainReader() 157 void obtainReader()
156 { 158 {
157 m_reader = m_handle->obtainReader(&m_client); 159 m_reader = m_handle->obtainReader(&m_client);
158 postTaskToUpdatingThread(BLINK_FROM_HERE, threadSafeBind(&Self::update, this)); 160 postTaskToUpdatingThread(BLINK_FROM_HERE, threadSafeBind(&Self::update, this));
159 } 161 }
160 void update() 162 void update()
161 { 163 {
162 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this)); 164 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this));
163 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 165 m_updater->update(DataConsumerHandle::create("handle2", m_context));
164 m_updater.clear(); 166 m_updater.clear();
165 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this)); 167 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this));
166 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this)); 168 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this));
167 } 169 }
168 170
169 OwnPtr<WebDataConsumerHandle> m_handle; 171 std::unique_ptr<WebDataConsumerHandle> m_handle;
170 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater; 172 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater;
171 }; 173 };
172 174
173 class ThreadingUpdatingReaderWhileUpdatingTest : public DataConsumerHandleTestUt il::ThreadingTestBase { 175 class ThreadingUpdatingReaderWhileUpdatingTest : public DataConsumerHandleTestUt il::ThreadingTestBase {
174 public: 176 public:
175 using Self = ThreadingUpdatingReaderWhileUpdatingTest; 177 using Self = ThreadingUpdatingReaderWhileUpdatingTest;
176 static PassRefPtr<Self> create() { return adoptRef(new Self); } 178 static PassRefPtr<Self> create() { return adoptRef(new Self); }
177 179
178 void run() 180 void run()
179 { 181 {
180 ThreadHolder holder(this); 182 ThreadHolder holder(this);
181 m_waitableEvent = adoptPtr(new WaitableEvent()); 183 m_waitableEvent = wrapUnique(new WaitableEvent());
182 m_updateEvent = adoptPtr(new WaitableEvent()); 184 m_updateEvent = wrapUnique(new WaitableEvent());
183 185
184 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this)); 186 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this));
185 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this)); 187 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this));
186 } 188 }
187 189
188 private: 190 private:
189 ThreadingUpdatingReaderWhileUpdatingTest() = default; 191 ThreadingUpdatingReaderWhileUpdatingTest() = default;
190 192
191 void createHandle() 193 void createHandle()
192 { 194 {
(...skipping 17 matching lines...) Expand all
210 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this)); 212 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this));
211 m_updateEvent->signal(); 213 m_updateEvent->signal();
212 } 214 }
213 215
214 void reobtainReader() 216 void reobtainReader()
215 { 217 {
216 m_reader = nullptr; 218 m_reader = nullptr;
217 m_reader = m_handle->obtainReader(&m_client); 219 m_reader = m_handle->obtainReader(&m_client);
218 } 220 }
219 221
220 OwnPtr<WebDataConsumerHandle> m_handle; 222 std::unique_ptr<WebDataConsumerHandle> m_handle;
221 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater; 223 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater;
222 OwnPtr<WaitableEvent> m_updateEvent; 224 std::unique_ptr<WaitableEvent> m_updateEvent;
223 }; 225 };
224 226
225 class ThreadingRegistrationUpdateTwiceAtOneTimeTest : public DataConsumerHandleT estUtil::ThreadingTestBase { 227 class ThreadingRegistrationUpdateTwiceAtOneTimeTest : public DataConsumerHandleT estUtil::ThreadingTestBase {
226 public: 228 public:
227 using Self = ThreadingRegistrationUpdateTwiceAtOneTimeTest; 229 using Self = ThreadingRegistrationUpdateTwiceAtOneTimeTest;
228 static PassRefPtr<Self> create() { return adoptRef(new Self); } 230 static PassRefPtr<Self> create() { return adoptRef(new Self); }
229 231
230 void run() 232 void run()
231 { 233 {
232 ThreadHolder holder(this); 234 ThreadHolder holder(this);
233 m_waitableEvent = adoptPtr(new WaitableEvent()); 235 m_waitableEvent = wrapUnique(new WaitableEvent());
234 m_updateEvent = adoptPtr(new WaitableEvent()); 236 m_updateEvent = wrapUnique(new WaitableEvent());
235 237
236 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this)); 238 postTaskToUpdatingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::c reateHandle, this));
237 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this)); 239 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self::ob tainReader, this));
238 } 240 }
239 241
240 private: 242 private:
241 ThreadingRegistrationUpdateTwiceAtOneTimeTest() = default; 243 ThreadingRegistrationUpdateTwiceAtOneTimeTest() = default;
242 244
243 void createHandle() 245 void createHandle()
244 { 246 {
(...skipping 11 matching lines...) Expand all
256 void update() 258 void update()
257 { 259 {
258 m_updater->update(DataConsumerHandle::create("handle2", m_context)); 260 m_updater->update(DataConsumerHandle::create("handle2", m_context));
259 m_updater->update(DataConsumerHandle::create("handle3", m_context)); 261 m_updater->update(DataConsumerHandle::create("handle3", m_context));
260 m_updateEvent->signal(); 262 m_updateEvent->signal();
261 m_updater.clear(); 263 m_updater.clear();
262 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this)); 264 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::resetRead er, this));
263 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this)); 265 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signalDon e, this));
264 } 266 }
265 267
266 OwnPtr<WebDataConsumerHandle> m_handle; 268 std::unique_ptr<WebDataConsumerHandle> m_handle;
267 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater; 269 CrossThreadPersistent<CompositeDataConsumerHandle::Updater> m_updater;
268 OwnPtr<WaitableEvent> m_updateEvent; 270 std::unique_ptr<WaitableEvent> m_updateEvent;
269 }; 271 };
270 272
271 TEST(CompositeDataConsumerHandleTest, Read) 273 TEST(CompositeDataConsumerHandleTest, Read)
272 { 274 {
273 char buffer[20]; 275 char buffer[20];
274 size_t size = 0; 276 size_t size = 0;
275 DataConsumerHandleTestUtil::NoopClient client; 277 DataConsumerHandleTestUtil::NoopClient client;
276 Checkpoint checkpoint; 278 Checkpoint checkpoint;
277 279
278 OwnPtr<MockHandle> handle1 = MockHandle::create(); 280 std::unique_ptr<MockHandle> handle1 = MockHandle::create();
279 OwnPtr<MockHandle> handle2 = MockHandle::create(); 281 std::unique_ptr<MockHandle> handle2 = MockHandle::create();
280 OwnPtr<MockReader> reader1 = MockReader::create(); 282 std::unique_ptr<MockReader> reader1 = MockReader::create();
281 OwnPtr<MockReader> reader2 = MockReader::create(); 283 std::unique_ptr<MockReader> reader2 = MockReader::create();
282 284
283 InSequence s; 285 InSequence s;
284 EXPECT_CALL(checkpoint, Call(0)); 286 EXPECT_CALL(checkpoint, Call(0));
285 EXPECT_CALL(*handle1, obtainReaderInternal(&client)).WillOnce(Return(reader1 .get())); 287 EXPECT_CALL(*handle1, obtainReaderInternal(&client)).WillOnce(Return(reader1 .get()));
286 EXPECT_CALL(checkpoint, Call(1)); 288 EXPECT_CALL(checkpoint, Call(1));
287 EXPECT_CALL(*reader1, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R eturn(kOk)); 289 EXPECT_CALL(*reader1, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R eturn(kOk));
288 EXPECT_CALL(checkpoint, Call(2)); 290 EXPECT_CALL(checkpoint, Call(2));
289 EXPECT_CALL(*handle2, obtainReaderInternal(&client)).WillOnce(Return(reader2 .get())); 291 EXPECT_CALL(*handle2, obtainReaderInternal(&client)).WillOnce(Return(reader2 .get()));
290 EXPECT_CALL(checkpoint, Call(3)); 292 EXPECT_CALL(checkpoint, Call(3));
291 EXPECT_CALL(*reader2, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R eturn(kOk)); 293 EXPECT_CALL(*reader2, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R eturn(kOk));
292 EXPECT_CALL(checkpoint, Call(4)); 294 EXPECT_CALL(checkpoint, Call(4));
293 295
294 // They are adopted by |obtainReader|. 296 // They are adopted by |obtainReader|.
295 ASSERT_TRUE(reader1.leakPtr()); 297 ASSERT_TRUE(reader1.release());
296 ASSERT_TRUE(reader2.leakPtr()); 298 ASSERT_TRUE(reader2.release());
297 299
298 CompositeDataConsumerHandle::Updater* updater = nullptr; 300 CompositeDataConsumerHandle::Updater* updater = nullptr;
299 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(s td::move(handle1), &updater); 301 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater);
300 checkpoint.Call(0); 302 checkpoint.Call(0);
301 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(&client) ; 303 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (&client);
302 checkpoint.Call(1); 304 checkpoint.Call(1);
303 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size)); 305 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size));
304 checkpoint.Call(2); 306 checkpoint.Call(2);
305 updater->update(std::move(handle2)); 307 updater->update(std::move(handle2));
306 checkpoint.Call(3); 308 checkpoint.Call(3);
307 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size)); 309 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size));
308 checkpoint.Call(4); 310 checkpoint.Call(4);
309 } 311 }
310 312
311 TEST(CompositeDataConsumerHandleTest, TwoPhaseRead) 313 TEST(CompositeDataConsumerHandleTest, TwoPhaseRead)
312 { 314 {
313 const void* p = nullptr; 315 const void* p = nullptr;
314 size_t size = 0; 316 size_t size = 0;
315 Checkpoint checkpoint; 317 Checkpoint checkpoint;
316 318
317 OwnPtr<MockHandle> handle1 = MockHandle::create(); 319 std::unique_ptr<MockHandle> handle1 = MockHandle::create();
318 OwnPtr<MockHandle> handle2 = MockHandle::create(); 320 std::unique_ptr<MockHandle> handle2 = MockHandle::create();
319 OwnPtr<MockReader> reader1 = MockReader::create(); 321 std::unique_ptr<MockReader> reader1 = MockReader::create();
320 OwnPtr<MockReader> reader2 = MockReader::create(); 322 std::unique_ptr<MockReader> reader2 = MockReader::create();
321 323
322 InSequence s; 324 InSequence s;
323 EXPECT_CALL(checkpoint, Call(0)); 325 EXPECT_CALL(checkpoint, Call(0));
324 EXPECT_CALL(*handle1, obtainReaderInternal(nullptr)).WillOnce(Return(reader1 .get())); 326 EXPECT_CALL(*handle1, obtainReaderInternal(nullptr)).WillOnce(Return(reader1 .get()));
325 EXPECT_CALL(checkpoint, Call(1)); 327 EXPECT_CALL(checkpoint, Call(1));
326 EXPECT_CALL(*reader1, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); 328 EXPECT_CALL(*reader1, beginRead(&p, kNone, &size)).WillOnce(Return(kOk));
327 EXPECT_CALL(checkpoint, Call(2)); 329 EXPECT_CALL(checkpoint, Call(2));
328 EXPECT_CALL(*reader1, endRead(0)).WillOnce(Return(kOk)); 330 EXPECT_CALL(*reader1, endRead(0)).WillOnce(Return(kOk));
329 EXPECT_CALL(checkpoint, Call(3)); 331 EXPECT_CALL(checkpoint, Call(3));
330 EXPECT_CALL(*handle2, obtainReaderInternal(nullptr)).WillOnce(Return(reader2 .get())); 332 EXPECT_CALL(*handle2, obtainReaderInternal(nullptr)).WillOnce(Return(reader2 .get()));
331 EXPECT_CALL(checkpoint, Call(4)); 333 EXPECT_CALL(checkpoint, Call(4));
332 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); 334 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kOk));
333 EXPECT_CALL(checkpoint, Call(5)); 335 EXPECT_CALL(checkpoint, Call(5));
334 EXPECT_CALL(*reader2, endRead(0)).WillOnce(Return(kOk)); 336 EXPECT_CALL(*reader2, endRead(0)).WillOnce(Return(kOk));
335 EXPECT_CALL(checkpoint, Call(6)); 337 EXPECT_CALL(checkpoint, Call(6));
336 338
337 // They are adopted by |obtainReader|. 339 // They are adopted by |obtainReader|.
338 ASSERT_TRUE(reader1.leakPtr()); 340 ASSERT_TRUE(reader1.release());
339 ASSERT_TRUE(reader2.leakPtr()); 341 ASSERT_TRUE(reader2.release());
340 342
341 CompositeDataConsumerHandle::Updater* updater = nullptr; 343 CompositeDataConsumerHandle::Updater* updater = nullptr;
342 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(s td::move(handle1), &updater); 344 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater);
343 checkpoint.Call(0); 345 checkpoint.Call(0);
344 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr) ; 346 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (nullptr);
345 checkpoint.Call(1); 347 checkpoint.Call(1);
346 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); 348 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size));
347 checkpoint.Call(2); 349 checkpoint.Call(2);
348 EXPECT_EQ(kOk, reader->endRead(0)); 350 EXPECT_EQ(kOk, reader->endRead(0));
349 checkpoint.Call(3); 351 checkpoint.Call(3);
350 updater->update(std::move(handle2)); 352 updater->update(std::move(handle2));
351 checkpoint.Call(4); 353 checkpoint.Call(4);
352 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); 354 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size));
353 checkpoint.Call(5); 355 checkpoint.Call(5);
354 EXPECT_EQ(kOk, reader->endRead(0)); 356 EXPECT_EQ(kOk, reader->endRead(0));
355 checkpoint.Call(6); 357 checkpoint.Call(6);
356 } 358 }
357 359
358 TEST(CompositeDataConsumerHandleTest, HangingTwoPhaseRead) 360 TEST(CompositeDataConsumerHandleTest, HangingTwoPhaseRead)
359 { 361 {
360 const void* p = nullptr; 362 const void* p = nullptr;
361 size_t size = 0; 363 size_t size = 0;
362 Checkpoint checkpoint; 364 Checkpoint checkpoint;
363 365
364 OwnPtr<MockHandle> handle1 = MockHandle::create(); 366 std::unique_ptr<MockHandle> handle1 = MockHandle::create();
365 OwnPtr<MockHandle> handle2 = MockHandle::create(); 367 std::unique_ptr<MockHandle> handle2 = MockHandle::create();
366 OwnPtr<MockHandle> handle3 = MockHandle::create(); 368 std::unique_ptr<MockHandle> handle3 = MockHandle::create();
367 OwnPtr<MockReader> reader1 = MockReader::create(); 369 std::unique_ptr<MockReader> reader1 = MockReader::create();
368 OwnPtr<MockReader> reader2 = MockReader::create(); 370 std::unique_ptr<MockReader> reader2 = MockReader::create();
369 OwnPtr<MockReader> reader3 = MockReader::create(); 371 std::unique_ptr<MockReader> reader3 = MockReader::create();
370 372
371 InSequence s; 373 InSequence s;
372 EXPECT_CALL(checkpoint, Call(0)); 374 EXPECT_CALL(checkpoint, Call(0));
373 EXPECT_CALL(*handle1, obtainReaderInternal(nullptr)).WillOnce(Return(reader1 .get())); 375 EXPECT_CALL(*handle1, obtainReaderInternal(nullptr)).WillOnce(Return(reader1 .get()));
374 EXPECT_CALL(checkpoint, Call(1)); 376 EXPECT_CALL(checkpoint, Call(1));
375 EXPECT_CALL(*reader1, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); 377 EXPECT_CALL(*reader1, beginRead(&p, kNone, &size)).WillOnce(Return(kOk));
376 EXPECT_CALL(checkpoint, Call(2)); 378 EXPECT_CALL(checkpoint, Call(2));
377 EXPECT_CALL(checkpoint, Call(3)); 379 EXPECT_CALL(checkpoint, Call(3));
378 EXPECT_CALL(*reader1, endRead(0)).WillOnce(Return(kOk)); 380 EXPECT_CALL(*reader1, endRead(0)).WillOnce(Return(kOk));
379 EXPECT_CALL(*handle2, obtainReaderInternal(nullptr)).WillOnce(Return(reader2 .get())); 381 EXPECT_CALL(*handle2, obtainReaderInternal(nullptr)).WillOnce(Return(reader2 .get()));
380 EXPECT_CALL(checkpoint, Call(4)); 382 EXPECT_CALL(checkpoint, Call(4));
381 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kShouldWa it)); 383 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kShouldWa it));
382 EXPECT_CALL(checkpoint, Call(5)); 384 EXPECT_CALL(checkpoint, Call(5));
383 EXPECT_CALL(*handle3, obtainReaderInternal(nullptr)).WillOnce(Return(reader3 .get())); 385 EXPECT_CALL(*handle3, obtainReaderInternal(nullptr)).WillOnce(Return(reader3 .get()));
384 EXPECT_CALL(checkpoint, Call(6)); 386 EXPECT_CALL(checkpoint, Call(6));
385 EXPECT_CALL(*reader3, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); 387 EXPECT_CALL(*reader3, beginRead(&p, kNone, &size)).WillOnce(Return(kOk));
386 EXPECT_CALL(checkpoint, Call(7)); 388 EXPECT_CALL(checkpoint, Call(7));
387 EXPECT_CALL(*reader3, endRead(0)).WillOnce(Return(kOk)); 389 EXPECT_CALL(*reader3, endRead(0)).WillOnce(Return(kOk));
388 EXPECT_CALL(checkpoint, Call(8)); 390 EXPECT_CALL(checkpoint, Call(8));
389 391
390 // They are adopted by |obtainReader|. 392 // They are adopted by |obtainReader|.
391 ASSERT_TRUE(reader1.leakPtr()); 393 ASSERT_TRUE(reader1.release());
392 ASSERT_TRUE(reader2.leakPtr()); 394 ASSERT_TRUE(reader2.release());
393 ASSERT_TRUE(reader3.leakPtr()); 395 ASSERT_TRUE(reader3.release());
394 396
395 CompositeDataConsumerHandle::Updater* updater = nullptr; 397 CompositeDataConsumerHandle::Updater* updater = nullptr;
396 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(s td::move(handle1), &updater); 398 std::unique_ptr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle: :create(std::move(handle1), &updater);
397 checkpoint.Call(0); 399 checkpoint.Call(0);
398 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr) ; 400 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (nullptr);
399 checkpoint.Call(1); 401 checkpoint.Call(1);
400 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); 402 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size));
401 checkpoint.Call(2); 403 checkpoint.Call(2);
402 updater->update(std::move(handle2)); 404 updater->update(std::move(handle2));
403 checkpoint.Call(3); 405 checkpoint.Call(3);
404 EXPECT_EQ(kOk, reader->endRead(0)); 406 EXPECT_EQ(kOk, reader->endRead(0));
405 checkpoint.Call(4); 407 checkpoint.Call(4);
406 EXPECT_EQ(kShouldWait, reader->beginRead(&p, kNone, &size)); 408 EXPECT_EQ(kShouldWait, reader->beginRead(&p, kNone, &size));
407 checkpoint.Call(5); 409 checkpoint.Call(5);
408 updater->update(std::move(handle3)); 410 updater->update(std::move(handle3));
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 { 490 {
489 RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create(); 491 RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create();
490 CompositeDataConsumerHandle::Updater* updater = nullptr; 492 CompositeDataConsumerHandle::Updater* updater = nullptr;
491 // Test this function doesn't crash. 493 // Test this function doesn't crash.
492 test->run(CompositeDataConsumerHandle::create(createDoneDataConsumerHandle() , &updater)); 494 test->run(CompositeDataConsumerHandle::create(createDoneDataConsumerHandle() , &updater));
493 } 495 }
494 496
495 } // namespace 497 } // namespace
496 498
497 } // namespace blink 499 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698