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

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, 5 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 void* buffer = response->internalBodyBuffer();
hiroshige 2015/07/24 12:47:03 optional: should we add ASSERT_TRUE(response->body
yhirano 2015/07/29 08:45:02 I think we cannot place ASSERT_* here.
158 if (checkResponseBodyStreamBuffer) { 151 if (checkResponseBodyStreamBuffer) {
159 EXPECT_EQ(response->bufferForTest(), buffer); 152 EXPECT_EQ(response->bodyBuffer(), buffer);
160 } else { 153 } else {
161 EXPECT_FALSE(response->bufferForTest()); 154 EXPECT_FALSE(response->bodyBuffer()->hasBody());
162 } 155 }
163 156
164 TrackExceptionState exceptionState; 157 TrackExceptionState exceptionState;
165 Response* clonedResponse = response->clone(exceptionState); 158 Response* clonedResponse = response->clone(exceptionState);
166 EXPECT_FALSE(exceptionState.hadException()); 159 EXPECT_FALSE(exceptionState.hadException());
167 160
168 EXPECT_TRUE(response->internalBufferForTest()); 161 EXPECT_TRUE(response->internalBodyBuffer());
169 EXPECT_TRUE(clonedResponse->internalBufferForTest()); 162 EXPECT_TRUE(clonedResponse->internalBodyBuffer());
hiroshige 2015/07/24 12:47:03 Should we also add EXPECT_TRUE(response|clonedResp
yhirano 2015/07/29 08:45:02 Done.
170 EXPECT_NE(response->internalBufferForTest(), buffer); 163 EXPECT_NE(response->internalBodyBuffer(), buffer);
171 EXPECT_NE(clonedResponse->internalBufferForTest(), buffer); 164 EXPECT_NE(clonedResponse->internalBodyBuffer(), buffer);
172 EXPECT_NE(response->internalBufferForTest(), clonedResponse->internalBufferF orTest()); 165 EXPECT_NE(response->internalBodyBuffer(), clonedResponse->internalBodyBuffer ());
173 if (checkResponseBodyStreamBuffer) { 166 if (checkResponseBodyStreamBuffer) {
174 EXPECT_EQ(response->bufferForTest(), response->internalBufferForTest()); 167 EXPECT_EQ(response->bodyBuffer(), response->internalBodyBuffer());
175 EXPECT_EQ(clonedResponse->bufferForTest(), clonedResponse->internalBuffe rForTest()); 168 EXPECT_EQ(clonedResponse->bodyBuffer(), clonedResponse->internalBodyBuff er());
176 } else { 169 } else {
177 EXPECT_FALSE(response->bufferForTest()); 170 EXPECT_FALSE(response->bodyBuffer()->hasBody());
178 EXPECT_FALSE(clonedResponse->bufferForTest()); 171 EXPECT_FALSE(clonedResponse->bodyBuffer()->hasBody());
179 } 172 }
180 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 173 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
181 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 174 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
182 EXPECT_CALL(*client1, didFetchDataLoadedString(String("Hello, world"))); 175 EXPECT_CALL(*client1, didFetchDataLoadedString(String("Hello, world")));
183 EXPECT_CALL(*client2, didFetchDataLoadedString(String("Hello, world"))); 176 EXPECT_CALL(*client2, didFetchDataLoadedString(String("Hello, world")));
184 177
185 loadInternalBufferAsString(response, client1); 178 response->internalBodyBuffer()->startLoading(response->executionContext(), F etchDataLoader::createLoaderAsString(), client1);
186 loadInternalBufferAsString(clonedResponse, client2); 179 clonedResponse->internalBodyBuffer()->startLoading(response->executionContex t(), FetchDataLoader::createLoaderAsString(), client2);
187 blink::testing::runPendingTasks(); 180 blink::testing::runPendingTasks();
188 } 181 }
189 182
190 BodyStreamBuffer* createHelloWorldBuffer() 183 BodyStreamBuffer* createHelloWorldBuffer()
191 { 184 {
192 using Command = DataConsumerHandleTestUtil::Command; 185 using Command = DataConsumerHandleTestUtil::Command;
193 OwnPtr<DataConsumerHandleTestUtil::ReplayingHandle> src(DataConsumerHandleTe stUtil::ReplayingHandle::create()); 186 OwnPtr<DataConsumerHandleTestUtil::ReplayingHandle> src(DataConsumerHandleTe stUtil::ReplayingHandle::create());
194 src->add(Command(Command::Data, "Hello, ")); 187 src->add(Command(Command::Data, "Hello, "));
195 src->add(Command(Command::Data, "world")); 188 src->add(Command(Command::Data, "world"));
196 src->add(Command(Command::Done)); 189 src->add(Command(Command::Done));
197 return BodyStreamBuffer::create(createFetchDataConsumerHandleFromWebHandle(s rc.release())); 190 return new BodyStreamBuffer(createFetchDataConsumerHandleFromWebHandle(src.r elease()));
198 } 191 }
199 192
200 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) 193 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault)
201 { 194 {
202 BodyStreamBuffer* buffer = createHelloWorldBuffer(); 195 BodyStreamBuffer* buffer = createHelloWorldBuffer();
203 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 196 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
204 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 197 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
205 Response* response = Response::create(executionContext(), fetchResponseData) ; 198 Response* response = Response::create(executionContext(), fetchResponseData) ;
206 EXPECT_EQ(response->internalBufferForTest(), buffer); 199 EXPECT_EQ(response->internalBodyBuffer(), buffer);
207 checkResponseStream(response, true); 200 checkResponseStream(response, true);
208 } 201 }
209 202
210 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic) 203 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic)
211 { 204 {
212 BodyStreamBuffer* buffer = createHelloWorldBuffer(); 205 BodyStreamBuffer* buffer = createHelloWorldBuffer();
213 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 206 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
214 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 207 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
215 fetchResponseData = fetchResponseData->createBasicFilteredResponse(); 208 fetchResponseData = fetchResponseData->createBasicFilteredResponse();
216 Response* response = Response::create(executionContext(), fetchResponseData) ; 209 Response* response = Response::create(executionContext(), fetchResponseData) ;
217 EXPECT_EQ(response->internalBufferForTest(), buffer); 210 EXPECT_EQ(response->internalBodyBuffer(), buffer);
218 checkResponseStream(response, true); 211 checkResponseStream(response, true);
219 } 212 }
220 213
221 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS) 214 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS)
222 { 215 {
223 BodyStreamBuffer* buffer = createHelloWorldBuffer(); 216 BodyStreamBuffer* buffer = createHelloWorldBuffer();
224 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 217 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
225 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 218 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
226 fetchResponseData = fetchResponseData->createCORSFilteredResponse(); 219 fetchResponseData = fetchResponseData->createCORSFilteredResponse();
227 Response* response = Response::create(executionContext(), fetchResponseData) ; 220 Response* response = Response::create(executionContext(), fetchResponseData) ;
228 EXPECT_EQ(response->internalBufferForTest(), buffer); 221 EXPECT_EQ(response->internalBodyBuffer(), buffer);
229 checkResponseStream(response, true); 222 checkResponseStream(response, true);
230 } 223 }
231 224
232 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque) 225 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque)
233 { 226 {
234 BodyStreamBuffer* buffer = createHelloWorldBuffer(); 227 BodyStreamBuffer* buffer = createHelloWorldBuffer();
235 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 228 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
236 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 229 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
237 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse(); 230 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse();
238 Response* response = Response::create(executionContext(), fetchResponseData) ; 231 Response* response = Response::create(executionContext(), fetchResponseData) ;
239 EXPECT_EQ(response->internalBufferForTest(), buffer); 232 EXPECT_EQ(response->internalBodyBuffer(), buffer);
240 checkResponseStream(response, false); 233 checkResponseStream(response, false);
241 } 234 }
242 235
243 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneError) 236 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneError)
244 { 237 {
245 BodyStreamBuffer* buffer = BodyStreamBuffer::create(createFetchDataConsumerH andleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 238 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl eFromWebHandle(createUnexpectedErrorDataConsumerHandle()));
246 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 239 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
247 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 240 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
248 Response* response = Response::create(executionContext(), fetchResponseData) ; 241 Response* response = Response::create(executionContext(), fetchResponseData) ;
249 TrackExceptionState exceptionState; 242 TrackExceptionState exceptionState;
250 Response* clonedResponse = response->clone(exceptionState); 243 Response* clonedResponse = response->clone(exceptionState);
251 EXPECT_FALSE(exceptionState.hadException()); 244 EXPECT_FALSE(exceptionState.hadException());
252 245
253 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 246 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
254 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 247 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
255 EXPECT_CALL(*client1, didFetchDataLoadFailed()); 248 EXPECT_CALL(*client1, didFetchDataLoadFailed());
256 EXPECT_CALL(*client2, didFetchDataLoadFailed()); 249 EXPECT_CALL(*client2, didFetchDataLoadFailed());
257 250
258 loadInternalBufferAsString(response, client1); 251 response->internalBodyBuffer()->startLoading(response->executionContext(), F etchDataLoader::createLoaderAsString(), client1);
259 loadInternalBufferAsString(clonedResponse, client2); 252 clonedResponse->internalBodyBuffer()->startLoading(response->executionContex t(), FetchDataLoader::createLoaderAsString(), client2);
260 blink::testing::runPendingTasks(); 253 blink::testing::runPendingTasks();
261 } 254 }
262 255
263 } // namespace 256 } // namespace
264 } // namespace blink 257 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698