 Chromium Code Reviews
 Chromium Code Reviews Issue 1233573002:
  [Fetch API] Remove DrainingBuffer.  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk
    
  
    Issue 1233573002:
  [Fetch API] Remove DrainingBuffer.  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk| OLD | NEW | 
|---|---|
| 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 Loading... | |
| 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 | 
| OLD | NEW |