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

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

Issue 1264453002: Split the constructor of ThreadableLoader into two methods (ctor and start()) (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Added comments Created 4 years, 10 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/FetchBlobDataConsumerHandle.h" 5 #include "modules/fetch/FetchBlobDataConsumerHandle.h"
6 6
7 #include "core/dom/ExecutionContext.h" 7 #include "core/dom/ExecutionContext.h"
8 #include "core/fetch/ResourceLoaderOptions.h" 8 #include "core/fetch/ResourceLoaderOptions.h"
9 #include "core/loader/ThreadableLoader.h" 9 #include "core/loader/ThreadableLoader.h"
10 #include "core/loader/ThreadableLoaderClient.h" 10 #include "core/loader/ThreadableLoaderClient.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 using ::testing::DoAll; 44 using ::testing::DoAll;
45 using ::testing::InSequence; 45 using ::testing::InSequence;
46 using ::testing::Ref; 46 using ::testing::Ref;
47 using ::testing::Return; 47 using ::testing::Return;
48 using ::testing::SaveArg; 48 using ::testing::SaveArg;
49 using ::testing::StrictMock; 49 using ::testing::StrictMock;
50 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>; 50 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>;
51 51
52 class MockLoaderFactory : public FetchBlobDataConsumerHandle::LoaderFactory { 52 class MockLoaderFactory : public FetchBlobDataConsumerHandle::LoaderFactory {
53 public: 53 public:
54 MOCK_METHOD5(create, PassRefPtr<ThreadableLoader>(ExecutionContext&, Threada bleLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&, const ResourceLoaderOptions&)); 54 MOCK_METHOD4(create, PassRefPtr<ThreadableLoader>(ExecutionContext&, Threada bleLoaderClient*, const ThreadableLoaderOptions&, const ResourceLoaderOptions&)) ;
55 }; 55 };
56 56
57 class MockThreadableLoader : public ThreadableLoader { 57 class MockThreadableLoader : public ThreadableLoader {
58 public: 58 public:
59 static PassRefPtr<MockThreadableLoader> create() { return adoptRef(new Stric tMock<MockThreadableLoader>); } 59 static PassRefPtr<MockThreadableLoader> create() { return adoptRef(new Stric tMock<MockThreadableLoader>); }
60 60
61 MOCK_METHOD1(start, void(const ResourceRequest&));
61 MOCK_METHOD1(overrideTimeout, void(unsigned long)); 62 MOCK_METHOD1(overrideTimeout, void(unsigned long));
62 MOCK_METHOD0(cancel, void()); 63 MOCK_METHOD0(cancel, void());
63 64
64 protected: 65 protected:
65 MockThreadableLoader() = default; 66 MockThreadableLoader() = default;
66 }; 67 };
67 68
68 PassRefPtr<BlobDataHandle> createBlobDataHandle(const char* s) 69 PassRefPtr<BlobDataHandle> createBlobDataHandle(const char* s)
69 { 70 {
70 OwnPtr<BlobData> data = BlobData::create(); 71 OwnPtr<BlobData> data = BlobData::create();
(...skipping 30 matching lines...) Expand all
101 Checkpoint checkpoint; 102 Checkpoint checkpoint;
102 103
103 ResourceRequest request; 104 ResourceRequest request;
104 ThreadableLoaderOptions options; 105 ThreadableLoaderOptions options;
105 ResourceLoaderOptions resourceLoaderOptions; 106 ResourceLoaderOptions resourceLoaderOptions;
106 107
107 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create(); 108 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create();
108 109
109 InSequence s; 110 InSequence s;
110 EXPECT_CALL(checkpoint, Call(1)); 111 EXPECT_CALL(checkpoint, Call(1));
111 EXPECT_CALL(*factory, create(Ref(document()), _, _, _, _)).WillOnce(DoAll( 112 EXPECT_CALL(*factory, create(Ref(document()), _, _, _)).WillOnce(DoAll(
112 SaveArg<2>(&request), 113 SaveArg<2>(&options),
113 SaveArg<3>(&options), 114 SaveArg<3>(&resourceLoaderOptions),
114 SaveArg<4>(&resourceLoaderOptions),
115 Return(loader.get()))); 115 Return(loader.get())));
116 EXPECT_CALL(*loader, start(_)).WillOnce(SaveArg<0>(&request));
116 EXPECT_CALL(checkpoint, Call(2)); 117 EXPECT_CALL(checkpoint, Call(2));
117 EXPECT_CALL(*loader, cancel()); 118 EXPECT_CALL(*loader, cancel());
118 119
119 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 120 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
120 OwnPtr<WebDataConsumerHandle> handle 121 OwnPtr<WebDataConsumerHandle> handle
121 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 122 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
122 testing::runPendingTasks(); 123 testing::runPendingTasks();
123 124
124 size_t size = 0; 125 size_t size = 0;
125 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 126 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size);
(...skipping 19 matching lines...) Expand all
145 146
146 TEST_F(FetchBlobDataConsumerHandleTest, CancelLoaderWhenStopped) 147 TEST_F(FetchBlobDataConsumerHandleTest, CancelLoaderWhenStopped)
147 { 148 {
148 auto factory = new StrictMock<MockLoaderFactory>; 149 auto factory = new StrictMock<MockLoaderFactory>;
149 Checkpoint checkpoint; 150 Checkpoint checkpoint;
150 151
151 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create(); 152 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create();
152 153
153 InSequence s; 154 InSequence s;
154 EXPECT_CALL(checkpoint, Call(1)); 155 EXPECT_CALL(checkpoint, Call(1));
155 EXPECT_CALL(*factory, create(Ref(document()), _, _, _, _)).WillOnce(Return(l oader.get())); 156 EXPECT_CALL(*factory, create(Ref(document()), _, _, _)).WillOnce(Return(load er.get()));
157 EXPECT_CALL(*loader, start(_));
156 EXPECT_CALL(checkpoint, Call(2)); 158 EXPECT_CALL(checkpoint, Call(2));
157 EXPECT_CALL(*loader, cancel()); 159 EXPECT_CALL(*loader, cancel());
158 EXPECT_CALL(checkpoint, Call(3)); 160 EXPECT_CALL(checkpoint, Call(3));
159 161
160 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 162 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
161 OwnPtr<WebDataConsumerHandle> handle 163 OwnPtr<WebDataConsumerHandle> handle
162 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 164 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
163 testing::runPendingTasks(); 165 testing::runPendingTasks();
164 166
165 size_t size = 0; 167 size_t size = 0;
166 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 168 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size);
167 checkpoint.Call(1); 169 checkpoint.Call(1);
168 testing::runPendingTasks(); 170 testing::runPendingTasks();
169 checkpoint.Call(2); 171 checkpoint.Call(2);
170 document().stopActiveDOMObjects(); 172 document().stopActiveDOMObjects();
171 checkpoint.Call(3); 173 checkpoint.Call(3);
172 } 174 }
173 175
174 TEST_F(FetchBlobDataConsumerHandleTest, CancelLoaderWhenDestinationDetached) 176 TEST_F(FetchBlobDataConsumerHandleTest, CancelLoaderWhenDestinationDetached)
175 { 177 {
176 auto factory = new StrictMock<MockLoaderFactory>; 178 auto factory = new StrictMock<MockLoaderFactory>;
177 Checkpoint checkpoint; 179 Checkpoint checkpoint;
178 180
179 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create(); 181 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create();
180 182
181 InSequence s; 183 InSequence s;
182 EXPECT_CALL(checkpoint, Call(1)); 184 EXPECT_CALL(checkpoint, Call(1));
183 EXPECT_CALL(*factory, create(Ref(document()), _, _, _, _)).WillOnce(Return(l oader.get())); 185 EXPECT_CALL(*factory, create(Ref(document()), _, _, _)).WillOnce(Return(load er.get()));
186 EXPECT_CALL(*loader, start(_));
184 EXPECT_CALL(checkpoint, Call(2)); 187 EXPECT_CALL(checkpoint, Call(2));
185 EXPECT_CALL(checkpoint, Call(3)); 188 EXPECT_CALL(checkpoint, Call(3));
186 EXPECT_CALL(*loader, cancel()); 189 EXPECT_CALL(*loader, cancel());
187 EXPECT_CALL(checkpoint, Call(4)); 190 EXPECT_CALL(checkpoint, Call(4));
188 191
189 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 192 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
190 OwnPtr<WebDataConsumerHandle> handle 193 OwnPtr<WebDataConsumerHandle> handle
191 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 194 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
192 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr) ; 195 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr) ;
193 testing::runPendingTasks(); 196 testing::runPendingTasks();
(...skipping 13 matching lines...) Expand all
207 TEST_F(FetchBlobDataConsumerHandleTest, ReadTest) 210 TEST_F(FetchBlobDataConsumerHandleTest, ReadTest)
208 { 211 {
209 auto factory = new StrictMock<MockLoaderFactory>; 212 auto factory = new StrictMock<MockLoaderFactory>;
210 Checkpoint checkpoint; 213 Checkpoint checkpoint;
211 214
212 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create(); 215 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create();
213 ThreadableLoaderClient* client = nullptr; 216 ThreadableLoaderClient* client = nullptr;
214 217
215 InSequence s; 218 InSequence s;
216 EXPECT_CALL(checkpoint, Call(1)); 219 EXPECT_CALL(checkpoint, Call(1));
217 EXPECT_CALL(*factory, create(Ref(document()), _, _, _, _)).WillOnce(DoAll(Sa veArg<1>(&client), Return(loader.get()))); 220 EXPECT_CALL(*factory, create(Ref(document()), _, _, _)).WillOnce(DoAll(SaveA rg<1>(&client), Return(loader.get())));
221 EXPECT_CALL(*loader, start(_));
218 EXPECT_CALL(checkpoint, Call(2)); 222 EXPECT_CALL(checkpoint, Call(2));
219 EXPECT_CALL(*loader, cancel()); 223 EXPECT_CALL(*loader, cancel());
220 224
221 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 225 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
222 OwnPtr<WebDataConsumerHandle> handle 226 OwnPtr<WebDataConsumerHandle> handle
223 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 227 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
224 228
225 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); 229 OwnPtr<ReplayingHandle> src = ReplayingHandle::create();
226 src->add(Command(Command::Wait)); 230 src->add(Command(Command::Wait));
227 src->add(Command(Command::Data, "hello, ")); 231 src->add(Command(Command::Data, "hello, "));
(...skipping 16 matching lines...) Expand all
244 TEST_F(FetchBlobDataConsumerHandleTest, TwoPhaseReadTest) 248 TEST_F(FetchBlobDataConsumerHandleTest, TwoPhaseReadTest)
245 { 249 {
246 auto factory = new StrictMock<MockLoaderFactory>; 250 auto factory = new StrictMock<MockLoaderFactory>;
247 Checkpoint checkpoint; 251 Checkpoint checkpoint;
248 252
249 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create(); 253 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create();
250 ThreadableLoaderClient* client = nullptr; 254 ThreadableLoaderClient* client = nullptr;
251 255
252 InSequence s; 256 InSequence s;
253 EXPECT_CALL(checkpoint, Call(1)); 257 EXPECT_CALL(checkpoint, Call(1));
254 EXPECT_CALL(*factory, create(Ref(document()), _, _, _, _)).WillOnce(DoAll(Sa veArg<1>(&client), Return(loader.get()))); 258 EXPECT_CALL(*factory, create(Ref(document()), _, _, _)).WillOnce(DoAll(SaveA rg<1>(&client), Return(loader.get())));
259 EXPECT_CALL(*loader, start(_));
255 EXPECT_CALL(checkpoint, Call(2)); 260 EXPECT_CALL(checkpoint, Call(2));
256 EXPECT_CALL(*loader, cancel()); 261 EXPECT_CALL(*loader, cancel());
257 262
258 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 263 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
259 OwnPtr<WebDataConsumerHandle> handle 264 OwnPtr<WebDataConsumerHandle> handle
260 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 265 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
261 266
262 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); 267 OwnPtr<ReplayingHandle> src = ReplayingHandle::create();
263 src->add(Command(Command::Wait)); 268 src->add(Command(Command::Wait));
264 src->add(Command(Command::Data, "hello, ")); 269 src->add(Command(Command::Data, "hello, "));
(...skipping 16 matching lines...) Expand all
281 TEST_F(FetchBlobDataConsumerHandleTest, LoadErrorTest) 286 TEST_F(FetchBlobDataConsumerHandleTest, LoadErrorTest)
282 { 287 {
283 auto factory = new StrictMock<MockLoaderFactory>; 288 auto factory = new StrictMock<MockLoaderFactory>;
284 Checkpoint checkpoint; 289 Checkpoint checkpoint;
285 290
286 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create(); 291 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create();
287 ThreadableLoaderClient* client = nullptr; 292 ThreadableLoaderClient* client = nullptr;
288 293
289 InSequence s; 294 InSequence s;
290 EXPECT_CALL(checkpoint, Call(1)); 295 EXPECT_CALL(checkpoint, Call(1));
291 EXPECT_CALL(*factory, create(Ref(document()), _, _, _, _)).WillOnce(DoAll(Sa veArg<1>(&client), Return(loader.get()))); 296 EXPECT_CALL(*factory, create(Ref(document()), _, _, _)).WillOnce(DoAll(SaveA rg<1>(&client), Return(loader.get())));
297 EXPECT_CALL(*loader, start(_));
292 EXPECT_CALL(checkpoint, Call(2)); 298 EXPECT_CALL(checkpoint, Call(2));
293 299
294 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 300 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
295 OwnPtr<WebDataConsumerHandle> handle 301 OwnPtr<WebDataConsumerHandle> handle
296 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 302 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
297 303
298 size_t size = 0; 304 size_t size = 0;
299 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 305 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size);
300 checkpoint.Call(1); 306 checkpoint.Call(1);
301 testing::runPendingTasks(); 307 testing::runPendingTasks();
302 checkpoint.Call(2); 308 checkpoint.Call(2);
303 client->didFail(ResourceError()); 309 client->didFail(ResourceError());
304 HandleReaderRunner<HandleReader> runner(handle.release()); 310 HandleReaderRunner<HandleReader> runner(handle.release());
305 OwnPtr<HandleReadResult> r = runner.wait(); 311 OwnPtr<HandleReadResult> r = runner.wait();
306 EXPECT_EQ(kUnexpectedError, r->result()); 312 EXPECT_EQ(kUnexpectedError, r->result());
307 } 313 }
308 314
309 TEST_F(FetchBlobDataConsumerHandleTest, BodyLoadErrorTest) 315 TEST_F(FetchBlobDataConsumerHandleTest, BodyLoadErrorTest)
310 { 316 {
311 auto factory = new StrictMock<MockLoaderFactory>; 317 auto factory = new StrictMock<MockLoaderFactory>;
312 Checkpoint checkpoint; 318 Checkpoint checkpoint;
313 319
314 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create(); 320 RefPtr<MockThreadableLoader> loader = MockThreadableLoader::create();
315 ThreadableLoaderClient* client = nullptr; 321 ThreadableLoaderClient* client = nullptr;
316 322
317 InSequence s; 323 InSequence s;
318 EXPECT_CALL(checkpoint, Call(1)); 324 EXPECT_CALL(checkpoint, Call(1));
319 EXPECT_CALL(*factory, create(Ref(document()), _, _, _, _)).WillOnce(DoAll(Sa veArg<1>(&client), Return(loader.get()))); 325 EXPECT_CALL(*factory, create(Ref(document()), _, _, _)).WillOnce(DoAll(SaveA rg<1>(&client), Return(loader.get())));
326 EXPECT_CALL(*loader, start(_));
320 EXPECT_CALL(checkpoint, Call(2)); 327 EXPECT_CALL(checkpoint, Call(2));
321 EXPECT_CALL(*loader, cancel()); 328 EXPECT_CALL(*loader, cancel());
322 329
323 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 330 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
324 OwnPtr<WebDataConsumerHandle> handle 331 OwnPtr<WebDataConsumerHandle> handle
325 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 332 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
326 333
327 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); 334 OwnPtr<ReplayingHandle> src = ReplayingHandle::create();
328 src->add(Command(Command::Wait)); 335 src->add(Command(Command::Wait));
329 src->add(Command(Command::Data, "hello, ")); 336 src->add(Command(Command::Data, "hello, "));
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt r); 422 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt r);
416 423
417 const void* buffer; 424 const void* buffer;
418 size_t available; 425 size_t available;
419 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); 426 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available));
420 EXPECT_FALSE(reader->drainAsBlobDataHandle()); 427 EXPECT_FALSE(reader->drainAsBlobDataHandle());
421 } 428 }
422 429
423 } // namespace 430 } // namespace
424 } // namespace blink 431 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698