OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file tests that Service Workers (a Content feature) work in the Chromium | 5 // This file tests that Service Workers (a Content feature) work in the Chromium |
6 // embedder. | 6 // embedder. |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 void SetUpOnMainThread() override { | 427 void SetUpOnMainThread() override { |
428 base::FilePath document_root; | 428 base::FilePath document_root; |
429 ASSERT_TRUE(ui_test_utils::GetRelativeBuildDirectory(&document_root)); | 429 ASSERT_TRUE(ui_test_utils::GetRelativeBuildDirectory(&document_root)); |
430 embedded_test_server()->AddDefaultHandlers( | 430 embedded_test_server()->AddDefaultHandlers( |
431 document_root.Append(FILE_PATH_LITERAL("nacl_test_data")) | 431 document_root.Append(FILE_PATH_LITERAL("nacl_test_data")) |
432 .Append(FILE_PATH_LITERAL("pnacl"))); | 432 .Append(FILE_PATH_LITERAL("pnacl"))); |
433 ChromeServiceWorkerFetchTest::SetUpOnMainThread(); | 433 ChromeServiceWorkerFetchTest::SetUpOnMainThread(); |
434 test_page_url_ = GetURL("/pnacl_url_loader.html"); | 434 test_page_url_ = GetURL("/pnacl_url_loader.html"); |
435 } | 435 } |
436 | 436 |
437 std::string GetRequestStringForPNACL() const { | 437 std::string GetRequestStringForPNACL(const std::string& fragment) const { |
438 return RequestString(test_page_url_, "navigate", "include") + | 438 return RequestString(test_page_url_ + fragment, "navigate", "include") + |
439 RequestString(GetURL("/pnacl_url_loader.nmf"), "same-origin", | 439 RequestString(GetURL("/pnacl_url_loader.nmf"), "same-origin", |
440 "include") + | 440 "include") + |
441 RequestString(GetURL("/pnacl_url_loader_newlib_pnacl.pexe"), | 441 RequestString(GetURL("/pnacl_url_loader_newlib_pnacl.pexe"), |
442 "same-origin", "include"); | 442 "same-origin", "include"); |
443 } | 443 } |
444 | 444 |
445 std::string ExecutePNACLUrlLoaderTest(const std::string& mode) { | 445 std::string ExecutePNACLUrlLoaderTest(const std::string& mode) { |
446 std::string result(ExecuteScriptAndExtractString( | 446 std::string result(ExecuteScriptAndExtractString( |
447 base::StringPrintf("reportOnFetch = false;" | 447 base::StringPrintf("reportOnFetch = false;" |
448 "var iframe = document.createElement('iframe');" | 448 "var iframe = document.createElement('iframe');" |
449 "iframe.src='%s#%s';" | 449 "iframe.src='%s#%s';" |
450 "document.body.appendChild(iframe);", | 450 "document.body.appendChild(iframe);", |
451 test_page_url_.c_str(), mode.c_str()))); | 451 test_page_url_.c_str(), mode.c_str()))); |
452 EXPECT_EQ(base::StringPrintf("OnOpen%s", mode.c_str()), result); | 452 EXPECT_EQ(base::StringPrintf("OnOpen%s", mode.c_str()), result); |
453 return ExecuteScriptAndExtractString("reportRequests();"); | 453 return ExecuteScriptAndExtractString("reportRequests();"); |
454 } | 454 } |
455 | 455 |
456 private: | 456 private: |
457 std::string test_page_url_; | 457 std::string test_page_url_; |
458 | 458 |
459 DISALLOW_COPY_AND_ASSIGN(ChromeServiceWorkerFetchPPAPITest); | 459 DISALLOW_COPY_AND_ASSIGN(ChromeServiceWorkerFetchPPAPITest); |
460 }; | 460 }; |
461 | 461 |
462 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, SameOrigin) { | 462 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, SameOrigin) { |
463 // In pnacl_url_loader.cc: | 463 // In pnacl_url_loader.cc: |
464 // request.SetMethod("GET"); | 464 // request.SetMethod("GET"); |
465 // request.SetURL("/echo"); | 465 // request.SetURL("/echo"); |
466 EXPECT_EQ(GetRequestStringForPNACL() + | 466 EXPECT_EQ(GetRequestStringForPNACL("#Same") + |
467 RequestString(GetURL("/echo"), "same-origin", "include"), | 467 RequestString(GetURL("/echo"), "same-origin", "include"), |
468 ExecutePNACLUrlLoaderTest("Same")); | 468 ExecutePNACLUrlLoaderTest("Same")); |
469 } | 469 } |
470 | 470 |
471 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, SameOriginCORS) { | 471 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, SameOriginCORS) { |
472 // In pnacl_url_loader.cc: | 472 // In pnacl_url_loader.cc: |
473 // request.SetMethod("GET"); | 473 // request.SetMethod("GET"); |
474 // request.SetURL("/echo"); | 474 // request.SetURL("/echo"); |
475 // request.SetAllowCrossOriginRequests(true); | 475 // request.SetAllowCrossOriginRequests(true); |
476 EXPECT_EQ(GetRequestStringForPNACL() + | 476 EXPECT_EQ(GetRequestStringForPNACL("#SameCORS") + |
477 RequestString(GetURL("/echo"), "cors", "same-origin"), | 477 RequestString(GetURL("/echo"), "cors", "same-origin"), |
478 ExecutePNACLUrlLoaderTest("SameCORS")); | 478 ExecutePNACLUrlLoaderTest("SameCORS")); |
479 } | 479 } |
480 | 480 |
481 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, | 481 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, |
482 SameOriginCredentials) { | 482 SameOriginCredentials) { |
483 // In pnacl_url_loader.cc: | 483 // In pnacl_url_loader.cc: |
484 // request.SetMethod("GET"); | 484 // request.SetMethod("GET"); |
485 // request.SetURL("/echo"); | 485 // request.SetURL("/echo"); |
486 // request.SetAllowCredentials(true); | 486 // request.SetAllowCredentials(true); |
487 EXPECT_EQ(GetRequestStringForPNACL() + | 487 EXPECT_EQ(GetRequestStringForPNACL("#SameCredentials") + |
488 RequestString(GetURL("/echo"), "same-origin", "include"), | 488 RequestString(GetURL("/echo"), "same-origin", "include"), |
489 ExecutePNACLUrlLoaderTest("SameCredentials")); | 489 ExecutePNACLUrlLoaderTest("SameCredentials")); |
490 } | 490 } |
491 | 491 |
492 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, | 492 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, |
493 SameOriginCORSCredentials) { | 493 SameOriginCORSCredentials) { |
494 // In pnacl_url_loader.cc: | 494 // In pnacl_url_loader.cc: |
495 // request.SetMethod("GET"); | 495 // request.SetMethod("GET"); |
496 // request.SetURL("/echo"); | 496 // request.SetURL("/echo"); |
497 // request.SetAllowCrossOriginRequests(true); | 497 // request.SetAllowCrossOriginRequests(true); |
498 // request.SetAllowCredentials(true); | 498 // request.SetAllowCredentials(true); |
499 EXPECT_EQ(GetRequestStringForPNACL() + | 499 EXPECT_EQ(GetRequestStringForPNACL("#SameCORSCredentials") + |
500 RequestString(GetURL("/echo"), "cors", "include"), | 500 RequestString(GetURL("/echo"), "cors", "include"), |
501 ExecutePNACLUrlLoaderTest("SameCORSCredentials")); | 501 ExecutePNACLUrlLoaderTest("SameCORSCredentials")); |
502 } | 502 } |
503 | 503 |
504 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, OtherOrigin) { | 504 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, OtherOrigin) { |
505 // In pnacl_url_loader.cc: | 505 // In pnacl_url_loader.cc: |
506 // request.SetMethod("GET"); | 506 // request.SetMethod("GET"); |
507 // request.SetURL("https://www.example.com/echo"); | 507 // request.SetURL("https://www.example.com/echo"); |
508 // This request fails because AllowCrossOriginRequests is not set. | 508 // This request fails because AllowCrossOriginRequests is not set. |
509 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("Other")); | 509 EXPECT_EQ(GetRequestStringForPNACL("#Other"), |
| 510 ExecutePNACLUrlLoaderTest("Other")); |
510 } | 511 } |
511 | 512 |
512 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, OtherOriginCORS) { | 513 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, OtherOriginCORS) { |
513 // In pnacl_url_loader.cc: | 514 // In pnacl_url_loader.cc: |
514 // request.SetMethod("GET"); | 515 // request.SetMethod("GET"); |
515 // request.SetURL("https://www.example.com/echo"); | 516 // request.SetURL("https://www.example.com/echo"); |
516 // request.SetAllowCrossOriginRequests(true); | 517 // request.SetAllowCrossOriginRequests(true); |
517 EXPECT_EQ( | 518 EXPECT_EQ( |
518 GetRequestStringForPNACL() + | 519 GetRequestStringForPNACL("#OtherCORS") + |
519 RequestString("https://www.example.com/echo", "cors", "same-origin"), | 520 RequestString("https://www.example.com/echo", "cors", "same-origin"), |
520 ExecutePNACLUrlLoaderTest("OtherCORS")); | 521 ExecutePNACLUrlLoaderTest("OtherCORS")); |
521 } | 522 } |
522 | 523 |
523 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, | 524 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, |
524 OtherOriginCredentials) { | 525 OtherOriginCredentials) { |
525 // In pnacl_url_loader.cc: | 526 // In pnacl_url_loader.cc: |
526 // request.SetMethod("GET"); | 527 // request.SetMethod("GET"); |
527 // request.SetURL("https://www.example.com/echo"); | 528 // request.SetURL("https://www.example.com/echo"); |
528 // request.SetAllowCredentials(true); | 529 // request.SetAllowCredentials(true); |
529 // This request fails because AllowCrossOriginRequests is not set. | 530 // This request fails because AllowCrossOriginRequests is not set. |
530 EXPECT_EQ(GetRequestStringForPNACL(), | 531 EXPECT_EQ(GetRequestStringForPNACL("#OtherCredentials"), |
531 ExecutePNACLUrlLoaderTest("OtherCredentials")); | 532 ExecutePNACLUrlLoaderTest("OtherCredentials")); |
532 } | 533 } |
533 | 534 |
534 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, | 535 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, |
535 OtherOriginCORSCredentials) { | 536 OtherOriginCORSCredentials) { |
536 // In pnacl_url_loader.cc: | 537 // In pnacl_url_loader.cc: |
537 // request.SetMethod("GET"); | 538 // request.SetMethod("GET"); |
538 // request.SetURL("https://www.example.com/echo"); | 539 // request.SetURL("https://www.example.com/echo"); |
539 // request.SetAllowCrossOriginRequests(true); | 540 // request.SetAllowCrossOriginRequests(true); |
540 // request.SetAllowCredentials(true); | 541 // request.SetAllowCredentials(true); |
541 EXPECT_EQ( | 542 EXPECT_EQ( |
542 GetRequestStringForPNACL() + | 543 GetRequestStringForPNACL("#OtherCORSCredentials") + |
543 RequestString("https://www.example.com/echo", "cors", "include"), | 544 RequestString("https://www.example.com/echo", "cors", "include"), |
544 ExecutePNACLUrlLoaderTest("OtherCORSCredentials")); | 545 ExecutePNACLUrlLoaderTest("OtherCORSCredentials")); |
545 } | 546 } |
546 | 547 |
547 class ChromeServiceWorkerFetchPPAPIPrivateTest | 548 class ChromeServiceWorkerFetchPPAPIPrivateTest |
548 : public ChromeServiceWorkerFetchPPAPITest { | 549 : public ChromeServiceWorkerFetchPPAPITest { |
549 protected: | 550 protected: |
550 ChromeServiceWorkerFetchPPAPIPrivateTest() {} | 551 ChromeServiceWorkerFetchPPAPIPrivateTest() {} |
551 ~ChromeServiceWorkerFetchPPAPIPrivateTest() override {} | 552 ~ChromeServiceWorkerFetchPPAPIPrivateTest() override {} |
552 | 553 |
553 void SetUpCommandLine(base::CommandLine* command_line) override { | 554 void SetUpCommandLine(base::CommandLine* command_line) override { |
554 ChromeServiceWorkerFetchPPAPITest::SetUpCommandLine(command_line); | 555 ChromeServiceWorkerFetchPPAPITest::SetUpCommandLine(command_line); |
555 // Sets this flag to test that the fetch request from the plugins with | 556 // Sets this flag to test that the fetch request from the plugins with |
556 // private permission (PERMISSION_PRIVATE) should not go to the service | 557 // private permission (PERMISSION_PRIVATE) should not go to the service |
557 // worker. | 558 // worker. |
558 command_line->AppendSwitch(switches::kEnablePepperTesting); | 559 command_line->AppendSwitch(switches::kEnablePepperTesting); |
559 } | 560 } |
560 | 561 |
561 private: | 562 private: |
562 DISALLOW_COPY_AND_ASSIGN(ChromeServiceWorkerFetchPPAPIPrivateTest); | 563 DISALLOW_COPY_AND_ASSIGN(ChromeServiceWorkerFetchPPAPIPrivateTest); |
563 }; | 564 }; |
564 | 565 |
565 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, SameOrigin) { | 566 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, SameOrigin) { |
566 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("Same")); | 567 EXPECT_EQ(GetRequestStringForPNACL("#Same"), |
| 568 ExecutePNACLUrlLoaderTest("Same")); |
567 } | 569 } |
568 | 570 |
569 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 571 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
570 SameOriginCORS) { | 572 SameOriginCORS) { |
571 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("SameCORS")); | 573 EXPECT_EQ(GetRequestStringForPNACL("#SameCORS"), |
| 574 ExecutePNACLUrlLoaderTest("SameCORS")); |
572 } | 575 } |
573 | 576 |
574 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 577 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
575 SameOriginCredentials) { | 578 SameOriginCredentials) { |
576 EXPECT_EQ(GetRequestStringForPNACL(), | 579 EXPECT_EQ(GetRequestStringForPNACL("#SameCredentials"), |
577 ExecutePNACLUrlLoaderTest("SameCredentials")); | 580 ExecutePNACLUrlLoaderTest("SameCredentials")); |
578 } | 581 } |
579 | 582 |
580 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 583 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
581 SameOriginCORSCredentials) { | 584 SameOriginCORSCredentials) { |
582 EXPECT_EQ(GetRequestStringForPNACL(), | 585 EXPECT_EQ(GetRequestStringForPNACL("#SameCORSCredentials"), |
583 ExecutePNACLUrlLoaderTest("SameCORSCredentials")); | 586 ExecutePNACLUrlLoaderTest("SameCORSCredentials")); |
584 } | 587 } |
585 | 588 |
586 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, OtherOrigin) { | 589 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, OtherOrigin) { |
587 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("Other")); | 590 EXPECT_EQ(GetRequestStringForPNACL("#Other"), |
| 591 ExecutePNACLUrlLoaderTest("Other")); |
588 } | 592 } |
589 | 593 |
590 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 594 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
591 OtherOriginCORS) { | 595 OtherOriginCORS) { |
592 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("OtherCORS")); | 596 EXPECT_EQ(GetRequestStringForPNACL("#OtherCORS"), |
| 597 ExecutePNACLUrlLoaderTest("OtherCORS")); |
593 } | 598 } |
594 | 599 |
595 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 600 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
596 OtherOriginCredentials) { | 601 OtherOriginCredentials) { |
597 EXPECT_EQ(GetRequestStringForPNACL(), | 602 EXPECT_EQ(GetRequestStringForPNACL("#OtherCredentials"), |
598 ExecutePNACLUrlLoaderTest("OtherCredentials")); | 603 ExecutePNACLUrlLoaderTest("OtherCredentials")); |
599 } | 604 } |
600 | 605 |
601 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 606 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
602 OtherOriginCORSCredentials) { | 607 OtherOriginCORSCredentials) { |
603 EXPECT_EQ(GetRequestStringForPNACL(), | 608 EXPECT_EQ(GetRequestStringForPNACL("#OtherCORSCredentials"), |
604 ExecutePNACLUrlLoaderTest("OtherCORSCredentials")); | 609 ExecutePNACLUrlLoaderTest("OtherCORSCredentials")); |
605 } | 610 } |
606 | 611 |
607 } // namespace | 612 } // namespace |
OLD | NEW |