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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 | 184 |
185 // First test a main frame request. | 185 // First test a main frame request. |
186 { | 186 { |
187 // It doesn't matter that the resource doesn't exist. If the resource | 187 // It doesn't matter that the resource doesn't exist. If the resource |
188 // is blocked, we should see ADDRESS_UNREACHABLE. Otherwise, the request | 188 // is blocked, we should see ADDRESS_UNREACHABLE. Otherwise, the request |
189 // should just fail because the file doesn't exist. | 189 // should just fail because the file doesn't exist. |
190 scoped_ptr<net::URLRequest> request( | 190 scoped_ptr<net::URLRequest> request( |
191 resource_context_.GetRequestContext()->CreateRequest( | 191 resource_context_.GetRequestContext()->CreateRequest( |
192 extension->GetResourceURL("404.html"), | 192 extension->GetResourceURL("404.html"), |
193 net::DEFAULT_PRIORITY, | 193 net::DEFAULT_PRIORITY, |
194 &test_delegate_, | 194 &test_delegate_)); |
195 NULL)); | |
196 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); | 195 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); |
197 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); | 196 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); |
198 | 197 |
199 if (cases[i].should_allow_main_frame_load) { | 198 if (cases[i].should_allow_main_frame_load) { |
200 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) << | 199 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) << |
201 cases[i].name; | 200 cases[i].name; |
202 } else { | 201 } else { |
203 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) << | 202 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) << |
204 cases[i].name; | 203 cases[i].name; |
205 } | 204 } |
206 } | 205 } |
207 | 206 |
208 // Now do a subframe request. | 207 // Now do a subframe request. |
209 { | 208 { |
210 scoped_ptr<net::URLRequest> request( | 209 scoped_ptr<net::URLRequest> request( |
211 resource_context_.GetRequestContext()->CreateRequest( | 210 resource_context_.GetRequestContext()->CreateRequest( |
212 extension->GetResourceURL("404.html"), | 211 extension->GetResourceURL("404.html"), |
213 net::DEFAULT_PRIORITY, | 212 net::DEFAULT_PRIORITY, |
214 &test_delegate_, | 213 &test_delegate_)); |
215 NULL)); | |
216 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); | 214 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); |
217 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); | 215 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); |
218 | 216 |
219 if (cases[i].should_allow_sub_frame_load) { | 217 if (cases[i].should_allow_sub_frame_load) { |
220 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) << | 218 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) << |
221 cases[i].name; | 219 cases[i].name; |
222 } else { | 220 } else { |
223 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) << | 221 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) << |
224 cases[i].name; | 222 cases[i].name; |
225 } | 223 } |
(...skipping 22 matching lines...) Expand all Loading... |
248 base::Time::Now(), | 246 base::Time::Now(), |
249 false, | 247 false, |
250 false); | 248 false); |
251 | 249 |
252 // First test it with the extension enabled. | 250 // First test it with the extension enabled. |
253 { | 251 { |
254 scoped_ptr<net::URLRequest> request( | 252 scoped_ptr<net::URLRequest> request( |
255 resource_context_.GetRequestContext()->CreateRequest( | 253 resource_context_.GetRequestContext()->CreateRequest( |
256 extension->GetResourceURL("webstore_icon_16.png"), | 254 extension->GetResourceURL("webstore_icon_16.png"), |
257 net::DEFAULT_PRIORITY, | 255 net::DEFAULT_PRIORITY, |
258 &test_delegate_, | 256 &test_delegate_)); |
259 NULL)); | |
260 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); | 257 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); |
261 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); | 258 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); |
262 CheckForContentLengthHeader(request.get()); | 259 CheckForContentLengthHeader(request.get()); |
263 } | 260 } |
264 | 261 |
265 // And then test it with the extension disabled. | 262 // And then test it with the extension disabled. |
266 extension_info_map_->RemoveExtension(extension->id(), | 263 extension_info_map_->RemoveExtension(extension->id(), |
267 UnloadedExtensionInfo::REASON_DISABLE); | 264 UnloadedExtensionInfo::REASON_DISABLE); |
268 { | 265 { |
269 scoped_ptr<net::URLRequest> request( | 266 scoped_ptr<net::URLRequest> request( |
270 resource_context_.GetRequestContext()->CreateRequest( | 267 resource_context_.GetRequestContext()->CreateRequest( |
271 extension->GetResourceURL("webstore_icon_16.png"), | 268 extension->GetResourceURL("webstore_icon_16.png"), |
272 net::DEFAULT_PRIORITY, | 269 net::DEFAULT_PRIORITY, |
273 &test_delegate_, | 270 &test_delegate_)); |
274 NULL)); | |
275 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); | 271 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); |
276 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); | 272 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); |
277 CheckForContentLengthHeader(request.get()); | 273 CheckForContentLengthHeader(request.get()); |
278 } | 274 } |
279 } | 275 } |
280 | 276 |
281 // Tests that a URL request for resource from an extension returns a few | 277 // Tests that a URL request for resource from an extension returns a few |
282 // expected response headers. | 278 // expected response headers. |
283 TEST_F(ExtensionProtocolTest, ResourceRequestResponseHeaders) { | 279 TEST_F(ExtensionProtocolTest, ResourceRequestResponseHeaders) { |
284 // Register a non-incognito extension protocol handler. | 280 // Register a non-incognito extension protocol handler. |
285 SetProtocolHandler(false); | 281 SetProtocolHandler(false); |
286 | 282 |
287 scoped_refptr<Extension> extension = CreateTestResponseHeaderExtension(); | 283 scoped_refptr<Extension> extension = CreateTestResponseHeaderExtension(); |
288 extension_info_map_->AddExtension(extension.get(), | 284 extension_info_map_->AddExtension(extension.get(), |
289 base::Time::Now(), | 285 base::Time::Now(), |
290 false, | 286 false, |
291 false); | 287 false); |
292 | 288 |
293 { | 289 { |
294 scoped_ptr<net::URLRequest> request( | 290 scoped_ptr<net::URLRequest> request( |
295 resource_context_.GetRequestContext()->CreateRequest( | 291 resource_context_.GetRequestContext()->CreateRequest( |
296 extension->GetResourceURL("test.dat"), | 292 extension->GetResourceURL("test.dat"), |
297 net::DEFAULT_PRIORITY, | 293 net::DEFAULT_PRIORITY, |
298 &test_delegate_, | 294 &test_delegate_)); |
299 NULL)); | |
300 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); | 295 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); |
301 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); | 296 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); |
302 | 297 |
303 // Check that cache-related headers are set. | 298 // Check that cache-related headers are set. |
304 std::string etag; | 299 std::string etag; |
305 request->GetResponseHeaderByName("ETag", &etag); | 300 request->GetResponseHeaderByName("ETag", &etag); |
306 EXPECT_TRUE(StartsWithASCII(etag, "\"", false)); | 301 EXPECT_TRUE(StartsWithASCII(etag, "\"", false)); |
307 EXPECT_TRUE(EndsWith(etag, "\"", false)); | 302 EXPECT_TRUE(EndsWith(etag, "\"", false)); |
308 | 303 |
309 std::string revalidation_header; | 304 std::string revalidation_header; |
(...skipping 19 matching lines...) Expand all Loading... |
329 base::Time::Now(), | 324 base::Time::Now(), |
330 false, | 325 false, |
331 false); | 326 false); |
332 | 327 |
333 // All MAIN_FRAME and SUB_FRAME requests should succeed. | 328 // All MAIN_FRAME and SUB_FRAME requests should succeed. |
334 { | 329 { |
335 scoped_ptr<net::URLRequest> request( | 330 scoped_ptr<net::URLRequest> request( |
336 resource_context_.GetRequestContext()->CreateRequest( | 331 resource_context_.GetRequestContext()->CreateRequest( |
337 extension->GetResourceURL("test.dat"), | 332 extension->GetResourceURL("test.dat"), |
338 net::DEFAULT_PRIORITY, | 333 net::DEFAULT_PRIORITY, |
339 &test_delegate_, | 334 &test_delegate_)); |
340 NULL)); | |
341 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); | 335 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); |
342 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); | 336 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); |
343 } | 337 } |
344 { | 338 { |
345 scoped_ptr<net::URLRequest> request( | 339 scoped_ptr<net::URLRequest> request( |
346 resource_context_.GetRequestContext()->CreateRequest( | 340 resource_context_.GetRequestContext()->CreateRequest( |
347 extension->GetResourceURL("test.dat"), | 341 extension->GetResourceURL("test.dat"), |
348 net::DEFAULT_PRIORITY, | 342 net::DEFAULT_PRIORITY, |
349 &test_delegate_, | 343 &test_delegate_)); |
350 NULL)); | |
351 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); | 344 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); |
352 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); | 345 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); |
353 } | 346 } |
354 | 347 |
355 // And subresource types, such as media, should fail. | 348 // And subresource types, such as media, should fail. |
356 { | 349 { |
357 scoped_ptr<net::URLRequest> request( | 350 scoped_ptr<net::URLRequest> request( |
358 resource_context_.GetRequestContext()->CreateRequest( | 351 resource_context_.GetRequestContext()->CreateRequest( |
359 extension->GetResourceURL("test.dat"), | 352 extension->GetResourceURL("test.dat"), |
360 net::DEFAULT_PRIORITY, | 353 net::DEFAULT_PRIORITY, |
361 &test_delegate_, | 354 &test_delegate_)); |
362 NULL)); | |
363 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); | 355 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); |
364 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); | 356 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); |
365 } | 357 } |
366 } | 358 } |
367 | 359 |
368 } // namespace extensions | 360 } // namespace extensions |
OLD | NEW |