| 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 |