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

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

Issue 2627543002: ServiceWorker: Returns true for IsMojoForServiceWorkerEnabled (Closed)
Patch Set: Created 3 years, 11 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 // 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 "HTTP/1.1 200 OK\0" 393 "HTTP/1.1 200 OK\0"
394 "Content-Type: application/javascript\0" 394 "Content-Type: application/javascript\0"
395 "\0"; 395 "\0";
396 info.headers = 396 info.headers =
397 new net::HttpResponseHeaders(std::string(data, arraysize(data))); 397 new net::HttpResponseHeaders(std::string(data, arraysize(data)));
398 return info; 398 return info;
399 } 399 }
400 400
401 } // namespace 401 } // namespace
402 402
403 class ServiceWorkerBrowserTest 403 class ServiceWorkerBrowserTest : public ContentBrowserTest {
404 : public MojoServiceWorkerTestP<ContentBrowserTest> {
405 protected: 404 protected:
406 using self = ServiceWorkerBrowserTest; 405 using self = ServiceWorkerBrowserTest;
407 406
408 void SetUpOnMainThread() override { 407 void SetUpOnMainThread() override {
409 ASSERT_TRUE(embedded_test_server()->InitializeAndListen()); 408 ASSERT_TRUE(embedded_test_server()->InitializeAndListen());
410 StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( 409 StoragePartition* partition = BrowserContext::GetDefaultStoragePartition(
411 shell()->web_contents()->GetBrowserContext()); 410 shell()->web_contents()->GetBrowserContext());
412 wrapper_ = static_cast<ServiceWorkerContextWrapper*>( 411 wrapper_ = static_cast<ServiceWorkerContextWrapper*>(
413 partition->GetServiceWorkerContext()); 412 partition->GetServiceWorkerContext());
414 413
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 version_->StopWorker(CreateReceiver(BrowserThread::UI, done, result)); 854 version_->StopWorker(CreateReceiver(BrowserThread::UI, done, result));
856 } 855 }
857 856
858 protected: 857 protected:
859 scoped_refptr<ServiceWorkerRegistration> registration_; 858 scoped_refptr<ServiceWorkerRegistration> registration_;
860 scoped_refptr<ServiceWorkerVersion> version_; 859 scoped_refptr<ServiceWorkerVersion> version_;
861 scoped_refptr<ChromeBlobStorageContext> blob_context_; 860 scoped_refptr<ChromeBlobStorageContext> blob_context_;
862 std::unique_ptr<ServiceWorkerFetchDispatcher> fetch_dispatcher_; 861 std::unique_ptr<ServiceWorkerFetchDispatcher> fetch_dispatcher_;
863 }; 862 };
864 863
865 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, StartAndStop) { 864 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, StartAndStop) {
866 StartServerAndNavigateToSetup(); 865 StartServerAndNavigateToSetup();
867 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, 866 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread,
868 base::Unretained(this), 867 base::Unretained(this),
869 "/service_worker/worker.js")); 868 "/service_worker/worker.js"));
870 869
871 // Start a worker. 870 // Start a worker.
872 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 871 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
873 base::RunLoop start_run_loop; 872 base::RunLoop start_run_loop;
874 BrowserThread::PostTask( 873 BrowserThread::PostTask(
875 BrowserThread::IO, FROM_HERE, 874 BrowserThread::IO, FROM_HERE,
876 base::Bind(&self::StartOnIOThread, base::Unretained(this), 875 base::Bind(&self::StartOnIOThread, base::Unretained(this),
877 start_run_loop.QuitClosure(), &status)); 876 start_run_loop.QuitClosure(), &status));
878 start_run_loop.Run(); 877 start_run_loop.Run();
879 ASSERT_EQ(SERVICE_WORKER_OK, status); 878 ASSERT_EQ(SERVICE_WORKER_OK, status);
880 879
881 // Stop the worker. 880 // Stop the worker.
882 status = SERVICE_WORKER_ERROR_FAILED; 881 status = SERVICE_WORKER_ERROR_FAILED;
883 base::RunLoop stop_run_loop; 882 base::RunLoop stop_run_loop;
884 BrowserThread::PostTask( 883 BrowserThread::PostTask(
885 BrowserThread::IO, FROM_HERE, 884 BrowserThread::IO, FROM_HERE,
886 base::Bind(&self::StopOnIOThread, base::Unretained(this), 885 base::Bind(&self::StopOnIOThread, base::Unretained(this),
887 stop_run_loop.QuitClosure(), &status)); 886 stop_run_loop.QuitClosure(), &status));
888 stop_run_loop.Run(); 887 stop_run_loop.Run();
889 ASSERT_EQ(SERVICE_WORKER_OK, status); 888 ASSERT_EQ(SERVICE_WORKER_OK, status);
890 } 889 }
891 890
892 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, StartNotFound) { 891 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, StartNotFound) {
893 StartServerAndNavigateToSetup(); 892 StartServerAndNavigateToSetup();
894 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, 893 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread,
895 base::Unretained(this), 894 base::Unretained(this),
896 "/service_worker/nonexistent.js")); 895 "/service_worker/nonexistent.js"));
897 896
898 // Start a worker for nonexistent URL. 897 // Start a worker for nonexistent URL.
899 StartWorker(SERVICE_WORKER_ERROR_NETWORK); 898 StartWorker(SERVICE_WORKER_ERROR_NETWORK);
900 } 899 }
901 900
902 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, ReadResourceFailure) { 901 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, ReadResourceFailure) {
903 StartServerAndNavigateToSetup(); 902 StartServerAndNavigateToSetup();
904 // Create a registration. 903 // Create a registration.
905 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, 904 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread,
906 base::Unretained(this), 905 base::Unretained(this),
907 "/service_worker/worker.js")); 906 "/service_worker/worker.js"));
908 version_->set_fetch_handler_existence( 907 version_->set_fetch_handler_existence(
909 ServiceWorkerVersion::FetchHandlerExistence::EXISTS); 908 ServiceWorkerVersion::FetchHandlerExistence::EXISTS);
910 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 909 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
911 910
912 // Add a non-existent resource to the version. 911 // Add a non-existent resource to the version.
(...skipping 11 matching lines...) Expand all
924 923
925 // The registration should be deleted from storage since the broken worker was 924 // The registration should be deleted from storage since the broken worker was
926 // the stored one. 925 // the stored one.
927 RunOnIOThread(base::Bind(&self::RemoveLiveRegistrationOnIOThread, 926 RunOnIOThread(base::Bind(&self::RemoveLiveRegistrationOnIOThread,
928 base::Unretained(this), registration_->id())); 927 base::Unretained(this), registration_->id()));
929 FindRegistrationForId(registration_->id(), 928 FindRegistrationForId(registration_->id(),
930 registration_->pattern().GetOrigin(), 929 registration_->pattern().GetOrigin(),
931 SERVICE_WORKER_ERROR_NOT_FOUND); 930 SERVICE_WORKER_ERROR_NOT_FOUND);
932 } 931 }
933 932
934 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 933 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
935 ReadResourceFailure_WaitingWorker) { 934 ReadResourceFailure_WaitingWorker) {
936 StartServerAndNavigateToSetup(); 935 StartServerAndNavigateToSetup();
937 // Create a registration and active version. 936 // Create a registration and active version.
938 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, 937 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread,
939 base::Unretained(this), 938 base::Unretained(this),
940 "/service_worker/worker.js")); 939 "/service_worker/worker.js"));
941 base::RunLoop activate_run_loop; 940 base::RunLoop activate_run_loop;
942 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 941 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
943 BrowserThread::PostTask( 942 BrowserThread::PostTask(
944 BrowserThread::IO, FROM_HERE, 943 BrowserThread::IO, FROM_HERE,
(...skipping 29 matching lines...) Expand all
974 973
975 // The registration should still be in storage since the waiting worker was 974 // The registration should still be in storage since the waiting worker was
976 // the stored one. 975 // the stored one.
977 RunOnIOThread(base::Bind(&self::RemoveLiveRegistrationOnIOThread, 976 RunOnIOThread(base::Bind(&self::RemoveLiveRegistrationOnIOThread,
978 base::Unretained(this), registration_->id())); 977 base::Unretained(this), registration_->id()));
979 FindRegistrationForId(registration_->id(), 978 FindRegistrationForId(registration_->id(),
980 registration_->pattern().GetOrigin(), 979 registration_->pattern().GetOrigin(),
981 SERVICE_WORKER_OK); 980 SERVICE_WORKER_OK);
982 } 981 }
983 982
984 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, Install) { 983 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, Install) {
985 StartServerAndNavigateToSetup(); 984 StartServerAndNavigateToSetup();
986 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); 985 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK);
987 } 986 }
988 987
989 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 988 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
990 InstallWithWaitUntil_Fulfilled) { 989 InstallWithWaitUntil_Fulfilled) {
991 StartServerAndNavigateToSetup(); 990 StartServerAndNavigateToSetup();
992 InstallTestHelper("/service_worker/worker_install_fulfilled.js", 991 InstallTestHelper("/service_worker/worker_install_fulfilled.js",
993 SERVICE_WORKER_OK); 992 SERVICE_WORKER_OK);
994 } 993 }
995 994
996 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 995 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
997 InstallWithFetchHandler) { 996 InstallWithFetchHandler) {
998 StartServerAndNavigateToSetup(); 997 StartServerAndNavigateToSetup();
999 InstallTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK); 998 InstallTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK);
1000 EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::EXISTS, 999 EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::EXISTS,
1001 version_->fetch_handler_existence()); 1000 version_->fetch_handler_existence());
1002 } 1001 }
1003 1002
1004 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 1003 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
1005 InstallWithoutFetchHandler) { 1004 InstallWithoutFetchHandler) {
1006 StartServerAndNavigateToSetup(); 1005 StartServerAndNavigateToSetup();
1007 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); 1006 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK);
1008 EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::DOES_NOT_EXIST, 1007 EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::DOES_NOT_EXIST,
1009 version_->fetch_handler_existence()); 1008 version_->fetch_handler_existence());
1010 } 1009 }
1011 1010
1012 // Check that ServiceWorker script requests set a "Service-Worker: script" 1011 // Check that ServiceWorker script requests set a "Service-Worker: script"
1013 // header. 1012 // header.
1014 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 1013 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
1015 ServiceWorkerScriptHeader) { 1014 ServiceWorkerScriptHeader) {
1016 embedded_test_server()->RegisterRequestHandler( 1015 embedded_test_server()->RegisterRequestHandler(
1017 base::Bind(&VerifyServiceWorkerHeaderInRequest)); 1016 base::Bind(&VerifyServiceWorkerHeaderInRequest));
1018 StartServerAndNavigateToSetup(); 1017 StartServerAndNavigateToSetup();
1019 InstallTestHelper("/service_worker/generated_sw.js", SERVICE_WORKER_OK); 1018 InstallTestHelper("/service_worker/generated_sw.js", SERVICE_WORKER_OK);
1020 } 1019 }
1021 1020
1022 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 1021 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
1023 Activate_NoEventListener) { 1022 Activate_NoEventListener) {
1024 StartServerAndNavigateToSetup(); 1023 StartServerAndNavigateToSetup();
1025 ActivateTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); 1024 ActivateTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK);
1026 ASSERT_EQ(ServiceWorkerVersion::ACTIVATING, version_->status()); 1025 ASSERT_EQ(ServiceWorkerVersion::ACTIVATING, version_->status());
1027 } 1026 }
1028 1027
1029 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, Activate_Rejected) { 1028 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, Activate_Rejected) {
1030 StartServerAndNavigateToSetup(); 1029 StartServerAndNavigateToSetup();
1031 ActivateTestHelper("/service_worker/worker_activate_rejected.js", 1030 ActivateTestHelper("/service_worker/worker_activate_rejected.js",
1032 SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED); 1031 SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED);
1033 } 1032 }
1034 1033
1035 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 1034 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
1036 InstallWithWaitUntil_Rejected) { 1035 InstallWithWaitUntil_Rejected) {
1037 StartServerAndNavigateToSetup(); 1036 StartServerAndNavigateToSetup();
1038 InstallTestHelper("/service_worker/worker_install_rejected.js", 1037 InstallTestHelper("/service_worker/worker_install_rejected.js",
1039 SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED); 1038 SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED);
1040 } 1039 }
1041 1040
1042 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 1041 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
1043 InstallWithWaitUntil_RejectConsoleMessage) { 1042 InstallWithWaitUntil_RejectConsoleMessage) {
1044 StartServerAndNavigateToSetup(); 1043 StartServerAndNavigateToSetup();
1045 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, 1044 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread,
1046 base::Unretained(this), 1045 base::Unretained(this),
1047 "/service_worker/worker_install_rejected.js")); 1046 "/service_worker/worker_install_rejected.js"));
1048 1047
1049 ConsoleListener console_listener; 1048 ConsoleListener console_listener;
1050 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, 1049 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener,
1051 base::Unretained(version_->embedded_worker()), 1050 base::Unretained(version_->embedded_worker()),
1052 &console_listener)); 1051 &console_listener));
(...skipping 25 matching lines...) Expand all
1078 void OnThreadStarted() override { 1077 void OnThreadStarted() override {
1079 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1078 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1080 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, quit_); 1079 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, quit_);
1081 } 1080 }
1082 bool OnMessageReceived(const IPC::Message& message) override { return false; } 1081 bool OnMessageReceived(const IPC::Message& message) override { return false; }
1083 1082
1084 private: 1083 private:
1085 base::Closure quit_; 1084 base::Closure quit_;
1086 }; 1085 };
1087 1086
1088 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, TimeoutStartingWorker) { 1087 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, TimeoutStartingWorker) {
1089 StartServerAndNavigateToSetup(); 1088 StartServerAndNavigateToSetup();
1090 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, 1089 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread,
1091 base::Unretained(this), 1090 base::Unretained(this),
1092 "/service_worker/while_true_worker.js")); 1091 "/service_worker/while_true_worker.js"));
1093 1092
1094 // Start a worker, waiting until the script is loaded. 1093 // Start a worker, waiting until the script is loaded.
1095 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 1094 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
1096 base::RunLoop start_run_loop; 1095 base::RunLoop start_run_loop;
1097 base::RunLoop load_run_loop; 1096 base::RunLoop load_run_loop;
1098 WaitForLoaded wait_for_load(load_run_loop.QuitClosure()); 1097 WaitForLoaded wait_for_load(load_run_loop.QuitClosure());
(...skipping 17 matching lines...) Expand all
1116 // before it's started execution. 1115 // before it's started execution.
1117 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 1116 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
1118 RunOnIOThreadWithDelay( 1117 RunOnIOThreadWithDelay(
1119 base::Bind(&self::TimeoutWorkerOnIOThread, base::Unretained(this)), 1118 base::Bind(&self::TimeoutWorkerOnIOThread, base::Unretained(this)),
1120 base::TimeDelta::FromMilliseconds(100)); 1119 base::TimeDelta::FromMilliseconds(100));
1121 start_run_loop.Run(); 1120 start_run_loop.Run();
1122 1121
1123 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); 1122 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status);
1124 } 1123 }
1125 1124
1126 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, TimeoutWorkerInEvent) { 1125 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, TimeoutWorkerInEvent) {
1127 StartServerAndNavigateToSetup(); 1126 StartServerAndNavigateToSetup();
1128 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, 1127 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread,
1129 base::Unretained(this), 1128 base::Unretained(this),
1130 "/service_worker/while_true_in_install_worker.js")); 1129 "/service_worker/while_true_in_install_worker.js"));
1131 1130
1132 // Start a worker. 1131 // Start a worker.
1133 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 1132 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
1134 base::RunLoop start_run_loop; 1133 base::RunLoop start_run_loop;
1135 BrowserThread::PostTask( 1134 BrowserThread::PostTask(
1136 BrowserThread::IO, FROM_HERE, 1135 BrowserThread::IO, FROM_HERE,
(...skipping 15 matching lines...) Expand all
1152 RunOnIOThreadWithDelay( 1151 RunOnIOThreadWithDelay(
1153 base::Bind(&self::TimeoutWorkerOnIOThread, base::Unretained(this)), 1152 base::Bind(&self::TimeoutWorkerOnIOThread, base::Unretained(this)),
1154 base::TimeDelta::FromMilliseconds(100)); 1153 base::TimeDelta::FromMilliseconds(100));
1155 install_run_loop.Run(); 1154 install_run_loop.Run();
1156 1155
1157 // Terminating a worker, even one in an infinite loop, is treated as if 1156 // Terminating a worker, even one in an infinite loop, is treated as if
1158 // waitUntil was rejected in the renderer code. 1157 // waitUntil was rejected in the renderer code.
1159 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status); 1158 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status);
1160 } 1159 }
1161 1160
1162 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchEvent_Response) { 1161 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Response) {
1163 StartServerAndNavigateToSetup(); 1162 StartServerAndNavigateToSetup();
1164 ServiceWorkerFetchEventResult result; 1163 ServiceWorkerFetchEventResult result;
1165 ServiceWorkerResponse response; 1164 ServiceWorkerResponse response;
1166 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; 1165 std::unique_ptr<storage::BlobDataHandle> blob_data_handle;
1167 ActivateTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK); 1166 ActivateTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK);
1168 1167
1169 FetchOnRegisteredWorker(&result, &response, &blob_data_handle); 1168 FetchOnRegisteredWorker(&result, &response, &blob_data_handle);
1170 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); 1169 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result);
1171 EXPECT_EQ(301, response.status_code); 1170 EXPECT_EQ(301, response.status_code);
1172 EXPECT_EQ("Moved Permanently", response.status_text); 1171 EXPECT_EQ("Moved Permanently", response.status_text);
1173 ServiceWorkerHeaderMap expected_headers; 1172 ServiceWorkerHeaderMap expected_headers;
1174 expected_headers["content-language"] = "fi"; 1173 expected_headers["content-language"] = "fi";
1175 expected_headers["content-type"] = "text/html; charset=UTF-8"; 1174 expected_headers["content-type"] = "text/html; charset=UTF-8";
1176 EXPECT_EQ(expected_headers, response.headers); 1175 EXPECT_EQ(expected_headers, response.headers);
1177 1176
1178 std::string body; 1177 std::string body;
1179 RunOnIOThread( 1178 RunOnIOThread(
1180 base::Bind(&ReadResponseBody, 1179 base::Bind(&ReadResponseBody,
1181 &body, base::Owned(blob_data_handle.release()))); 1180 &body, base::Owned(blob_data_handle.release())));
1182 EXPECT_EQ("This resource is gone. Gone, gone, gone.", body); 1181 EXPECT_EQ("This resource is gone. Gone, gone, gone.", body);
1183 } 1182 }
1184 1183
1185 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 1184 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
1186 FetchEvent_ResponseViaCache) { 1185 FetchEvent_ResponseViaCache) {
1187 StartServerAndNavigateToSetup(); 1186 StartServerAndNavigateToSetup();
1188 ServiceWorkerFetchEventResult result; 1187 ServiceWorkerFetchEventResult result;
1189 ServiceWorkerResponse response1; 1188 ServiceWorkerResponse response1;
1190 ServiceWorkerResponse response2; 1189 ServiceWorkerResponse response2;
1191 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; 1190 std::unique_ptr<storage::BlobDataHandle> blob_data_handle;
1192 const base::Time start_time(base::Time::Now()); 1191 const base::Time start_time(base::Time::Now());
1193 ActivateTestHelper("/service_worker/fetch_event_response_via_cache.js", 1192 ActivateTestHelper("/service_worker/fetch_event_response_via_cache.js",
1194 SERVICE_WORKER_OK); 1193 SERVICE_WORKER_OK);
1195 1194
1196 FetchOnRegisteredWorker(&result, &response1, &blob_data_handle); 1195 FetchOnRegisteredWorker(&result, &response1, &blob_data_handle);
1197 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); 1196 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result);
1198 EXPECT_EQ(200, response1.status_code); 1197 EXPECT_EQ(200, response1.status_code);
1199 EXPECT_EQ("OK", response1.status_text); 1198 EXPECT_EQ("OK", response1.status_text);
1200 EXPECT_TRUE(response1.response_time >= start_time); 1199 EXPECT_TRUE(response1.response_time >= start_time);
1201 EXPECT_FALSE(response1.is_in_cache_storage); 1200 EXPECT_FALSE(response1.is_in_cache_storage);
1202 EXPECT_EQ(std::string(), response2.cache_storage_cache_name); 1201 EXPECT_EQ(std::string(), response2.cache_storage_cache_name);
1203 1202
1204 FetchOnRegisteredWorker(&result, &response2, &blob_data_handle); 1203 FetchOnRegisteredWorker(&result, &response2, &blob_data_handle);
1205 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); 1204 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result);
1206 EXPECT_EQ(200, response2.status_code); 1205 EXPECT_EQ(200, response2.status_code);
1207 EXPECT_EQ("OK", response2.status_text); 1206 EXPECT_EQ("OK", response2.status_text);
1208 EXPECT_EQ(response1.response_time, response2.response_time); 1207 EXPECT_EQ(response1.response_time, response2.response_time);
1209 EXPECT_TRUE(response2.is_in_cache_storage); 1208 EXPECT_TRUE(response2.is_in_cache_storage);
1210 EXPECT_EQ("cache_name", response2.cache_storage_cache_name); 1209 EXPECT_EQ("cache_name", response2.cache_storage_cache_name);
1211 } 1210 }
1212 1211
1213 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 1212 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
1214 FetchEvent_respondWithRejection) { 1213 FetchEvent_respondWithRejection) {
1215 StartServerAndNavigateToSetup(); 1214 StartServerAndNavigateToSetup();
1216 ServiceWorkerFetchEventResult result; 1215 ServiceWorkerFetchEventResult result;
1217 ServiceWorkerResponse response; 1216 ServiceWorkerResponse response;
1218 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; 1217 std::unique_ptr<storage::BlobDataHandle> blob_data_handle;
1219 ActivateTestHelper("/service_worker/fetch_event_rejected.js", 1218 ActivateTestHelper("/service_worker/fetch_event_rejected.js",
1220 SERVICE_WORKER_OK); 1219 SERVICE_WORKER_OK);
1221 1220
1222 ConsoleListener console_listener; 1221 ConsoleListener console_listener;
1223 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, 1222 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 1258
1260 void OverrideWebkitPrefs(RenderViewHost* render_view_host, 1259 void OverrideWebkitPrefs(RenderViewHost* render_view_host,
1261 WebPreferences* prefs) override { 1260 WebPreferences* prefs) override {
1262 prefs->data_saver_enabled = data_saver_enabled_; 1261 prefs->data_saver_enabled = data_saver_enabled_;
1263 } 1262 }
1264 1263
1265 private: 1264 private:
1266 bool data_saver_enabled_; 1265 bool data_saver_enabled_;
1267 }; 1266 };
1268 1267
1269 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchWithSaveData) { 1268 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchWithSaveData) {
1270 embedded_test_server()->RegisterRequestHandler( 1269 embedded_test_server()->RegisterRequestHandler(
1271 base::Bind(&VerifySaveDataHeaderInRequest)); 1270 base::Bind(&VerifySaveDataHeaderInRequest));
1272 StartServerAndNavigateToSetup(); 1271 StartServerAndNavigateToSetup();
1273 MockContentBrowserClient content_browser_client; 1272 MockContentBrowserClient content_browser_client;
1274 content_browser_client.set_data_saver_enabled(true); 1273 content_browser_client.set_data_saver_enabled(true);
1275 ContentBrowserClient* old_client = 1274 ContentBrowserClient* old_client =
1276 SetBrowserClientForTesting(&content_browser_client); 1275 SetBrowserClientForTesting(&content_browser_client);
1277 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK); 1276 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK);
1278 SetBrowserClientForTesting(old_client); 1277 SetBrowserClientForTesting(old_client);
1279 } 1278 }
1280 1279
1281 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, 1280 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
1282 RequestWorkerScriptWithSaveData) { 1281 RequestWorkerScriptWithSaveData) {
1283 embedded_test_server()->RegisterRequestHandler( 1282 embedded_test_server()->RegisterRequestHandler(
1284 base::Bind(&VerifySaveDataHeaderInRequest)); 1283 base::Bind(&VerifySaveDataHeaderInRequest));
1285 StartServerAndNavigateToSetup(); 1284 StartServerAndNavigateToSetup();
1286 MockContentBrowserClient content_browser_client; 1285 MockContentBrowserClient content_browser_client;
1287 content_browser_client.set_data_saver_enabled(true); 1286 content_browser_client.set_data_saver_enabled(true);
1288 ContentBrowserClient* old_client = 1287 ContentBrowserClient* old_client =
1289 SetBrowserClientForTesting(&content_browser_client); 1288 SetBrowserClientForTesting(&content_browser_client);
1290 InstallTestHelper("/service_worker/generated_sw.js", SERVICE_WORKER_OK); 1289 InstallTestHelper("/service_worker/generated_sw.js", SERVICE_WORKER_OK);
1291 SetBrowserClientForTesting(old_client); 1290 SetBrowserClientForTesting(old_client);
1292 } 1291 }
1293 1292
1294 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchWithoutSaveData) { 1293 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchWithoutSaveData) {
1295 embedded_test_server()->RegisterRequestHandler( 1294 embedded_test_server()->RegisterRequestHandler(
1296 base::Bind(&VerifySaveDataHeaderNotInRequest)); 1295 base::Bind(&VerifySaveDataHeaderNotInRequest));
1297 StartServerAndNavigateToSetup(); 1296 StartServerAndNavigateToSetup();
1298 MockContentBrowserClient content_browser_client; 1297 MockContentBrowserClient content_browser_client;
1299 ContentBrowserClient* old_client = 1298 ContentBrowserClient* old_client =
1300 SetBrowserClientForTesting(&content_browser_client); 1299 SetBrowserClientForTesting(&content_browser_client);
1301 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK); 1300 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK);
1302 SetBrowserClientForTesting(old_client); 1301 SetBrowserClientForTesting(old_client);
1303 } 1302 }
1304 1303
1305 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, FetchPageWithSaveData) { 1304 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, FetchPageWithSaveData) {
1306 StartServerAndNavigateToSetup(); 1305 StartServerAndNavigateToSetup();
1307 const char kPageUrl[] = "/service_worker/handle_fetch.html"; 1306 const char kPageUrl[] = "/service_worker/handle_fetch.html";
1308 const char kWorkerUrl[] = "/service_worker/add_save_data_to_title.js"; 1307 const char kWorkerUrl[] = "/service_worker/add_save_data_to_title.js";
1309 MockContentBrowserClient content_browser_client; 1308 MockContentBrowserClient content_browser_client;
1310 content_browser_client.set_data_saver_enabled(true); 1309 content_browser_client.set_data_saver_enabled(true);
1311 ContentBrowserClient* old_client = 1310 ContentBrowserClient* old_client =
1312 SetBrowserClientForTesting(&content_browser_client); 1311 SetBrowserClientForTesting(&content_browser_client);
1313 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged(); 1312 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged();
1314 scoped_refptr<WorkerActivatedObserver> observer = 1313 scoped_refptr<WorkerActivatedObserver> observer =
1315 new WorkerActivatedObserver(wrapper()); 1314 new WorkerActivatedObserver(wrapper());
(...skipping 15 matching lines...) Expand all
1331 base::RunLoop run_loop; 1330 base::RunLoop run_loop;
1332 public_context()->UnregisterServiceWorker( 1331 public_context()->UnregisterServiceWorker(
1333 embedded_test_server()->GetURL(kPageUrl), 1332 embedded_test_server()->GetURL(kPageUrl),
1334 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); 1333 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure()));
1335 run_loop.Run(); 1334 run_loop.Run();
1336 } 1335 }
1337 1336
1338 // Tests that when data saver is enabled and a cross-origin fetch by a webpage 1337 // Tests that when data saver is enabled and a cross-origin fetch by a webpage
1339 // is intercepted by a serviceworker, and the serviceworker does a fetch, the 1338 // is intercepted by a serviceworker, and the serviceworker does a fetch, the
1340 // preflight request does not have save-data in Access-Control-Request-Headers. 1339 // preflight request does not have save-data in Access-Control-Request-Headers.
1341 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, CrossOriginFetchWithSaveData) { 1340 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, CrossOriginFetchWithSaveData) {
1342 StartServerAndNavigateToSetup(); 1341 StartServerAndNavigateToSetup();
1343 const char kPageUrl[] = "/service_worker/fetch_cross_origin.html"; 1342 const char kPageUrl[] = "/service_worker/fetch_cross_origin.html";
1344 const char kWorkerUrl[] = "/service_worker/fetch_event_pass_through.js"; 1343 const char kWorkerUrl[] = "/service_worker/fetch_event_pass_through.js";
1345 net::EmbeddedTestServer cross_origin_server; 1344 net::EmbeddedTestServer cross_origin_server;
1346 cross_origin_server.ServeFilesFromSourceDirectory("content/test/data"); 1345 cross_origin_server.ServeFilesFromSourceDirectory("content/test/data");
1347 cross_origin_server.RegisterRequestHandler( 1346 cross_origin_server.RegisterRequestHandler(
1348 base::Bind(&VerifySaveDataNotInAccessControlRequestHeader)); 1347 base::Bind(&VerifySaveDataNotInAccessControlRequestHeader));
1349 ASSERT_TRUE(cross_origin_server.Start()); 1348 ASSERT_TRUE(cross_origin_server.Start());
1350 1349
1351 MockContentBrowserClient content_browser_client; 1350 MockContentBrowserClient content_browser_client;
(...skipping 23 matching lines...) Expand all
1375 SetBrowserClientForTesting(old_client); 1374 SetBrowserClientForTesting(old_client);
1376 shell()->Close(); 1375 shell()->Close();
1377 1376
1378 base::RunLoop run_loop; 1377 base::RunLoop run_loop;
1379 public_context()->UnregisterServiceWorker( 1378 public_context()->UnregisterServiceWorker(
1380 embedded_test_server()->GetURL(kPageUrl), 1379 embedded_test_server()->GetURL(kPageUrl),
1381 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); 1380 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure()));
1382 run_loop.Run(); 1381 run_loop.Run();
1383 } 1382 }
1384 1383
1385 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, 1384 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
1386 FetchPageWithSaveDataPassThroughOnFetch) { 1385 FetchPageWithSaveDataPassThroughOnFetch) {
1387 const char kPageUrl[] = "/service_worker/pass_through_fetch.html"; 1386 const char kPageUrl[] = "/service_worker/pass_through_fetch.html";
1388 const char kWorkerUrl[] = "/service_worker/fetch_event_pass_through.js"; 1387 const char kWorkerUrl[] = "/service_worker/fetch_event_pass_through.js";
1389 MockContentBrowserClient content_browser_client; 1388 MockContentBrowserClient content_browser_client;
1390 content_browser_client.set_data_saver_enabled(true); 1389 content_browser_client.set_data_saver_enabled(true);
1391 ContentBrowserClient* old_client = 1390 ContentBrowserClient* old_client =
1392 SetBrowserClientForTesting(&content_browser_client); 1391 SetBrowserClientForTesting(&content_browser_client);
1393 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged(); 1392 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged();
1394 scoped_refptr<WorkerActivatedObserver> observer = 1393 scoped_refptr<WorkerActivatedObserver> observer =
1395 new WorkerActivatedObserver(wrapper()); 1394 new WorkerActivatedObserver(wrapper());
(...skipping 15 matching lines...) Expand all
1411 SetBrowserClientForTesting(old_client); 1410 SetBrowserClientForTesting(old_client);
1412 shell()->Close(); 1411 shell()->Close();
1413 1412
1414 base::RunLoop run_loop; 1413 base::RunLoop run_loop;
1415 public_context()->UnregisterServiceWorker( 1414 public_context()->UnregisterServiceWorker(
1416 embedded_test_server()->GetURL(kPageUrl), 1415 embedded_test_server()->GetURL(kPageUrl),
1417 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); 1416 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure()));
1418 run_loop.Run(); 1417 run_loop.Run();
1419 } 1418 }
1420 1419
1421 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, Reload) { 1420 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, Reload) {
1422 StartServerAndNavigateToSetup(); 1421 StartServerAndNavigateToSetup();
1423 const char kPageUrl[] = "/service_worker/reload.html"; 1422 const char kPageUrl[] = "/service_worker/reload.html";
1424 const char kWorkerUrl[] = "/service_worker/fetch_event_reload.js"; 1423 const char kWorkerUrl[] = "/service_worker/fetch_event_reload.js";
1425 scoped_refptr<WorkerActivatedObserver> observer = 1424 scoped_refptr<WorkerActivatedObserver> observer =
1426 new WorkerActivatedObserver(wrapper()); 1425 new WorkerActivatedObserver(wrapper());
1427 observer->Init(); 1426 observer->Init();
1428 public_context()->RegisterServiceWorker( 1427 public_context()->RegisterServiceWorker(
1429 embedded_test_server()->GetURL(kPageUrl), 1428 embedded_test_server()->GetURL(kPageUrl),
1430 embedded_test_server()->GetURL(kWorkerUrl), 1429 embedded_test_server()->GetURL(kWorkerUrl),
1431 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); 1430 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing)));
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
1670 " ' null);\\n' +\n" 1669 " ' null);\\n' +\n"
1671 " '</script>'," 1670 " '</script>',"
1672 " {headers: [['content-type', 'text/html']]}));\n" 1671 " {headers: [['content-type', 'text/html']]}));\n"
1673 " });\n" 1672 " });\n"
1674 "self.addEventListener('message', event => {\n" 1673 "self.addEventListener('message', event => {\n"
1675 " event.waitUntil(\n" 1674 " event.waitUntil(\n"
1676 " preload_promise.then(\n" 1675 " preload_promise.then(\n"
1677 " result => event.source.postMessage(result)));\n" 1676 " result => event.source.postMessage(result)));\n"
1678 " });"; 1677 " });";
1679 1678
1680 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkFallback) { 1679 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest, NetworkFallback) {
1681 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1680 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1682 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1681 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1683 const char kPage[] = "<title>PASS</title>Hello world."; 1682 const char kPage[] = "<title>PASS</title>Hello world.";
1684 const std::string kScript = kEnableNavigationPreloadScript + 1683 const std::string kScript = kEnableNavigationPreloadScript +
1685 "self.addEventListener('fetch', event => {\n" 1684 "self.addEventListener('fetch', event => {\n"
1686 " // Do nothing.\n" 1685 " // Do nothing.\n"
1687 " });"; 1686 " });";
1688 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1687 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1689 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1688 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1690 RegisterStaticFile(kPageUrl, kPage, "text/html"); 1689 RegisterStaticFile(kPageUrl, kPage, "text/html");
(...skipping 20 matching lines...) Expand all
1711 EXPECT_FALSE(HasNavigationPreloadHeader(request_log_[kPageUrl][0])); 1710 EXPECT_FALSE(HasNavigationPreloadHeader(request_log_[kPageUrl][0]));
1712 } else if (request_count == 2) { 1711 } else if (request_count == 2) {
1713 // Navigation preload request. 1712 // Navigation preload request.
1714 ASSERT_TRUE(HasNavigationPreloadHeader(request_log_[kPageUrl][0])); 1713 ASSERT_TRUE(HasNavigationPreloadHeader(request_log_[kPageUrl][0]));
1715 EXPECT_EQ("true", GetNavigationPreloadHeader(request_log_[kPageUrl][0])); 1714 EXPECT_EQ("true", GetNavigationPreloadHeader(request_log_[kPageUrl][0]));
1716 // Fallback request. 1715 // Fallback request.
1717 EXPECT_FALSE(HasNavigationPreloadHeader(request_log_[kPageUrl][1])); 1716 EXPECT_FALSE(HasNavigationPreloadHeader(request_log_[kPageUrl][1]));
1718 } 1717 }
1719 } 1718 }
1720 1719
1721 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, SetHeaderValue) { 1720 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest, SetHeaderValue) {
1722 const std::string kPageUrl = "/service_worker/navigation_preload.html"; 1721 const std::string kPageUrl = "/service_worker/navigation_preload.html";
1723 const std::string kWorkerUrl = "/service_worker/navigation_preload.js"; 1722 const std::string kWorkerUrl = "/service_worker/navigation_preload.js";
1724 const std::string kPage = "<title>FROM_SERVER</title>"; 1723 const std::string kPage = "<title>FROM_SERVER</title>";
1725 const std::string kScript = 1724 const std::string kScript =
1726 "function createResponse(title, body) {\n" 1725 "function createResponse(title, body) {\n"
1727 " return new Response('<title>' + title + '</title>' + body,\n" 1726 " return new Response('<title>' + title + '</title>' + body,\n"
1728 " {headers: [['content-type', 'text/html']]})\n" 1727 " {headers: [['content-type', 'text/html']]})\n"
1729 "}\n" 1728 "}\n"
1730 "self.addEventListener('fetch', event => {\n" 1729 "self.addEventListener('fetch', event => {\n"
1731 " if (event.request.url.indexOf('?enable') != -1) {\n" 1730 " if (event.request.url.indexOf('?enable') != -1) {\n"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1796 const base::string16 title4 = base::ASCIIToUTF16("TEST"); 1795 const base::string16 title4 = base::ASCIIToUTF16("TEST");
1797 TitleWatcher title_watcher4(shell()->web_contents(), title4); 1796 TitleWatcher title_watcher4(shell()->web_contents(), title4);
1798 title_watcher4.AlsoWaitForTitle(base::ASCIIToUTF16("FROM_SERVER")); 1797 title_watcher4.AlsoWaitForTitle(base::ASCIIToUTF16("FROM_SERVER"));
1799 NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl4)); 1798 NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl4));
1800 EXPECT_EQ(title4, title_watcher4.WaitAndGetTitle()); 1799 EXPECT_EQ(title4, title_watcher4.WaitAndGetTitle());
1801 // When the navigation started, the navigation preload must be disabled. 1800 // When the navigation started, the navigation preload must be disabled.
1802 EXPECT_EQ("undefined", GetTextContent()); 1801 EXPECT_EQ("undefined", GetTextContent());
1803 ASSERT_EQ(0, GetRequestCount(kPageUrl4)); 1802 ASSERT_EQ(0, GetRequestCount(kPageUrl4));
1804 } 1803 }
1805 1804
1806 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 1805 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
1807 RespondWithNavigationPreload) { 1806 RespondWithNavigationPreload) {
1808 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1807 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1809 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1808 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1810 const char kPage[] = "<title>PASS</title>Hello world."; 1809 const char kPage[] = "<title>PASS</title>Hello world.";
1811 const std::string kScript = 1810 const std::string kScript =
1812 kEnableNavigationPreloadScript + 1811 kEnableNavigationPreloadScript +
1813 "self.addEventListener('fetch', event => {\n" 1812 "self.addEventListener('fetch', event => {\n"
1814 " if (!event.preloadResponse) {\n" 1813 " if (!event.preloadResponse) {\n"
1815 " event.respondWith(\n" 1814 " event.respondWith(\n"
1816 " new Response('<title>ERROR</title>'," 1815 " new Response('<title>ERROR</title>',"
(...skipping 18 matching lines...) Expand all
1835 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1834 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1836 EXPECT_EQ("Hello world.", GetTextContent()); 1835 EXPECT_EQ("Hello world.", GetTextContent());
1837 1836
1838 // The page request must be sent only once, since the worker responded with 1837 // The page request must be sent only once, since the worker responded with
1839 // the navigation preload response 1838 // the navigation preload response
1840 ASSERT_EQ(1, GetRequestCount(kPageUrl)); 1839 ASSERT_EQ(1, GetRequestCount(kPageUrl));
1841 EXPECT_EQ("true", 1840 EXPECT_EQ("true",
1842 request_log_[kPageUrl][0].headers[kNavigationPreloadHeaderName]); 1841 request_log_[kPageUrl][0].headers[kNavigationPreloadHeaderName]);
1843 } 1842 }
1844 1843
1845 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, GetResponseText) { 1844 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest, GetResponseText) {
1846 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1845 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1847 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1846 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1848 const char kPage[] = "<title>PASS</title>Hello world."; 1847 const char kPage[] = "<title>PASS</title>Hello world.";
1849 const std::string kScript = 1848 const std::string kScript =
1850 kEnableNavigationPreloadScript + 1849 kEnableNavigationPreloadScript +
1851 "self.addEventListener('fetch', event => {\n" 1850 "self.addEventListener('fetch', event => {\n"
1852 " event.respondWith(\n" 1851 " event.respondWith(\n"
1853 " event.preloadResponse\n" 1852 " event.preloadResponse\n"
1854 " .then(response => response.text())\n" 1853 " .then(response => response.text())\n"
1855 " .then(text =>\n" 1854 " .then(text =>\n"
(...skipping 14 matching lines...) Expand all
1870 TitleWatcher title_watcher(shell()->web_contents(), title); 1869 TitleWatcher title_watcher(shell()->web_contents(), title);
1871 NavigateToURL(shell(), page_url); 1870 NavigateToURL(shell(), page_url);
1872 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1871 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1873 EXPECT_EQ("Hello world.", GetTextContent()); 1872 EXPECT_EQ("Hello world.", GetTextContent());
1874 1873
1875 // The page request must be sent only once, since the worker responded with 1874 // The page request must be sent only once, since the worker responded with
1876 // "Hello world". 1875 // "Hello world".
1877 EXPECT_EQ(1, GetRequestCount(kPageUrl)); 1876 EXPECT_EQ(1, GetRequestCount(kPageUrl));
1878 } 1877 }
1879 1878
1880 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 1879 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
1881 AbortPreloadRequest) { 1880 AbortPreloadRequest) {
1882 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1881 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1883 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1882 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1884 const char kPage[] = "<title>ERROR</title>Hello world."; 1883 const char kPage[] = "<title>ERROR</title>Hello world.";
1885 // In this script, event.preloadResponse is not guarded by event.waitUntil. 1884 // In this script, event.preloadResponse is not guarded by event.waitUntil.
1886 // So the preload request should be canceled, when the fetch event handler 1885 // So the preload request should be canceled, when the fetch event handler
1887 // has been executed. 1886 // has been executed.
1888 const std::string kScript = 1887 const std::string kScript =
1889 kEnableNavigationPreloadScript + 1888 kEnableNavigationPreloadScript +
1890 "var preload_resolve;\n" 1889 "var preload_resolve;\n"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1930 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); 1929 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR"));
1931 NavigateToURL(shell(), page_url); 1930 NavigateToURL(shell(), page_url);
1932 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1931 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1933 1932
1934 EXPECT_EQ( 1933 EXPECT_EQ(
1935 "AbortError: Service Worker navigation preload aborted. Need to guard " 1934 "AbortError: Service Worker navigation preload aborted. Need to guard "
1936 "with respondWith or waitUntil.", 1935 "with respondWith or waitUntil.",
1937 GetTextContent()); 1936 GetTextContent());
1938 } 1937 }
1939 1938
1940 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkError) { 1939 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest, NetworkError) {
1941 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1940 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1942 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1941 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1943 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1942 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1944 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1943 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1945 RegisterStaticFile( 1944 RegisterStaticFile(
1946 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, 1945 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript,
1947 "text/javascript"); 1946 "text/javascript");
1948 1947
1949 RegisterMonitorRequestHandler(); 1948 RegisterMonitorRequestHandler();
1950 StartServerAndNavigateToSetup(); 1949 StartServerAndNavigateToSetup();
1951 SetupForNavigationPreloadTest(page_url, worker_url); 1950 SetupForNavigationPreloadTest(page_url, worker_url);
1952 1951
1953 EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); 1952 EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete());
1954 1953
1955 const base::string16 title = base::ASCIIToUTF16("REJECTED"); 1954 const base::string16 title = base::ASCIIToUTF16("REJECTED");
1956 TitleWatcher title_watcher(shell()->web_contents(), title); 1955 TitleWatcher title_watcher(shell()->web_contents(), title);
1957 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); 1956 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED"));
1958 NavigateToURL(shell(), page_url); 1957 NavigateToURL(shell(), page_url);
1959 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1958 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1960 EXPECT_EQ("NetworkError: Service Worker navigation preload network error.", 1959 EXPECT_EQ("NetworkError: Service Worker navigation preload network error.",
1961 GetTextContent()); 1960 GetTextContent());
1962 } 1961 }
1963 1962
1964 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 1963 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
1965 CanceledByInterceptor) { 1964 CanceledByInterceptor) {
1966 content::ResourceDispatcherHost::Get()->RegisterInterceptor( 1965 content::ResourceDispatcherHost::Get()->RegisterInterceptor(
1967 kNavigationPreloadHeaderName, "", 1966 kNavigationPreloadHeaderName, "",
1968 base::Bind(&CancellingInterceptorCallback)); 1967 base::Bind(&CancellingInterceptorCallback));
1969 1968
1970 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1969 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1971 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1970 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1972 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1971 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1973 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1972 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1974 RegisterStaticFile( 1973 RegisterStaticFile(
1975 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, 1974 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript,
1976 "text/javascript"); 1975 "text/javascript");
1977 1976
1978 RegisterMonitorRequestHandler(); 1977 RegisterMonitorRequestHandler();
1979 StartServerAndNavigateToSetup(); 1978 StartServerAndNavigateToSetup();
1980 SetupForNavigationPreloadTest(page_url, worker_url); 1979 SetupForNavigationPreloadTest(page_url, worker_url);
1981 1980
1982 const base::string16 title = base::ASCIIToUTF16("REJECTED"); 1981 const base::string16 title = base::ASCIIToUTF16("REJECTED");
1983 TitleWatcher title_watcher(shell()->web_contents(), title); 1982 TitleWatcher title_watcher(shell()->web_contents(), title);
1984 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); 1983 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED"));
1985 NavigateToURL(shell(), page_url); 1984 NavigateToURL(shell(), page_url);
1986 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1985 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1987 EXPECT_EQ("NetworkError: Service Worker navigation preload network error.", 1986 EXPECT_EQ("NetworkError: Service Worker navigation preload network error.",
1988 GetTextContent()); 1987 GetTextContent());
1989 } 1988 }
1990 1989
1991 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 1990 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
1992 PreloadHeadersSimple) { 1991 PreloadHeadersSimple) {
1993 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1992 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1994 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1993 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1995 const char kPage[] = "<title>ERROR</title>Hello world."; 1994 const char kPage[] = "<title>ERROR</title>Hello world.";
1996 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1995 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1997 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1996 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1998 RegisterStaticFile(kPageUrl, kPage, "text/html"); 1997 RegisterStaticFile(kPageUrl, kPage, "text/html");
1999 RegisterStaticFile( 1998 RegisterStaticFile(
2000 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, 1999 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript,
2001 "text/javascript"); 2000 "text/javascript");
(...skipping 19 matching lines...) Expand all
2021 EXPECT_EQ("basic", GetString(*dict, "type")); 2020 EXPECT_EQ("basic", GetString(*dict, "type"));
2022 EXPECT_EQ(page_url, GURL(GetString(*dict, "url"))); 2021 EXPECT_EQ(page_url, GURL(GetString(*dict, "url")));
2023 EXPECT_EQ(200, GetInt(*dict, "status")); 2022 EXPECT_EQ(200, GetInt(*dict, "status"));
2024 EXPECT_EQ(true, GetBoolean(*dict, "ok")); 2023 EXPECT_EQ(true, GetBoolean(*dict, "ok"));
2025 EXPECT_EQ("OK", GetString(*dict, "statusText")); 2024 EXPECT_EQ("OK", GetString(*dict, "statusText"));
2026 EXPECT_TRUE(CheckHeader(*dict, "content-type", "text/html")); 2025 EXPECT_TRUE(CheckHeader(*dict, "content-type", "text/html"));
2027 EXPECT_TRUE(CheckHeader(*dict, "content-length", 2026 EXPECT_TRUE(CheckHeader(*dict, "content-length",
2028 base::IntToString(sizeof(kPage) - 1))); 2027 base::IntToString(sizeof(kPage) - 1)));
2029 } 2028 }
2030 2029
2031 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NotEnabled) { 2030 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest, NotEnabled) {
2032 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 2031 const char kPageUrl[] = "/service_worker/navigation_preload.html";
2033 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 2032 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
2034 const char kPage[] = "<title>ERROR</title>Hello world."; 2033 const char kPage[] = "<title>ERROR</title>Hello world.";
2035 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 2034 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
2036 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 2035 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
2037 RegisterStaticFile(kPageUrl, kPage, "text/html"); 2036 RegisterStaticFile(kPageUrl, kPage, "text/html");
2038 RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript"); 2037 RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript");
2039 2038
2040 RegisterMonitorRequestHandler(); 2039 RegisterMonitorRequestHandler();
2041 StartServerAndNavigateToSetup(); 2040 StartServerAndNavigateToSetup();
2042 SetupForNavigationPreloadTest(page_url, worker_url); 2041 SetupForNavigationPreloadTest(page_url, worker_url);
2043 2042
2044 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); 2043 const base::string16 title = base::ASCIIToUTF16("RESOLVED");
2045 TitleWatcher title_watcher(shell()->web_contents(), title); 2044 TitleWatcher title_watcher(shell()->web_contents(), title);
2046 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); 2045 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED"));
2047 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); 2046 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR"));
2048 NavigateToURL(shell(), page_url); 2047 NavigateToURL(shell(), page_url);
2049 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 2048 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
2050 2049
2051 // The page request must not be sent, since the worker responded with a 2050 // The page request must not be sent, since the worker responded with a
2052 // generated Response and the navigation preload isn't enabled. 2051 // generated Response and the navigation preload isn't enabled.
2053 EXPECT_EQ(0, GetRequestCount(kPageUrl)); 2052 EXPECT_EQ(0, GetRequestCount(kPageUrl));
2054 EXPECT_EQ("Resolved with undefined.", GetTextContent()); 2053 EXPECT_EQ("Resolved with undefined.", GetTextContent());
2055 } 2054 }
2056 2055
2057 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 2056 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
2058 PreloadHeadersCustom) { 2057 PreloadHeadersCustom) {
2059 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 2058 const char kPageUrl[] = "/service_worker/navigation_preload.html";
2060 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 2059 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
2061 const char kPageResponse[] = 2060 const char kPageResponse[] =
2062 "HTTP/1.1 201 HELLOWORLD\r\n" 2061 "HTTP/1.1 201 HELLOWORLD\r\n"
2063 "Connection: close\r\n" 2062 "Connection: close\r\n"
2064 "Content-Length: 32\r\n" 2063 "Content-Length: 32\r\n"
2065 "Content-Type: text/html\r\n" 2064 "Content-Type: text/html\r\n"
2066 "Custom-Header: pen pineapple\r\n" 2065 "Custom-Header: pen pineapple\r\n"
2067 "Custom-Header: apple pen\r\n" 2066 "Custom-Header: apple pen\r\n"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2100 EXPECT_EQ(true, GetBoolean(*dict, "ok")); 2099 EXPECT_EQ(true, GetBoolean(*dict, "ok"));
2101 EXPECT_EQ("HELLOWORLD", GetString(*dict, "statusText")); 2100 EXPECT_EQ("HELLOWORLD", GetString(*dict, "statusText"));
2102 EXPECT_TRUE(CheckHeader(*dict, "content-type", "text/html")); 2101 EXPECT_TRUE(CheckHeader(*dict, "content-type", "text/html"));
2103 EXPECT_TRUE(CheckHeader(*dict, "content-length", "32")); 2102 EXPECT_TRUE(CheckHeader(*dict, "content-length", "32"));
2104 EXPECT_TRUE(CheckHeader(*dict, "custom-header", "pen pineapple, apple pen")); 2103 EXPECT_TRUE(CheckHeader(*dict, "custom-header", "pen pineapple, apple pen"));
2105 // The forbidden response headers (Set-Cookie, Set-Cookie2) must be removed. 2104 // The forbidden response headers (Set-Cookie, Set-Cookie2) must be removed.
2106 EXPECT_FALSE(dict->HasKey("set-cookie")); 2105 EXPECT_FALSE(dict->HasKey("set-cookie"));
2107 EXPECT_FALSE(dict->HasKey("set-cookie2")); 2106 EXPECT_FALSE(dict->HasKey("set-cookie2"));
2108 } 2107 }
2109 2108
2110 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, RejectRedirects) { 2109 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest, RejectRedirects) {
2111 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 2110 const char kPageUrl[] = "/service_worker/navigation_preload.html";
2112 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 2111 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
2113 const char kRedirectedPageUrl[] = 2112 const char kRedirectedPageUrl[] =
2114 "/service_worker/navigation_preload_redirected.html"; 2113 "/service_worker/navigation_preload_redirected.html";
2115 const char kPageResponse[] = 2114 const char kPageResponse[] =
2116 "HTTP/1.1 302 Found\r\n" 2115 "HTTP/1.1 302 Found\r\n"
2117 "Connection: close\r\n" 2116 "Connection: close\r\n"
2118 "Location: /service_worker/navigation_preload_redirected.html\r\n" 2117 "Location: /service_worker/navigation_preload_redirected.html\r\n"
2119 "\r\n"; 2118 "\r\n";
2120 const char kRedirectedPage[] = "<title>ERROR</title>Redirected page."; 2119 const char kRedirectedPage[] = "<title>ERROR</title>Redirected page.";
(...skipping 23 matching lines...) Expand all
2144 // The redirected request must not be sent. 2143 // The redirected request must not be sent.
2145 EXPECT_EQ(0, GetRequestCount(kRedirectedPageUrl)); 2144 EXPECT_EQ(0, GetRequestCount(kRedirectedPageUrl));
2146 EXPECT_EQ( 2145 EXPECT_EQ(
2147 "NetworkError: Service Worker navigation preload doesn't suport " 2146 "NetworkError: Service Worker navigation preload doesn't suport "
2148 "redirect.", 2147 "redirect.",
2149 GetTextContent()); 2148 GetTextContent());
2150 } 2149 }
2151 2150
2152 // Tests responding with the navigation preload response when the navigation 2151 // Tests responding with the navigation preload response when the navigation
2153 // occurred after a redirect. 2152 // occurred after a redirect.
2154 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 2153 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
2155 RedirectAndRespondWithNavigationPreload) { 2154 RedirectAndRespondWithNavigationPreload) {
2156 const std::string kPageUrl = "/service_worker/navigation_preload.html"; 2155 const std::string kPageUrl = "/service_worker/navigation_preload.html";
2157 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 2156 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
2158 const char kPage[] = 2157 const char kPage[] =
2159 "<title></title>\n" 2158 "<title></title>\n"
2160 "<script>document.title = document.location.search;</script>"; 2159 "<script>document.title = document.location.search;</script>";
2161 const std::string kScript = 2160 const std::string kScript =
2162 kEnableNavigationPreloadScript + 2161 kEnableNavigationPreloadScript +
2163 "self.addEventListener('fetch', event => {\n" 2162 "self.addEventListener('fetch', event => {\n"
2164 " if (event.request.url.indexOf('navigation_preload.html') == -1)\n" 2163 " if (event.request.url.indexOf('navigation_preload.html') == -1)\n"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
2214 NavigateToURL(shell(), cross_origin_redirect_page_url); 2213 NavigateToURL(shell(), cross_origin_redirect_page_url);
2215 EXPECT_EQ(title3, title_watcher3.WaitAndGetTitle()); 2214 EXPECT_EQ(title3, title_watcher3.WaitAndGetTitle());
2216 EXPECT_EQ(1, GetRequestCount(kPageUrl + "?3")); 2215 EXPECT_EQ(1, GetRequestCount(kPageUrl + "?3"));
2217 } 2216 }
2218 2217
2219 // When the content type of the page is not correctly set, 2218 // When the content type of the page is not correctly set,
2220 // OnStartLoadingResponseBody() of mojom::URLLoaderClient is called before 2219 // OnStartLoadingResponseBody() of mojom::URLLoaderClient is called before
2221 // OnReceiveResponse(). This behavior is caused by MimeSniffingResourceHandler. 2220 // OnReceiveResponse(). This behavior is caused by MimeSniffingResourceHandler.
2222 // This test checks that even if the MimeSniffingResourceHandler is triggered 2221 // This test checks that even if the MimeSniffingResourceHandler is triggered
2223 // navigation preload must be handled correctly. 2222 // navigation preload must be handled correctly.
2224 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 2223 IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
2225 RespondWithNavigationPreloadWithMimeSniffing) { 2224 RespondWithNavigationPreloadWithMimeSniffing) {
2226 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 2225 const char kPageUrl[] = "/service_worker/navigation_preload.html";
2227 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 2226 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
2228 const char kPage[] = "<title>PASS</title>Hello world."; 2227 const char kPage[] = "<title>PASS</title>Hello world.";
2229 const std::string kScript = kEnableNavigationPreloadScript + 2228 const std::string kScript = kEnableNavigationPreloadScript +
2230 "self.addEventListener('fetch', event => {\n" 2229 "self.addEventListener('fetch', event => {\n"
2231 " event.respondWith(event.preloadResponse);\n" 2230 " event.respondWith(event.preloadResponse);\n"
2232 " });"; 2231 " });";
2233 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 2232 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
2234 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 2233 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
(...skipping 16 matching lines...) Expand all
2251 // the navigation preload response 2250 // the navigation preload response
2252 EXPECT_EQ(1, GetRequestCount(kPageUrl)); 2251 EXPECT_EQ(1, GetRequestCount(kPageUrl));
2253 } 2252 }
2254 2253
2255 // Flaky on Win/Mac: http://crbug.com/533631 2254 // Flaky on Win/Mac: http://crbug.com/533631
2256 #if defined(OS_WIN) || defined(OS_MACOSX) 2255 #if defined(OS_WIN) || defined(OS_MACOSX)
2257 #define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure DISABLED_ResponseFr omHTTPSServiceWorkerIsMarkedAsSecure 2256 #define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure DISABLED_ResponseFr omHTTPSServiceWorkerIsMarkedAsSecure
2258 #else 2257 #else
2259 #define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure ResponseFromHTTPSSe rviceWorkerIsMarkedAsSecure 2258 #define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure ResponseFromHTTPSSe rviceWorkerIsMarkedAsSecure
2260 #endif 2259 #endif
2261 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, 2260 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
2262 MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure) { 2261 MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure) {
2263 StartServerAndNavigateToSetup(); 2262 StartServerAndNavigateToSetup();
2264 const char kPageUrl[] = "/service_worker/fetch_event_blob.html"; 2263 const char kPageUrl[] = "/service_worker/fetch_event_blob.html";
2265 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; 2264 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js";
2266 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); 2265 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
2267 https_server.ServeFilesFromSourceDirectory("content/test/data"); 2266 https_server.ServeFilesFromSourceDirectory("content/test/data");
2268 ASSERT_TRUE(https_server.Start()); 2267 ASSERT_TRUE(https_server.Start());
2269 2268
2270 scoped_refptr<WorkerActivatedObserver> observer = 2269 scoped_refptr<WorkerActivatedObserver> observer =
2271 new WorkerActivatedObserver(wrapper()); 2270 new WorkerActivatedObserver(wrapper());
(...skipping 19 matching lines...) Expand all
2291 2290
2292 shell()->Close(); 2291 shell()->Close();
2293 2292
2294 base::RunLoop run_loop; 2293 base::RunLoop run_loop;
2295 public_context()->UnregisterServiceWorker( 2294 public_context()->UnregisterServiceWorker(
2296 https_server.GetURL(kPageUrl), 2295 https_server.GetURL(kPageUrl),
2297 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); 2296 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure()));
2298 run_loop.Run(); 2297 run_loop.Run();
2299 } 2298 }
2300 2299
2301 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, 2300 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
2302 ResponseFromHTTPServiceWorkerIsNotMarkedAsSecure) { 2301 ResponseFromHTTPServiceWorkerIsNotMarkedAsSecure) {
2303 StartServerAndNavigateToSetup(); 2302 StartServerAndNavigateToSetup();
2304 const char kPageUrl[] = "/service_worker/fetch_event_blob.html"; 2303 const char kPageUrl[] = "/service_worker/fetch_event_blob.html";
2305 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; 2304 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js";
2306 scoped_refptr<WorkerActivatedObserver> observer = 2305 scoped_refptr<WorkerActivatedObserver> observer =
2307 new WorkerActivatedObserver(wrapper()); 2306 new WorkerActivatedObserver(wrapper());
2308 observer->Init(); 2307 observer->Init();
2309 public_context()->RegisterServiceWorker( 2308 public_context()->RegisterServiceWorker(
2310 embedded_test_server()->GetURL(kPageUrl), 2309 embedded_test_server()->GetURL(kPageUrl),
2311 embedded_test_server()->GetURL(kWorkerUrl), 2310 embedded_test_server()->GetURL(kWorkerUrl),
(...skipping 13 matching lines...) Expand all
2325 2324
2326 shell()->Close(); 2325 shell()->Close();
2327 2326
2328 base::RunLoop run_loop; 2327 base::RunLoop run_loop;
2329 public_context()->UnregisterServiceWorker( 2328 public_context()->UnregisterServiceWorker(
2330 embedded_test_server()->GetURL(kPageUrl), 2329 embedded_test_server()->GetURL(kPageUrl),
2331 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); 2330 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure()));
2332 run_loop.Run(); 2331 run_loop.Run();
2333 } 2332 }
2334 2333
2335 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, ImportsBustMemcache) { 2334 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, ImportsBustMemcache) {
2336 StartServerAndNavigateToSetup(); 2335 StartServerAndNavigateToSetup();
2337 const char kScopeUrl[] = "/service_worker/imports_bust_memcache_scope/"; 2336 const char kScopeUrl[] = "/service_worker/imports_bust_memcache_scope/";
2338 const char kPageUrl[] = "/service_worker/imports_bust_memcache.html"; 2337 const char kPageUrl[] = "/service_worker/imports_bust_memcache.html";
2339 const char kScriptUrl[] = "/service_worker/worker_with_one_import.js"; 2338 const char kScriptUrl[] = "/service_worker/worker_with_one_import.js";
2340 const char kImportUrl[] = "/service_worker/long_lived_import.js"; 2339 const char kImportUrl[] = "/service_worker/long_lived_import.js";
2341 const base::string16 kOKTitle(base::ASCIIToUTF16("OK")); 2340 const base::string16 kOKTitle(base::ASCIIToUTF16("OK"));
2342 const base::string16 kFailTitle(base::ASCIIToUTF16("FAIL")); 2341 const base::string16 kFailTitle(base::ASCIIToUTF16("FAIL"));
2343 2342
2344 RunOnIOThread( 2343 RunOnIOThread(
2345 base::Bind(&CreateLongLivedResourceInterceptors, 2344 base::Bind(&CreateLongLivedResourceInterceptors,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2391 static int CountRenderProcessHosts() { 2390 static int CountRenderProcessHosts() {
2392 int result = 0; 2391 int result = 0;
2393 for (RenderProcessHost::iterator iter(RenderProcessHost::AllHostsIterator()); 2392 for (RenderProcessHost::iterator iter(RenderProcessHost::AllHostsIterator());
2394 !iter.IsAtEnd(); 2393 !iter.IsAtEnd();
2395 iter.Advance()) { 2394 iter.Advance()) {
2396 result++; 2395 result++;
2397 } 2396 }
2398 return result; 2397 return result;
2399 } 2398 }
2400 2399
2401 IN_PROC_BROWSER_TEST_P(ServiceWorkerBlackBoxBrowserTest, Registration) { 2400 IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, Registration) {
2402 StartServerAndNavigateToSetup(); 2401 StartServerAndNavigateToSetup();
2403 // Close the only window to be sure we're not re-using its RenderProcessHost. 2402 // Close the only window to be sure we're not re-using its RenderProcessHost.
2404 shell()->Close(); 2403 shell()->Close();
2405 EXPECT_EQ(0, CountRenderProcessHosts()); 2404 EXPECT_EQ(0, CountRenderProcessHosts());
2406 2405
2407 const char kWorkerUrl[] = "/service_worker/fetch_event.js"; 2406 const char kWorkerUrl[] = "/service_worker/fetch_event.js";
2408 const char kScope[] = "/service_worker/"; 2407 const char kScope[] = "/service_worker/";
2409 2408
2410 // Unregistering nothing should return false. 2409 // Unregistering nothing should return false.
2411 { 2410 {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2474 embedded_test_server()->GetURL("/service_worker/empty.html"), &status)); 2473 embedded_test_server()->GetURL("/service_worker/empty.html"), &status));
2475 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status); 2474 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status);
2476 } 2475 }
2477 } 2476 }
2478 2477
2479 #if defined(ANDROID) 2478 #if defined(ANDROID)
2480 #define MAYBE_CrossSiteTransfer DISABLED_CrossSiteTransfer 2479 #define MAYBE_CrossSiteTransfer DISABLED_CrossSiteTransfer
2481 #else 2480 #else
2482 #define MAYBE_CrossSiteTransfer CrossSiteTransfer 2481 #define MAYBE_CrossSiteTransfer CrossSiteTransfer
2483 #endif 2482 #endif
2484 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, MAYBE_CrossSiteTransfer) { 2483 IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, MAYBE_CrossSiteTransfer) {
2485 StartServerAndNavigateToSetup(); 2484 StartServerAndNavigateToSetup();
2486 // The first page registers a service worker. 2485 // The first page registers a service worker.
2487 const char kRegisterPageUrl[] = "/service_worker/cross_site_xfer.html"; 2486 const char kRegisterPageUrl[] = "/service_worker/cross_site_xfer.html";
2488 const base::string16 kOKTitle1(base::ASCIIToUTF16("OK_1")); 2487 const base::string16 kOKTitle1(base::ASCIIToUTF16("OK_1"));
2489 const base::string16 kFailTitle1(base::ASCIIToUTF16("FAIL_1")); 2488 const base::string16 kFailTitle1(base::ASCIIToUTF16("FAIL_1"));
2490 content::TitleWatcher title_watcher1(shell()->web_contents(), kOKTitle1); 2489 content::TitleWatcher title_watcher1(shell()->web_contents(), kOKTitle1);
2491 title_watcher1.AlsoWaitForTitle(kFailTitle1); 2490 title_watcher1.AlsoWaitForTitle(kFailTitle1);
2492 2491
2493 NavigateToURL(shell(), embedded_test_server()->GetURL(kRegisterPageUrl)); 2492 NavigateToURL(shell(), embedded_test_server()->GetURL(kRegisterPageUrl));
2494 ASSERT_EQ(kOKTitle1, title_watcher1.WaitAndGetTitle()); 2493 ASSERT_EQ(kOKTitle1, title_watcher1.WaitAndGetTitle());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2529 protected: 2528 protected:
2530 // ServiceWorkerVersion::Listener overrides 2529 // ServiceWorkerVersion::Listener overrides
2531 void OnCachedMetadataUpdated(ServiceWorkerVersion* version) override { 2530 void OnCachedMetadataUpdated(ServiceWorkerVersion* version) override {
2532 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 2531 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
2533 cache_updated_closure_); 2532 cache_updated_closure_);
2534 } 2533 }
2535 2534
2536 base::Closure cache_updated_closure_; 2535 base::Closure cache_updated_closure_;
2537 }; 2536 };
2538 2537
2539 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserV8CacheTest, Restart) { 2538 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserV8CacheTest, Restart) {
2540 StartServerAndNavigateToSetup(); 2539 StartServerAndNavigateToSetup();
2541 RunOnIOThread(base::Bind(&self::SetUpRegistrationAndListenerOnIOThread, 2540 RunOnIOThread(base::Bind(&self::SetUpRegistrationAndListenerOnIOThread,
2542 base::Unretained(this), 2541 base::Unretained(this),
2543 "/service_worker/worker.js")); 2542 "/service_worker/worker.js"));
2544 2543
2545 base::RunLoop cached_metadata_run_loop; 2544 base::RunLoop cached_metadata_run_loop;
2546 cache_updated_closure_ = cached_metadata_run_loop.QuitClosure(); 2545 cache_updated_closure_ = cached_metadata_run_loop.QuitClosure();
2547 2546
2548 // Start a worker. 2547 // Start a worker.
2549 StartWorker(SERVICE_WORKER_OK); 2548 StartWorker(SERVICE_WORKER_OK);
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
2802 const std::string ServiceWorkerV8CacheStrategiesTest::kPageUrl = 2801 const std::string ServiceWorkerV8CacheStrategiesTest::kPageUrl =
2803 "/service_worker/v8_cache_test.html"; 2802 "/service_worker/v8_cache_test.html";
2804 const std::string ServiceWorkerV8CacheStrategiesTest::kWorkerUrl = 2803 const std::string ServiceWorkerV8CacheStrategiesTest::kWorkerUrl =
2805 "/service_worker/fetch_event_response_via_cache.js"; 2804 "/service_worker/fetch_event_response_via_cache.js";
2806 const std::string ServiceWorkerV8CacheStrategiesTest::kScriptUrl = 2805 const std::string ServiceWorkerV8CacheStrategiesTest::kScriptUrl =
2807 "/service_worker/v8_cache_test.js"; 2806 "/service_worker/v8_cache_test.js";
2808 // V8ScriptRunner::setCacheTimeStamp() stores 12 byte data (tag + timestamp). 2807 // V8ScriptRunner::setCacheTimeStamp() stores 12 byte data (tag + timestamp).
2809 const int ServiceWorkerV8CacheStrategiesTest::kV8CacheTimeStampDataSize = 2808 const int ServiceWorkerV8CacheStrategiesTest::kV8CacheTimeStampDataSize =
2810 sizeof(unsigned) + sizeof(double); 2809 sizeof(unsigned) + sizeof(double);
2811 2810
2812 IN_PROC_BROWSER_TEST_P(ServiceWorkerV8CacheStrategiesTest, 2811 IN_PROC_BROWSER_TEST_F(ServiceWorkerV8CacheStrategiesTest,
2813 V8CacheOnCacheStorage) { 2812 V8CacheOnCacheStorage) {
2814 // The strategy is "aggressive" on default. 2813 // The strategy is "aggressive" on default.
2815 CheckStrategyIsAggressive(); 2814 CheckStrategyIsAggressive();
2816 } 2815 }
2817 2816
2818 class ServiceWorkerV8CacheStrategiesNoneTest 2817 class ServiceWorkerV8CacheStrategiesNoneTest
2819 : public ServiceWorkerV8CacheStrategiesTest { 2818 : public ServiceWorkerV8CacheStrategiesTest {
2820 public: 2819 public:
2821 ServiceWorkerV8CacheStrategiesNoneTest() {} 2820 ServiceWorkerV8CacheStrategiesNoneTest() {}
2822 ~ServiceWorkerV8CacheStrategiesNoneTest() override {} 2821 ~ServiceWorkerV8CacheStrategiesNoneTest() override {}
2823 void SetUpCommandLine(base::CommandLine* command_line) override { 2822 void SetUpCommandLine(base::CommandLine* command_line) override {
2824 command_line->AppendSwitchASCII(switches::kV8CacheStrategiesForCacheStorage, 2823 command_line->AppendSwitchASCII(switches::kV8CacheStrategiesForCacheStorage,
2825 "none"); 2824 "none");
2826 } 2825 }
2827 2826
2828 private: 2827 private:
2829 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerV8CacheStrategiesNoneTest); 2828 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerV8CacheStrategiesNoneTest);
2830 }; 2829 };
2831 2830
2832 IN_PROC_BROWSER_TEST_P(ServiceWorkerV8CacheStrategiesNoneTest, 2831 IN_PROC_BROWSER_TEST_F(ServiceWorkerV8CacheStrategiesNoneTest,
2833 V8CacheOnCacheStorage) { 2832 V8CacheOnCacheStorage) {
2834 CheckStrategyIsNone(); 2833 CheckStrategyIsNone();
2835 } 2834 }
2836 2835
2837 class ServiceWorkerV8CacheStrategiesNormalTest 2836 class ServiceWorkerV8CacheStrategiesNormalTest
2838 : public ServiceWorkerV8CacheStrategiesTest { 2837 : public ServiceWorkerV8CacheStrategiesTest {
2839 public: 2838 public:
2840 ServiceWorkerV8CacheStrategiesNormalTest() {} 2839 ServiceWorkerV8CacheStrategiesNormalTest() {}
2841 ~ServiceWorkerV8CacheStrategiesNormalTest() override {} 2840 ~ServiceWorkerV8CacheStrategiesNormalTest() override {}
2842 void SetUpCommandLine(base::CommandLine* command_line) override { 2841 void SetUpCommandLine(base::CommandLine* command_line) override {
2843 command_line->AppendSwitchASCII(switches::kV8CacheStrategiesForCacheStorage, 2842 command_line->AppendSwitchASCII(switches::kV8CacheStrategiesForCacheStorage,
2844 "normal"); 2843 "normal");
2845 } 2844 }
2846 2845
2847 private: 2846 private:
2848 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerV8CacheStrategiesNormalTest); 2847 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerV8CacheStrategiesNormalTest);
2849 }; 2848 };
2850 2849
2851 IN_PROC_BROWSER_TEST_P(ServiceWorkerV8CacheStrategiesNormalTest, 2850 IN_PROC_BROWSER_TEST_F(ServiceWorkerV8CacheStrategiesNormalTest,
2852 V8CacheOnCacheStorage) { 2851 V8CacheOnCacheStorage) {
2853 CheckStrategyIsNormal(); 2852 CheckStrategyIsNormal();
2854 } 2853 }
2855 2854
2856 class ServiceWorkerV8CacheStrategiesAggressiveTest 2855 class ServiceWorkerV8CacheStrategiesAggressiveTest
2857 : public ServiceWorkerV8CacheStrategiesTest { 2856 : public ServiceWorkerV8CacheStrategiesTest {
2858 public: 2857 public:
2859 ServiceWorkerV8CacheStrategiesAggressiveTest() {} 2858 ServiceWorkerV8CacheStrategiesAggressiveTest() {}
2860 ~ServiceWorkerV8CacheStrategiesAggressiveTest() override {} 2859 ~ServiceWorkerV8CacheStrategiesAggressiveTest() override {}
2861 void SetUpCommandLine(base::CommandLine* command_line) override { 2860 void SetUpCommandLine(base::CommandLine* command_line) override {
2862 command_line->AppendSwitchASCII(switches::kV8CacheStrategiesForCacheStorage, 2861 command_line->AppendSwitchASCII(switches::kV8CacheStrategiesForCacheStorage,
2863 "aggressive"); 2862 "aggressive");
2864 } 2863 }
2865 2864
2866 private: 2865 private:
2867 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerV8CacheStrategiesAggressiveTest); 2866 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerV8CacheStrategiesAggressiveTest);
2868 }; 2867 };
2869 2868
2870 IN_PROC_BROWSER_TEST_P(ServiceWorkerV8CacheStrategiesAggressiveTest, 2869 IN_PROC_BROWSER_TEST_F(ServiceWorkerV8CacheStrategiesAggressiveTest,
2871 V8CacheOnCacheStorage) { 2870 V8CacheOnCacheStorage) {
2872 CheckStrategyIsAggressive(); 2871 CheckStrategyIsAggressive();
2873 } 2872 }
2874 2873
2875 // ServiceWorkerDisableWebSecurityTests check the behavior when the web security 2874 // ServiceWorkerDisableWebSecurityTests check the behavior when the web security
2876 // is disabled. If '--disable-web-security' flag is set, we don't check the 2875 // is disabled. If '--disable-web-security' flag is set, we don't check the
2877 // origin equality in Blink. So the Service Worker related APIs should succeed 2876 // origin equality in Blink. So the Service Worker related APIs should succeed
2878 // even if it is thouching other origin Service Workers. 2877 // even if it is thouching other origin Service Workers.
2879 class ServiceWorkerDisableWebSecurityTest : public ServiceWorkerBrowserTest { 2878 class ServiceWorkerDisableWebSecurityTest : public ServiceWorkerBrowserTest {
2880 public: 2879 public:
(...skipping 30 matching lines...) Expand all
2911 test_page + "?" + 2910 test_page + "?" +
2912 cross_origin_server_.GetURL(cross_origin_url).spec())); 2911 cross_origin_server_.GetURL(cross_origin_url).spec()));
2913 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 2912 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
2914 } 2913 }
2915 2914
2916 private: 2915 private:
2917 net::EmbeddedTestServer cross_origin_server_; 2916 net::EmbeddedTestServer cross_origin_server_;
2918 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDisableWebSecurityTest); 2917 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDisableWebSecurityTest);
2919 }; 2918 };
2920 2919
2921 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, 2920 IN_PROC_BROWSER_TEST_F(ServiceWorkerDisableWebSecurityTest,
2922 GetRegistrationNoCrash) { 2921 GetRegistrationNoCrash) {
2923 StartServerAndNavigateToSetup(); 2922 StartServerAndNavigateToSetup();
2924 const char kPageUrl[] = 2923 const char kPageUrl[] =
2925 "/service_worker/disable_web_security_get_registration.html"; 2924 "/service_worker/disable_web_security_get_registration.html";
2926 const char kScopeUrl[] = "/service_worker/"; 2925 const char kScopeUrl[] = "/service_worker/";
2927 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); 2926 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl);
2928 } 2927 }
2929 2928
2930 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, RegisterNoCrash) { 2929 IN_PROC_BROWSER_TEST_F(ServiceWorkerDisableWebSecurityTest, RegisterNoCrash) {
2931 StartServerAndNavigateToSetup(); 2930 StartServerAndNavigateToSetup();
2932 const char kPageUrl[] = "/service_worker/disable_web_security_register.html"; 2931 const char kPageUrl[] = "/service_worker/disable_web_security_register.html";
2933 const char kScopeUrl[] = "/service_worker/"; 2932 const char kScopeUrl[] = "/service_worker/";
2934 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); 2933 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl);
2935 } 2934 }
2936 2935
2937 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, UnregisterNoCrash) { 2936 IN_PROC_BROWSER_TEST_F(ServiceWorkerDisableWebSecurityTest, UnregisterNoCrash) {
2938 StartServerAndNavigateToSetup(); 2937 StartServerAndNavigateToSetup();
2939 const char kPageUrl[] = 2938 const char kPageUrl[] =
2940 "/service_worker/disable_web_security_unregister.html"; 2939 "/service_worker/disable_web_security_unregister.html";
2941 const char kScopeUrl[] = "/service_worker/scope/"; 2940 const char kScopeUrl[] = "/service_worker/scope/";
2942 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; 2941 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js";
2943 RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl); 2942 RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl);
2944 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); 2943 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl);
2945 } 2944 }
2946 2945
2947 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, UpdateNoCrash) { 2946 IN_PROC_BROWSER_TEST_F(ServiceWorkerDisableWebSecurityTest, UpdateNoCrash) {
2948 StartServerAndNavigateToSetup(); 2947 StartServerAndNavigateToSetup();
2949 const char kPageUrl[] = "/service_worker/disable_web_security_update.html"; 2948 const char kPageUrl[] = "/service_worker/disable_web_security_update.html";
2950 const char kScopeUrl[] = "/service_worker/scope/"; 2949 const char kScopeUrl[] = "/service_worker/scope/";
2951 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; 2950 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js";
2952 RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl); 2951 RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl);
2953 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); 2952 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl);
2954 } 2953 }
2955 2954
2956 class MemoryCoordinatorWithServiceWorkerTest 2955 class MemoryCoordinatorWithServiceWorkerTest
2957 : public ServiceWorkerVersionBrowserTest { 2956 : public ServiceWorkerVersionBrowserTest {
(...skipping 22 matching lines...) Expand all
2980 2979
2981 private: 2980 private:
2982 DISALLOW_COPY_AND_ASSIGN(TestMemoryCoordinatorDelegate); 2981 DISALLOW_COPY_AND_ASSIGN(TestMemoryCoordinatorDelegate);
2983 }; 2982 };
2984 2983
2985 // MemoryCoordinatorWithServiceWorkerTest checks if a process won't be 2984 // MemoryCoordinatorWithServiceWorkerTest checks if a process won't be
2986 // suspended when it has one or more shared workers or service workers. 2985 // suspended when it has one or more shared workers or service workers.
2987 // TODO(shimazu): Enable these tests on macos when MemoryMonitorMac is 2986 // TODO(shimazu): Enable these tests on macos when MemoryMonitorMac is
2988 // implemented. 2987 // implemented.
2989 #if !defined(OS_MACOSX) 2988 #if !defined(OS_MACOSX)
2990 IN_PROC_BROWSER_TEST_P(MemoryCoordinatorWithServiceWorkerTest, 2989 IN_PROC_BROWSER_TEST_F(MemoryCoordinatorWithServiceWorkerTest,
2991 CannotSuspendRendererWithServiceWorker) { 2990 CannotSuspendRendererWithServiceWorker) {
2992 StartServerAndNavigateToSetup(); 2991 StartServerAndNavigateToSetup();
2993 ActivateTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK); 2992 ActivateTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK);
2994 2993
2995 MemoryCoordinatorImpl* memory_coordinator = 2994 MemoryCoordinatorImpl* memory_coordinator =
2996 MemoryCoordinatorImpl::GetInstance(); 2995 MemoryCoordinatorImpl::GetInstance();
2997 memory_coordinator->SetDelegateForTesting( 2996 memory_coordinator->SetDelegateForTesting(
2998 base::MakeUnique<TestMemoryCoordinatorDelegate>()); 2997 base::MakeUnique<TestMemoryCoordinatorDelegate>());
2999 2998
3000 // Ensure only one process host exists. 2999 // Ensure only one process host exists.
3001 ASSERT_EQ(1, CountRenderProcessHosts()); 3000 ASSERT_EQ(1, CountRenderProcessHosts());
3002 ASSERT_EQ(1u, memory_coordinator->children().size()); 3001 ASSERT_EQ(1u, memory_coordinator->children().size());
3003 3002
3004 // Check the number of workers. 3003 // Check the number of workers.
3005 int render_process_id = memory_coordinator->children().begin()->first; 3004 int render_process_id = memory_coordinator->children().begin()->first;
3006 RenderProcessHost* rph = RenderProcessHost::FromID(render_process_id); 3005 RenderProcessHost* rph = RenderProcessHost::FromID(render_process_id);
3007 EXPECT_EQ(1u, rph->GetWorkerRefCount()); 3006 EXPECT_EQ(1u, rph->GetWorkerRefCount());
3008 3007
3009 // A process should be backgrounded to ensure the worker reference count takes 3008 // A process should be backgrounded to ensure the worker reference count takes
3010 // effect in CanSuspendRenderer(). 3009 // effect in CanSuspendRenderer().
3011 shell()->web_contents()->WasHidden(); 3010 shell()->web_contents()->WasHidden();
3012 EXPECT_TRUE(rph->IsProcessBackgrounded()); 3011 EXPECT_TRUE(rph->IsProcessBackgrounded());
3013 3012
3014 // The process which has service worker thread shouldn't be suspended. 3013 // The process which has service worker thread shouldn't be suspended.
3015 EXPECT_FALSE(memory_coordinator->CanSuspendRenderer(render_process_id)); 3014 EXPECT_FALSE(memory_coordinator->CanSuspendRenderer(render_process_id));
3016 } 3015 }
3017 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3018 MemoryCoordinatorWithServiceWorkerTest,
3019 ::testing::Bool());
3020 #endif 3016 #endif
3021 3017
3022 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3023 ServiceWorkerBrowserTest,
3024 ::testing::Values(true, false));
3025 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3026 ServiceWorkerVersionBrowserV8CacheTest,
3027 ::testing::Values(true, false));
3028 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3029 ServiceWorkerVersionBrowserTest,
3030 ::testing::Values(true, false));
3031 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3032 ServiceWorkerBlackBoxBrowserTest,
3033 ::testing::Values(true, false));
3034 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3035 ServiceWorkerNavigationPreloadTest,
3036 ::testing::Values(true, false));
3037 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3038 ServiceWorkerV8CacheStrategiesTest,
3039 ::testing::Values(true, false));
3040 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3041 ServiceWorkerV8CacheStrategiesNoneTest,
3042 ::testing::Values(true, false));
3043 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3044 ServiceWorkerV8CacheStrategiesNormalTest,
3045 ::testing::Values(true, false));
3046 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3047 ServiceWorkerV8CacheStrategiesAggressiveTest,
3048 ::testing::Values(true, false));
3049 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
3050 ServiceWorkerDisableWebSecurityTest,
3051 ::testing::Values(true, false));
3052
3053 } // namespace content 3018 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698