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

Side by Side Diff: content/browser/service_worker/service_worker_browsertest.cc

Issue 877623002: [ServiceWorker] Fills SSLInfo of the response from a SW with the SSLInfo of the SW script. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « no previous file | content/browser/service_worker/service_worker_context_request_handler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "content/browser/fileapi/chrome_blob_storage_context.h" 10 #include "content/browser/fileapi/chrome_blob_storage_context.h"
11 #include "content/browser/service_worker/embedded_worker_instance.h" 11 #include "content/browser/service_worker/embedded_worker_instance.h"
12 #include "content/browser/service_worker/embedded_worker_registry.h" 12 #include "content/browser/service_worker/embedded_worker_registry.h"
13 #include "content/browser/service_worker/service_worker_context_core.h" 13 #include "content/browser/service_worker/service_worker_context_core.h"
14 #include "content/browser/service_worker/service_worker_context_observer.h" 14 #include "content/browser/service_worker/service_worker_context_observer.h"
15 #include "content/browser/service_worker/service_worker_context_wrapper.h" 15 #include "content/browser/service_worker/service_worker_context_wrapper.h"
16 #include "content/browser/service_worker/service_worker_registration.h" 16 #include "content/browser/service_worker/service_worker_registration.h"
17 #include "content/browser/service_worker/service_worker_test_utils.h" 17 #include "content/browser/service_worker/service_worker_test_utils.h"
18 #include "content/browser/service_worker/service_worker_version.h" 18 #include "content/browser/service_worker/service_worker_version.h"
19 #include "content/common/service_worker/service_worker_messages.h" 19 #include "content/common/service_worker/service_worker_messages.h"
20 #include "content/common/service_worker/service_worker_status_code.h" 20 #include "content/common/service_worker/service_worker_status_code.h"
21 #include "content/common/service_worker/service_worker_types.h" 21 #include "content/common/service_worker/service_worker_types.h"
22 #include "content/public/browser/browser_context.h" 22 #include "content/public/browser/browser_context.h"
23 #include "content/public/browser/browser_thread.h" 23 #include "content/public/browser/browser_thread.h"
24 #include "content/public/browser/navigation_entry.h"
24 #include "content/public/browser/render_process_host.h" 25 #include "content/public/browser/render_process_host.h"
25 #include "content/public/browser/storage_partition.h" 26 #include "content/public/browser/storage_partition.h"
26 #include "content/public/browser/web_contents.h" 27 #include "content/public/browser/web_contents.h"
27 #include "content/public/common/content_switches.h" 28 #include "content/public/common/content_switches.h"
28 #include "content/public/common/referrer.h" 29 #include "content/public/common/referrer.h"
30 #include "content/public/common/security_style.h"
31 #include "content/public/common/ssl_status.h"
29 #include "content/public/test/browser_test_utils.h" 32 #include "content/public/test/browser_test_utils.h"
30 #include "content/public/test/content_browser_test.h" 33 #include "content/public/test/content_browser_test.h"
31 #include "content/public/test/content_browser_test_utils.h" 34 #include "content/public/test/content_browser_test_utils.h"
32 #include "content/shell/browser/shell.h" 35 #include "content/shell/browser/shell.h"
33 #include "content/shell/browser/shell_content_browser_client.h" 36 #include "content/shell/browser/shell_content_browser_client.h"
34 #include "net/test/embedded_test_server/embedded_test_server.h" 37 #include "net/test/embedded_test_server/embedded_test_server.h"
35 #include "net/test/embedded_test_server/http_request.h" 38 #include "net/test/embedded_test_server/http_request.h"
36 #include "net/test/embedded_test_server/http_response.h" 39 #include "net/test/embedded_test_server/http_response.h"
37 #include "net/url_request/url_request_filter.h" 40 #include "net/url_request/url_request_filter.h"
38 #include "net/url_request/url_request_interceptor.h" 41 #include "net/url_request/url_request_interceptor.h"
(...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 &status)); 762 &status));
760 sync_run_loop.Run(); 763 sync_run_loop.Run();
761 ASSERT_EQ(SERVICE_WORKER_OK, status); 764 ASSERT_EQ(SERVICE_WORKER_OK, status);
762 765
763 // Should 200 after sync event. 766 // Should 200 after sync event.
764 FetchOnRegisteredWorker(&result, &response, &blob_data_handle); 767 FetchOnRegisteredWorker(&result, &response, &blob_data_handle);
765 EXPECT_EQ(200, response.status_code); 768 EXPECT_EQ(200, response.status_code);
766 } 769 }
767 770
768 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, Reload) { 771 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, Reload) {
769 const std::string kPageUrl = "/service_worker/reload.html"; 772 const char kPageUrl[] = "/service_worker/reload.html";
770 const std::string kWorkerUrl = "/service_worker/fetch_event_reload.js"; 773 const char kWorkerUrl[] = "/service_worker/fetch_event_reload.js";
771 { 774 scoped_refptr<WorkerActivatedObserver> observer =
772 scoped_refptr<WorkerActivatedObserver> observer = 775 new WorkerActivatedObserver(wrapper());
773 new WorkerActivatedObserver(wrapper()); 776 observer->Init();
774 observer->Init(); 777 public_context()->RegisterServiceWorker(
775 public_context()->RegisterServiceWorker( 778 embedded_test_server()->GetURL(kPageUrl),
776 embedded_test_server()->GetURL(kPageUrl), 779 embedded_test_server()->GetURL(kWorkerUrl),
777 embedded_test_server()->GetURL(kWorkerUrl), 780 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing)));
778 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); 781 observer->Wait();
779 observer->Wait(); 782
780 } 783 const base::string16 title1 = base::ASCIIToUTF16("reload=false");
781 { 784 TitleWatcher title_watcher1(shell()->web_contents(), title1);
782 const base::string16 title = base::ASCIIToUTF16("reload=false"); 785 NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl));
783 TitleWatcher title_watcher(shell()->web_contents(), title); 786 EXPECT_EQ(title1, title_watcher1.WaitAndGetTitle());
784 NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl)); 787
785 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 788 const base::string16 title2 = base::ASCIIToUTF16("reload=true");
786 } 789 TitleWatcher title_watcher2(shell()->web_contents(), title2);
787 { 790 ReloadBlockUntilNavigationsComplete(shell(), 1);
788 const base::string16 title = base::ASCIIToUTF16("reload=true"); 791 EXPECT_EQ(title2, title_watcher2.WaitAndGetTitle());
789 TitleWatcher title_watcher(shell()->web_contents(), title); 792
790 ReloadBlockUntilNavigationsComplete(shell(), 1);
791 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
792 }
793 shell()->Close(); 793 shell()->Close();
794 { 794
795 base::RunLoop run_loop; 795 base::RunLoop run_loop;
796 public_context()->UnregisterServiceWorker( 796 public_context()->UnregisterServiceWorker(
797 embedded_test_server()->GetURL(kPageUrl), 797 embedded_test_server()->GetURL(kPageUrl),
798 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); 798 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure()));
799 run_loop.Run(); 799 run_loop.Run();
800 } 800 }
801
802 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
803 ResponseFromHTTPSServiceWorkerIsMarkedAsSecure) {
804 const char kPageUrl[] = "files/service_worker/fetch_event_blob.html";
805 const char kWorkerUrl[] = "files/service_worker/fetch_event_blob.js";
806 net::SpawnedTestServer https_server(
807 net::SpawnedTestServer::TYPE_HTTPS,
808 net::BaseTestServer::SSLOptions(
809 net::BaseTestServer::SSLOptions::CERT_OK),
810 base::FilePath(FILE_PATH_LITERAL("content/test/data/")));
811 ASSERT_TRUE(https_server.Start());
812
813 scoped_refptr<WorkerActivatedObserver> observer =
814 new WorkerActivatedObserver(wrapper());
815 observer->Init();
816 public_context()->RegisterServiceWorker(
817 https_server.GetURL(kPageUrl),
818 https_server.GetURL(kWorkerUrl),
819 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing)));
820 observer->Wait();
821
822 const base::string16 title = base::ASCIIToUTF16("Title");
823 TitleWatcher title_watcher(shell()->web_contents(), title);
824 NavigateToURL(shell(), https_server.GetURL(kPageUrl));
825 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
826 EXPECT_FALSE(shell()->web_contents()->DisplayedInsecureContent());
827 NavigationEntry* entry =
828 shell()->web_contents()->GetController().GetVisibleEntry();
829 EXPECT_EQ(SECURITY_STYLE_AUTHENTICATED, entry->GetSSL().security_style);
830
831 shell()->Close();
832
833 base::RunLoop run_loop;
834 public_context()->UnregisterServiceWorker(
835 https_server.GetURL(kPageUrl),
836 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure()));
837 run_loop.Run();
838 }
839
840 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
841 ResponseFromHTTPServiceWorkerIsNotMarkedAsSecure) {
842 const char kPageUrl[] = "/service_worker/fetch_event_blob.html";
843 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js";
844 scoped_refptr<WorkerActivatedObserver> observer =
845 new WorkerActivatedObserver(wrapper());
846 observer->Init();
847 public_context()->RegisterServiceWorker(
848 embedded_test_server()->GetURL(kPageUrl),
849 embedded_test_server()->GetURL(kWorkerUrl),
850 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing)));
851 observer->Wait();
852
853 const base::string16 title = base::ASCIIToUTF16("Title");
854 TitleWatcher title_watcher(shell()->web_contents(), title);
855 NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl));
856 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
857 EXPECT_FALSE(shell()->web_contents()->DisplayedInsecureContent());
858 NavigationEntry* entry =
859 shell()->web_contents()->GetController().GetVisibleEntry();
860 EXPECT_EQ(SECURITY_STYLE_UNAUTHENTICATED, entry->GetSSL().security_style);
861
862 shell()->Close();
863
864 base::RunLoop run_loop;
865 public_context()->UnregisterServiceWorker(
866 embedded_test_server()->GetURL(kPageUrl),
867 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure()));
868 run_loop.Run();
801 } 869 }
802 870
803 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, ImportsBustMemcache) { 871 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, ImportsBustMemcache) {
804 const std::string kScopeUrl = "/service_worker/imports_bust_memcache_scope/"; 872 const char kScopeUrl[] = "/service_worker/imports_bust_memcache_scope/";
805 const std::string kPageUrl = "/service_worker/imports_bust_memcache.html"; 873 const char kPageUrl[] = "/service_worker/imports_bust_memcache.html";
806 const std::string kScriptUrl = "/service_worker/worker_with_one_import.js"; 874 const char kScriptUrl[] = "/service_worker/worker_with_one_import.js";
807 const std::string kImportUrl = "/service_worker/long_lived_import.js"; 875 const char kImportUrl[] = "/service_worker/long_lived_import.js";
808 const base::string16 kOKTitle(base::ASCIIToUTF16("OK")); 876 const base::string16 kOKTitle(base::ASCIIToUTF16("OK"));
809 const base::string16 kFailTitle(base::ASCIIToUTF16("FAIL")); 877 const base::string16 kFailTitle(base::ASCIIToUTF16("FAIL"));
810 878
811 RunOnIOThread( 879 RunOnIOThread(
812 base::Bind(&CreateLongLivedResourceInterceptors, 880 base::Bind(&CreateLongLivedResourceInterceptors,
813 embedded_test_server()->GetURL(kScriptUrl), 881 embedded_test_server()->GetURL(kScriptUrl),
814 embedded_test_server()->GetURL(kImportUrl))); 882 embedded_test_server()->GetURL(kImportUrl)));
815 883
816 TitleWatcher title_watcher(shell()->web_contents(), kOKTitle); 884 TitleWatcher title_watcher(shell()->web_contents(), kOKTitle);
817 title_watcher.AlsoWaitForTitle(kFailTitle); 885 title_watcher.AlsoWaitForTitle(kFailTitle);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 #if defined(OS_CHROMEOS) || defined(ANDROID) 939 #if defined(OS_CHROMEOS) || defined(ANDROID)
872 #define MAYBE_Registration DISABLED_Registration 940 #define MAYBE_Registration DISABLED_Registration
873 #else 941 #else
874 #define MAYBE_Registration Registration 942 #define MAYBE_Registration Registration
875 #endif 943 #endif
876 IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, MAYBE_Registration) { 944 IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, MAYBE_Registration) {
877 // Close the only window to be sure we're not re-using its RenderProcessHost. 945 // Close the only window to be sure we're not re-using its RenderProcessHost.
878 shell()->Close(); 946 shell()->Close();
879 EXPECT_EQ(0, CountRenderProcessHosts()); 947 EXPECT_EQ(0, CountRenderProcessHosts());
880 948
881 const std::string kWorkerUrl = "/service_worker/fetch_event.js"; 949 const char kWorkerUrl[] = "/service_worker/fetch_event.js";
882 const std::string kScope = "/service_worker/"; 950 const char kScope[] = "/service_worker/";
883 951
884 // Unregistering nothing should return false. 952 // Unregistering nothing should return false.
885 { 953 {
886 base::RunLoop run_loop; 954 base::RunLoop run_loop;
887 public_context()->UnregisterServiceWorker( 955 public_context()->UnregisterServiceWorker(
888 embedded_test_server()->GetURL("/"), 956 embedded_test_server()->GetURL("/"),
889 base::Bind(&ExpectResultAndRun, false, run_loop.QuitClosure())); 957 base::Bind(&ExpectResultAndRun, false, run_loop.QuitClosure()));
890 run_loop.Run(); 958 run_loop.Run();
891 } 959 }
892 960
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 base::Bind(&ServiceWorkerBlackBoxBrowserTest::FindRegistrationOnIO, 1014 base::Bind(&ServiceWorkerBlackBoxBrowserTest::FindRegistrationOnIO,
947 this, 1015 this,
948 embedded_test_server()->GetURL("/service_worker/empty.html"), 1016 embedded_test_server()->GetURL("/service_worker/empty.html"),
949 &status)); 1017 &status));
950 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status); 1018 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status);
951 } 1019 }
952 } 1020 }
953 1021
954 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, CrossSiteTransfer) { 1022 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, CrossSiteTransfer) {
955 // The first page registers a service worker. 1023 // The first page registers a service worker.
956 const std::string kRegisterPageUrl = "/service_worker/cross_site_xfer.html"; 1024 const char kRegisterPageUrl[] = "/service_worker/cross_site_xfer.html";
957 const base::string16 kOKTitle1(base::ASCIIToUTF16("OK_1")); 1025 const base::string16 kOKTitle1(base::ASCIIToUTF16("OK_1"));
958 const base::string16 kFailTitle1(base::ASCIIToUTF16("FAIL_1")); 1026 const base::string16 kFailTitle1(base::ASCIIToUTF16("FAIL_1"));
959 content::TitleWatcher title_watcher1(shell()->web_contents(), kOKTitle1); 1027 content::TitleWatcher title_watcher1(shell()->web_contents(), kOKTitle1);
960 title_watcher1.AlsoWaitForTitle(kFailTitle1); 1028 title_watcher1.AlsoWaitForTitle(kFailTitle1);
961 1029
962 NavigateToURL(shell(), embedded_test_server()->GetURL(kRegisterPageUrl)); 1030 NavigateToURL(shell(), embedded_test_server()->GetURL(kRegisterPageUrl));
963 ASSERT_EQ(kOKTitle1, title_watcher1.WaitAndGetTitle()); 1031 ASSERT_EQ(kOKTitle1, title_watcher1.WaitAndGetTitle());
964 1032
965 // Force process swapping behavior. 1033 // Force process swapping behavior.
966 ShellContentBrowserClient::SetSwapProcessesForRedirect(true); 1034 ShellContentBrowserClient::SetSwapProcessesForRedirect(true);
967 1035
968 // The second pages loads via the serviceworker including a subresource. 1036 // The second pages loads via the serviceworker including a subresource.
969 const std::string kConfirmPageUrl = 1037 const char kConfirmPageUrl[] =
970 "/service_worker/cross_site_xfer_scope/" 1038 "/service_worker/cross_site_xfer_scope/"
971 "cross_site_xfer_confirm_via_serviceworker.html"; 1039 "cross_site_xfer_confirm_via_serviceworker.html";
972 const base::string16 kOKTitle2(base::ASCIIToUTF16("OK_2")); 1040 const base::string16 kOKTitle2(base::ASCIIToUTF16("OK_2"));
973 const base::string16 kFailTitle2(base::ASCIIToUTF16("FAIL_2")); 1041 const base::string16 kFailTitle2(base::ASCIIToUTF16("FAIL_2"));
974 content::TitleWatcher title_watcher2(shell()->web_contents(), kOKTitle2); 1042 content::TitleWatcher title_watcher2(shell()->web_contents(), kOKTitle2);
975 title_watcher2.AlsoWaitForTitle(kFailTitle2); 1043 title_watcher2.AlsoWaitForTitle(kFailTitle2);
976 1044
977 NavigateToURL(shell(), embedded_test_server()->GetURL(kConfirmPageUrl)); 1045 NavigateToURL(shell(), embedded_test_server()->GetURL(kConfirmPageUrl));
978 EXPECT_EQ(kOKTitle2, title_watcher2.WaitAndGetTitle()); 1046 EXPECT_EQ(kOKTitle2, title_watcher2.WaitAndGetTitle());
979 } 1047 }
980 1048
981 } // namespace content 1049 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/service_worker/service_worker_context_request_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698