Chromium Code Reviews| 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.c_str(), "navigate", |
|
falken
2017/03/31 06:40:49
nit: I don't think you need the c_str()?
yiyix
2017/03/31 07:24:02
Done.
| |
| 439 "include") + | |
| 439 RequestString(GetURL("/pnacl_url_loader.nmf"), "same-origin", | 440 RequestString(GetURL("/pnacl_url_loader.nmf"), "same-origin", |
| 440 "include") + | 441 "include") + |
| 441 RequestString(GetURL("/pnacl_url_loader_newlib_pnacl.pexe"), | 442 RequestString(GetURL("/pnacl_url_loader_newlib_pnacl.pexe"), |
| 442 "same-origin", "include"); | 443 "same-origin", "include"); |
| 443 } | 444 } |
| 444 | 445 |
| 445 std::string ExecutePNACLUrlLoaderTest(const std::string& mode) { | 446 std::string ExecutePNACLUrlLoaderTest(const std::string& mode) { |
| 446 std::string result(ExecuteScriptAndExtractString( | 447 std::string result(ExecuteScriptAndExtractString( |
| 447 base::StringPrintf("reportOnFetch = false;" | 448 base::StringPrintf("reportOnFetch = false;" |
| 448 "var iframe = document.createElement('iframe');" | 449 "var iframe = document.createElement('iframe');" |
| 449 "iframe.src='%s#%s';" | 450 "iframe.src='%s#%s';" |
| 450 "document.body.appendChild(iframe);", | 451 "document.body.appendChild(iframe);", |
| 451 test_page_url_.c_str(), mode.c_str()))); | 452 test_page_url_.c_str(), mode.c_str()))); |
| 452 EXPECT_EQ(base::StringPrintf("OnOpen%s", mode.c_str()), result); | 453 EXPECT_EQ(base::StringPrintf("OnOpen%s", mode.c_str()), result); |
| 453 return ExecuteScriptAndExtractString("reportRequests();"); | 454 return ExecuteScriptAndExtractString("reportRequests();"); |
| 454 } | 455 } |
| 455 | 456 |
| 456 private: | 457 private: |
| 457 std::string test_page_url_; | 458 std::string test_page_url_; |
| 458 | 459 |
| 459 DISALLOW_COPY_AND_ASSIGN(ChromeServiceWorkerFetchPPAPITest); | 460 DISALLOW_COPY_AND_ASSIGN(ChromeServiceWorkerFetchPPAPITest); |
| 460 }; | 461 }; |
| 461 | 462 |
| 462 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, SameOrigin) { | 463 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, SameOrigin) { |
| 463 // In pnacl_url_loader.cc: | 464 // In pnacl_url_loader.cc: |
| 464 // request.SetMethod("GET"); | 465 // request.SetMethod("GET"); |
| 465 // request.SetURL("/echo"); | 466 // request.SetURL("/echo"); |
| 466 EXPECT_EQ(GetRequestStringForPNACL() + | 467 EXPECT_EQ(GetRequestStringForPNACL("#Same") + |
| 467 RequestString(GetURL("/echo"), "same-origin", "include"), | 468 RequestString(GetURL("/echo"), "same-origin", "include"), |
| 468 ExecutePNACLUrlLoaderTest("Same")); | 469 ExecutePNACLUrlLoaderTest("Same")); |
| 469 } | 470 } |
| 470 | 471 |
| 471 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, SameOriginCORS) { | 472 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, SameOriginCORS) { |
| 472 // In pnacl_url_loader.cc: | 473 // In pnacl_url_loader.cc: |
| 473 // request.SetMethod("GET"); | 474 // request.SetMethod("GET"); |
| 474 // request.SetURL("/echo"); | 475 // request.SetURL("/echo"); |
| 475 // request.SetAllowCrossOriginRequests(true); | 476 // request.SetAllowCrossOriginRequests(true); |
| 476 EXPECT_EQ(GetRequestStringForPNACL() + | 477 EXPECT_EQ(GetRequestStringForPNACL("#SameCORS") + |
| 477 RequestString(GetURL("/echo"), "cors", "same-origin"), | 478 RequestString(GetURL("/echo"), "cors", "same-origin"), |
| 478 ExecutePNACLUrlLoaderTest("SameCORS")); | 479 ExecutePNACLUrlLoaderTest("SameCORS")); |
| 479 } | 480 } |
| 480 | 481 |
| 481 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, | 482 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, |
| 482 SameOriginCredentials) { | 483 SameOriginCredentials) { |
| 483 // In pnacl_url_loader.cc: | 484 // In pnacl_url_loader.cc: |
| 484 // request.SetMethod("GET"); | 485 // request.SetMethod("GET"); |
| 485 // request.SetURL("/echo"); | 486 // request.SetURL("/echo"); |
| 486 // request.SetAllowCredentials(true); | 487 // request.SetAllowCredentials(true); |
| 487 EXPECT_EQ(GetRequestStringForPNACL() + | 488 EXPECT_EQ(GetRequestStringForPNACL("#SameCredentials") + |
| 488 RequestString(GetURL("/echo"), "same-origin", "include"), | 489 RequestString(GetURL("/echo"), "same-origin", "include"), |
| 489 ExecutePNACLUrlLoaderTest("SameCredentials")); | 490 ExecutePNACLUrlLoaderTest("SameCredentials")); |
| 490 } | 491 } |
| 491 | 492 |
| 492 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, | 493 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, |
| 493 SameOriginCORSCredentials) { | 494 SameOriginCORSCredentials) { |
| 494 // In pnacl_url_loader.cc: | 495 // In pnacl_url_loader.cc: |
| 495 // request.SetMethod("GET"); | 496 // request.SetMethod("GET"); |
| 496 // request.SetURL("/echo"); | 497 // request.SetURL("/echo"); |
| 497 // request.SetAllowCrossOriginRequests(true); | 498 // request.SetAllowCrossOriginRequests(true); |
| 498 // request.SetAllowCredentials(true); | 499 // request.SetAllowCredentials(true); |
| 499 EXPECT_EQ(GetRequestStringForPNACL() + | 500 EXPECT_EQ(GetRequestStringForPNACL("#SameCORSCredentials") + |
| 500 RequestString(GetURL("/echo"), "cors", "include"), | 501 RequestString(GetURL("/echo"), "cors", "include"), |
| 501 ExecutePNACLUrlLoaderTest("SameCORSCredentials")); | 502 ExecutePNACLUrlLoaderTest("SameCORSCredentials")); |
| 502 } | 503 } |
| 503 | 504 |
| 504 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, OtherOrigin) { | 505 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, OtherOrigin) { |
| 505 // In pnacl_url_loader.cc: | 506 // In pnacl_url_loader.cc: |
| 506 // request.SetMethod("GET"); | 507 // request.SetMethod("GET"); |
| 507 // request.SetURL("https://www.example.com/echo"); | 508 // request.SetURL("https://www.example.com/echo"); |
| 508 // This request fails because AllowCrossOriginRequests is not set. | 509 // This request fails because AllowCrossOriginRequests is not set. |
| 509 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("Other")); | 510 EXPECT_EQ(GetRequestStringForPNACL("#Other"), |
| 511 ExecutePNACLUrlLoaderTest("Other")); | |
| 510 } | 512 } |
| 511 | 513 |
| 512 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, OtherOriginCORS) { | 514 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, OtherOriginCORS) { |
| 513 // In pnacl_url_loader.cc: | 515 // In pnacl_url_loader.cc: |
| 514 // request.SetMethod("GET"); | 516 // request.SetMethod("GET"); |
| 515 // request.SetURL("https://www.example.com/echo"); | 517 // request.SetURL("https://www.example.com/echo"); |
| 516 // request.SetAllowCrossOriginRequests(true); | 518 // request.SetAllowCrossOriginRequests(true); |
| 517 EXPECT_EQ( | 519 EXPECT_EQ( |
| 518 GetRequestStringForPNACL() + | 520 GetRequestStringForPNACL("#OtherCORS") + |
| 519 RequestString("https://www.example.com/echo", "cors", "same-origin"), | 521 RequestString("https://www.example.com/echo", "cors", "same-origin"), |
| 520 ExecutePNACLUrlLoaderTest("OtherCORS")); | 522 ExecutePNACLUrlLoaderTest("OtherCORS")); |
| 521 } | 523 } |
| 522 | 524 |
| 523 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, | 525 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, |
| 524 OtherOriginCredentials) { | 526 OtherOriginCredentials) { |
| 525 // In pnacl_url_loader.cc: | 527 // In pnacl_url_loader.cc: |
| 526 // request.SetMethod("GET"); | 528 // request.SetMethod("GET"); |
| 527 // request.SetURL("https://www.example.com/echo"); | 529 // request.SetURL("https://www.example.com/echo"); |
| 528 // request.SetAllowCredentials(true); | 530 // request.SetAllowCredentials(true); |
| 529 // This request fails because AllowCrossOriginRequests is not set. | 531 // This request fails because AllowCrossOriginRequests is not set. |
| 530 EXPECT_EQ(GetRequestStringForPNACL(), | 532 EXPECT_EQ(GetRequestStringForPNACL("#OtherCredentials"), |
| 531 ExecutePNACLUrlLoaderTest("OtherCredentials")); | 533 ExecutePNACLUrlLoaderTest("OtherCredentials")); |
| 532 } | 534 } |
| 533 | 535 |
| 534 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, | 536 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPITest, |
| 535 OtherOriginCORSCredentials) { | 537 OtherOriginCORSCredentials) { |
| 536 // In pnacl_url_loader.cc: | 538 // In pnacl_url_loader.cc: |
| 537 // request.SetMethod("GET"); | 539 // request.SetMethod("GET"); |
| 538 // request.SetURL("https://www.example.com/echo"); | 540 // request.SetURL("https://www.example.com/echo"); |
| 539 // request.SetAllowCrossOriginRequests(true); | 541 // request.SetAllowCrossOriginRequests(true); |
| 540 // request.SetAllowCredentials(true); | 542 // request.SetAllowCredentials(true); |
| 541 EXPECT_EQ( | 543 EXPECT_EQ( |
| 542 GetRequestStringForPNACL() + | 544 GetRequestStringForPNACL("#OtherCORSCredentials") + |
| 543 RequestString("https://www.example.com/echo", "cors", "include"), | 545 RequestString("https://www.example.com/echo", "cors", "include"), |
| 544 ExecutePNACLUrlLoaderTest("OtherCORSCredentials")); | 546 ExecutePNACLUrlLoaderTest("OtherCORSCredentials")); |
| 545 } | 547 } |
| 546 | 548 |
| 547 class ChromeServiceWorkerFetchPPAPIPrivateTest | 549 class ChromeServiceWorkerFetchPPAPIPrivateTest |
| 548 : public ChromeServiceWorkerFetchPPAPITest { | 550 : public ChromeServiceWorkerFetchPPAPITest { |
| 549 protected: | 551 protected: |
| 550 ChromeServiceWorkerFetchPPAPIPrivateTest() {} | 552 ChromeServiceWorkerFetchPPAPIPrivateTest() {} |
| 551 ~ChromeServiceWorkerFetchPPAPIPrivateTest() override {} | 553 ~ChromeServiceWorkerFetchPPAPIPrivateTest() override {} |
| 552 | 554 |
| 553 void SetUpCommandLine(base::CommandLine* command_line) override { | 555 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 554 ChromeServiceWorkerFetchPPAPITest::SetUpCommandLine(command_line); | 556 ChromeServiceWorkerFetchPPAPITest::SetUpCommandLine(command_line); |
| 555 // Sets this flag to test that the fetch request from the plugins with | 557 // Sets this flag to test that the fetch request from the plugins with |
| 556 // private permission (PERMISSION_PRIVATE) should not go to the service | 558 // private permission (PERMISSION_PRIVATE) should not go to the service |
| 557 // worker. | 559 // worker. |
| 558 command_line->AppendSwitch(switches::kEnablePepperTesting); | 560 command_line->AppendSwitch(switches::kEnablePepperTesting); |
| 559 } | 561 } |
| 560 | 562 |
| 561 private: | 563 private: |
| 562 DISALLOW_COPY_AND_ASSIGN(ChromeServiceWorkerFetchPPAPIPrivateTest); | 564 DISALLOW_COPY_AND_ASSIGN(ChromeServiceWorkerFetchPPAPIPrivateTest); |
| 563 }; | 565 }; |
| 564 | 566 |
| 565 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, SameOrigin) { | 567 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, SameOrigin) { |
| 566 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("Same")); | 568 EXPECT_EQ(GetRequestStringForPNACL("#Same"), |
| 569 ExecutePNACLUrlLoaderTest("Same")); | |
| 567 } | 570 } |
| 568 | 571 |
| 569 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 572 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
| 570 SameOriginCORS) { | 573 SameOriginCORS) { |
| 571 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("SameCORS")); | 574 EXPECT_EQ(GetRequestStringForPNACL("#SameCORS"), |
| 575 ExecutePNACLUrlLoaderTest("SameCORS")); | |
| 572 } | 576 } |
| 573 | 577 |
| 574 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 578 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
| 575 SameOriginCredentials) { | 579 SameOriginCredentials) { |
| 576 EXPECT_EQ(GetRequestStringForPNACL(), | 580 EXPECT_EQ(GetRequestStringForPNACL("#SameCredentials"), |
| 577 ExecutePNACLUrlLoaderTest("SameCredentials")); | 581 ExecutePNACLUrlLoaderTest("SameCredentials")); |
| 578 } | 582 } |
| 579 | 583 |
| 580 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 584 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
| 581 SameOriginCORSCredentials) { | 585 SameOriginCORSCredentials) { |
| 582 EXPECT_EQ(GetRequestStringForPNACL(), | 586 EXPECT_EQ(GetRequestStringForPNACL("#SameCORSCredentials"), |
| 583 ExecutePNACLUrlLoaderTest("SameCORSCredentials")); | 587 ExecutePNACLUrlLoaderTest("SameCORSCredentials")); |
| 584 } | 588 } |
| 585 | 589 |
| 586 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, OtherOrigin) { | 590 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, OtherOrigin) { |
| 587 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("Other")); | 591 EXPECT_EQ(GetRequestStringForPNACL("#Other"), |
| 592 ExecutePNACLUrlLoaderTest("Other")); | |
| 588 } | 593 } |
| 589 | 594 |
| 590 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 595 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
| 591 OtherOriginCORS) { | 596 OtherOriginCORS) { |
| 592 EXPECT_EQ(GetRequestStringForPNACL(), ExecutePNACLUrlLoaderTest("OtherCORS")); | 597 EXPECT_EQ(GetRequestStringForPNACL("#OtherCORS"), |
| 598 ExecutePNACLUrlLoaderTest("OtherCORS")); | |
| 593 } | 599 } |
| 594 | 600 |
| 595 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 601 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
| 596 OtherOriginCredentials) { | 602 OtherOriginCredentials) { |
| 597 EXPECT_EQ(GetRequestStringForPNACL(), | 603 EXPECT_EQ(GetRequestStringForPNACL("#OtherCredentials"), |
| 598 ExecutePNACLUrlLoaderTest("OtherCredentials")); | 604 ExecutePNACLUrlLoaderTest("OtherCredentials")); |
| 599 } | 605 } |
| 600 | 606 |
| 601 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, | 607 IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerFetchPPAPIPrivateTest, |
| 602 OtherOriginCORSCredentials) { | 608 OtherOriginCORSCredentials) { |
| 603 EXPECT_EQ(GetRequestStringForPNACL(), | 609 EXPECT_EQ(GetRequestStringForPNACL("#OtherCORSCredentials"), |
| 604 ExecutePNACLUrlLoaderTest("OtherCORSCredentials")); | 610 ExecutePNACLUrlLoaderTest("OtherCORSCredentials")); |
| 605 } | 611 } |
| 606 | 612 |
| 607 } // namespace | 613 } // namespace |
| OLD | NEW |