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

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

Issue 2141383002: [Fetch API] Remove HandleScope to protect local handles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 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
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/Response.h" 5 #include "modules/fetch/Response.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/ScriptState.h" 8 #include "bindings/core/v8/ScriptState.h"
9 #include "core/dom/Document.h" 9 #include "core/dom/Document.h"
10 #include "core/frame/Frame.h" 10 #include "core/frame/Frame.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 FetchResponseData* fetchResponseData = FetchResponseData::create(); 63 FetchResponseData* fetchResponseData = FetchResponseData::create();
64 fetchResponseData->setURL(url); 64 fetchResponseData->setURL(url);
65 65
66 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta); 66 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta);
67 ASSERT(response); 67 ASSERT(response);
68 EXPECT_EQ(url, response->url()); 68 EXPECT_EQ(url, response->url());
69 } 69 }
70 70
71 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponse) 71 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponse)
72 { 72 {
73 ScriptState::Scope scope(getScriptState());
73 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse(); 74 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse();
74 Response* response = Response::create(getScriptState(), *webResponse); 75 Response* response = Response::create(getScriptState(), *webResponse);
75 ASSERT(response); 76 ASSERT(response);
76 EXPECT_EQ(webResponse->url(), response->url()); 77 EXPECT_EQ(webResponse->url(), response->url());
77 EXPECT_EQ(webResponse->status(), response->status()); 78 EXPECT_EQ(webResponse->status(), response->status());
78 EXPECT_STREQ(webResponse->statusText().utf8().c_str(), response->statusText( ).utf8().data()); 79 EXPECT_STREQ(webResponse->statusText().utf8().c_str(), response->statusText( ).utf8().data());
79 80
80 Headers* responseHeaders = response->headers(); 81 Headers* responseHeaders = response->headers();
81 82
82 WebVector<WebString> keys = webResponse->getHeaderKeys(); 83 WebVector<WebString> keys = webResponse->getHeaderKeys();
83 EXPECT_EQ(keys.size(), responseHeaders->headerList()->size()); 84 EXPECT_EQ(keys.size(), responseHeaders->headerList()->size());
84 for (size_t i = 0, max = keys.size(); i < max; ++i) { 85 for (size_t i = 0, max = keys.size(); i < max; ++i) {
85 WebString key = keys[i]; 86 WebString key = keys[i];
86 TrackExceptionState exceptionState; 87 TrackExceptionState exceptionState;
87 EXPECT_STREQ(webResponse->getHeader(key).utf8().c_str(), responseHeaders ->get(key, exceptionState).utf8().data()); 88 EXPECT_STREQ(webResponse->getHeader(key).utf8().c_str(), responseHeaders ->get(key, exceptionState).utf8().data());
88 EXPECT_FALSE(exceptionState.hadException()); 89 EXPECT_FALSE(exceptionState.hadException());
89 } 90 }
90 } 91 }
91 92
92 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponseDefault) 93 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponseDefault)
93 { 94 {
95 ScriptState::Scope scope(getScriptState());
94 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse(); 96 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse();
95 webResponse->setResponseType(WebServiceWorkerResponseTypeDefault); 97 webResponse->setResponseType(WebServiceWorkerResponseTypeDefault);
96 Response* response = Response::create(getScriptState(), *webResponse); 98 Response* response = Response::create(getScriptState(), *webResponse);
97 99
98 Headers* responseHeaders = response->headers(); 100 Headers* responseHeaders = response->headers();
99 TrackExceptionState exceptionState; 101 TrackExceptionState exceptionState;
100 EXPECT_STREQ("foop", responseHeaders->get("set-cookie", exceptionState).utf8 ().data()); 102 EXPECT_STREQ("foop", responseHeaders->get("set-cookie", exceptionState).utf8 ().data());
101 EXPECT_STREQ("bar", responseHeaders->get("foo", exceptionState).utf8().data( )); 103 EXPECT_STREQ("bar", responseHeaders->get("foo", exceptionState).utf8().data( ));
102 EXPECT_STREQ("no-cache", responseHeaders->get("cache-control", exceptionStat e).utf8().data()); 104 EXPECT_STREQ("no-cache", responseHeaders->get("cache-control", exceptionStat e).utf8().data());
103 EXPECT_FALSE(exceptionState.hadException()); 105 EXPECT_FALSE(exceptionState.hadException());
104 } 106 }
105 107
106 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponseBasic) 108 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponseBasic)
107 { 109 {
110 ScriptState::Scope scope(getScriptState());
108 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse(); 111 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse();
109 webResponse->setResponseType(WebServiceWorkerResponseTypeBasic); 112 webResponse->setResponseType(WebServiceWorkerResponseTypeBasic);
110 Response* response = Response::create(getScriptState(), *webResponse); 113 Response* response = Response::create(getScriptState(), *webResponse);
111 114
112 Headers* responseHeaders = response->headers(); 115 Headers* responseHeaders = response->headers();
113 TrackExceptionState exceptionState; 116 TrackExceptionState exceptionState;
114 EXPECT_STREQ("", responseHeaders->get("set-cookie", exceptionState).utf8().d ata()); 117 EXPECT_STREQ("", responseHeaders->get("set-cookie", exceptionState).utf8().d ata());
115 EXPECT_STREQ("bar", responseHeaders->get("foo", exceptionState).utf8().data( )); 118 EXPECT_STREQ("bar", responseHeaders->get("foo", exceptionState).utf8().data( ));
116 EXPECT_STREQ("no-cache", responseHeaders->get("cache-control", exceptionStat e).utf8().data()); 119 EXPECT_STREQ("no-cache", responseHeaders->get("cache-control", exceptionStat e).utf8().data());
117 EXPECT_FALSE(exceptionState.hadException()); 120 EXPECT_FALSE(exceptionState.hadException());
118 } 121 }
119 122
120 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponseCORS) 123 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponseCORS)
121 { 124 {
125 ScriptState::Scope scope(getScriptState());
122 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse(); 126 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse();
123 webResponse->setResponseType(WebServiceWorkerResponseTypeCORS); 127 webResponse->setResponseType(WebServiceWorkerResponseTypeCORS);
124 Response* response = Response::create(getScriptState(), *webResponse); 128 Response* response = Response::create(getScriptState(), *webResponse);
125 129
126 Headers* responseHeaders = response->headers(); 130 Headers* responseHeaders = response->headers();
127 TrackExceptionState exceptionState; 131 TrackExceptionState exceptionState;
128 EXPECT_STREQ("", responseHeaders->get("set-cookie", exceptionState).utf8().d ata()); 132 EXPECT_STREQ("", responseHeaders->get("set-cookie", exceptionState).utf8().d ata());
129 EXPECT_STREQ("", responseHeaders->get("foo", exceptionState).utf8().data()); 133 EXPECT_STREQ("", responseHeaders->get("foo", exceptionState).utf8().data());
130 EXPECT_STREQ("no-cache", responseHeaders->get("cache-control", exceptionStat e).utf8().data()); 134 EXPECT_STREQ("no-cache", responseHeaders->get("cache-control", exceptionStat e).utf8().data());
131 EXPECT_FALSE(exceptionState.hadException()); 135 EXPECT_FALSE(exceptionState.hadException());
132 } 136 }
133 137
134 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponseOpaque) 138 TEST_F(ServiceWorkerResponseTest, FromWebServiceWorkerResponseOpaque)
135 { 139 {
140 ScriptState::Scope scope(getScriptState());
136 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse(); 141 std::unique_ptr<WebServiceWorkerResponse> webResponse = createTestWebService WorkerResponse();
137 webResponse->setResponseType(WebServiceWorkerResponseTypeOpaque); 142 webResponse->setResponseType(WebServiceWorkerResponseTypeOpaque);
138 Response* response = Response::create(getScriptState(), *webResponse); 143 Response* response = Response::create(getScriptState(), *webResponse);
139 144
140 Headers* responseHeaders = response->headers(); 145 Headers* responseHeaders = response->headers();
141 TrackExceptionState exceptionState; 146 TrackExceptionState exceptionState;
142 EXPECT_STREQ("", responseHeaders->get("set-cookie", exceptionState).utf8().d ata()); 147 EXPECT_STREQ("", responseHeaders->get("set-cookie", exceptionState).utf8().d ata());
143 EXPECT_STREQ("", responseHeaders->get("foo", exceptionState).utf8().data()); 148 EXPECT_STREQ("", responseHeaders->get("foo", exceptionState).utf8().data());
144 EXPECT_STREQ("", responseHeaders->get("cache-control", exceptionState).utf8( ).data()); 149 EXPECT_STREQ("", responseHeaders->get("cache-control", exceptionState).utf8( ).data());
145 EXPECT_FALSE(exceptionState.hadException()); 150 EXPECT_FALSE(exceptionState.hadException());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 using Command = DataConsumerHandleTestUtil::Command; 196 using Command = DataConsumerHandleTestUtil::Command;
192 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> src(DataConsume rHandleTestUtil::ReplayingHandle::create()); 197 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> src(DataConsume rHandleTestUtil::ReplayingHandle::create());
193 src->add(Command(Command::Data, "Hello, ")); 198 src->add(Command(Command::Data, "Hello, "));
194 src->add(Command(Command::Data, "world")); 199 src->add(Command(Command::Data, "world"));
195 src->add(Command(Command::Done)); 200 src->add(Command(Command::Done));
196 return new BodyStreamBuffer(scriptState, createFetchDataConsumerHandleFromWe bHandle(std::move(src))); 201 return new BodyStreamBuffer(scriptState, createFetchDataConsumerHandleFromWe bHandle(std::move(src)));
197 } 202 }
198 203
199 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) 204 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault)
200 { 205 {
206 ScriptState::Scope scope(getScriptState());
201 BodyStreamBuffer* buffer = createHelloWorldBuffer(getScriptState()); 207 BodyStreamBuffer* buffer = createHelloWorldBuffer(getScriptState());
202 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 208 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
203 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 209 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
204 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta); 210 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta);
205 EXPECT_EQ(response->internalBodyBuffer(), buffer); 211 EXPECT_EQ(response->internalBodyBuffer(), buffer);
206 checkResponseStream(getScriptState(), response, true); 212 checkResponseStream(getScriptState(), response, true);
207 } 213 }
208 214
209 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic) 215 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic)
210 { 216 {
217 ScriptState::Scope scope(getScriptState());
211 BodyStreamBuffer* buffer = createHelloWorldBuffer(getScriptState()); 218 BodyStreamBuffer* buffer = createHelloWorldBuffer(getScriptState());
212 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 219 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
213 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 220 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
214 fetchResponseData = fetchResponseData->createBasicFilteredResponse(); 221 fetchResponseData = fetchResponseData->createBasicFilteredResponse();
215 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta); 222 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta);
216 EXPECT_EQ(response->internalBodyBuffer(), buffer); 223 EXPECT_EQ(response->internalBodyBuffer(), buffer);
217 checkResponseStream(getScriptState(), response, true); 224 checkResponseStream(getScriptState(), response, true);
218 } 225 }
219 226
220 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS) 227 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS)
221 { 228 {
229 ScriptState::Scope scope(getScriptState());
222 BodyStreamBuffer* buffer = createHelloWorldBuffer(getScriptState()); 230 BodyStreamBuffer* buffer = createHelloWorldBuffer(getScriptState());
223 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 231 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
224 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 232 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
225 fetchResponseData = fetchResponseData->createCORSFilteredResponse(); 233 fetchResponseData = fetchResponseData->createCORSFilteredResponse();
226 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta); 234 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta);
227 EXPECT_EQ(response->internalBodyBuffer(), buffer); 235 EXPECT_EQ(response->internalBodyBuffer(), buffer);
228 checkResponseStream(getScriptState(), response, true); 236 checkResponseStream(getScriptState(), response, true);
229 } 237 }
230 238
231 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque) 239 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque)
232 { 240 {
241 ScriptState::Scope scope(getScriptState());
233 BodyStreamBuffer* buffer = createHelloWorldBuffer(getScriptState()); 242 BodyStreamBuffer* buffer = createHelloWorldBuffer(getScriptState());
234 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 243 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
235 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 244 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
236 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse(); 245 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse();
237 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta); 246 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta);
238 EXPECT_EQ(response->internalBodyBuffer(), buffer); 247 EXPECT_EQ(response->internalBodyBuffer(), buffer);
239 checkResponseStream(getScriptState(), response, false); 248 checkResponseStream(getScriptState(), response, false);
240 } 249 }
241 250
242 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneError) 251 TEST_F(ServiceWorkerResponseTest, BodyStreamBufferCloneError)
243 { 252 {
253 ScriptState::Scope scope(getScriptState());
244 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 254 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()));
245 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer); 255 FetchResponseData* fetchResponseData = FetchResponseData::createWithBuffer(b uffer);
246 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 256 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com"));
247 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta); 257 Response* response = Response::create(getExecutionContext(), fetchResponseDa ta);
248 TrackExceptionState exceptionState; 258 TrackExceptionState exceptionState;
249 Response* clonedResponse = response->clone(getScriptState(), exceptionState) ; 259 Response* clonedResponse = response->clone(getScriptState(), exceptionState) ;
250 EXPECT_FALSE(exceptionState.hadException()); 260 EXPECT_FALSE(exceptionState.hadException());
251 261
252 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 262 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client1 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
253 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient(); 263 DataConsumerHandleTestUtil::MockFetchDataLoaderClient* client2 = new DataCon sumerHandleTestUtil::MockFetchDataLoaderClient();
254 EXPECT_CALL(*client1, didFetchDataLoadFailed()); 264 EXPECT_CALL(*client1, didFetchDataLoadFailed());
255 EXPECT_CALL(*client2, didFetchDataLoadFailed()); 265 EXPECT_CALL(*client2, didFetchDataLoadFailed());
256 266
257 response->internalBodyBuffer()->startLoading(FetchDataLoader::createLoaderAs String(), client1); 267 response->internalBodyBuffer()->startLoading(FetchDataLoader::createLoaderAs String(), client1);
258 clonedResponse->internalBodyBuffer()->startLoading(FetchDataLoader::createLo aderAsString(), client2); 268 clonedResponse->internalBodyBuffer()->startLoading(FetchDataLoader::createLo aderAsString(), client2);
259 blink::testing::runPendingTasks(); 269 blink::testing::runPendingTasks();
260 } 270 }
261 271
262 } // namespace 272 } // namespace
263 } // namespace blink 273 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698