| 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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 , m_didFail(false) | 67 , m_didFail(false) |
| 68 , m_runningMessageLoop(false) | 68 , m_runningMessageLoop(false) |
| 69 { | 69 { |
| 70 // Reuse one of the test files from WebFrameTest. | 70 // Reuse one of the test files from WebFrameTest. |
| 71 m_baseFilePath = Platform::current()->unitTestSupport()->webKitRootDir()
; | 71 m_baseFilePath = Platform::current()->unitTestSupport()->webKitRootDir()
; |
| 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 WebCore::KURL RegisterMockedUrl(const std::string& urlRoot, const WTF::Strin
g& filename) | 77 blink::KURL RegisterMockedUrl(const std::string& urlRoot, const WTF::String&
filename) |
| 78 { | 78 { |
| 79 WebURLResponse response; | 79 WebURLResponse response; |
| 80 response.initialize(); | 80 response.initialize(); |
| 81 response.setMIMEType("text/html"); | 81 response.setMIMEType("text/html"); |
| 82 WTF::String localPath = m_baseFilePath; | 82 WTF::String localPath = m_baseFilePath; |
| 83 localPath.append(filename); | 83 localPath.append(filename); |
| 84 WebCore::KURL url = toKURL(urlRoot + filename.utf8().data()); | 84 blink::KURL url = toKURL(urlRoot + filename.utf8().data()); |
| 85 Platform::current()->unitTestSupport()->registerMockedURL(url, response,
localPath); | 85 Platform::current()->unitTestSupport()->registerMockedURL(url, response,
localPath); |
| 86 return url; | 86 return url; |
| 87 } | 87 } |
| 88 | 88 |
| 89 void SetUp() | 89 void SetUp() |
| 90 { | 90 { |
| 91 m_helper.initialize(); | 91 m_helper.initialize(); |
| 92 | 92 |
| 93 std::string urlRoot = "http://www.test.com/"; | 93 std::string urlRoot = "http://www.test.com/"; |
| 94 WebCore::KURL url = RegisterMockedUrl(urlRoot, "iframes_test.html"); | 94 blink::KURL url = RegisterMockedUrl(urlRoot, "iframes_test.html"); |
| 95 const char* iframeSupportFiles[] = { | 95 const char* iframeSupportFiles[] = { |
| 96 "invisible_iframe.html", | 96 "invisible_iframe.html", |
| 97 "visible_iframe.html", | 97 "visible_iframe.html", |
| 98 "zero_sized_iframe.html", | 98 "zero_sized_iframe.html", |
| 99 }; | 99 }; |
| 100 for (size_t i = 0; i < arraysize(iframeSupportFiles); ++i) { | 100 for (size_t i = 0; i < arraysize(iframeSupportFiles); ++i) { |
| 101 RegisterMockedUrl(urlRoot, iframeSupportFiles[i]); | 101 RegisterMockedUrl(urlRoot, iframeSupportFiles[i]); |
| 102 } | 102 } |
| 103 | 103 |
| 104 FrameTestHelpers::loadFrame(mainFrame(), url.string().utf8().data()); | 104 FrameTestHelpers::loadFrame(mainFrame(), url.string().utf8().data()); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 } | 231 } |
| 232 | 232 |
| 233 bool CheckAccessControlHeaders(const char* headerName, bool exposed) | 233 bool CheckAccessControlHeaders(const char* headerName, bool exposed) |
| 234 { | 234 { |
| 235 std::string id("http://www.other.com/CheckAccessControlExposeHeaders_"); | 235 std::string id("http://www.other.com/CheckAccessControlExposeHeaders_"); |
| 236 id.append(headerName); | 236 id.append(headerName); |
| 237 if (exposed) | 237 if (exposed) |
| 238 id.append("-Exposed"); | 238 id.append("-Exposed"); |
| 239 id.append(".html"); | 239 id.append(".html"); |
| 240 | 240 |
| 241 WebCore::KURL url = toKURL(id); | 241 blink::KURL url = toKURL(id); |
| 242 WebURLRequest request; | 242 WebURLRequest request; |
| 243 request.initialize(); | 243 request.initialize(); |
| 244 request.setURL(url); | 244 request.setURL(url); |
| 245 | 245 |
| 246 WebString headerNameString(WebString::fromUTF8(headerName)); | 246 WebString headerNameString(WebString::fromUTF8(headerName)); |
| 247 m_expectedResponse = WebURLResponse(); | 247 m_expectedResponse = WebURLResponse(); |
| 248 m_expectedResponse.initialize(); | 248 m_expectedResponse.initialize(); |
| 249 m_expectedResponse.setMIMEType("text/html"); | 249 m_expectedResponse.setMIMEType("text/html"); |
| 250 m_expectedResponse.setHTTPStatusCode(200); | 250 m_expectedResponse.setHTTPStatusCode(200); |
| 251 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"
); | 251 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"
); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 bool m_didReceiveData; | 286 bool m_didReceiveData; |
| 287 bool m_didReceiveCachedMetadata; | 287 bool m_didReceiveCachedMetadata; |
| 288 bool m_didFinishLoading; | 288 bool m_didFinishLoading; |
| 289 bool m_didFail; | 289 bool m_didFail; |
| 290 bool m_runningMessageLoop; | 290 bool m_runningMessageLoop; |
| 291 }; | 291 }; |
| 292 | 292 |
| 293 // Test a successful same-origin URL load. | 293 // Test a successful same-origin URL load. |
| 294 TEST_F(AssociatedURLLoaderTest, SameOriginSuccess) | 294 TEST_F(AssociatedURLLoaderTest, SameOriginSuccess) |
| 295 { | 295 { |
| 296 WebCore::KURL url = toKURL("http://www.test.com/SameOriginSuccess.html"); | 296 blink::KURL url = toKURL("http://www.test.com/SameOriginSuccess.html"); |
| 297 WebURLRequest request; | 297 WebURLRequest request; |
| 298 request.initialize(); | 298 request.initialize(); |
| 299 request.setURL(url); | 299 request.setURL(url); |
| 300 | 300 |
| 301 m_expectedResponse = WebURLResponse(); | 301 m_expectedResponse = WebURLResponse(); |
| 302 m_expectedResponse.initialize(); | 302 m_expectedResponse.initialize(); |
| 303 m_expectedResponse.setMIMEType("text/html"); | 303 m_expectedResponse.setMIMEType("text/html"); |
| 304 m_expectedResponse.setHTTPStatusCode(200); | 304 m_expectedResponse.setHTTPStatusCode(200); |
| 305 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); | 305 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); |
| 306 | 306 |
| 307 m_expectedLoader = createAssociatedURLLoader(); | 307 m_expectedLoader = createAssociatedURLLoader(); |
| 308 EXPECT_TRUE(m_expectedLoader); | 308 EXPECT_TRUE(m_expectedLoader); |
| 309 m_expectedLoader->loadAsynchronously(request, this); | 309 m_expectedLoader->loadAsynchronously(request, this); |
| 310 serveRequests(); | 310 serveRequests(); |
| 311 EXPECT_TRUE(m_didReceiveResponse); | 311 EXPECT_TRUE(m_didReceiveResponse); |
| 312 EXPECT_TRUE(m_didReceiveData); | 312 EXPECT_TRUE(m_didReceiveData); |
| 313 EXPECT_TRUE(m_didFinishLoading); | 313 EXPECT_TRUE(m_didFinishLoading); |
| 314 } | 314 } |
| 315 | 315 |
| 316 // Test that the same-origin restriction is the default. | 316 // Test that the same-origin restriction is the default. |
| 317 TEST_F(AssociatedURLLoaderTest, SameOriginRestriction) | 317 TEST_F(AssociatedURLLoaderTest, SameOriginRestriction) |
| 318 { | 318 { |
| 319 // This is cross-origin since the frame was loaded from www.test.com. | 319 // This is cross-origin since the frame was loaded from www.test.com. |
| 320 WebCore::KURL url = toKURL("http://www.other.com/SameOriginRestriction.html"
); | 320 blink::KURL url = toKURL("http://www.other.com/SameOriginRestriction.html"); |
| 321 WebURLRequest request; | 321 WebURLRequest request; |
| 322 request.initialize(); | 322 request.initialize(); |
| 323 request.setURL(url); | 323 request.setURL(url); |
| 324 CheckFails(request); | 324 CheckFails(request); |
| 325 } | 325 } |
| 326 | 326 |
| 327 // Test a successful cross-origin load. | 327 // Test a successful cross-origin load. |
| 328 TEST_F(AssociatedURLLoaderTest, CrossOriginSuccess) | 328 TEST_F(AssociatedURLLoaderTest, CrossOriginSuccess) |
| 329 { | 329 { |
| 330 // This is cross-origin since the frame was loaded from www.test.com. | 330 // This is cross-origin since the frame was loaded from www.test.com. |
| 331 WebCore::KURL url = toKURL("http://www.other.com/CrossOriginSuccess.html"); | 331 blink::KURL url = toKURL("http://www.other.com/CrossOriginSuccess.html"); |
| 332 WebURLRequest request; | 332 WebURLRequest request; |
| 333 request.initialize(); | 333 request.initialize(); |
| 334 request.setURL(url); | 334 request.setURL(url); |
| 335 | 335 |
| 336 m_expectedResponse = WebURLResponse(); | 336 m_expectedResponse = WebURLResponse(); |
| 337 m_expectedResponse.initialize(); | 337 m_expectedResponse.initialize(); |
| 338 m_expectedResponse.setMIMEType("text/html"); | 338 m_expectedResponse.setMIMEType("text/html"); |
| 339 m_expectedResponse.setHTTPStatusCode(200); | 339 m_expectedResponse.setHTTPStatusCode(200); |
| 340 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); | 340 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); |
| 341 | 341 |
| 342 WebURLLoaderOptions options; | 342 WebURLLoaderOptions options; |
| 343 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyAllow; | 343 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyAllow; |
| 344 m_expectedLoader = createAssociatedURLLoader(options); | 344 m_expectedLoader = createAssociatedURLLoader(options); |
| 345 EXPECT_TRUE(m_expectedLoader); | 345 EXPECT_TRUE(m_expectedLoader); |
| 346 m_expectedLoader->loadAsynchronously(request, this); | 346 m_expectedLoader->loadAsynchronously(request, this); |
| 347 serveRequests(); | 347 serveRequests(); |
| 348 EXPECT_TRUE(m_didReceiveResponse); | 348 EXPECT_TRUE(m_didReceiveResponse); |
| 349 EXPECT_TRUE(m_didReceiveData); | 349 EXPECT_TRUE(m_didReceiveData); |
| 350 EXPECT_TRUE(m_didFinishLoading); | 350 EXPECT_TRUE(m_didFinishLoading); |
| 351 } | 351 } |
| 352 | 352 |
| 353 // Test a successful cross-origin load using CORS. | 353 // Test a successful cross-origin load using CORS. |
| 354 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlSuccess) | 354 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlSuccess) |
| 355 { | 355 { |
| 356 // This is cross-origin since the frame was loaded from www.test.com. | 356 // This is cross-origin since the frame was loaded from www.test.com. |
| 357 WebCore::KURL url = toKURL("http://www.other.com/CrossOriginWithAccessContro
lSuccess.html"); | 357 blink::KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlS
uccess.html"); |
| 358 WebURLRequest request; | 358 WebURLRequest request; |
| 359 request.initialize(); | 359 request.initialize(); |
| 360 request.setURL(url); | 360 request.setURL(url); |
| 361 | 361 |
| 362 m_expectedResponse = WebURLResponse(); | 362 m_expectedResponse = WebURLResponse(); |
| 363 m_expectedResponse.initialize(); | 363 m_expectedResponse.initialize(); |
| 364 m_expectedResponse.setMIMEType("text/html"); | 364 m_expectedResponse.setMIMEType("text/html"); |
| 365 m_expectedResponse.setHTTPStatusCode(200); | 365 m_expectedResponse.setHTTPStatusCode(200); |
| 366 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); | 366 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); |
| 367 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); | 367 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); |
| 368 | 368 |
| 369 WebURLLoaderOptions options; | 369 WebURLLoaderOptions options; |
| 370 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 370 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
| 371 m_expectedLoader = createAssociatedURLLoader(options); | 371 m_expectedLoader = createAssociatedURLLoader(options); |
| 372 EXPECT_TRUE(m_expectedLoader); | 372 EXPECT_TRUE(m_expectedLoader); |
| 373 m_expectedLoader->loadAsynchronously(request, this); | 373 m_expectedLoader->loadAsynchronously(request, this); |
| 374 serveRequests(); | 374 serveRequests(); |
| 375 EXPECT_TRUE(m_didReceiveResponse); | 375 EXPECT_TRUE(m_didReceiveResponse); |
| 376 EXPECT_TRUE(m_didReceiveData); | 376 EXPECT_TRUE(m_didReceiveData); |
| 377 EXPECT_TRUE(m_didFinishLoading); | 377 EXPECT_TRUE(m_didFinishLoading); |
| 378 } | 378 } |
| 379 | 379 |
| 380 // Test an unsuccessful cross-origin load using CORS. | 380 // Test an unsuccessful cross-origin load using CORS. |
| 381 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailure) | 381 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailure) |
| 382 { | 382 { |
| 383 // This is cross-origin since the frame was loaded from www.test.com. | 383 // This is cross-origin since the frame was loaded from www.test.com. |
| 384 WebCore::KURL url = toKURL("http://www.other.com/CrossOriginWithAccessContro
lFailure.html"); | 384 blink::KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlF
ailure.html"); |
| 385 WebURLRequest request; | 385 WebURLRequest request; |
| 386 request.initialize(); | 386 request.initialize(); |
| 387 request.setURL(url); | 387 request.setURL(url); |
| 388 | 388 |
| 389 m_expectedResponse = WebURLResponse(); | 389 m_expectedResponse = WebURLResponse(); |
| 390 m_expectedResponse.initialize(); | 390 m_expectedResponse.initialize(); |
| 391 m_expectedResponse.setMIMEType("text/html"); | 391 m_expectedResponse.setMIMEType("text/html"); |
| 392 m_expectedResponse.setHTTPStatusCode(200); | 392 m_expectedResponse.setHTTPStatusCode(200); |
| 393 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); | 393 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); |
| 394 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); | 394 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 407 // The loader needs to receive the response, before doing the CORS check. | 407 // The loader needs to receive the response, before doing the CORS check. |
| 408 serveRequests(); | 408 serveRequests(); |
| 409 EXPECT_TRUE(m_didFail); | 409 EXPECT_TRUE(m_didFail); |
| 410 EXPECT_FALSE(m_didReceiveResponse); | 410 EXPECT_FALSE(m_didReceiveResponse); |
| 411 } | 411 } |
| 412 | 412 |
| 413 // Test an unsuccessful cross-origin load using CORS. | 413 // Test an unsuccessful cross-origin load using CORS. |
| 414 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailureBadStatusCode
) | 414 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailureBadStatusCode
) |
| 415 { | 415 { |
| 416 // This is cross-origin since the frame was loaded from www.test.com. | 416 // This is cross-origin since the frame was loaded from www.test.com. |
| 417 WebCore::KURL url = toKURL("http://www.other.com/CrossOriginWithAccessContro
lFailure.html"); | 417 blink::KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlF
ailure.html"); |
| 418 WebURLRequest request; | 418 WebURLRequest request; |
| 419 request.initialize(); | 419 request.initialize(); |
| 420 request.setURL(url); | 420 request.setURL(url); |
| 421 | 421 |
| 422 m_expectedResponse = WebURLResponse(); | 422 m_expectedResponse = WebURLResponse(); |
| 423 m_expectedResponse.initialize(); | 423 m_expectedResponse.initialize(); |
| 424 m_expectedResponse.setMIMEType("text/html"); | 424 m_expectedResponse.setMIMEType("text/html"); |
| 425 m_expectedResponse.setHTTPStatusCode(0); | 425 m_expectedResponse.setHTTPStatusCode(0); |
| 426 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); | 426 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); |
| 427 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); | 427 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); |
| 428 | 428 |
| 429 WebURLLoaderOptions options; | 429 WebURLLoaderOptions options; |
| 430 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 430 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
| 431 m_expectedLoader = createAssociatedURLLoader(options); | 431 m_expectedLoader = createAssociatedURLLoader(options); |
| 432 EXPECT_TRUE(m_expectedLoader); | 432 EXPECT_TRUE(m_expectedLoader); |
| 433 m_expectedLoader->loadAsynchronously(request, this); | 433 m_expectedLoader->loadAsynchronously(request, this); |
| 434 | 434 |
| 435 // Failure should not be reported synchronously. | 435 // Failure should not be reported synchronously. |
| 436 EXPECT_FALSE(m_didFail); | 436 EXPECT_FALSE(m_didFail); |
| 437 // The loader needs to receive the response, before doing the CORS check. | 437 // The loader needs to receive the response, before doing the CORS check. |
| 438 serveRequests(); | 438 serveRequests(); |
| 439 EXPECT_TRUE(m_didFail); | 439 EXPECT_TRUE(m_didFail); |
| 440 EXPECT_FALSE(m_didReceiveResponse); | 440 EXPECT_FALSE(m_didReceiveResponse); |
| 441 } | 441 } |
| 442 | 442 |
| 443 // Test a same-origin URL redirect and load. | 443 // Test a same-origin URL redirect and load. |
| 444 TEST_F(AssociatedURLLoaderTest, RedirectSuccess) | 444 TEST_F(AssociatedURLLoaderTest, RedirectSuccess) |
| 445 { | 445 { |
| 446 WebCore::KURL url = toKURL("http://www.test.com/RedirectSuccess.html"); | 446 blink::KURL url = toKURL("http://www.test.com/RedirectSuccess.html"); |
| 447 char redirect[] = "http://www.test.com/RedirectSuccess2.html"; // Same-orig
in | 447 char redirect[] = "http://www.test.com/RedirectSuccess2.html"; // Same-orig
in |
| 448 WebCore::KURL redirectURL = toKURL(redirect); | 448 blink::KURL redirectURL = toKURL(redirect); |
| 449 | 449 |
| 450 WebURLRequest request; | 450 WebURLRequest request; |
| 451 request.initialize(); | 451 request.initialize(); |
| 452 request.setURL(url); | 452 request.setURL(url); |
| 453 | 453 |
| 454 m_expectedRedirectResponse = WebURLResponse(); | 454 m_expectedRedirectResponse = WebURLResponse(); |
| 455 m_expectedRedirectResponse.initialize(); | 455 m_expectedRedirectResponse.initialize(); |
| 456 m_expectedRedirectResponse.setMIMEType("text/html"); | 456 m_expectedRedirectResponse.setMIMEType("text/html"); |
| 457 m_expectedRedirectResponse.setHTTPStatusCode(301); | 457 m_expectedRedirectResponse.setHTTPStatusCode(301); |
| 458 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); | 458 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 475 EXPECT_TRUE(m_willSendRequest); | 475 EXPECT_TRUE(m_willSendRequest); |
| 476 EXPECT_TRUE(m_didReceiveResponse); | 476 EXPECT_TRUE(m_didReceiveResponse); |
| 477 EXPECT_TRUE(m_didReceiveData); | 477 EXPECT_TRUE(m_didReceiveData); |
| 478 EXPECT_TRUE(m_didFinishLoading); | 478 EXPECT_TRUE(m_didFinishLoading); |
| 479 } | 479 } |
| 480 | 480 |
| 481 // Test that a cross origin redirect response without CORS headers fails. | 481 // Test that a cross origin redirect response without CORS headers fails. |
| 482 // Disabled, http://crbug.com/240912 . | 482 // Disabled, http://crbug.com/240912 . |
| 483 TEST_F(AssociatedURLLoaderTest, DISABLED_RedirectCrossOriginWithAccessControlFai
lure) | 483 TEST_F(AssociatedURLLoaderTest, DISABLED_RedirectCrossOriginWithAccessControlFai
lure) |
| 484 { | 484 { |
| 485 WebCore::KURL url = toKURL("http://www.test.com/RedirectCrossOriginWithAcces
sControlFailure.html"); | 485 blink::KURL url = toKURL("http://www.test.com/RedirectCrossOriginWithAccessC
ontrolFailure.html"); |
| 486 char redirect[] = "http://www.other.com/RedirectCrossOriginWithAccessControl
Failure.html"; // Cross-origin | 486 char redirect[] = "http://www.other.com/RedirectCrossOriginWithAccessControl
Failure.html"; // Cross-origin |
| 487 WebCore::KURL redirectURL = toKURL(redirect); | 487 blink::KURL redirectURL = toKURL(redirect); |
| 488 | 488 |
| 489 WebURLRequest request; | 489 WebURLRequest request; |
| 490 request.initialize(); | 490 request.initialize(); |
| 491 request.setURL(url); | 491 request.setURL(url); |
| 492 | 492 |
| 493 // Create a redirect response without CORS headers. | 493 // Create a redirect response without CORS headers. |
| 494 m_expectedRedirectResponse = WebURLResponse(); | 494 m_expectedRedirectResponse = WebURLResponse(); |
| 495 m_expectedRedirectResponse.initialize(); | 495 m_expectedRedirectResponse.initialize(); |
| 496 m_expectedRedirectResponse.setMIMEType("text/html"); | 496 m_expectedRedirectResponse.setMIMEType("text/html"); |
| 497 m_expectedRedirectResponse.setHTTPStatusCode(301); | 497 m_expectedRedirectResponse.setHTTPStatusCode(301); |
| 498 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); | 498 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); |
| 499 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRed
irectResponse, m_frameFilePath); | 499 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRed
irectResponse, m_frameFilePath); |
| 500 | 500 |
| 501 WebURLLoaderOptions options; | 501 WebURLLoaderOptions options; |
| 502 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 502 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
| 503 m_expectedLoader = createAssociatedURLLoader(options); | 503 m_expectedLoader = createAssociatedURLLoader(options); |
| 504 EXPECT_TRUE(m_expectedLoader); | 504 EXPECT_TRUE(m_expectedLoader); |
| 505 m_expectedLoader->loadAsynchronously(request, this); | 505 m_expectedLoader->loadAsynchronously(request, this); |
| 506 serveRequests(); | 506 serveRequests(); |
| 507 // We should not receive a notification for the redirect or any response. | 507 // We should not receive a notification for the redirect or any response. |
| 508 EXPECT_FALSE(m_willSendRequest); | 508 EXPECT_FALSE(m_willSendRequest); |
| 509 EXPECT_FALSE(m_didReceiveResponse); | 509 EXPECT_FALSE(m_didReceiveResponse); |
| 510 EXPECT_FALSE(m_didReceiveData); | 510 EXPECT_FALSE(m_didReceiveData); |
| 511 EXPECT_FALSE(m_didFail); | 511 EXPECT_FALSE(m_didFail); |
| 512 } | 512 } |
| 513 | 513 |
| 514 // Test that a cross origin redirect response with CORS headers that allow the r
equesting origin succeeds. | 514 // Test that a cross origin redirect response with CORS headers that allow the r
equesting origin succeeds. |
| 515 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginWithAccessControlSuccess) | 515 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginWithAccessControlSuccess) |
| 516 { | 516 { |
| 517 WebCore::KURL url = toKURL("http://www.test.com/RedirectCrossOriginWithAcces
sControlSuccess.html"); | 517 blink::KURL url = toKURL("http://www.test.com/RedirectCrossOriginWithAccessC
ontrolSuccess.html"); |
| 518 char redirect[] = "http://www.other.com/RedirectCrossOriginWithAccessControl
Success.html"; // Cross-origin | 518 char redirect[] = "http://www.other.com/RedirectCrossOriginWithAccessControl
Success.html"; // Cross-origin |
| 519 WebCore::KURL redirectURL = toKURL(redirect); | 519 blink::KURL redirectURL = toKURL(redirect); |
| 520 | 520 |
| 521 WebURLRequest request; | 521 WebURLRequest request; |
| 522 request.initialize(); | 522 request.initialize(); |
| 523 request.setURL(url); | 523 request.setURL(url); |
| 524 // Add a CORS simple header. | 524 // Add a CORS simple header. |
| 525 request.setHTTPHeaderField("accept", "application/json"); | 525 request.setHTTPHeaderField("accept", "application/json"); |
| 526 | 526 |
| 527 // Create a redirect response that allows the redirect to pass the access co
ntrol checks. | 527 // Create a redirect response that allows the redirect to pass the access co
ntrol checks. |
| 528 m_expectedRedirectResponse = WebURLResponse(); | 528 m_expectedRedirectResponse = WebURLResponse(); |
| 529 m_expectedRedirectResponse.initialize(); | 529 m_expectedRedirectResponse.initialize(); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 634 | 634 |
| 635 // Test that Set-Cookie headers aren't returned, even if exposed. | 635 // Test that Set-Cookie headers aren't returned, even if exposed. |
| 636 EXPECT_FALSE(CheckAccessControlHeaders("Set-Cookie", true)); | 636 EXPECT_FALSE(CheckAccessControlHeaders("Set-Cookie", true)); |
| 637 } | 637 } |
| 638 | 638 |
| 639 // Test that the loader can allow non-whitelisted response headers for trusted C
ORS loads. | 639 // Test that the loader can allow non-whitelisted response headers for trusted C
ORS loads. |
| 640 TEST_F(AssociatedURLLoaderTest, CrossOriginHeaderAllowResponseHeaders) | 640 TEST_F(AssociatedURLLoaderTest, CrossOriginHeaderAllowResponseHeaders) |
| 641 { | 641 { |
| 642 WebURLRequest request; | 642 WebURLRequest request; |
| 643 request.initialize(); | 643 request.initialize(); |
| 644 WebCore::KURL url = toKURL("http://www.other.com/CrossOriginHeaderAllowRespo
nseHeaders.html"); | 644 blink::KURL url = toKURL("http://www.other.com/CrossOriginHeaderAllowRespons
eHeaders.html"); |
| 645 request.setURL(url); | 645 request.setURL(url); |
| 646 | 646 |
| 647 WebString headerNameString(WebString::fromUTF8("non-whitelisted")); | 647 WebString headerNameString(WebString::fromUTF8("non-whitelisted")); |
| 648 m_expectedResponse = WebURLResponse(); | 648 m_expectedResponse = WebURLResponse(); |
| 649 m_expectedResponse.initialize(); | 649 m_expectedResponse.initialize(); |
| 650 m_expectedResponse.setMIMEType("text/html"); | 650 m_expectedResponse.setMIMEType("text/html"); |
| 651 m_expectedResponse.setHTTPStatusCode(200); | 651 m_expectedResponse.setHTTPStatusCode(200); |
| 652 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"); | 652 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"); |
| 653 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo"); | 653 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo"); |
| 654 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); | 654 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes
ponse, m_frameFilePath); |
| 655 | 655 |
| 656 WebURLLoaderOptions options; | 656 WebURLLoaderOptions options; |
| 657 options.exposeAllResponseHeaders = true; // This turns off response whitelis
ting. | 657 options.exposeAllResponseHeaders = true; // This turns off response whitelis
ting. |
| 658 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; | 658 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo
licyUseAccessControl; |
| 659 m_expectedLoader = createAssociatedURLLoader(options); | 659 m_expectedLoader = createAssociatedURLLoader(options); |
| 660 EXPECT_TRUE(m_expectedLoader); | 660 EXPECT_TRUE(m_expectedLoader); |
| 661 m_expectedLoader->loadAsynchronously(request, this); | 661 m_expectedLoader->loadAsynchronously(request, this); |
| 662 serveRequests(); | 662 serveRequests(); |
| 663 EXPECT_TRUE(m_didReceiveResponse); | 663 EXPECT_TRUE(m_didReceiveResponse); |
| 664 EXPECT_TRUE(m_didReceiveData); | 664 EXPECT_TRUE(m_didReceiveData); |
| 665 EXPECT_TRUE(m_didFinishLoading); | 665 EXPECT_TRUE(m_didFinishLoading); |
| 666 | 666 |
| 667 EXPECT_FALSE(m_actualResponse.httpHeaderField(headerNameString).isEmpty()); | 667 EXPECT_FALSE(m_actualResponse.httpHeaderField(headerNameString).isEmpty()); |
| 668 } | 668 } |
| 669 | 669 |
| 670 } | 670 } |
| OLD | NEW |