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

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

Issue 1906403002: Revert of 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(getScriptState(), handle.rel ease()); 60 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release());
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(); 67 OwnPtr<FetchDataConsumerHandle> handle2 = buffer->releaseHandle(getExecution Context());
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(getScriptState(), FetchBlobD ataConsumerHandle::create(getExecutionContext(), blobDataHandle, new FakeLoaderF actory)); 81 BodyStreamBuffer* buffer = new BodyStreamBuffer(FetchBlobDataConsumerHandle: :create(getExecutionContext(), blobDataHandle, new FakeLoaderFactory));
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( FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize); 86 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle( getExecutionContext(), 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 // This handle is not drainable. 96 // This handle is not drainable.
97 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe bHandle(createWaitingDataConsumerHandle()); 97 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe bHandle(createWaitingDataConsumerHandle());
98 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel ease()); 98 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release());
99 99
100 EXPECT_FALSE(buffer->isStreamLocked()); 100 EXPECT_FALSE(buffer->isStreamLocked());
101 EXPECT_FALSE(buffer->isStreamDisturbed()); 101 EXPECT_FALSE(buffer->isStreamDisturbed());
102 EXPECT_FALSE(buffer->hasPendingActivity()); 102 EXPECT_FALSE(buffer->hasPendingActivity());
103 103
104 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize)); 104 EXPECT_FALSE(buffer->drainAsBlobDataHandle(getExecutionContext(), FetchDataC onsumerHandle::Reader::AllowBlobWithInvalidSize));
105 105
106 EXPECT_FALSE(buffer->isStreamLocked()); 106 EXPECT_FALSE(buffer->isStreamLocked());
107 EXPECT_FALSE(buffer->isStreamDisturbed()); 107 EXPECT_FALSE(buffer->isStreamDisturbed());
108 EXPECT_FALSE(buffer->hasPendingActivity()); 108 EXPECT_FALSE(buffer->hasPendingActivity());
109 } 109 }
110 110
111 TEST_F(BodyStreamBufferTest, DrainAsFormData) 111 TEST_F(BodyStreamBufferTest, DrainAsFormData)
112 { 112 {
113 FormData* data = FormData::create(UTF8Encoding()); 113 FormData* data = FormData::create(UTF8Encoding());
114 data->append("name1", "value1"); 114 data->append("name1", "value1");
115 data->append("name2", "value2"); 115 data->append("name2", "value2");
116 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); 116 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData();
117 117
118 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchFormD ataConsumerHandle::create(getExecutionContext(), inputFormData)); 118 BodyStreamBuffer* buffer = new BodyStreamBuffer(FetchFormDataConsumerHandle: :create(getExecutionContext(), inputFormData));
119 119
120 EXPECT_FALSE(buffer->isStreamLocked()); 120 EXPECT_FALSE(buffer->isStreamLocked());
121 EXPECT_FALSE(buffer->isStreamDisturbed()); 121 EXPECT_FALSE(buffer->isStreamDisturbed());
122 EXPECT_FALSE(buffer->hasPendingActivity()); 122 EXPECT_FALSE(buffer->hasPendingActivity());
123 RefPtr<EncodedFormData> outputFormData = buffer->drainAsFormData(); 123 RefPtr<EncodedFormData> outputFormData = buffer->drainAsFormData(getExecutio nContext());
124 124
125 EXPECT_TRUE(buffer->isStreamLocked()); 125 EXPECT_TRUE(buffer->isStreamLocked());
126 EXPECT_TRUE(buffer->isStreamDisturbed()); 126 EXPECT_TRUE(buffer->isStreamDisturbed());
127 EXPECT_FALSE(buffer->hasPendingActivity()); 127 EXPECT_FALSE(buffer->hasPendingActivity());
128 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString( )); 128 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString( ));
129 } 129 }
130 130
131 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull) 131 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull)
132 { 132 {
133 // This handle is not drainable. 133 // This handle is not drainable.
134 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe bHandle(createWaitingDataConsumerHandle()); 134 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe bHandle(createWaitingDataConsumerHandle());
135 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel ease()); 135 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release());
136 136
137 EXPECT_FALSE(buffer->isStreamLocked()); 137 EXPECT_FALSE(buffer->isStreamLocked());
138 EXPECT_FALSE(buffer->isStreamDisturbed()); 138 EXPECT_FALSE(buffer->isStreamDisturbed());
139 EXPECT_FALSE(buffer->hasPendingActivity()); 139 EXPECT_FALSE(buffer->hasPendingActivity());
140 140
141 EXPECT_FALSE(buffer->drainAsFormData()); 141 EXPECT_FALSE(buffer->drainAsFormData(getExecutionContext()));
142 142
143 EXPECT_FALSE(buffer->isStreamLocked()); 143 EXPECT_FALSE(buffer->isStreamLocked());
144 EXPECT_FALSE(buffer->isStreamDisturbed()); 144 EXPECT_FALSE(buffer->isStreamDisturbed());
145 EXPECT_FALSE(buffer->hasPendingActivity()); 145 EXPECT_FALSE(buffer->hasPendingActivity());
146 } 146 }
147 147
148 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) 148 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer)
149 { 149 {
150 Checkpoint checkpoint; 150 Checkpoint checkpoint;
151 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 151 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
152 DOMArrayBuffer* arrayBuffer = nullptr; 152 DOMArrayBuffer* arrayBuffer = nullptr;
153 153
154 InSequence s; 154 InSequence s;
155 EXPECT_CALL(checkpoint, Call(1)); 155 EXPECT_CALL(checkpoint, Call(1));
156 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg< 0>(&arrayBuffer)); 156 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg< 0>(&arrayBuffer));
157 EXPECT_CALL(checkpoint, Call(2)); 157 EXPECT_CALL(checkpoint, Call(2));
158 158
159 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); 159 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create();
160 handle->add(Command(Command::Data, "hello")); 160 handle->add(Command(Command::Data, "hello"));
161 handle->add(Command(Command::Done)); 161 handle->add(Command(Command::Done));
162 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(handle.release())); 162 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(handle.release()));
163 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); 163 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsA rrayBuffer(), client);
164 164
165 EXPECT_TRUE(buffer->isStreamLocked()); 165 EXPECT_TRUE(buffer->isStreamLocked());
166 EXPECT_TRUE(buffer->isStreamDisturbed()); 166 EXPECT_TRUE(buffer->isStreamDisturbed());
167 EXPECT_TRUE(buffer->hasPendingActivity()); 167 EXPECT_TRUE(buffer->hasPendingActivity());
168 168
169 checkpoint.Call(1); 169 checkpoint.Call(1);
170 testing::runPendingTasks(); 170 testing::runPendingTasks();
171 checkpoint.Call(2); 171 checkpoint.Call(2);
172 172
173 EXPECT_TRUE(buffer->isStreamLocked()); 173 EXPECT_TRUE(buffer->isStreamLocked());
(...skipping 10 matching lines...) Expand all
184 RefPtr<BlobDataHandle> blobDataHandle; 184 RefPtr<BlobDataHandle> blobDataHandle;
185 185
186 InSequence s; 186 InSequence s;
187 EXPECT_CALL(checkpoint, Call(1)); 187 EXPECT_CALL(checkpoint, Call(1));
188 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0 >(&blobDataHandle)); 188 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0 >(&blobDataHandle));
189 EXPECT_CALL(checkpoint, Call(2)); 189 EXPECT_CALL(checkpoint, Call(2));
190 190
191 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); 191 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create();
192 handle->add(Command(Command::Data, "hello")); 192 handle->add(Command(Command::Data, "hello"));
193 handle->add(Command(Command::Done)); 193 handle->add(Command(Command::Done));
194 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(handle.release())); 194 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(handle.release()));
195 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain") , client); 195 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsB lobHandle("text/plain"), client);
196 196
197 EXPECT_TRUE(buffer->isStreamLocked()); 197 EXPECT_TRUE(buffer->isStreamLocked());
198 EXPECT_TRUE(buffer->isStreamDisturbed()); 198 EXPECT_TRUE(buffer->isStreamDisturbed());
199 EXPECT_TRUE(buffer->hasPendingActivity()); 199 EXPECT_TRUE(buffer->hasPendingActivity());
200 200
201 checkpoint.Call(1); 201 checkpoint.Call(1);
202 testing::runPendingTasks(); 202 testing::runPendingTasks();
203 checkpoint.Call(2); 203 checkpoint.Call(2);
204 204
205 EXPECT_TRUE(buffer->isStreamLocked()); 205 EXPECT_TRUE(buffer->isStreamLocked());
206 EXPECT_TRUE(buffer->isStreamDisturbed()); 206 EXPECT_TRUE(buffer->isStreamDisturbed());
207 EXPECT_FALSE(buffer->hasPendingActivity()); 207 EXPECT_FALSE(buffer->hasPendingActivity());
208 EXPECT_EQ(5u, blobDataHandle->size()); 208 EXPECT_EQ(5u, blobDataHandle->size());
209 } 209 }
210 210
211 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) 211 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString)
212 { 212 {
213 Checkpoint checkpoint; 213 Checkpoint checkpoint;
214 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 214 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
215 215
216 InSequence s; 216 InSequence s;
217 EXPECT_CALL(checkpoint, Call(1)); 217 EXPECT_CALL(checkpoint, Call(1));
218 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); 218 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello")));
219 EXPECT_CALL(checkpoint, Call(2)); 219 EXPECT_CALL(checkpoint, Call(2));
220 220
221 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); 221 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create();
222 handle->add(Command(Command::Data, "hello")); 222 handle->add(Command(Command::Data, "hello"));
223 handle->add(Command(Command::Done)); 223 handle->add(Command(Command::Done));
224 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(handle.release())); 224 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(handle.release()));
225 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 225 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS tring(), client);
226 226
227 EXPECT_TRUE(buffer->isStreamLocked()); 227 EXPECT_TRUE(buffer->isStreamLocked());
228 EXPECT_TRUE(buffer->isStreamDisturbed()); 228 EXPECT_TRUE(buffer->isStreamDisturbed());
229 EXPECT_TRUE(buffer->hasPendingActivity()); 229 EXPECT_TRUE(buffer->hasPendingActivity());
230 230
231 checkpoint.Call(1); 231 checkpoint.Call(1);
232 testing::runPendingTasks(); 232 testing::runPendingTasks();
233 checkpoint.Call(2); 233 checkpoint.Call(2);
234 234
235 EXPECT_TRUE(buffer->isStreamLocked()); 235 EXPECT_TRUE(buffer->isStreamLocked());
236 EXPECT_TRUE(buffer->isStreamDisturbed()); 236 EXPECT_TRUE(buffer->isStreamDisturbed());
237 EXPECT_FALSE(buffer->hasPendingActivity()); 237 EXPECT_FALSE(buffer->hasPendingActivity());
238 } 238 }
239 239
240 TEST_F(BodyStreamBufferTest, ReleaseClosedHandle) 240 TEST_F(BodyStreamBufferTest, ReleaseClosedHandle)
241 { 241 {
242 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); 242 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createDoneDataConsumerHandle()));
243 243
244 EXPECT_TRUE(buffer->isStreamReadable()); 244 EXPECT_TRUE(buffer->isStreamReadable());
245 testing::runPendingTasks(); 245 testing::runPendingTasks();
246 EXPECT_TRUE(buffer->isStreamClosed()); 246 EXPECT_TRUE(buffer->isStreamClosed());
247 247
248 EXPECT_FALSE(buffer->isStreamLocked()); 248 EXPECT_FALSE(buffer->isStreamLocked());
249 EXPECT_FALSE(buffer->isStreamDisturbed()); 249 EXPECT_FALSE(buffer->isStreamDisturbed());
250 EXPECT_FALSE(buffer->hasPendingActivity()); 250 EXPECT_FALSE(buffer->hasPendingActivity());
251 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(); 251 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(getExecutionC ontext());
252 252
253 EXPECT_TRUE(handle); 253 EXPECT_TRUE(handle);
254 EXPECT_TRUE(buffer->isStreamLocked()); 254 EXPECT_TRUE(buffer->isStreamLocked());
255 EXPECT_TRUE(buffer->isStreamDisturbed()); 255 EXPECT_TRUE(buffer->isStreamDisturbed());
256 EXPECT_FALSE(buffer->hasPendingActivity()); 256 EXPECT_FALSE(buffer->hasPendingActivity());
257 } 257 }
258 258
259 TEST_F(BodyStreamBufferTest, LoadClosedHandle) 259 TEST_F(BodyStreamBufferTest, LoadClosedHandle)
260 { 260 {
261 Checkpoint checkpoint; 261 Checkpoint checkpoint;
262 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 262 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
263 263
264 InSequence s; 264 InSequence s;
265 EXPECT_CALL(checkpoint, Call(1)); 265 EXPECT_CALL(checkpoint, Call(1));
266 EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); 266 EXPECT_CALL(*client, didFetchDataLoadedString(String("")));
267 EXPECT_CALL(checkpoint, Call(2)); 267 EXPECT_CALL(checkpoint, Call(2));
268 268
269 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); 269 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createDoneDataConsumerHandle()));
270 270
271 EXPECT_TRUE(buffer->isStreamReadable()); 271 EXPECT_TRUE(buffer->isStreamReadable());
272 testing::runPendingTasks(); 272 testing::runPendingTasks();
273 EXPECT_TRUE(buffer->isStreamClosed()); 273 EXPECT_TRUE(buffer->isStreamClosed());
274 274
275 EXPECT_FALSE(buffer->isStreamLocked()); 275 EXPECT_FALSE(buffer->isStreamLocked());
276 EXPECT_FALSE(buffer->isStreamDisturbed()); 276 EXPECT_FALSE(buffer->isStreamDisturbed());
277 EXPECT_FALSE(buffer->hasPendingActivity()); 277 EXPECT_FALSE(buffer->hasPendingActivity());
278 278
279 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 279 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS tring(), client);
280 EXPECT_TRUE(buffer->isStreamLocked()); 280 EXPECT_TRUE(buffer->isStreamLocked());
281 EXPECT_TRUE(buffer->isStreamDisturbed()); 281 EXPECT_TRUE(buffer->isStreamDisturbed());
282 EXPECT_TRUE(buffer->hasPendingActivity()); 282 EXPECT_TRUE(buffer->hasPendingActivity());
283 283
284 checkpoint.Call(1); 284 checkpoint.Call(1);
285 testing::runPendingTasks(); 285 testing::runPendingTasks();
286 checkpoint.Call(2); 286 checkpoint.Call(2);
287 287
288 EXPECT_TRUE(buffer->isStreamLocked()); 288 EXPECT_TRUE(buffer->isStreamLocked());
289 EXPECT_TRUE(buffer->isStreamDisturbed()); 289 EXPECT_TRUE(buffer->isStreamDisturbed());
290 EXPECT_FALSE(buffer->hasPendingActivity()); 290 EXPECT_FALSE(buffer->hasPendingActivity());
291 } 291 }
292 292
293 TEST_F(BodyStreamBufferTest, ReleaseErroredHandle) 293 TEST_F(BodyStreamBufferTest, ReleaseErroredHandle)
294 { 294 {
295 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 295 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createUnexpectedErrorDataConsumerHandle()));
296 296
297 EXPECT_TRUE(buffer->isStreamReadable()); 297 EXPECT_TRUE(buffer->isStreamReadable());
298 testing::runPendingTasks(); 298 testing::runPendingTasks();
299 EXPECT_TRUE(buffer->isStreamErrored()); 299 EXPECT_TRUE(buffer->isStreamErrored());
300 300
301 EXPECT_FALSE(buffer->isStreamLocked()); 301 EXPECT_FALSE(buffer->isStreamLocked());
302 EXPECT_FALSE(buffer->isStreamDisturbed()); 302 EXPECT_FALSE(buffer->isStreamDisturbed());
303 EXPECT_FALSE(buffer->hasPendingActivity()); 303 EXPECT_FALSE(buffer->hasPendingActivity());
304 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(); 304 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(getExecutionC ontext());
305 EXPECT_TRUE(handle); 305 EXPECT_TRUE(handle);
306 EXPECT_TRUE(buffer->isStreamLocked()); 306 EXPECT_TRUE(buffer->isStreamLocked());
307 EXPECT_TRUE(buffer->isStreamDisturbed()); 307 EXPECT_TRUE(buffer->isStreamDisturbed());
308 EXPECT_FALSE(buffer->hasPendingActivity()); 308 EXPECT_FALSE(buffer->hasPendingActivity());
309 } 309 }
310 310
311 TEST_F(BodyStreamBufferTest, LoadErroredHandle) 311 TEST_F(BodyStreamBufferTest, LoadErroredHandle)
312 { 312 {
313 Checkpoint checkpoint; 313 Checkpoint checkpoint;
314 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 314 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
315 315
316 InSequence s; 316 InSequence s;
317 EXPECT_CALL(checkpoint, Call(1)); 317 EXPECT_CALL(checkpoint, Call(1));
318 EXPECT_CALL(*client, didFetchDataLoadFailed()); 318 EXPECT_CALL(*client, didFetchDataLoadFailed());
319 EXPECT_CALL(checkpoint, Call(2)); 319 EXPECT_CALL(checkpoint, Call(2));
320 320
321 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 321 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createUnexpectedErrorDataConsumerHandle()));
322 322
323 EXPECT_TRUE(buffer->isStreamReadable()); 323 EXPECT_TRUE(buffer->isStreamReadable());
324 testing::runPendingTasks(); 324 testing::runPendingTasks();
325 EXPECT_TRUE(buffer->isStreamErrored()); 325 EXPECT_TRUE(buffer->isStreamErrored());
326 326
327 EXPECT_FALSE(buffer->isStreamLocked()); 327 EXPECT_FALSE(buffer->isStreamLocked());
328 EXPECT_FALSE(buffer->isStreamDisturbed()); 328 EXPECT_FALSE(buffer->isStreamDisturbed());
329 EXPECT_FALSE(buffer->hasPendingActivity()); 329 EXPECT_FALSE(buffer->hasPendingActivity());
330 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 330 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS tring(), client);
331 EXPECT_TRUE(buffer->isStreamLocked()); 331 EXPECT_TRUE(buffer->isStreamLocked());
332 EXPECT_TRUE(buffer->isStreamDisturbed()); 332 EXPECT_TRUE(buffer->isStreamDisturbed());
333 EXPECT_TRUE(buffer->hasPendingActivity()); 333 EXPECT_TRUE(buffer->hasPendingActivity());
334 334
335 checkpoint.Call(1); 335 checkpoint.Call(1);
336 testing::runPendingTasks(); 336 testing::runPendingTasks();
337 checkpoint.Call(2); 337 checkpoint.Call(2);
338 338
339 EXPECT_TRUE(buffer->isStreamLocked()); 339 EXPECT_TRUE(buffer->isStreamLocked());
340 EXPECT_TRUE(buffer->isStreamDisturbed()); 340 EXPECT_TRUE(buffer->isStreamDisturbed());
341 EXPECT_FALSE(buffer->hasPendingActivity()); 341 EXPECT_FALSE(buffer->hasPendingActivity());
342 } 342 }
343 343
344 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) 344 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer)
345 { 345 {
346 Checkpoint checkpoint; 346 Checkpoint checkpoint;
347 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 347 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
348 348
349 InSequence s; 349 InSequence s;
350 EXPECT_CALL(checkpoint, Call(1)); 350 EXPECT_CALL(checkpoint, Call(1));
351 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); 351 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello")));
352 EXPECT_CALL(checkpoint, Call(2)); 352 EXPECT_CALL(checkpoint, Call(2));
353 353
354 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); 354 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create();
355 handle->add(Command(Command::Data, "hello")); 355 handle->add(Command(Command::Data, "hello"));
356 handle->add(Command(Command::Done)); 356 handle->add(Command(Command::Done));
357 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(handle.release())); 357 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(createFetchDataCo nsumerHandleFromWebHandle(handle.release()));
358 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 358 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS tring(), client);
359 359
360 ThreadHeap::collectAllGarbage(); 360 ThreadHeap::collectAllGarbage();
361 checkpoint.Call(1); 361 checkpoint.Call(1);
362 testing::runPendingTasks(); 362 testing::runPendingTasks();
363 checkpoint.Call(2); 363 checkpoint.Call(2);
364 } 364 }
365 365
366 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle. 366 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle.
367 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT estUtil::MockFetchDataConsumerHandle { 367 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT estUtil::MockFetchDataConsumerHandle {
368 public: 368 public:
(...skipping 20 matching lines...) Expand all
389 389
390 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea der.get())); 390 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea der.get()));
391 EXPECT_CALL(checkpoint, Call(1)); 391 EXPECT_CALL(checkpoint, Call(1));
392 EXPECT_CALL(*reader, destruct()); 392 EXPECT_CALL(*reader, destruct());
393 EXPECT_CALL(*handle, destruct()); 393 EXPECT_CALL(*handle, destruct());
394 EXPECT_CALL(checkpoint, Call(2)); 394 EXPECT_CALL(checkpoint, Call(2));
395 395
396 // |reader| is adopted by |obtainReader|. 396 // |reader| is adopted by |obtainReader|.
397 ASSERT_TRUE(reader.leakPtr()); 397 ASSERT_TRUE(reader.leakPtr());
398 398
399 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel ease()); 399 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release());
400 checkpoint.Call(1); 400 checkpoint.Call(1);
401 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), " reason")); 401 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), " reason"));
402 buffer->cancelSource(getScriptState(), reason); 402 buffer->cancelSource(getScriptState(), reason);
403 checkpoint.Call(2); 403 checkpoint.Call(2);
404 } 404 }
405 405
406 } // namespace 406 } // namespace
407 407
408 } // namespace blink 408 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp ('k') | third_party/WebKit/Source/modules/fetch/FetchManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698