OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 // Reuse one of the test files from WebFrameTest. | 70 // Reuse one of the test files from WebFrameTest. |
71 m_baseFilePath = testing::blinkRootDir(); | 71 m_baseFilePath = testing::blinkRootDir(); |
72 m_baseFilePath.append("/Source/web/tests/data/"); | 72 m_baseFilePath.append("/Source/web/tests/data/"); |
73 m_frameFilePath = m_baseFilePath; | 73 m_frameFilePath = m_baseFilePath; |
74 m_frameFilePath.append("iframes_test.html"); | 74 m_frameFilePath.append("iframes_test.html"); |
75 } | 75 } |
76 | 76 |
77 KURL RegisterMockedUrl(const std::string& urlRoot, const WTF::String& filena
me) | 77 KURL RegisterMockedUrl(const std::string& urlRoot, const WTF::String& filena
me) |
78 { | 78 { |
79 WebURLResponse response; | 79 WebURLResponse response; |
80 response.initialize(); | |
81 response.setMIMEType("text/html"); | 80 response.setMIMEType("text/html"); |
82 WTF::String localPath = m_baseFilePath; | 81 WTF::String localPath = m_baseFilePath; |
83 localPath.append(filename); | 82 localPath.append(filename); |
84 KURL url = toKURL(urlRoot + filename.utf8().data()); | 83 KURL url = toKURL(urlRoot + filename.utf8().data()); |
85 Platform::current()->getURLLoaderMockFactory()->registerURL(url, respons
e, localPath); | 84 Platform::current()->getURLLoaderMockFactory()->registerURL(url, respons
e, localPath); |
86 return url; | 85 return url; |
87 } | 86 } |
88 | 87 |
89 void SetUp() override | 88 void SetUp() override |
90 { | 89 { |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 id.append("-Exposed"); | 233 id.append("-Exposed"); |
235 id.append(".html"); | 234 id.append(".html"); |
236 | 235 |
237 KURL url = toKURL(id); | 236 KURL url = toKURL(id); |
238 WebURLRequest request; | 237 WebURLRequest request; |
239 request.initialize(); | 238 request.initialize(); |
240 request.setURL(url); | 239 request.setURL(url); |
241 | 240 |
242 WebString headerNameString(WebString::fromUTF8(headerName)); | 241 WebString headerNameString(WebString::fromUTF8(headerName)); |
243 m_expectedResponse = WebURLResponse(); | 242 m_expectedResponse = WebURLResponse(); |
244 m_expectedResponse.initialize(); | |
245 m_expectedResponse.setMIMEType("text/html"); | 243 m_expectedResponse.setMIMEType("text/html"); |
246 m_expectedResponse.setHTTPStatusCode(200); | 244 m_expectedResponse.setHTTPStatusCode(200); |
247 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"
); | 245 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"
); |
248 if (exposed) | 246 if (exposed) |
249 m_expectedResponse.addHTTPHeaderField("access-control-expose-headers
", headerNameString); | 247 m_expectedResponse.addHTTPHeaderField("access-control-expose-headers
", headerNameString); |
250 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo"); | 248 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo"); |
251 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expec
tedResponse, m_frameFilePath); | 249 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expec
tedResponse, m_frameFilePath); |
252 | 250 |
253 WebURLLoaderOptions options; | 251 WebURLLoaderOptions options; |
254 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginReque
stPolicyUseAccessControl; | 252 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginReque
stPolicyUseAccessControl; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 | 285 |
288 // Test a successful same-origin URL load. | 286 // Test a successful same-origin URL load. |
289 TEST_F(AssociatedURLLoaderTest, SameOriginSuccess) | 287 TEST_F(AssociatedURLLoaderTest, SameOriginSuccess) |
290 { | 288 { |
291 KURL url = toKURL("http://www.test.com/SameOriginSuccess.html"); | 289 KURL url = toKURL("http://www.test.com/SameOriginSuccess.html"); |
292 WebURLRequest request; | 290 WebURLRequest request; |
293 request.initialize(); | 291 request.initialize(); |
294 request.setURL(url); | 292 request.setURL(url); |
295 | 293 |
296 m_expectedResponse = WebURLResponse(); | 294 m_expectedResponse = WebURLResponse(); |
297 m_expectedResponse.initialize(); | |
298 m_expectedResponse.setMIMEType("text/html"); | 295 m_expectedResponse.setMIMEType("text/html"); |
299 m_expectedResponse.setHTTPStatusCode(200); | 296 m_expectedResponse.setHTTPStatusCode(200); |
300 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); | 297 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); |
301 | 298 |
302 m_expectedLoader = createAssociatedURLLoader(); | 299 m_expectedLoader = createAssociatedURLLoader(); |
303 EXPECT_TRUE(m_expectedLoader); | 300 EXPECT_TRUE(m_expectedLoader); |
304 m_expectedLoader->loadAsynchronously(request, this); | 301 m_expectedLoader->loadAsynchronously(request, this); |
305 serveRequests(); | 302 serveRequests(); |
306 EXPECT_TRUE(m_didReceiveResponse); | 303 EXPECT_TRUE(m_didReceiveResponse); |
307 EXPECT_TRUE(m_didReceiveData); | 304 EXPECT_TRUE(m_didReceiveData); |
(...skipping 17 matching lines...) Expand all Loading... |
325 // This is cross-origin since the frame was loaded from www.test.com. | 322 // This is cross-origin since the frame was loaded from www.test.com. |
326 KURL url = toKURL("http://www.other.com/CrossOriginSuccess"); | 323 KURL url = toKURL("http://www.other.com/CrossOriginSuccess"); |
327 WebURLRequest request; | 324 WebURLRequest request; |
328 request.initialize(); | 325 request.initialize(); |
329 request.setURL(url); | 326 request.setURL(url); |
330 // No-CORS requests (CrossOriginRequestPolicyAllow) aren't allowed for the | 327 // No-CORS requests (CrossOriginRequestPolicyAllow) aren't allowed for the |
331 // default context. So we set the context as Script here. | 328 // default context. So we set the context as Script here. |
332 request.setRequestContext(WebURLRequest::RequestContextScript); | 329 request.setRequestContext(WebURLRequest::RequestContextScript); |
333 | 330 |
334 m_expectedResponse = WebURLResponse(); | 331 m_expectedResponse = WebURLResponse(); |
335 m_expectedResponse.initialize(); | |
336 m_expectedResponse.setMIMEType("text/html"); | 332 m_expectedResponse.setMIMEType("text/html"); |
337 m_expectedResponse.setHTTPStatusCode(200); | 333 m_expectedResponse.setHTTPStatusCode(200); |
338 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); | 334 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); |
339 | 335 |
340 WebURLLoaderOptions options; | 336 WebURLLoaderOptions options; |
341 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyAllow; | 337 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyAllow; |
342 m_expectedLoader = createAssociatedURLLoader(options); | 338 m_expectedLoader = createAssociatedURLLoader(options); |
343 EXPECT_TRUE(m_expectedLoader); | 339 EXPECT_TRUE(m_expectedLoader); |
344 m_expectedLoader->loadAsynchronously(request, this); | 340 m_expectedLoader->loadAsynchronously(request, this); |
345 serveRequests(); | 341 serveRequests(); |
346 EXPECT_TRUE(m_didReceiveResponse); | 342 EXPECT_TRUE(m_didReceiveResponse); |
347 EXPECT_TRUE(m_didReceiveData); | 343 EXPECT_TRUE(m_didReceiveData); |
348 EXPECT_TRUE(m_didFinishLoading); | 344 EXPECT_TRUE(m_didFinishLoading); |
349 } | 345 } |
350 | 346 |
351 // Test a successful cross-origin load using CORS. | 347 // Test a successful cross-origin load using CORS. |
352 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlSuccess) | 348 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlSuccess) |
353 { | 349 { |
354 // This is cross-origin since the frame was loaded from www.test.com. | 350 // This is cross-origin since the frame was loaded from www.test.com. |
355 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlSuccess.
html"); | 351 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlSuccess.
html"); |
356 WebURLRequest request; | 352 WebURLRequest request; |
357 request.initialize(); | 353 request.initialize(); |
358 request.setURL(url); | 354 request.setURL(url); |
359 | 355 |
360 m_expectedResponse = WebURLResponse(); | 356 m_expectedResponse = WebURLResponse(); |
361 m_expectedResponse.initialize(); | |
362 m_expectedResponse.setMIMEType("text/html"); | 357 m_expectedResponse.setMIMEType("text/html"); |
363 m_expectedResponse.setHTTPStatusCode(200); | 358 m_expectedResponse.setHTTPStatusCode(200); |
364 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); | 359 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); |
365 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); | 360 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); |
366 | 361 |
367 WebURLLoaderOptions options; | 362 WebURLLoaderOptions options; |
368 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 363 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
369 m_expectedLoader = createAssociatedURLLoader(options); | 364 m_expectedLoader = createAssociatedURLLoader(options); |
370 EXPECT_TRUE(m_expectedLoader); | 365 EXPECT_TRUE(m_expectedLoader); |
371 m_expectedLoader->loadAsynchronously(request, this); | 366 m_expectedLoader->loadAsynchronously(request, this); |
372 serveRequests(); | 367 serveRequests(); |
373 EXPECT_TRUE(m_didReceiveResponse); | 368 EXPECT_TRUE(m_didReceiveResponse); |
374 EXPECT_TRUE(m_didReceiveData); | 369 EXPECT_TRUE(m_didReceiveData); |
375 EXPECT_TRUE(m_didFinishLoading); | 370 EXPECT_TRUE(m_didFinishLoading); |
376 } | 371 } |
377 | 372 |
378 // Test an unsuccessful cross-origin load using CORS. | 373 // Test an unsuccessful cross-origin load using CORS. |
379 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailure) | 374 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailure) |
380 { | 375 { |
381 // This is cross-origin since the frame was loaded from www.test.com. | 376 // This is cross-origin since the frame was loaded from www.test.com. |
382 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlFailure.
html"); | 377 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlFailure.
html"); |
383 WebURLRequest request; | 378 WebURLRequest request; |
384 request.initialize(); | 379 request.initialize(); |
385 request.setURL(url); | 380 request.setURL(url); |
386 | 381 |
387 m_expectedResponse = WebURLResponse(); | 382 m_expectedResponse = WebURLResponse(); |
388 m_expectedResponse.initialize(); | |
389 m_expectedResponse.setMIMEType("text/html"); | 383 m_expectedResponse.setMIMEType("text/html"); |
390 m_expectedResponse.setHTTPStatusCode(200); | 384 m_expectedResponse.setHTTPStatusCode(200); |
391 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); | 385 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); |
392 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); | 386 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); |
393 | 387 |
394 WebURLLoaderOptions options; | 388 WebURLLoaderOptions options; |
395 // Send credentials. This will cause the CORS checks to fail, because creden
tials can't be | 389 // Send credentials. This will cause the CORS checks to fail, because creden
tials can't be |
396 // sent to a server which returns the header "access-control-allow-origin" w
ith "*" as its value. | 390 // sent to a server which returns the header "access-control-allow-origin" w
ith "*" as its value. |
397 options.allowCredentials = true; | 391 options.allowCredentials = true; |
398 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 392 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
(...skipping 12 matching lines...) Expand all Loading... |
411 // Test an unsuccessful cross-origin load using CORS. | 405 // Test an unsuccessful cross-origin load using CORS. |
412 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailureBadStatusCode
) | 406 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailureBadStatusCode
) |
413 { | 407 { |
414 // This is cross-origin since the frame was loaded from www.test.com. | 408 // This is cross-origin since the frame was loaded from www.test.com. |
415 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlFailure.
html"); | 409 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlFailure.
html"); |
416 WebURLRequest request; | 410 WebURLRequest request; |
417 request.initialize(); | 411 request.initialize(); |
418 request.setURL(url); | 412 request.setURL(url); |
419 | 413 |
420 m_expectedResponse = WebURLResponse(); | 414 m_expectedResponse = WebURLResponse(); |
421 m_expectedResponse.initialize(); | |
422 m_expectedResponse.setMIMEType("text/html"); | 415 m_expectedResponse.setMIMEType("text/html"); |
423 m_expectedResponse.setHTTPStatusCode(0); | 416 m_expectedResponse.setHTTPStatusCode(0); |
424 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); | 417 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); |
425 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); | 418 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); |
426 | 419 |
427 WebURLLoaderOptions options; | 420 WebURLLoaderOptions options; |
428 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 421 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
429 m_expectedLoader = createAssociatedURLLoader(options); | 422 m_expectedLoader = createAssociatedURLLoader(options); |
430 EXPECT_TRUE(m_expectedLoader); | 423 EXPECT_TRUE(m_expectedLoader); |
431 m_expectedLoader->loadAsynchronously(request, this); | 424 m_expectedLoader->loadAsynchronously(request, this); |
(...skipping 11 matching lines...) Expand all Loading... |
443 { | 436 { |
444 KURL url = toKURL("http://www.test.com/RedirectSuccess.html"); | 437 KURL url = toKURL("http://www.test.com/RedirectSuccess.html"); |
445 char redirect[] = "http://www.test.com/RedirectSuccess2.html"; // Same-orig
in | 438 char redirect[] = "http://www.test.com/RedirectSuccess2.html"; // Same-orig
in |
446 KURL redirectURL = toKURL(redirect); | 439 KURL redirectURL = toKURL(redirect); |
447 | 440 |
448 WebURLRequest request; | 441 WebURLRequest request; |
449 request.initialize(); | 442 request.initialize(); |
450 request.setURL(url); | 443 request.setURL(url); |
451 | 444 |
452 m_expectedRedirectResponse = WebURLResponse(); | 445 m_expectedRedirectResponse = WebURLResponse(); |
453 m_expectedRedirectResponse.initialize(); | |
454 m_expectedRedirectResponse.setMIMEType("text/html"); | 446 m_expectedRedirectResponse.setMIMEType("text/html"); |
455 m_expectedRedirectResponse.setHTTPStatusCode(301); | 447 m_expectedRedirectResponse.setHTTPStatusCode(301); |
456 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); | 448 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); |
457 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
edirectResponse, m_frameFilePath); | 449 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
edirectResponse, m_frameFilePath); |
458 | 450 |
459 m_expectedNewRequest = WebURLRequest(); | 451 m_expectedNewRequest = WebURLRequest(); |
460 m_expectedNewRequest.initialize(); | 452 m_expectedNewRequest.initialize(); |
461 m_expectedNewRequest.setURL(redirectURL); | 453 m_expectedNewRequest.setURL(redirectURL); |
462 | 454 |
463 m_expectedResponse = WebURLResponse(); | 455 m_expectedResponse = WebURLResponse(); |
464 m_expectedResponse.initialize(); | |
465 m_expectedResponse.setMIMEType("text/html"); | 456 m_expectedResponse.setMIMEType("text/html"); |
466 m_expectedResponse.setHTTPStatusCode(200); | 457 m_expectedResponse.setHTTPStatusCode(200); |
467 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e
xpectedResponse, m_frameFilePath); | 458 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e
xpectedResponse, m_frameFilePath); |
468 | 459 |
469 m_expectedLoader = createAssociatedURLLoader(); | 460 m_expectedLoader = createAssociatedURLLoader(); |
470 EXPECT_TRUE(m_expectedLoader); | 461 EXPECT_TRUE(m_expectedLoader); |
471 m_expectedLoader->loadAsynchronously(request, this); | 462 m_expectedLoader->loadAsynchronously(request, this); |
472 serveRequests(); | 463 serveRequests(); |
473 EXPECT_TRUE(m_willFollowRedirect); | 464 EXPECT_TRUE(m_willFollowRedirect); |
474 EXPECT_TRUE(m_didReceiveResponse); | 465 EXPECT_TRUE(m_didReceiveResponse); |
475 EXPECT_TRUE(m_didReceiveData); | 466 EXPECT_TRUE(m_didReceiveData); |
476 EXPECT_TRUE(m_didFinishLoading); | 467 EXPECT_TRUE(m_didFinishLoading); |
477 } | 468 } |
478 | 469 |
479 // Test a cross-origin URL redirect without Access Control set. | 470 // Test a cross-origin URL redirect without Access Control set. |
480 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginFailure) | 471 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginFailure) |
481 { | 472 { |
482 KURL url = toKURL("http://www.test.com/RedirectCrossOriginFailure.html"); | 473 KURL url = toKURL("http://www.test.com/RedirectCrossOriginFailure.html"); |
483 char redirect[] = "http://www.other.com/RedirectCrossOriginFailure.html"; /
/ Cross-origin | 474 char redirect[] = "http://www.other.com/RedirectCrossOriginFailure.html"; /
/ Cross-origin |
484 KURL redirectURL = toKURL(redirect); | 475 KURL redirectURL = toKURL(redirect); |
485 | 476 |
486 WebURLRequest request; | 477 WebURLRequest request; |
487 request.initialize(); | 478 request.initialize(); |
488 request.setURL(url); | 479 request.setURL(url); |
489 | 480 |
490 m_expectedRedirectResponse = WebURLResponse(); | 481 m_expectedRedirectResponse = WebURLResponse(); |
491 m_expectedRedirectResponse.initialize(); | |
492 m_expectedRedirectResponse.setMIMEType("text/html"); | 482 m_expectedRedirectResponse.setMIMEType("text/html"); |
493 m_expectedRedirectResponse.setHTTPStatusCode(301); | 483 m_expectedRedirectResponse.setHTTPStatusCode(301); |
494 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); | 484 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); |
495 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
edirectResponse, m_frameFilePath); | 485 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
edirectResponse, m_frameFilePath); |
496 | 486 |
497 m_expectedNewRequest = WebURLRequest(); | 487 m_expectedNewRequest = WebURLRequest(); |
498 m_expectedNewRequest.initialize(); | 488 m_expectedNewRequest.initialize(); |
499 m_expectedNewRequest.setURL(redirectURL); | 489 m_expectedNewRequest.setURL(redirectURL); |
500 | 490 |
501 m_expectedResponse = WebURLResponse(); | 491 m_expectedResponse = WebURLResponse(); |
502 m_expectedResponse.initialize(); | |
503 m_expectedResponse.setMIMEType("text/html"); | 492 m_expectedResponse.setMIMEType("text/html"); |
504 m_expectedResponse.setHTTPStatusCode(200); | 493 m_expectedResponse.setHTTPStatusCode(200); |
505 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e
xpectedResponse, m_frameFilePath); | 494 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e
xpectedResponse, m_frameFilePath); |
506 | 495 |
507 m_expectedLoader = createAssociatedURLLoader(); | 496 m_expectedLoader = createAssociatedURLLoader(); |
508 EXPECT_TRUE(m_expectedLoader); | 497 EXPECT_TRUE(m_expectedLoader); |
509 m_expectedLoader->loadAsynchronously(request, this); | 498 m_expectedLoader->loadAsynchronously(request, this); |
510 | 499 |
511 serveRequests(); | 500 serveRequests(); |
512 EXPECT_FALSE(m_willFollowRedirect); | 501 EXPECT_FALSE(m_willFollowRedirect); |
513 EXPECT_FALSE(m_didReceiveResponse); | 502 EXPECT_FALSE(m_didReceiveResponse); |
514 EXPECT_FALSE(m_didReceiveData); | 503 EXPECT_FALSE(m_didReceiveData); |
515 EXPECT_FALSE(m_didFinishLoading); | 504 EXPECT_FALSE(m_didFinishLoading); |
516 } | 505 } |
517 | 506 |
518 // Test that a cross origin redirect response without CORS headers fails. | 507 // Test that a cross origin redirect response without CORS headers fails. |
519 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginWithAccessControlFailure) | 508 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginWithAccessControlFailure) |
520 { | 509 { |
521 KURL url = toKURL("http://www.test.com/RedirectCrossOriginWithAccessControlF
ailure.html"); | 510 KURL url = toKURL("http://www.test.com/RedirectCrossOriginWithAccessControlF
ailure.html"); |
522 char redirect[] = "http://www.other.com/RedirectCrossOriginWithAccessControl
Failure.html"; // Cross-origin | 511 char redirect[] = "http://www.other.com/RedirectCrossOriginWithAccessControl
Failure.html"; // Cross-origin |
523 KURL redirectURL = toKURL(redirect); | 512 KURL redirectURL = toKURL(redirect); |
524 | 513 |
525 WebURLRequest request; | 514 WebURLRequest request; |
526 request.initialize(); | 515 request.initialize(); |
527 request.setURL(url); | 516 request.setURL(url); |
528 | 517 |
529 m_expectedRedirectResponse = WebURLResponse(); | 518 m_expectedRedirectResponse = WebURLResponse(); |
530 m_expectedRedirectResponse.initialize(); | |
531 m_expectedRedirectResponse.setMIMEType("text/html"); | 519 m_expectedRedirectResponse.setMIMEType("text/html"); |
532 m_expectedRedirectResponse.setHTTPStatusCode(301); | 520 m_expectedRedirectResponse.setHTTPStatusCode(301); |
533 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); | 521 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); |
534 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
edirectResponse, m_frameFilePath); | 522 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
edirectResponse, m_frameFilePath); |
535 | 523 |
536 m_expectedNewRequest = WebURLRequest(); | 524 m_expectedNewRequest = WebURLRequest(); |
537 m_expectedNewRequest.initialize(); | 525 m_expectedNewRequest.initialize(); |
538 m_expectedNewRequest.setURL(redirectURL); | 526 m_expectedNewRequest.setURL(redirectURL); |
539 | 527 |
540 m_expectedResponse = WebURLResponse(); | 528 m_expectedResponse = WebURLResponse(); |
541 m_expectedResponse.initialize(); | |
542 m_expectedResponse.setMIMEType("text/html"); | 529 m_expectedResponse.setMIMEType("text/html"); |
543 m_expectedResponse.setHTTPStatusCode(200); | 530 m_expectedResponse.setHTTPStatusCode(200); |
544 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e
xpectedResponse, m_frameFilePath); | 531 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e
xpectedResponse, m_frameFilePath); |
545 | 532 |
546 WebURLLoaderOptions options; | 533 WebURLLoaderOptions options; |
547 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 534 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
548 m_expectedLoader = createAssociatedURLLoader(options); | 535 m_expectedLoader = createAssociatedURLLoader(options); |
549 EXPECT_TRUE(m_expectedLoader); | 536 EXPECT_TRUE(m_expectedLoader); |
550 m_expectedLoader->loadAsynchronously(request, this); | 537 m_expectedLoader->loadAsynchronously(request, this); |
551 | 538 |
(...skipping 13 matching lines...) Expand all Loading... |
565 KURL redirectURL = toKURL(redirect); | 552 KURL redirectURL = toKURL(redirect); |
566 | 553 |
567 WebURLRequest request; | 554 WebURLRequest request; |
568 request.initialize(); | 555 request.initialize(); |
569 request.setURL(url); | 556 request.setURL(url); |
570 // Add a CORS simple header. | 557 // Add a CORS simple header. |
571 request.setHTTPHeaderField("accept", "application/json"); | 558 request.setHTTPHeaderField("accept", "application/json"); |
572 | 559 |
573 // Create a redirect response that allows the redirect to pass the access co
ntrol checks. | 560 // Create a redirect response that allows the redirect to pass the access co
ntrol checks. |
574 m_expectedRedirectResponse = WebURLResponse(); | 561 m_expectedRedirectResponse = WebURLResponse(); |
575 m_expectedRedirectResponse.initialize(); | |
576 m_expectedRedirectResponse.setMIMEType("text/html"); | 562 m_expectedRedirectResponse.setMIMEType("text/html"); |
577 m_expectedRedirectResponse.setHTTPStatusCode(301); | 563 m_expectedRedirectResponse.setHTTPStatusCode(301); |
578 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); | 564 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); |
579 m_expectedRedirectResponse.addHTTPHeaderField("access-control-allow-origin",
"*"); | 565 m_expectedRedirectResponse.addHTTPHeaderField("access-control-allow-origin",
"*"); |
580 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
edirectResponse, m_frameFilePath); | 566 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
edirectResponse, m_frameFilePath); |
581 | 567 |
582 m_expectedNewRequest = WebURLRequest(); | 568 m_expectedNewRequest = WebURLRequest(); |
583 m_expectedNewRequest.initialize(); | 569 m_expectedNewRequest.initialize(); |
584 m_expectedNewRequest.setURL(redirectURL); | 570 m_expectedNewRequest.setURL(redirectURL); |
585 m_expectedNewRequest.setHTTPHeaderField("accept", "application/json"); | 571 m_expectedNewRequest.setHTTPHeaderField("accept", "application/json"); |
586 | 572 |
587 m_expectedResponse = WebURLResponse(); | 573 m_expectedResponse = WebURLResponse(); |
588 m_expectedResponse.initialize(); | |
589 m_expectedResponse.setMIMEType("text/html"); | 574 m_expectedResponse.setMIMEType("text/html"); |
590 m_expectedResponse.setHTTPStatusCode(200); | 575 m_expectedResponse.setHTTPStatusCode(200); |
591 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); | 576 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); |
592 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e
xpectedResponse, m_frameFilePath); | 577 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e
xpectedResponse, m_frameFilePath); |
593 | 578 |
594 WebURLLoaderOptions options; | 579 WebURLLoaderOptions options; |
595 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 580 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
596 m_expectedLoader = createAssociatedURLLoader(options); | 581 m_expectedLoader = createAssociatedURLLoader(options); |
597 EXPECT_TRUE(m_expectedLoader); | 582 EXPECT_TRUE(m_expectedLoader); |
598 m_expectedLoader->loadAsynchronously(request, this); | 583 m_expectedLoader->loadAsynchronously(request, this); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 // Test that the loader can allow non-whitelisted response headers for trusted C
ORS loads. | 677 // Test that the loader can allow non-whitelisted response headers for trusted C
ORS loads. |
693 TEST_F(AssociatedURLLoaderTest, CrossOriginHeaderAllowResponseHeaders) | 678 TEST_F(AssociatedURLLoaderTest, CrossOriginHeaderAllowResponseHeaders) |
694 { | 679 { |
695 WebURLRequest request; | 680 WebURLRequest request; |
696 request.initialize(); | 681 request.initialize(); |
697 KURL url = toKURL("http://www.other.com/CrossOriginHeaderAllowResponseHeader
s.html"); | 682 KURL url = toKURL("http://www.other.com/CrossOriginHeaderAllowResponseHeader
s.html"); |
698 request.setURL(url); | 683 request.setURL(url); |
699 | 684 |
700 WebString headerNameString(WebString::fromUTF8("non-whitelisted")); | 685 WebString headerNameString(WebString::fromUTF8("non-whitelisted")); |
701 m_expectedResponse = WebURLResponse(); | 686 m_expectedResponse = WebURLResponse(); |
702 m_expectedResponse.initialize(); | |
703 m_expectedResponse.setMIMEType("text/html"); | 687 m_expectedResponse.setMIMEType("text/html"); |
704 m_expectedResponse.setHTTPStatusCode(200); | 688 m_expectedResponse.setHTTPStatusCode(200); |
705 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"); | 689 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"); |
706 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo"); | 690 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo"); |
707 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); | 691 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR
esponse, m_frameFilePath); |
708 | 692 |
709 WebURLLoaderOptions options; | 693 WebURLLoaderOptions options; |
710 options.exposeAllResponseHeaders = true; // This turns off response whitelis
ting. | 694 options.exposeAllResponseHeaders = true; // This turns off response whitelis
ting. |
711 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 695 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
712 m_expectedLoader = createAssociatedURLLoader(options); | 696 m_expectedLoader = createAssociatedURLLoader(options); |
713 EXPECT_TRUE(m_expectedLoader); | 697 EXPECT_TRUE(m_expectedLoader); |
714 m_expectedLoader->loadAsynchronously(request, this); | 698 m_expectedLoader->loadAsynchronously(request, this); |
715 serveRequests(); | 699 serveRequests(); |
716 EXPECT_TRUE(m_didReceiveResponse); | 700 EXPECT_TRUE(m_didReceiveResponse); |
717 EXPECT_TRUE(m_didReceiveData); | 701 EXPECT_TRUE(m_didReceiveData); |
718 EXPECT_TRUE(m_didFinishLoading); | 702 EXPECT_TRUE(m_didFinishLoading); |
719 | 703 |
720 EXPECT_FALSE(m_actualResponse.httpHeaderField(headerNameString).isEmpty()); | 704 EXPECT_FALSE(m_actualResponse.httpHeaderField(headerNameString).isEmpty()); |
721 } | 705 } |
722 | 706 |
723 } // namespace blink | 707 } // namespace blink |
OLD | NEW |