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

Side by Side Diff: Source/modules/fetch/ResponseTest.cpp

Issue 1233573002: [Fetch API] Remove DrainingBuffer. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
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 "config.h" 5 #include "config.h"
6 #include "modules/fetch/Response.h" 6 #include "modules/fetch/Response.h"
7 7
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "core/dom/Document.h" 10 #include "core/dom/Document.h"
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 Response* response = Response::create(executionContext(), *webResponse); 138 Response* response = Response::create(executionContext(), *webResponse);
139 139
140 Headers* responseHeaders = response->headers(); 140 Headers* responseHeaders = response->headers();
141 TrackExceptionState exceptionState; 141 TrackExceptionState exceptionState;
142 EXPECT_STREQ("", responseHeaders->get("set-cookie", exceptionState).utf8().d ata()); 142 EXPECT_STREQ("", responseHeaders->get("set-cookie", exceptionState).utf8().d ata());
143 EXPECT_STREQ("", responseHeaders->get("foo", exceptionState).utf8().data()); 143 EXPECT_STREQ("", responseHeaders->get("foo", exceptionState).utf8().data());
144 EXPECT_STREQ("", responseHeaders->get("cache-control", exceptionState).utf8( ).data()); 144 EXPECT_STREQ("", responseHeaders->get("cache-control", exceptionState).utf8( ).data());
145 EXPECT_FALSE(exceptionState.hadException()); 145 EXPECT_FALSE(exceptionState.hadException());
146 } 146 }
147 147
148 void loadInternalBufferAsString(Response* response, FetchDataLoader::Client* cli ent)
149 {
150 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString();
151 OwnPtr<DrainingBodyStreamBuffer> buffer = response->createInternalDrainingSt ream();
152 buffer->startLoading(fetchDataLoader, client);
153 }
154
155 void checkResponseStream(Response* response, bool checkResponseBodyStreamBuffer) 148 void checkResponseStream(Response* response, bool checkResponseBodyStreamBuffer)
156 { 149 {
157 void* buffer = response->internalBufferForTest(); 150 if (!response->bodyBuffer())
151 FAIL() << "bodyBuffer() must not be null.";
152 BodyStreamBuffer* originalInternal = response->internalBodyBuffer();
158 if (checkResponseBodyStreamBuffer) { 153 if (checkResponseBodyStreamBuffer) {
159 EXPECT_EQ(response->bufferForTest(), buffer); 154 EXPECT_EQ(response->bodyBuffer(), originalInternal);
160 } else { 155 } else {
161 EXPECT_FALSE(response->bufferForTest()); 156 EXPECT_FALSE(response->bodyBuffer()->hasBody());
162 } 157 }
163 158
164 TrackExceptionState exceptionState; 159 TrackExceptionState exceptionState;
165 Response* clonedResponse = response->clone(exceptionState); 160 Response* clonedResponse = response->clone(exceptionState);
166 EXPECT_FALSE(exceptionState.hadException()); 161 EXPECT_FALSE(exceptionState.hadException());
167 162
168 EXPECT_TRUE(response->internalBufferForTest()); 163 if (!response->internalBodyBuffer())
169 EXPECT_TRUE(clonedResponse->internalBufferForTest()); 164 FAIL() << "internalBodyBuffer() must not be null.";
170 EXPECT_NE(response->internalBufferForTest(), buffer); 165 if (!clonedResponse->internalBodyBuffer())
171 EXPECT_NE(clonedResponse->internalBufferForTest(), buffer); 166 FAIL() << "internalBodyBuffer() must not be null.";
172 EXPECT_NE(response->internalBufferForTest(), clonedResponse->internalBufferF orTest()); 167 EXPECT_TRUE(response->internalBodyBuffer());
168 EXPECT_TRUE(clonedResponse->internalBodyBuffer());
169 EXPECT_TRUE(response->internalBodyBuffer()->hasBody());
170 EXPECT_TRUE(clonedResponse->internalBodyBuffer()->hasBody());
171 EXPECT_NE(response->internalBodyBuffer(), originalInternal);
172 EXPECT_NE(clonedResponse->internalBodyBuffer(), originalInternal);
173 EXPECT_NE(response->internalBodyBuffer(), clonedResponse->internalBodyBuffer ());
173 if (checkResponseBodyStreamBuffer) { 174 if (checkResponseBodyStreamBuffer) {
174 EXPECT_EQ(response->bufferForTest(), response->internalBufferForTest()); 175 EXPECT_EQ(response->bodyBuffer(), response->internalBodyBuffer());
175 EXPECT_EQ(clonedResponse->bufferForTest(), clonedResponse->internalBuffe rForTest()); 176 EXPECT_EQ(clonedResponse->bodyBuffer(), clonedResponse->internalBodyBuff er());
176 } else { 177 } else {
177 EXPECT_FALSE(response->bufferForTest()); 178 EXPECT_FALSE(response->bodyBuffer()->hasBody());
178 EXPECT_FALSE(clonedResponse->bufferForTest()); 179 EXPECT_FALSE(clonedResponse->bodyBuffer()->hasBody());
179 } 180 }
180 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 181 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
181 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 182 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
182 EXPECT_CALL(*client1, didFetchDataLoadedString(String("Hello, world"))); 183 EXPECT_CALL(*client1, didFetchDataLoadedString(String("Hello, world")));
183 EXPECT_CALL(*client2, didFetchDataLoadedString(String("Hello, world"))); 184 EXPECT_CALL(*client2, didFetchDataLoadedString(String("Hello, world")));
184 185
185 loadInternalBufferAsString(response, client1); 186 response->internalBodyBuffer()->startLoading(response->executionContext(), F etchDataLoader::createLoaderAsString(), client1);
186 loadInternalBufferAsString(clonedResponse, client2); 187 clonedResponse->internalBodyBuffer()->startLoading(response->executionContex t(), FetchDataLoader::createLoaderAsString(), client2);
187 blink::testing::runPendingTasks(); 188 blink::testing::runPendingTasks();
188 } 189 }
189 190
190 BodyStreamBuffer* createHelloWorldBuffer() 191 BodyStreamBuffer* createHelloWorldBuffer()
191 { 192 {
192 using Command = DataConsumerHandleTestUtil::Command; 193 using Command = DataConsumerHandleTestUtil::Command;
193 OwnPtr<DataConsumerHandleTestUtil::ReplayingHandle> src(DataConsumerHandleTe stUtil::ReplayingHandle::create()); 194 OwnPtr<DataConsumerHandleTestUtil::ReplayingHandle> src(DataConsumerHandleTe stUtil::ReplayingHandle::create());
194 src->add(Command(Command::Data, "Hello, ")); 195 src->add(Command(Command::Data, "Hello, "));
195 src->add(Command(Command::Data, "world")); 196 src->add(Command(Command::Data, "world"));
196 src->add(Command(Command::Done)); 197 src->add(Command(Command::Done));
197 return BodyStreamBuffer::create(createFetchDataConsumerHandleFromWebHandle(s rc.release())); 198 return new BodyStreamBuffer(createFetchDataConsumerHandleFromWebHandle(src.r elease()));
198 } 199 }
199 200
200 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) 201 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault)
201 { 202 {
202 BodyStreamBuffer* buffer = createHelloWorldBuffer(); 203 BodyStreamBuffer* buffer = createHelloWorldBuffer();
203 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 204 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
204 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 205 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
205 Response* response = Response::create(executionContext(), fetchResponseData) ; 206 Response* response = Response::create(executionContext(), fetchResponseData) ;
206 EXPECT_EQ(response->internalBufferForTest(), buffer); 207 EXPECT_EQ(response->internalBodyBuffer(), buffer);
207 checkResponseStream(response, true); 208 checkResponseStream(response, true);
208 } 209 }
209 210
210 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic) 211 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic)
211 { 212 {
212 BodyStreamBuffer* buffer = createHelloWorldBuffer(); 213 BodyStreamBuffer* buffer = createHelloWorldBuffer();
213 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 214 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
214 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 215 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
215 fetchResponseData = fetchResponseData->createBasicFilteredResponse(); 216 fetchResponseData = fetchResponseData->createBasicFilteredResponse();
216 Response* response = Response::create(executionContext(), fetchResponseData) ; 217 Response* response = Response::create(executionContext(), fetchResponseData) ;
217 EXPECT_EQ(response->internalBufferForTest(), buffer); 218 EXPECT_EQ(response->internalBodyBuffer(), buffer);
218 checkResponseStream(response, true); 219 checkResponseStream(response, true);
219 } 220 }
220 221
221 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS) 222 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS)
222 { 223 {
223 BodyStreamBuffer* buffer = createHelloWorldBuffer(); 224 BodyStreamBuffer* buffer = createHelloWorldBuffer();
224 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 225 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
225 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 226 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
226 fetchResponseData = fetchResponseData->createCORSFilteredResponse(); 227 fetchResponseData = fetchResponseData->createCORSFilteredResponse();
227 Response* response = Response::create(executionContext(), fetchResponseData) ; 228 Response* response = Response::create(executionContext(), fetchResponseData) ;
228 EXPECT_EQ(response->internalBufferForTest(), buffer); 229 EXPECT_EQ(response->internalBodyBuffer(), buffer);
229 checkResponseStream(response, true); 230 checkResponseStream(response, true);
230 } 231 }
231 232
232 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque) 233 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque)
233 { 234 {
234 BodyStreamBuffer* buffer = createHelloWorldBuffer(); 235 BodyStreamBuffer* buffer = createHelloWorldBuffer();
235 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 236 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
236 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 237 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
237 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse(); 238 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse();
238 Response* response = Response::create(executionContext(), fetchResponseData) ; 239 Response* response = Response::create(executionContext(), fetchResponseData) ;
239 EXPECT_EQ(response->internalBufferForTest(), buffer); 240 EXPECT_EQ(response->internalBodyBuffer(), buffer);
240 checkResponseStream(response, false); 241 checkResponseStream(response, false);
241 } 242 }
242 243
243 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneError) 244 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneError)
244 { 245 {
245 BodyStreamBuffer* buffer = BodyStreamBuffer::create(createFetchDataConsumerH andleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 246 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createUnexpectedErrorDataConsumerHandle()));
246 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 247 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
247 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 248 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
248 Response* response = Response::create(executionContext(), fetchResponseData) ; 249 Response* response = Response::create(executionContext(), fetchResponseData) ;
249 TrackExceptionState exceptionState; 250 TrackExceptionState exceptionState;
250 Response* clonedResponse = response->clone(exceptionState); 251 Response* clonedResponse = response->clone(exceptionState);
251 EXPECT_FALSE(exceptionState.hadException()); 252 EXPECT_FALSE(exceptionState.hadException());
252 253
253 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 254 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
254 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 255 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
255 EXPECT_CALL(*client1, didFetchDataLoadFailed()); 256 EXPECT_CALL(*client1, didFetchDataLoadFailed());
256 EXPECT_CALL(*client2, didFetchDataLoadFailed()); 257 EXPECT_CALL(*client2, didFetchDataLoadFailed());
257 258
258 loadInternalBufferAsString(response, client1); 259 response->internalBodyBuffer()->startLoading(response->executionContext(), F etchDataLoader::createLoaderAsString(), client1);
259 loadInternalBufferAsString(clonedResponse, client2); 260 clonedResponse->internalBodyBuffer()->startLoading(response->executionContex t(), FetchDataLoader::createLoaderAsString(), client2);
260 blink::testing::runPendingTasks(); 261 blink::testing::runPendingTasks();
261 } 262 }
262 263
263 } // namespace 264 } // namespace
264 } // namespace blink 265 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/fetch/Response.cpp ('k') | Source/modules/serviceworkers/RespondWithObserver.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698