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

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

Issue 1899873006: Make Response::body return v8-extra based stream behind flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@notify-locked-released
Patch Set: Created 4 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/BodyStreamBuffer.h" 5 #include "modules/fetch/BodyStreamBuffer.h"
6 6
7 #include "core/html/FormData.h" 7 #include "core/html/FormData.h"
8 #include "core/testing/DummyPageHolder.h" 8 #include "core/testing/DummyPageHolder.h"
9 #include "modules/fetch/DataConsumerHandleTestUtil.h" 9 #include "modules/fetch/DataConsumerHandleTestUtil.h"
10 #include "modules/fetch/FetchBlobDataConsumerHandle.h" 10 #include "modules/fetch/FetchBlobDataConsumerHandle.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc ument().frame()); } 50 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc ument().frame()); }
51 ExecutionContext* getExecutionContext() { return &m_page->document(); } 51 ExecutionContext* getExecutionContext() { return &m_page->document(); }
52 52
53 OwnPtr<DummyPageHolder> m_page; 53 OwnPtr<DummyPageHolder> m_page;
54 }; 54 };
55 55
56 TEST_F(BodyStreamBufferTest, ReleaseHandle) 56 TEST_F(BodyStreamBufferTest, ReleaseHandle)
57 { 57 {
58 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe bHandle(createWaitingDataConsumerHandle()); 58 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe bHandle(createWaitingDataConsumerHandle());
59 FetchDataConsumerHandle* rawHandle = handle.get(); 59 FetchDataConsumerHandle* rawHandle = handle.get();
60 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release()); 60 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel ease());
61 61
62 EXPECT_FALSE(buffer->hasPendingActivity()); 62 EXPECT_FALSE(buffer->hasPendingActivity());
63 EXPECT_FALSE(buffer->isStreamLocked()); 63 EXPECT_FALSE(buffer->isStreamLocked());
64 EXPECT_FALSE(buffer->isStreamDisturbed()); 64 EXPECT_FALSE(buffer->isStreamDisturbed());
65 EXPECT_TRUE(buffer->isStreamReadable()); 65 EXPECT_TRUE(buffer->isStreamReadable());
66 66
67 OwnPtr<FetchDataConsumerHandle> handle2 = buffer->releaseHandle(getExecution Context()); 67 OwnPtr<FetchDataConsumerHandle> handle2 = buffer->releaseHandle();
68 68
69 ASSERT_EQ(rawHandle, handle2.get()); 69 ASSERT_EQ(rawHandle, handle2.get());
70 EXPECT_TRUE(buffer->isStreamLocked()); 70 EXPECT_TRUE(buffer->isStreamLocked());
71 EXPECT_TRUE(buffer->isStreamDisturbed()); 71 EXPECT_TRUE(buffer->isStreamDisturbed());
72 EXPECT_TRUE(buffer->isStreamClosed()); 72 EXPECT_TRUE(buffer->isStreamClosed());
73 } 73 }
74 74
75 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle) 75 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle)
76 { 76 {
77 OwnPtr<BlobData> data = BlobData::create(); 77 OwnPtr<BlobData> data = BlobData::create();
78 data->appendText("hello", false); 78 data->appendText("hello", false);
79 auto size = data->length(); 79 auto size = data->length();
80 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(data.release( ), size); 80 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(data.release( ), size);
81 BodyStreamBuffer* buffer = new BodyStreamBuffer(FetchBlobDataConsumerHandle: :create(getExecutionContext(), blobDataHandle, new FakeLoaderFactory)); 81 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchBlobD ataConsumerHandle::create(getExecutionContext(), blobDataHandle, new FakeLoaderF actory));
82 82
83 EXPECT_FALSE(buffer->isStreamLocked()); 83 EXPECT_FALSE(buffer->isStreamLocked());
84 EXPECT_FALSE(buffer->isStreamDisturbed()); 84 EXPECT_FALSE(buffer->isStreamDisturbed());
85 EXPECT_FALSE(buffer->hasPendingActivity()); 85 EXPECT_FALSE(buffer->hasPendingActivity());
86 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle( getExecutionContext(), FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize ); 86 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle( FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize);
87 87
88 EXPECT_TRUE(buffer->isStreamLocked()); 88 EXPECT_TRUE(buffer->isStreamLocked());
89 EXPECT_TRUE(buffer->isStreamDisturbed()); 89 EXPECT_TRUE(buffer->isStreamDisturbed());
90 EXPECT_FALSE(buffer->hasPendingActivity()); 90 EXPECT_FALSE(buffer->hasPendingActivity());
91 EXPECT_EQ(blobDataHandle, outputBlobDataHandle); 91 EXPECT_EQ(blobDataHandle, outputBlobDataHandle);
92 } 92 }
93 93
94 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull) 94 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull)
95 { 95 {
96 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createWaitingDataConsumerHandle())); 96 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createWaitingDataConsumerHandle()));
97 97
98 EXPECT_FALSE(buffer->isStreamLocked()); 98 EXPECT_FALSE(buffer->isStreamLocked());
99 EXPECT_FALSE(buffer->isStreamDisturbed()); 99 EXPECT_FALSE(buffer->isStreamDisturbed());
100 EXPECT_FALSE(buffer->hasPendingActivity()); 100 EXPECT_FALSE(buffer->hasPendingActivity());
101 101
102 EXPECT_FALSE(buffer->drainAsBlobDataHandle(getExecutionContext(), FetchDataC onsumerHandle::Reader::AllowBlobWithInvalidSize)); 102 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize));
103 103
104 EXPECT_FALSE(buffer->isStreamLocked()); 104 EXPECT_FALSE(buffer->isStreamLocked());
105 EXPECT_FALSE(buffer->isStreamDisturbed()); 105 EXPECT_FALSE(buffer->isStreamDisturbed());
106 EXPECT_FALSE(buffer->hasPendingActivity()); 106 EXPECT_FALSE(buffer->hasPendingActivity());
107 } 107 }
108 108
109 TEST_F(BodyStreamBufferTest, DrainAsFormData) 109 TEST_F(BodyStreamBufferTest, DrainAsFormData)
110 { 110 {
111 FormData* data = FormData::create(UTF8Encoding()); 111 FormData* data = FormData::create(UTF8Encoding());
112 data->append("name1", "value1"); 112 data->append("name1", "value1");
113 data->append("name2", "value2"); 113 data->append("name2", "value2");
114 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); 114 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData();
115 115
116 BodyStreamBuffer* buffer = new BodyStreamBuffer(FetchFormDataConsumerHandle: :create(getExecutionContext(), inputFormData)); 116 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchFormD ataConsumerHandle::create(getExecutionContext(), inputFormData));
117 117
118 EXPECT_FALSE(buffer->isStreamLocked()); 118 EXPECT_FALSE(buffer->isStreamLocked());
119 EXPECT_FALSE(buffer->isStreamDisturbed()); 119 EXPECT_FALSE(buffer->isStreamDisturbed());
120 EXPECT_FALSE(buffer->hasPendingActivity()); 120 EXPECT_FALSE(buffer->hasPendingActivity());
121 RefPtr<EncodedFormData> outputFormData = buffer->drainAsFormData(getExecutio nContext()); 121 RefPtr<EncodedFormData> outputFormData = buffer->drainAsFormData();
122 122
123 EXPECT_TRUE(buffer->isStreamLocked()); 123 EXPECT_TRUE(buffer->isStreamLocked());
124 EXPECT_TRUE(buffer->isStreamDisturbed()); 124 EXPECT_TRUE(buffer->isStreamDisturbed());
125 EXPECT_FALSE(buffer->hasPendingActivity()); 125 EXPECT_FALSE(buffer->hasPendingActivity());
126 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString( )); 126 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString( ));
127 } 127 }
128 128
129 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull) 129 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull)
130 { 130 {
131 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createWaitingDataConsumerHandle())); 131 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createWaitingDataConsumerHandle()));
132 132
133 EXPECT_FALSE(buffer->isStreamLocked()); 133 EXPECT_FALSE(buffer->isStreamLocked());
134 EXPECT_FALSE(buffer->isStreamDisturbed()); 134 EXPECT_FALSE(buffer->isStreamDisturbed());
135 EXPECT_FALSE(buffer->hasPendingActivity()); 135 EXPECT_FALSE(buffer->hasPendingActivity());
136 136
137 EXPECT_FALSE(buffer->drainAsFormData(getExecutionContext())); 137 EXPECT_FALSE(buffer->drainAsFormData());
138 138
139 EXPECT_FALSE(buffer->isStreamLocked()); 139 EXPECT_FALSE(buffer->isStreamLocked());
140 EXPECT_FALSE(buffer->isStreamDisturbed()); 140 EXPECT_FALSE(buffer->isStreamDisturbed());
141 EXPECT_FALSE(buffer->hasPendingActivity()); 141 EXPECT_FALSE(buffer->hasPendingActivity());
142 } 142 }
143 143
144 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) 144 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer)
145 { 145 {
146 Checkpoint checkpoint; 146 Checkpoint checkpoint;
147 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 147 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
148 DOMArrayBuffer* arrayBuffer = nullptr; 148 DOMArrayBuffer* arrayBuffer = nullptr;
149 149
150 InSequence s; 150 InSequence s;
151 EXPECT_CALL(checkpoint, Call(1)); 151 EXPECT_CALL(checkpoint, Call(1));
152 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg< 0>(&arrayBuffer)); 152 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg< 0>(&arrayBuffer));
153 EXPECT_CALL(checkpoint, Call(2)); 153 EXPECT_CALL(checkpoint, Call(2));
154 154
155 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); 155 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create();
156 handle->add(Command(Command::Data, "hello")); 156 handle->add(Command(Command::Data, "hello"));
157 handle->add(Command(Command::Done)); 157 handle->add(Command(Command::Done));
158 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(handle.release())); 158 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(handle.release()));
159 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsA rrayBuffer(), client); 159 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client);
160 160
161 EXPECT_TRUE(buffer->isStreamLocked()); 161 EXPECT_TRUE(buffer->isStreamLocked());
162 EXPECT_TRUE(buffer->isStreamDisturbed()); 162 EXPECT_TRUE(buffer->isStreamDisturbed());
163 EXPECT_TRUE(buffer->hasPendingActivity()); 163 EXPECT_TRUE(buffer->hasPendingActivity());
164 164
165 checkpoint.Call(1); 165 checkpoint.Call(1);
166 testing::runPendingTasks(); 166 testing::runPendingTasks();
167 checkpoint.Call(2); 167 checkpoint.Call(2);
168 168
169 EXPECT_TRUE(buffer->isStreamLocked()); 169 EXPECT_TRUE(buffer->isStreamLocked());
(...skipping 10 matching lines...) Expand all
180 RefPtr<BlobDataHandle> blobDataHandle; 180 RefPtr<BlobDataHandle> blobDataHandle;
181 181
182 InSequence s; 182 InSequence s;
183 EXPECT_CALL(checkpoint, Call(1)); 183 EXPECT_CALL(checkpoint, Call(1));
184 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0 >(&blobDataHandle)); 184 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0 >(&blobDataHandle));
185 EXPECT_CALL(checkpoint, Call(2)); 185 EXPECT_CALL(checkpoint, Call(2));
186 186
187 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); 187 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create();
188 handle->add(Command(Command::Data, "hello")); 188 handle->add(Command(Command::Data, "hello"));
189 handle->add(Command(Command::Done)); 189 handle->add(Command(Command::Done));
190 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(handle.release())); 190 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(handle.release()));
191 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsB lobHandle("text/plain"), client); 191 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain") , client);
192 192
193 EXPECT_TRUE(buffer->isStreamLocked()); 193 EXPECT_TRUE(buffer->isStreamLocked());
194 EXPECT_TRUE(buffer->isStreamDisturbed()); 194 EXPECT_TRUE(buffer->isStreamDisturbed());
195 EXPECT_TRUE(buffer->hasPendingActivity()); 195 EXPECT_TRUE(buffer->hasPendingActivity());
196 196
197 checkpoint.Call(1); 197 checkpoint.Call(1);
198 testing::runPendingTasks(); 198 testing::runPendingTasks();
199 checkpoint.Call(2); 199 checkpoint.Call(2);
200 200
201 EXPECT_TRUE(buffer->isStreamLocked()); 201 EXPECT_TRUE(buffer->isStreamLocked());
202 EXPECT_TRUE(buffer->isStreamDisturbed()); 202 EXPECT_TRUE(buffer->isStreamDisturbed());
203 EXPECT_FALSE(buffer->hasPendingActivity()); 203 EXPECT_FALSE(buffer->hasPendingActivity());
204 EXPECT_EQ(5u, blobDataHandle->size()); 204 EXPECT_EQ(5u, blobDataHandle->size());
205 } 205 }
206 206
207 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) 207 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString)
208 { 208 {
209 Checkpoint checkpoint; 209 Checkpoint checkpoint;
210 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 210 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
211 211
212 InSequence s; 212 InSequence s;
213 EXPECT_CALL(checkpoint, Call(1)); 213 EXPECT_CALL(checkpoint, Call(1));
214 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); 214 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello")));
215 EXPECT_CALL(checkpoint, Call(2)); 215 EXPECT_CALL(checkpoint, Call(2));
216 216
217 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); 217 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create();
218 handle->add(Command(Command::Data, "hello")); 218 handle->add(Command(Command::Data, "hello"));
219 handle->add(Command(Command::Done)); 219 handle->add(Command(Command::Done));
220 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(handle.release())); 220 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(handle.release()));
221 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS tring(), client); 221 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
222 222
223 EXPECT_TRUE(buffer->isStreamLocked()); 223 EXPECT_TRUE(buffer->isStreamLocked());
224 EXPECT_TRUE(buffer->isStreamDisturbed()); 224 EXPECT_TRUE(buffer->isStreamDisturbed());
225 EXPECT_TRUE(buffer->hasPendingActivity()); 225 EXPECT_TRUE(buffer->hasPendingActivity());
226 226
227 checkpoint.Call(1); 227 checkpoint.Call(1);
228 testing::runPendingTasks(); 228 testing::runPendingTasks();
229 checkpoint.Call(2); 229 checkpoint.Call(2);
230 230
231 EXPECT_TRUE(buffer->isStreamLocked()); 231 EXPECT_TRUE(buffer->isStreamLocked());
232 EXPECT_TRUE(buffer->isStreamDisturbed()); 232 EXPECT_TRUE(buffer->isStreamDisturbed());
233 EXPECT_FALSE(buffer->hasPendingActivity()); 233 EXPECT_FALSE(buffer->hasPendingActivity());
234 } 234 }
235 235
236 TEST_F(BodyStreamBufferTest, ReleaseClosedHandle) 236 TEST_F(BodyStreamBufferTest, ReleaseClosedHandle)
237 { 237 {
238 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createDoneDataConsumerHandle())); 238 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle()));
239 239
240 EXPECT_TRUE(buffer->isStreamReadable()); 240 EXPECT_TRUE(buffer->isStreamReadable());
241 testing::runPendingTasks(); 241 testing::runPendingTasks();
242 EXPECT_TRUE(buffer->isStreamClosed()); 242 EXPECT_TRUE(buffer->isStreamClosed());
243 243
244 EXPECT_FALSE(buffer->isStreamLocked()); 244 EXPECT_FALSE(buffer->isStreamLocked());
245 EXPECT_FALSE(buffer->isStreamDisturbed()); 245 EXPECT_FALSE(buffer->isStreamDisturbed());
246 EXPECT_FALSE(buffer->hasPendingActivity()); 246 EXPECT_FALSE(buffer->hasPendingActivity());
247 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(getExecutionC ontext()); 247 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle();
248 248
249 EXPECT_TRUE(handle); 249 EXPECT_TRUE(handle);
250 EXPECT_TRUE(buffer->isStreamLocked()); 250 EXPECT_TRUE(buffer->isStreamLocked());
251 EXPECT_TRUE(buffer->isStreamDisturbed()); 251 EXPECT_TRUE(buffer->isStreamDisturbed());
252 EXPECT_FALSE(buffer->hasPendingActivity()); 252 EXPECT_FALSE(buffer->hasPendingActivity());
253 } 253 }
254 254
255 TEST_F(BodyStreamBufferTest, LoadClosedHandle) 255 TEST_F(BodyStreamBufferTest, LoadClosedHandle)
256 { 256 {
257 Checkpoint checkpoint; 257 Checkpoint checkpoint;
258 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 258 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
259 259
260 InSequence s; 260 InSequence s;
261 EXPECT_CALL(checkpoint, Call(1)); 261 EXPECT_CALL(checkpoint, Call(1));
262 EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); 262 EXPECT_CALL(*client, didFetchDataLoadedString(String("")));
263 EXPECT_CALL(checkpoint, Call(2)); 263 EXPECT_CALL(checkpoint, Call(2));
264 264
265 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createDoneDataConsumerHandle())); 265 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle()));
266 266
267 EXPECT_TRUE(buffer->isStreamReadable()); 267 EXPECT_TRUE(buffer->isStreamReadable());
268 testing::runPendingTasks(); 268 testing::runPendingTasks();
269 EXPECT_TRUE(buffer->isStreamClosed()); 269 EXPECT_TRUE(buffer->isStreamClosed());
270 270
271 EXPECT_FALSE(buffer->isStreamLocked()); 271 EXPECT_FALSE(buffer->isStreamLocked());
272 EXPECT_FALSE(buffer->isStreamDisturbed()); 272 EXPECT_FALSE(buffer->isStreamDisturbed());
273 EXPECT_FALSE(buffer->hasPendingActivity()); 273 EXPECT_FALSE(buffer->hasPendingActivity());
274 274
275 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS tring(), client); 275 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
276 EXPECT_TRUE(buffer->isStreamLocked()); 276 EXPECT_TRUE(buffer->isStreamLocked());
277 EXPECT_TRUE(buffer->isStreamDisturbed()); 277 EXPECT_TRUE(buffer->isStreamDisturbed());
278 EXPECT_TRUE(buffer->hasPendingActivity()); 278 EXPECT_TRUE(buffer->hasPendingActivity());
279 279
280 checkpoint.Call(1); 280 checkpoint.Call(1);
281 testing::runPendingTasks(); 281 testing::runPendingTasks();
282 checkpoint.Call(2); 282 checkpoint.Call(2);
283 283
284 EXPECT_TRUE(buffer->isStreamLocked()); 284 EXPECT_TRUE(buffer->isStreamLocked());
285 EXPECT_TRUE(buffer->isStreamDisturbed()); 285 EXPECT_TRUE(buffer->isStreamDisturbed());
286 EXPECT_FALSE(buffer->hasPendingActivity()); 286 EXPECT_FALSE(buffer->hasPendingActivity());
287 } 287 }
288 288
289 TEST_F(BodyStreamBufferTest, ReleaseErroredHandle) 289 TEST_F(BodyStreamBufferTest, ReleaseErroredHandle)
290 { 290 {
291 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 291 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()));
292 292
293 EXPECT_TRUE(buffer->isStreamReadable()); 293 EXPECT_TRUE(buffer->isStreamReadable());
294 testing::runPendingTasks(); 294 testing::runPendingTasks();
295 EXPECT_TRUE(buffer->isStreamErrored()); 295 EXPECT_TRUE(buffer->isStreamErrored());
296 296
297 EXPECT_FALSE(buffer->isStreamLocked()); 297 EXPECT_FALSE(buffer->isStreamLocked());
298 EXPECT_FALSE(buffer->isStreamDisturbed()); 298 EXPECT_FALSE(buffer->isStreamDisturbed());
299 EXPECT_FALSE(buffer->hasPendingActivity()); 299 EXPECT_FALSE(buffer->hasPendingActivity());
300 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(getExecutionC ontext()); 300 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle();
301 EXPECT_TRUE(handle); 301 EXPECT_TRUE(handle);
302 EXPECT_TRUE(buffer->isStreamLocked()); 302 EXPECT_TRUE(buffer->isStreamLocked());
303 EXPECT_TRUE(buffer->isStreamDisturbed()); 303 EXPECT_TRUE(buffer->isStreamDisturbed());
304 EXPECT_FALSE(buffer->hasPendingActivity()); 304 EXPECT_FALSE(buffer->hasPendingActivity());
305 } 305 }
306 306
307 TEST_F(BodyStreamBufferTest, LoadErroredHandle) 307 TEST_F(BodyStreamBufferTest, LoadErroredHandle)
308 { 308 {
309 Checkpoint checkpoint; 309 Checkpoint checkpoint;
310 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 310 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
311 311
312 InSequence s; 312 InSequence s;
313 EXPECT_CALL(checkpoint, Call(1)); 313 EXPECT_CALL(checkpoint, Call(1));
314 EXPECT_CALL(*client, didFetchDataLoadFailed()); 314 EXPECT_CALL(*client, didFetchDataLoadFailed());
315 EXPECT_CALL(checkpoint, Call(2)); 315 EXPECT_CALL(checkpoint, Call(2));
316 316
317 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 317 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()));
318 318
319 EXPECT_TRUE(buffer->isStreamReadable()); 319 EXPECT_TRUE(buffer->isStreamReadable());
320 testing::runPendingTasks(); 320 testing::runPendingTasks();
321 EXPECT_TRUE(buffer->isStreamErrored()); 321 EXPECT_TRUE(buffer->isStreamErrored());
322 322
323 EXPECT_FALSE(buffer->isStreamLocked()); 323 EXPECT_FALSE(buffer->isStreamLocked());
324 EXPECT_FALSE(buffer->isStreamDisturbed()); 324 EXPECT_FALSE(buffer->isStreamDisturbed());
325 EXPECT_FALSE(buffer->hasPendingActivity()); 325 EXPECT_FALSE(buffer->hasPendingActivity());
326 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS tring(), client); 326 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
327 EXPECT_TRUE(buffer->isStreamLocked()); 327 EXPECT_TRUE(buffer->isStreamLocked());
328 EXPECT_TRUE(buffer->isStreamDisturbed()); 328 EXPECT_TRUE(buffer->isStreamDisturbed());
329 EXPECT_TRUE(buffer->hasPendingActivity()); 329 EXPECT_TRUE(buffer->hasPendingActivity());
330 330
331 checkpoint.Call(1); 331 checkpoint.Call(1);
332 testing::runPendingTasks(); 332 testing::runPendingTasks();
333 checkpoint.Call(2); 333 checkpoint.Call(2);
334 334
335 EXPECT_TRUE(buffer->isStreamLocked()); 335 EXPECT_TRUE(buffer->isStreamLocked());
336 EXPECT_TRUE(buffer->isStreamDisturbed()); 336 EXPECT_TRUE(buffer->isStreamDisturbed());
337 EXPECT_FALSE(buffer->hasPendingActivity()); 337 EXPECT_FALSE(buffer->hasPendingActivity());
338 } 338 }
339 339
340 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) 340 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer)
341 { 341 {
342 Checkpoint checkpoint; 342 Checkpoint checkpoint;
343 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 343 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
344 344
345 InSequence s; 345 InSequence s;
346 EXPECT_CALL(checkpoint, Call(1)); 346 EXPECT_CALL(checkpoint, Call(1));
347 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); 347 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello")));
348 EXPECT_CALL(checkpoint, Call(2)); 348 EXPECT_CALL(checkpoint, Call(2));
349 349
350 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); 350 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create();
351 handle->add(Command(Command::Data, "hello")); 351 handle->add(Command(Command::Data, "hello"));
352 handle->add(Command(Command::Done)); 352 handle->add(Command(Command::Done));
353 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(createFetchDataCo nsumerHandleFromWebHandle(handle.release())); 353 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(handle.release()));
354 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS tring(), client); 354 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
355 355
356 ThreadHeap::collectAllGarbage(); 356 ThreadHeap::collectAllGarbage();
357 checkpoint.Call(1); 357 checkpoint.Call(1);
358 testing::runPendingTasks(); 358 testing::runPendingTasks();
359 checkpoint.Call(2); 359 checkpoint.Call(2);
360 } 360 }
361 361
362 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle. 362 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle.
363 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT estUtil::MockFetchDataConsumerHandle { 363 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT estUtil::MockFetchDataConsumerHandle {
364 public: 364 public:
(...skipping 20 matching lines...) Expand all
385 385
386 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea der.get())); 386 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea der.get()));
387 EXPECT_CALL(checkpoint, Call(1)); 387 EXPECT_CALL(checkpoint, Call(1));
388 EXPECT_CALL(*reader, destruct()); 388 EXPECT_CALL(*reader, destruct());
389 EXPECT_CALL(*handle, destruct()); 389 EXPECT_CALL(*handle, destruct());
390 EXPECT_CALL(checkpoint, Call(2)); 390 EXPECT_CALL(checkpoint, Call(2));
391 391
392 // |reader| is adopted by |obtainReader|. 392 // |reader| is adopted by |obtainReader|.
393 ASSERT_TRUE(reader.leakPtr()); 393 ASSERT_TRUE(reader.leakPtr());
394 394
395 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release()); 395 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel ease());
396 checkpoint.Call(1); 396 checkpoint.Call(1);
397 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), " reason")); 397 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), " reason"));
398 buffer->cancelSource(getScriptState(), reason); 398 buffer->cancelSource(getScriptState(), reason);
399 checkpoint.Call(2); 399 checkpoint.Call(2);
400 } 400 }
401 401
402 } // namespace 402 } // namespace
403 403
404 } // namespace blink 404 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698