Chromium Code Reviews| 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 |