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

Side by Side Diff: third_party/WebKit/Source/web/AssociatedURLLoaderTest.cpp

Issue 1845323002: Remove WebUnitTestSupport (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 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 18 matching lines...) Expand all
29 */ 29 */
30 30
31 #include "platform/testing/URLTestHelpers.h" 31 #include "platform/testing/URLTestHelpers.h"
32 #include "platform/testing/UnitTestHelpers.h" 32 #include "platform/testing/UnitTestHelpers.h"
33 #include "public/platform/Platform.h" 33 #include "public/platform/Platform.h"
34 #include "public/platform/WebString.h" 34 #include "public/platform/WebString.h"
35 #include "public/platform/WebThread.h" 35 #include "public/platform/WebThread.h"
36 #include "public/platform/WebURL.h" 36 #include "public/platform/WebURL.h"
37 #include "public/platform/WebURLLoader.h" 37 #include "public/platform/WebURLLoader.h"
38 #include "public/platform/WebURLLoaderClient.h" 38 #include "public/platform/WebURLLoaderClient.h"
39 #include "public/platform/WebURLLoaderMockFactory.h"
39 #include "public/platform/WebURLRequest.h" 40 #include "public/platform/WebURLRequest.h"
40 #include "public/platform/WebURLResponse.h" 41 #include "public/platform/WebURLResponse.h"
41 #include "public/platform/WebUnitTestSupport.h" 42 #include "public/web/WebCache.h"
42 #include "public/web/WebFrame.h" 43 #include "public/web/WebFrame.h"
43 #include "public/web/WebURLLoaderOptions.h" 44 #include "public/web/WebURLLoaderOptions.h"
44 #include "public/web/WebView.h" 45 #include "public/web/WebView.h"
45 #include "testing/gtest/include/gtest/gtest.h" 46 #include "testing/gtest/include/gtest/gtest.h"
46 #include "web/tests/FrameTestHelpers.h" 47 #include "web/tests/FrameTestHelpers.h"
47 #include "wtf/text/CString.h" 48 #include "wtf/text/CString.h"
48 #include "wtf/text/WTFString.h" 49 #include "wtf/text/WTFString.h"
49 50
50 using blink::URLTestHelpers::toKURL; 51 using blink::URLTestHelpers::toKURL;
51 using blink::testing::runPendingTasks; 52 using blink::testing::runPendingTasks;
(...skipping 20 matching lines...) Expand all
72 } 73 }
73 74
74 KURL RegisterMockedUrl(const std::string& urlRoot, const WTF::String& filena me) 75 KURL RegisterMockedUrl(const std::string& urlRoot, const WTF::String& filena me)
75 { 76 {
76 WebURLResponse response; 77 WebURLResponse response;
77 response.initialize(); 78 response.initialize();
78 response.setMIMEType("text/html"); 79 response.setMIMEType("text/html");
79 WTF::String localPath = m_baseFilePath; 80 WTF::String localPath = m_baseFilePath;
80 localPath.append(filename); 81 localPath.append(filename);
81 KURL url = toKURL(urlRoot + filename.utf8().data()); 82 KURL url = toKURL(urlRoot + filename.utf8().data());
82 Platform::current()->unitTestSupport()->registerMockedURL(url, response, localPath); 83 Platform::current()->getURLLoaderMockFactory()->registerURL(url, respons e, localPath);
83 return url; 84 return url;
84 } 85 }
85 86
86 void SetUp() override 87 void SetUp() override
87 { 88 {
88 m_helper.initialize(); 89 m_helper.initialize();
89 90
90 std::string urlRoot = "http://www.test.com/"; 91 std::string urlRoot = "http://www.test.com/";
91 KURL url = RegisterMockedUrl(urlRoot, "iframes_test.html"); 92 KURL url = RegisterMockedUrl(urlRoot, "iframes_test.html");
92 const char* iframeSupportFiles[] = { 93 const char* iframeSupportFiles[] = {
93 "invisible_iframe.html", 94 "invisible_iframe.html",
94 "visible_iframe.html", 95 "visible_iframe.html",
95 "zero_sized_iframe.html", 96 "zero_sized_iframe.html",
96 }; 97 };
97 for (size_t i = 0; i < WTF_ARRAY_LENGTH(iframeSupportFiles); ++i) { 98 for (size_t i = 0; i < WTF_ARRAY_LENGTH(iframeSupportFiles); ++i) {
98 RegisterMockedUrl(urlRoot, iframeSupportFiles[i]); 99 RegisterMockedUrl(urlRoot, iframeSupportFiles[i]);
99 } 100 }
100 101
101 FrameTestHelpers::loadFrame(mainFrame(), url.getString().utf8().data()); 102 FrameTestHelpers::loadFrame(mainFrame(), url.getString().utf8().data());
102 103
103 Platform::current()->unitTestSupport()->unregisterMockedURL(url); 104 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
104 } 105 }
105 106
106 void TearDown() override 107 void TearDown() override
107 { 108 {
108 Platform::current()->unitTestSupport()->unregisterAllMockedURLs(); 109 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs();
110 WebCache::clear();
109 } 111 }
110 112
111 void serveRequests() 113 void serveRequests()
112 { 114 {
113 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests( ); 115 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequest s();
114 } 116 }
115 117
116 PassOwnPtr<WebURLLoader> createAssociatedURLLoader(const WebURLLoaderOptions options = WebURLLoaderOptions()) 118 PassOwnPtr<WebURLLoader> createAssociatedURLLoader(const WebURLLoaderOptions options = WebURLLoaderOptions())
117 { 119 {
118 return adoptPtr(mainFrame()->createAssociatedURLLoader(options)); 120 return adoptPtr(mainFrame()->createAssociatedURLLoader(options));
119 } 121 }
120 122
121 // WebURLLoaderClient implementation. 123 // WebURLLoaderClient implementation.
122 void willFollowRedirect(WebURLLoader* loader, WebURLRequest& newRequest, con st WebURLResponse& redirectResponse) override 124 void willFollowRedirect(WebURLLoader* loader, WebURLRequest& newRequest, con st WebURLResponse& redirectResponse) override
123 { 125 {
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 239
238 WebString headerNameString(WebString::fromUTF8(headerName)); 240 WebString headerNameString(WebString::fromUTF8(headerName));
239 m_expectedResponse = WebURLResponse(); 241 m_expectedResponse = WebURLResponse();
240 m_expectedResponse.initialize(); 242 m_expectedResponse.initialize();
241 m_expectedResponse.setMIMEType("text/html"); 243 m_expectedResponse.setMIMEType("text/html");
242 m_expectedResponse.setHTTPStatusCode(200); 244 m_expectedResponse.setHTTPStatusCode(200);
243 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*" ); 245 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*" );
244 if (exposed) 246 if (exposed)
245 m_expectedResponse.addHTTPHeaderField("access-control-expose-headers ", headerNameString); 247 m_expectedResponse.addHTTPHeaderField("access-control-expose-headers ", headerNameString);
246 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo"); 248 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo");
247 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expecte dResponse, m_frameFilePath); 249 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expec tedResponse, m_frameFilePath);
248 250
249 WebURLLoaderOptions options; 251 WebURLLoaderOptions options;
250 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginReque stPolicyUseAccessControl; 252 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginReque stPolicyUseAccessControl;
251 m_expectedLoader = createAssociatedURLLoader(options); 253 m_expectedLoader = createAssociatedURLLoader(options);
252 EXPECT_TRUE(m_expectedLoader); 254 EXPECT_TRUE(m_expectedLoader);
253 m_expectedLoader->loadAsynchronously(request, this); 255 m_expectedLoader->loadAsynchronously(request, this);
254 serveRequests(); 256 serveRequests();
255 EXPECT_TRUE(m_didReceiveResponse); 257 EXPECT_TRUE(m_didReceiveResponse);
256 EXPECT_TRUE(m_didReceiveData); 258 EXPECT_TRUE(m_didReceiveData);
257 EXPECT_TRUE(m_didFinishLoading); 259 EXPECT_TRUE(m_didFinishLoading);
(...skipping 28 matching lines...) Expand all
286 { 288 {
287 KURL url = toKURL("http://www.test.com/SameOriginSuccess.html"); 289 KURL url = toKURL("http://www.test.com/SameOriginSuccess.html");
288 WebURLRequest request; 290 WebURLRequest request;
289 request.initialize(); 291 request.initialize();
290 request.setURL(url); 292 request.setURL(url);
291 293
292 m_expectedResponse = WebURLResponse(); 294 m_expectedResponse = WebURLResponse();
293 m_expectedResponse.initialize(); 295 m_expectedResponse.initialize();
294 m_expectedResponse.setMIMEType("text/html"); 296 m_expectedResponse.setMIMEType("text/html");
295 m_expectedResponse.setHTTPStatusCode(200); 297 m_expectedResponse.setHTTPStatusCode(200);
296 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes ponse, m_frameFilePath); 298 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR esponse, m_frameFilePath);
297 299
298 m_expectedLoader = createAssociatedURLLoader(); 300 m_expectedLoader = createAssociatedURLLoader();
299 EXPECT_TRUE(m_expectedLoader); 301 EXPECT_TRUE(m_expectedLoader);
300 m_expectedLoader->loadAsynchronously(request, this); 302 m_expectedLoader->loadAsynchronously(request, this);
301 serveRequests(); 303 serveRequests();
302 EXPECT_TRUE(m_didReceiveResponse); 304 EXPECT_TRUE(m_didReceiveResponse);
303 EXPECT_TRUE(m_didReceiveData); 305 EXPECT_TRUE(m_didReceiveData);
304 EXPECT_TRUE(m_didFinishLoading); 306 EXPECT_TRUE(m_didFinishLoading);
305 } 307 }
306 308
(...skipping 14 matching lines...) Expand all
321 // This is cross-origin since the frame was loaded from www.test.com. 323 // This is cross-origin since the frame was loaded from www.test.com.
322 KURL url = toKURL("http://www.other.com/CrossOriginSuccess.html"); 324 KURL url = toKURL("http://www.other.com/CrossOriginSuccess.html");
323 WebURLRequest request; 325 WebURLRequest request;
324 request.initialize(); 326 request.initialize();
325 request.setURL(url); 327 request.setURL(url);
326 328
327 m_expectedResponse = WebURLResponse(); 329 m_expectedResponse = WebURLResponse();
328 m_expectedResponse.initialize(); 330 m_expectedResponse.initialize();
329 m_expectedResponse.setMIMEType("text/html"); 331 m_expectedResponse.setMIMEType("text/html");
330 m_expectedResponse.setHTTPStatusCode(200); 332 m_expectedResponse.setHTTPStatusCode(200);
331 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes ponse, m_frameFilePath); 333 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR esponse, m_frameFilePath);
332 334
333 WebURLLoaderOptions options; 335 WebURLLoaderOptions options;
334 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyAllow; 336 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyAllow;
335 m_expectedLoader = createAssociatedURLLoader(options); 337 m_expectedLoader = createAssociatedURLLoader(options);
336 EXPECT_TRUE(m_expectedLoader); 338 EXPECT_TRUE(m_expectedLoader);
337 m_expectedLoader->loadAsynchronously(request, this); 339 m_expectedLoader->loadAsynchronously(request, this);
338 serveRequests(); 340 serveRequests();
339 EXPECT_TRUE(m_didReceiveResponse); 341 EXPECT_TRUE(m_didReceiveResponse);
340 EXPECT_TRUE(m_didReceiveData); 342 EXPECT_TRUE(m_didReceiveData);
341 EXPECT_TRUE(m_didFinishLoading); 343 EXPECT_TRUE(m_didFinishLoading);
342 } 344 }
343 345
344 // Test a successful cross-origin load using CORS. 346 // Test a successful cross-origin load using CORS.
345 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlSuccess) 347 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlSuccess)
346 { 348 {
347 // This is cross-origin since the frame was loaded from www.test.com. 349 // This is cross-origin since the frame was loaded from www.test.com.
348 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlSuccess. html"); 350 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlSuccess. html");
349 WebURLRequest request; 351 WebURLRequest request;
350 request.initialize(); 352 request.initialize();
351 request.setURL(url); 353 request.setURL(url);
352 354
353 m_expectedResponse = WebURLResponse(); 355 m_expectedResponse = WebURLResponse();
354 m_expectedResponse.initialize(); 356 m_expectedResponse.initialize();
355 m_expectedResponse.setMIMEType("text/html"); 357 m_expectedResponse.setMIMEType("text/html");
356 m_expectedResponse.setHTTPStatusCode(200); 358 m_expectedResponse.setHTTPStatusCode(200);
357 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); 359 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*");
358 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes ponse, m_frameFilePath); 360 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR esponse, m_frameFilePath);
359 361
360 WebURLLoaderOptions options; 362 WebURLLoaderOptions options;
361 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl; 363 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl;
362 m_expectedLoader = createAssociatedURLLoader(options); 364 m_expectedLoader = createAssociatedURLLoader(options);
363 EXPECT_TRUE(m_expectedLoader); 365 EXPECT_TRUE(m_expectedLoader);
364 m_expectedLoader->loadAsynchronously(request, this); 366 m_expectedLoader->loadAsynchronously(request, this);
365 serveRequests(); 367 serveRequests();
366 EXPECT_TRUE(m_didReceiveResponse); 368 EXPECT_TRUE(m_didReceiveResponse);
367 EXPECT_TRUE(m_didReceiveData); 369 EXPECT_TRUE(m_didReceiveData);
368 EXPECT_TRUE(m_didFinishLoading); 370 EXPECT_TRUE(m_didFinishLoading);
369 } 371 }
370 372
371 // Test an unsuccessful cross-origin load using CORS. 373 // Test an unsuccessful cross-origin load using CORS.
372 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailure) 374 TEST_F(AssociatedURLLoaderTest, CrossOriginWithAccessControlFailure)
373 { 375 {
374 // 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.
375 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlFailure. html"); 377 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlFailure. html");
376 WebURLRequest request; 378 WebURLRequest request;
377 request.initialize(); 379 request.initialize();
378 request.setURL(url); 380 request.setURL(url);
379 381
380 m_expectedResponse = WebURLResponse(); 382 m_expectedResponse = WebURLResponse();
381 m_expectedResponse.initialize(); 383 m_expectedResponse.initialize();
382 m_expectedResponse.setMIMEType("text/html"); 384 m_expectedResponse.setMIMEType("text/html");
383 m_expectedResponse.setHTTPStatusCode(200); 385 m_expectedResponse.setHTTPStatusCode(200);
384 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); 386 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*");
385 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes ponse, m_frameFilePath); 387 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR esponse, m_frameFilePath);
386 388
387 WebURLLoaderOptions options; 389 WebURLLoaderOptions options;
388 // Send credentials. This will cause the CORS checks to fail, because creden tials can't be 390 // Send credentials. This will cause the CORS checks to fail, because creden tials can't be
389 // sent to a server which returns the header "access-control-allow-origin" w ith "*" as its value. 391 // sent to a server which returns the header "access-control-allow-origin" w ith "*" as its value.
390 options.allowCredentials = true; 392 options.allowCredentials = true;
391 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl; 393 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl;
392 m_expectedLoader = createAssociatedURLLoader(options); 394 m_expectedLoader = createAssociatedURLLoader(options);
393 EXPECT_TRUE(m_expectedLoader); 395 EXPECT_TRUE(m_expectedLoader);
394 m_expectedLoader->loadAsynchronously(request, this); 396 m_expectedLoader->loadAsynchronously(request, this);
395 397
(...skipping 12 matching lines...) Expand all
408 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlFailure. html"); 410 KURL url = toKURL("http://www.other.com/CrossOriginWithAccessControlFailure. html");
409 WebURLRequest request; 411 WebURLRequest request;
410 request.initialize(); 412 request.initialize();
411 request.setURL(url); 413 request.setURL(url);
412 414
413 m_expectedResponse = WebURLResponse(); 415 m_expectedResponse = WebURLResponse();
414 m_expectedResponse.initialize(); 416 m_expectedResponse.initialize();
415 m_expectedResponse.setMIMEType("text/html"); 417 m_expectedResponse.setMIMEType("text/html");
416 m_expectedResponse.setHTTPStatusCode(0); 418 m_expectedResponse.setHTTPStatusCode(0);
417 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); 419 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*");
418 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes ponse, m_frameFilePath); 420 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR esponse, m_frameFilePath);
419 421
420 WebURLLoaderOptions options; 422 WebURLLoaderOptions options;
421 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl; 423 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl;
422 m_expectedLoader = createAssociatedURLLoader(options); 424 m_expectedLoader = createAssociatedURLLoader(options);
423 EXPECT_TRUE(m_expectedLoader); 425 EXPECT_TRUE(m_expectedLoader);
424 m_expectedLoader->loadAsynchronously(request, this); 426 m_expectedLoader->loadAsynchronously(request, this);
425 427
426 // Failure should not be reported synchronously. 428 // Failure should not be reported synchronously.
427 EXPECT_FALSE(m_didFail); 429 EXPECT_FALSE(m_didFail);
428 // The loader needs to receive the response, before doing the CORS check. 430 // The loader needs to receive the response, before doing the CORS check.
(...skipping 11 matching lines...) Expand all
440 442
441 WebURLRequest request; 443 WebURLRequest request;
442 request.initialize(); 444 request.initialize();
443 request.setURL(url); 445 request.setURL(url);
444 446
445 m_expectedRedirectResponse = WebURLResponse(); 447 m_expectedRedirectResponse = WebURLResponse();
446 m_expectedRedirectResponse.initialize(); 448 m_expectedRedirectResponse.initialize();
447 m_expectedRedirectResponse.setMIMEType("text/html"); 449 m_expectedRedirectResponse.setMIMEType("text/html");
448 m_expectedRedirectResponse.setHTTPStatusCode(301); 450 m_expectedRedirectResponse.setHTTPStatusCode(301);
449 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); 451 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect);
450 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRed irectResponse, m_frameFilePath); 452 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR edirectResponse, m_frameFilePath);
451 453
452 m_expectedNewRequest = WebURLRequest(); 454 m_expectedNewRequest = WebURLRequest();
453 m_expectedNewRequest.initialize(); 455 m_expectedNewRequest.initialize();
454 m_expectedNewRequest.setURL(redirectURL); 456 m_expectedNewRequest.setURL(redirectURL);
455 457
456 m_expectedResponse = WebURLResponse(); 458 m_expectedResponse = WebURLResponse();
457 m_expectedResponse.initialize(); 459 m_expectedResponse.initialize();
458 m_expectedResponse.setMIMEType("text/html"); 460 m_expectedResponse.setMIMEType("text/html");
459 m_expectedResponse.setHTTPStatusCode(200); 461 m_expectedResponse.setHTTPStatusCode(200);
460 Platform::current()->unitTestSupport()->registerMockedURL(redirectURL, m_exp ectedResponse, m_frameFilePath); 462 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e xpectedResponse, m_frameFilePath);
461 463
462 m_expectedLoader = createAssociatedURLLoader(); 464 m_expectedLoader = createAssociatedURLLoader();
463 EXPECT_TRUE(m_expectedLoader); 465 EXPECT_TRUE(m_expectedLoader);
464 m_expectedLoader->loadAsynchronously(request, this); 466 m_expectedLoader->loadAsynchronously(request, this);
465 serveRequests(); 467 serveRequests();
466 EXPECT_TRUE(m_willFollowRedirect); 468 EXPECT_TRUE(m_willFollowRedirect);
467 EXPECT_TRUE(m_didReceiveResponse); 469 EXPECT_TRUE(m_didReceiveResponse);
468 EXPECT_TRUE(m_didReceiveData); 470 EXPECT_TRUE(m_didReceiveData);
469 EXPECT_TRUE(m_didFinishLoading); 471 EXPECT_TRUE(m_didFinishLoading);
470 } 472 }
471 473
472 // Test a cross-origin URL redirect without Access Control set. 474 // Test a cross-origin URL redirect without Access Control set.
473 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginFailure) 475 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginFailure)
474 { 476 {
475 KURL url = toKURL("http://www.test.com/RedirectCrossOriginFailure.html"); 477 KURL url = toKURL("http://www.test.com/RedirectCrossOriginFailure.html");
476 char redirect[] = "http://www.other.com/RedirectCrossOriginFailure.html"; / / Cross-origin 478 char redirect[] = "http://www.other.com/RedirectCrossOriginFailure.html"; / / Cross-origin
477 KURL redirectURL = toKURL(redirect); 479 KURL redirectURL = toKURL(redirect);
478 480
479 WebURLRequest request; 481 WebURLRequest request;
480 request.initialize(); 482 request.initialize();
481 request.setURL(url); 483 request.setURL(url);
482 484
483 m_expectedRedirectResponse = WebURLResponse(); 485 m_expectedRedirectResponse = WebURLResponse();
484 m_expectedRedirectResponse.initialize(); 486 m_expectedRedirectResponse.initialize();
485 m_expectedRedirectResponse.setMIMEType("text/html"); 487 m_expectedRedirectResponse.setMIMEType("text/html");
486 m_expectedRedirectResponse.setHTTPStatusCode(301); 488 m_expectedRedirectResponse.setHTTPStatusCode(301);
487 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); 489 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect);
488 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRed irectResponse, m_frameFilePath); 490 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR edirectResponse, m_frameFilePath);
489 491
490 m_expectedNewRequest = WebURLRequest(); 492 m_expectedNewRequest = WebURLRequest();
491 m_expectedNewRequest.initialize(); 493 m_expectedNewRequest.initialize();
492 m_expectedNewRequest.setURL(redirectURL); 494 m_expectedNewRequest.setURL(redirectURL);
493 495
494 m_expectedResponse = WebURLResponse(); 496 m_expectedResponse = WebURLResponse();
495 m_expectedResponse.initialize(); 497 m_expectedResponse.initialize();
496 m_expectedResponse.setMIMEType("text/html"); 498 m_expectedResponse.setMIMEType("text/html");
497 m_expectedResponse.setHTTPStatusCode(200); 499 m_expectedResponse.setHTTPStatusCode(200);
498 Platform::current()->unitTestSupport()->registerMockedURL(redirectURL, m_exp ectedResponse, m_frameFilePath); 500 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e xpectedResponse, m_frameFilePath);
499 501
500 m_expectedLoader = createAssociatedURLLoader(); 502 m_expectedLoader = createAssociatedURLLoader();
501 EXPECT_TRUE(m_expectedLoader); 503 EXPECT_TRUE(m_expectedLoader);
502 m_expectedLoader->loadAsynchronously(request, this); 504 m_expectedLoader->loadAsynchronously(request, this);
503 505
504 serveRequests(); 506 serveRequests();
505 EXPECT_FALSE(m_willFollowRedirect); 507 EXPECT_FALSE(m_willFollowRedirect);
506 EXPECT_FALSE(m_didReceiveResponse); 508 EXPECT_FALSE(m_didReceiveResponse);
507 EXPECT_FALSE(m_didReceiveData); 509 EXPECT_FALSE(m_didReceiveData);
508 EXPECT_FALSE(m_didFinishLoading); 510 EXPECT_FALSE(m_didFinishLoading);
509 } 511 }
510 512
511 // Test that a cross origin redirect response without CORS headers fails. 513 // Test that a cross origin redirect response without CORS headers fails.
512 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginWithAccessControlFailure) 514 TEST_F(AssociatedURLLoaderTest, RedirectCrossOriginWithAccessControlFailure)
513 { 515 {
514 KURL url = toKURL("http://www.test.com/RedirectCrossOriginWithAccessControlF ailure.html"); 516 KURL url = toKURL("http://www.test.com/RedirectCrossOriginWithAccessControlF ailure.html");
515 char redirect[] = "http://www.other.com/RedirectCrossOriginWithAccessControl Failure.html"; // Cross-origin 517 char redirect[] = "http://www.other.com/RedirectCrossOriginWithAccessControl Failure.html"; // Cross-origin
516 KURL redirectURL = toKURL(redirect); 518 KURL redirectURL = toKURL(redirect);
517 519
518 WebURLRequest request; 520 WebURLRequest request;
519 request.initialize(); 521 request.initialize();
520 request.setURL(url); 522 request.setURL(url);
521 523
522 m_expectedRedirectResponse = WebURLResponse(); 524 m_expectedRedirectResponse = WebURLResponse();
523 m_expectedRedirectResponse.initialize(); 525 m_expectedRedirectResponse.initialize();
524 m_expectedRedirectResponse.setMIMEType("text/html"); 526 m_expectedRedirectResponse.setMIMEType("text/html");
525 m_expectedRedirectResponse.setHTTPStatusCode(301); 527 m_expectedRedirectResponse.setHTTPStatusCode(301);
526 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); 528 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect);
527 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRed irectResponse, m_frameFilePath); 529 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR edirectResponse, m_frameFilePath);
528 530
529 m_expectedNewRequest = WebURLRequest(); 531 m_expectedNewRequest = WebURLRequest();
530 m_expectedNewRequest.initialize(); 532 m_expectedNewRequest.initialize();
531 m_expectedNewRequest.setURL(redirectURL); 533 m_expectedNewRequest.setURL(redirectURL);
532 534
533 m_expectedResponse = WebURLResponse(); 535 m_expectedResponse = WebURLResponse();
534 m_expectedResponse.initialize(); 536 m_expectedResponse.initialize();
535 m_expectedResponse.setMIMEType("text/html"); 537 m_expectedResponse.setMIMEType("text/html");
536 m_expectedResponse.setHTTPStatusCode(200); 538 m_expectedResponse.setHTTPStatusCode(200);
537 Platform::current()->unitTestSupport()->registerMockedURL(redirectURL, m_exp ectedResponse, m_frameFilePath); 539 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e xpectedResponse, m_frameFilePath);
538 540
539 WebURLLoaderOptions options; 541 WebURLLoaderOptions options;
540 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl; 542 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl;
541 m_expectedLoader = createAssociatedURLLoader(options); 543 m_expectedLoader = createAssociatedURLLoader(options);
542 EXPECT_TRUE(m_expectedLoader); 544 EXPECT_TRUE(m_expectedLoader);
543 m_expectedLoader->loadAsynchronously(request, this); 545 m_expectedLoader->loadAsynchronously(request, this);
544 546
545 serveRequests(); 547 serveRequests();
546 // We should get a notification about access control check failure. 548 // We should get a notification about access control check failure.
547 EXPECT_FALSE(m_willFollowRedirect); 549 EXPECT_FALSE(m_willFollowRedirect);
(...skipping 15 matching lines...) Expand all
563 // Add a CORS simple header. 565 // Add a CORS simple header.
564 request.setHTTPHeaderField("accept", "application/json"); 566 request.setHTTPHeaderField("accept", "application/json");
565 567
566 // Create a redirect response that allows the redirect to pass the access co ntrol checks. 568 // Create a redirect response that allows the redirect to pass the access co ntrol checks.
567 m_expectedRedirectResponse = WebURLResponse(); 569 m_expectedRedirectResponse = WebURLResponse();
568 m_expectedRedirectResponse.initialize(); 570 m_expectedRedirectResponse.initialize();
569 m_expectedRedirectResponse.setMIMEType("text/html"); 571 m_expectedRedirectResponse.setMIMEType("text/html");
570 m_expectedRedirectResponse.setHTTPStatusCode(301); 572 m_expectedRedirectResponse.setHTTPStatusCode(301);
571 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect); 573 m_expectedRedirectResponse.setHTTPHeaderField("Location", redirect);
572 m_expectedRedirectResponse.addHTTPHeaderField("access-control-allow-origin", "*"); 574 m_expectedRedirectResponse.addHTTPHeaderField("access-control-allow-origin", "*");
573 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRed irectResponse, m_frameFilePath); 575 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR edirectResponse, m_frameFilePath);
574 576
575 m_expectedNewRequest = WebURLRequest(); 577 m_expectedNewRequest = WebURLRequest();
576 m_expectedNewRequest.initialize(); 578 m_expectedNewRequest.initialize();
577 m_expectedNewRequest.setURL(redirectURL); 579 m_expectedNewRequest.setURL(redirectURL);
578 m_expectedNewRequest.setHTTPHeaderField("accept", "application/json"); 580 m_expectedNewRequest.setHTTPHeaderField("accept", "application/json");
579 581
580 m_expectedResponse = WebURLResponse(); 582 m_expectedResponse = WebURLResponse();
581 m_expectedResponse.initialize(); 583 m_expectedResponse.initialize();
582 m_expectedResponse.setMIMEType("text/html"); 584 m_expectedResponse.setMIMEType("text/html");
583 m_expectedResponse.setHTTPStatusCode(200); 585 m_expectedResponse.setHTTPStatusCode(200);
584 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*"); 586 m_expectedResponse.addHTTPHeaderField("access-control-allow-origin", "*");
585 Platform::current()->unitTestSupport()->registerMockedURL(redirectURL, m_exp ectedResponse, m_frameFilePath); 587 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, m_e xpectedResponse, m_frameFilePath);
586 588
587 WebURLLoaderOptions options; 589 WebURLLoaderOptions options;
588 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl; 590 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl;
589 m_expectedLoader = createAssociatedURLLoader(options); 591 m_expectedLoader = createAssociatedURLLoader(options);
590 EXPECT_TRUE(m_expectedLoader); 592 EXPECT_TRUE(m_expectedLoader);
591 m_expectedLoader->loadAsynchronously(request, this); 593 m_expectedLoader->loadAsynchronously(request, this);
592 serveRequests(); 594 serveRequests();
593 // We should not receive a notification for the redirect. 595 // We should not receive a notification for the redirect.
594 EXPECT_FALSE(m_willFollowRedirect); 596 EXPECT_FALSE(m_willFollowRedirect);
595 EXPECT_TRUE(m_didReceiveResponse); 597 EXPECT_TRUE(m_didReceiveResponse);
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 KURL url = toKURL("http://www.other.com/CrossOriginHeaderAllowResponseHeader s.html"); 692 KURL url = toKURL("http://www.other.com/CrossOriginHeaderAllowResponseHeader s.html");
691 request.setURL(url); 693 request.setURL(url);
692 694
693 WebString headerNameString(WebString::fromUTF8("non-whitelisted")); 695 WebString headerNameString(WebString::fromUTF8("non-whitelisted"));
694 m_expectedResponse = WebURLResponse(); 696 m_expectedResponse = WebURLResponse();
695 m_expectedResponse.initialize(); 697 m_expectedResponse.initialize();
696 m_expectedResponse.setMIMEType("text/html"); 698 m_expectedResponse.setMIMEType("text/html");
697 m_expectedResponse.setHTTPStatusCode(200); 699 m_expectedResponse.setHTTPStatusCode(200);
698 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*"); 700 m_expectedResponse.addHTTPHeaderField("Access-Control-Allow-Origin", "*");
699 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo"); 701 m_expectedResponse.addHTTPHeaderField(headerNameString, "foo");
700 Platform::current()->unitTestSupport()->registerMockedURL(url, m_expectedRes ponse, m_frameFilePath); 702 Platform::current()->getURLLoaderMockFactory()->registerURL(url, m_expectedR esponse, m_frameFilePath);
701 703
702 WebURLLoaderOptions options; 704 WebURLLoaderOptions options;
703 options.exposeAllResponseHeaders = true; // This turns off response whitelis ting. 705 options.exposeAllResponseHeaders = true; // This turns off response whitelis ting.
704 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl; 706 options.crossOriginRequestPolicy = WebURLLoaderOptions::CrossOriginRequestPo licyUseAccessControl;
705 m_expectedLoader = createAssociatedURLLoader(options); 707 m_expectedLoader = createAssociatedURLLoader(options);
706 EXPECT_TRUE(m_expectedLoader); 708 EXPECT_TRUE(m_expectedLoader);
707 m_expectedLoader->loadAsynchronously(request, this); 709 m_expectedLoader->loadAsynchronously(request, this);
708 serveRequests(); 710 serveRequests();
709 EXPECT_TRUE(m_didReceiveResponse); 711 EXPECT_TRUE(m_didReceiveResponse);
710 EXPECT_TRUE(m_didReceiveData); 712 EXPECT_TRUE(m_didReceiveData);
711 EXPECT_TRUE(m_didFinishLoading); 713 EXPECT_TRUE(m_didFinishLoading);
712 714
713 EXPECT_FALSE(m_actualResponse.httpHeaderField(headerNameString).isEmpty()); 715 EXPECT_FALSE(m_actualResponse.httpHeaderField(headerNameString).isEmpty());
714 } 716 }
715 717
716 } // namespace blink 718 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698