| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |