Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #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 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 384 } | 384 } |
| 385 | 385 |
| 386 } // namespace | 386 } // namespace |
| 387 | 387 |
| 388 class ServiceWorkerBrowserTest | 388 class ServiceWorkerBrowserTest |
| 389 : public MojoServiceWorkerTestP<ContentBrowserTest> { | 389 : public MojoServiceWorkerTestP<ContentBrowserTest> { |
| 390 protected: | 390 protected: |
| 391 using self = ServiceWorkerBrowserTest; | 391 using self = ServiceWorkerBrowserTest; |
| 392 | 392 |
| 393 void SetUpOnMainThread() override { | 393 void SetUpOnMainThread() override { |
| 394 ASSERT_TRUE(embedded_test_server()->Start()); | 394 ASSERT_TRUE(embedded_test_server()->InitializeAndListen()); |
| 395 StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( | 395 StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( |
| 396 shell()->web_contents()->GetBrowserContext()); | 396 shell()->web_contents()->GetBrowserContext()); |
| 397 wrapper_ = static_cast<ServiceWorkerContextWrapper*>( | 397 wrapper_ = static_cast<ServiceWorkerContextWrapper*>( |
| 398 partition->GetServiceWorkerContext()); | 398 partition->GetServiceWorkerContext()); |
| 399 | 399 |
| 400 // Navigate to the page to set up a renderer page (where we can embed | |
| 401 // a worker). | |
| 402 NavigateToURLBlockUntilNavigationsComplete( | |
| 403 shell(), | |
| 404 embedded_test_server()->GetURL("/service_worker/empty.html"), 1); | |
| 405 | |
| 406 RunOnIOThread(base::Bind(&self::SetUpOnIOThread, base::Unretained(this))); | 400 RunOnIOThread(base::Bind(&self::SetUpOnIOThread, base::Unretained(this))); |
| 407 } | 401 } |
| 408 | 402 |
| 409 void TearDownOnMainThread() override { | 403 void TearDownOnMainThread() override { |
| 410 RunOnIOThread( | 404 RunOnIOThread( |
| 411 base::Bind(&self::TearDownOnIOThread, base::Unretained(this))); | 405 base::Bind(&self::TearDownOnIOThread, base::Unretained(this))); |
| 412 wrapper_ = NULL; | 406 wrapper_ = NULL; |
| 413 } | 407 } |
| 414 | 408 |
| 409 // Starts the test server and navigates the renderer to an empty page. Call | |
| 410 // this after adding all request handlers to the test server. Adding handlers | |
| 411 // after the test server has started is not allowed. | |
| 412 void StartServerAndNavigateToSetup() { | |
|
falken
2016/11/29 02:24:06
Might it be good to DCHECK_CURRENTLY_ON(BrowserThr
martijnc
2016/11/29 17:42:12
Added.
| |
| 413 embedded_test_server()->StartAcceptingConnections(); | |
| 414 | |
| 415 // Navigate to the page to set up a renderer page (where we can embed | |
| 416 // a worker). | |
| 417 NavigateToURLBlockUntilNavigationsComplete( | |
| 418 shell(), embedded_test_server()->GetURL("/service_worker/empty.html"), | |
| 419 1); | |
| 420 } | |
| 421 | |
| 415 virtual void SetUpOnIOThread() {} | 422 virtual void SetUpOnIOThread() {} |
| 416 virtual void TearDownOnIOThread() {} | 423 virtual void TearDownOnIOThread() {} |
| 417 | 424 |
| 418 ServiceWorkerContextWrapper* wrapper() { return wrapper_.get(); } | 425 ServiceWorkerContextWrapper* wrapper() { return wrapper_.get(); } |
| 419 ServiceWorkerContext* public_context() { return wrapper(); } | 426 ServiceWorkerContext* public_context() { return wrapper(); } |
| 420 | 427 |
| 421 void AssociateRendererProcessToPattern(const GURL& pattern) { | 428 void AssociateRendererProcessToPattern(const GURL& pattern) { |
| 422 wrapper_->process_manager()->AddProcessReferenceToPattern( | 429 wrapper_->process_manager()->AddProcessReferenceToPattern( |
| 423 pattern, shell()->web_contents()->GetRenderProcessHost()->GetID()); | 430 pattern, shell()->web_contents()->GetRenderProcessHost()->GetID()); |
| 424 } | 431 } |
| (...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 830 } | 837 } |
| 831 | 838 |
| 832 protected: | 839 protected: |
| 833 scoped_refptr<ServiceWorkerRegistration> registration_; | 840 scoped_refptr<ServiceWorkerRegistration> registration_; |
| 834 scoped_refptr<ServiceWorkerVersion> version_; | 841 scoped_refptr<ServiceWorkerVersion> version_; |
| 835 scoped_refptr<ChromeBlobStorageContext> blob_context_; | 842 scoped_refptr<ChromeBlobStorageContext> blob_context_; |
| 836 std::unique_ptr<ServiceWorkerFetchDispatcher> fetch_dispatcher_; | 843 std::unique_ptr<ServiceWorkerFetchDispatcher> fetch_dispatcher_; |
| 837 }; | 844 }; |
| 838 | 845 |
| 839 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, StartAndStop) { | 846 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, StartAndStop) { |
| 847 StartServerAndNavigateToSetup(); | |
| 840 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, | 848 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, |
| 841 base::Unretained(this), | 849 base::Unretained(this), |
| 842 "/service_worker/worker.js")); | 850 "/service_worker/worker.js")); |
| 843 | 851 |
| 844 // Start a worker. | 852 // Start a worker. |
| 845 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 853 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
| 846 base::RunLoop start_run_loop; | 854 base::RunLoop start_run_loop; |
| 847 BrowserThread::PostTask( | 855 BrowserThread::PostTask( |
| 848 BrowserThread::IO, FROM_HERE, | 856 BrowserThread::IO, FROM_HERE, |
| 849 base::Bind(&self::StartOnIOThread, base::Unretained(this), | 857 base::Bind(&self::StartOnIOThread, base::Unretained(this), |
| 850 start_run_loop.QuitClosure(), &status)); | 858 start_run_loop.QuitClosure(), &status)); |
| 851 start_run_loop.Run(); | 859 start_run_loop.Run(); |
| 852 ASSERT_EQ(SERVICE_WORKER_OK, status); | 860 ASSERT_EQ(SERVICE_WORKER_OK, status); |
| 853 | 861 |
| 854 // Stop the worker. | 862 // Stop the worker. |
| 855 status = SERVICE_WORKER_ERROR_FAILED; | 863 status = SERVICE_WORKER_ERROR_FAILED; |
| 856 base::RunLoop stop_run_loop; | 864 base::RunLoop stop_run_loop; |
| 857 BrowserThread::PostTask( | 865 BrowserThread::PostTask( |
| 858 BrowserThread::IO, FROM_HERE, | 866 BrowserThread::IO, FROM_HERE, |
| 859 base::Bind(&self::StopOnIOThread, base::Unretained(this), | 867 base::Bind(&self::StopOnIOThread, base::Unretained(this), |
| 860 stop_run_loop.QuitClosure(), &status)); | 868 stop_run_loop.QuitClosure(), &status)); |
| 861 stop_run_loop.Run(); | 869 stop_run_loop.Run(); |
| 862 ASSERT_EQ(SERVICE_WORKER_OK, status); | 870 ASSERT_EQ(SERVICE_WORKER_OK, status); |
| 863 } | 871 } |
| 864 | 872 |
| 865 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, StartNotFound) { | 873 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, StartNotFound) { |
| 874 StartServerAndNavigateToSetup(); | |
| 866 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, | 875 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, |
| 867 base::Unretained(this), | 876 base::Unretained(this), |
| 868 "/service_worker/nonexistent.js")); | 877 "/service_worker/nonexistent.js")); |
| 869 | 878 |
| 870 // Start a worker for nonexistent URL. | 879 // Start a worker for nonexistent URL. |
| 871 StartWorker(SERVICE_WORKER_ERROR_NETWORK); | 880 StartWorker(SERVICE_WORKER_ERROR_NETWORK); |
| 872 } | 881 } |
| 873 | 882 |
| 874 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, ReadResourceFailure) { | 883 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, ReadResourceFailure) { |
| 884 StartServerAndNavigateToSetup(); | |
| 875 // Create a registration. | 885 // Create a registration. |
| 876 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, | 886 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, |
| 877 base::Unretained(this), | 887 base::Unretained(this), |
| 878 "/service_worker/worker.js")); | 888 "/service_worker/worker.js")); |
| 879 version_->set_fetch_handler_existence( | 889 version_->set_fetch_handler_existence( |
| 880 ServiceWorkerVersion::FetchHandlerExistence::EXISTS); | 890 ServiceWorkerVersion::FetchHandlerExistence::EXISTS); |
| 881 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 891 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
| 882 | 892 |
| 883 // Add a non-existent resource to the version. | 893 // Add a non-existent resource to the version. |
| 884 std::vector<ServiceWorkerDatabase::ResourceRecord> records; | 894 std::vector<ServiceWorkerDatabase::ResourceRecord> records; |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 897 // the stored one. | 907 // the stored one. |
| 898 RunOnIOThread(base::Bind(&self::RemoveLiveRegistrationOnIOThread, | 908 RunOnIOThread(base::Bind(&self::RemoveLiveRegistrationOnIOThread, |
| 899 base::Unretained(this), registration_->id())); | 909 base::Unretained(this), registration_->id())); |
| 900 FindRegistrationForId(registration_->id(), | 910 FindRegistrationForId(registration_->id(), |
| 901 registration_->pattern().GetOrigin(), | 911 registration_->pattern().GetOrigin(), |
| 902 SERVICE_WORKER_ERROR_NOT_FOUND); | 912 SERVICE_WORKER_ERROR_NOT_FOUND); |
| 903 } | 913 } |
| 904 | 914 |
| 905 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 915 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 906 ReadResourceFailure_WaitingWorker) { | 916 ReadResourceFailure_WaitingWorker) { |
| 917 StartServerAndNavigateToSetup(); | |
| 907 // Create a registration and active version. | 918 // Create a registration and active version. |
| 908 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, | 919 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, |
| 909 base::Unretained(this), | 920 base::Unretained(this), |
| 910 "/service_worker/worker.js")); | 921 "/service_worker/worker.js")); |
| 911 base::RunLoop activate_run_loop; | 922 base::RunLoop activate_run_loop; |
| 912 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 923 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
| 913 BrowserThread::PostTask( | 924 BrowserThread::PostTask( |
| 914 BrowserThread::IO, FROM_HERE, | 925 BrowserThread::IO, FROM_HERE, |
| 915 base::Bind(&self::ActivateOnIOThread, base::Unretained(this), | 926 base::Bind(&self::ActivateOnIOThread, base::Unretained(this), |
| 916 activate_run_loop.QuitClosure(), &status)); | 927 activate_run_loop.QuitClosure(), &status)); |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 945 // The registration should still be in storage since the waiting worker was | 956 // The registration should still be in storage since the waiting worker was |
| 946 // the stored one. | 957 // the stored one. |
| 947 RunOnIOThread(base::Bind(&self::RemoveLiveRegistrationOnIOThread, | 958 RunOnIOThread(base::Bind(&self::RemoveLiveRegistrationOnIOThread, |
| 948 base::Unretained(this), registration_->id())); | 959 base::Unretained(this), registration_->id())); |
| 949 FindRegistrationForId(registration_->id(), | 960 FindRegistrationForId(registration_->id(), |
| 950 registration_->pattern().GetOrigin(), | 961 registration_->pattern().GetOrigin(), |
| 951 SERVICE_WORKER_OK); | 962 SERVICE_WORKER_OK); |
| 952 } | 963 } |
| 953 | 964 |
| 954 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, Install) { | 965 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, Install) { |
| 966 StartServerAndNavigateToSetup(); | |
| 955 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); | 967 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); |
| 956 } | 968 } |
| 957 | 969 |
| 958 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 970 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 959 InstallWithWaitUntil_Fulfilled) { | 971 InstallWithWaitUntil_Fulfilled) { |
| 972 StartServerAndNavigateToSetup(); | |
| 960 InstallTestHelper("/service_worker/worker_install_fulfilled.js", | 973 InstallTestHelper("/service_worker/worker_install_fulfilled.js", |
| 961 SERVICE_WORKER_OK); | 974 SERVICE_WORKER_OK); |
| 962 } | 975 } |
| 963 | 976 |
| 964 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 977 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 965 InstallWithFetchHandler) { | 978 InstallWithFetchHandler) { |
| 979 StartServerAndNavigateToSetup(); | |
| 966 InstallTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK); | 980 InstallTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK); |
| 967 EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::EXISTS, | 981 EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::EXISTS, |
| 968 version_->fetch_handler_existence()); | 982 version_->fetch_handler_existence()); |
| 969 } | 983 } |
| 970 | 984 |
| 971 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 985 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 972 InstallWithoutFetchHandler) { | 986 InstallWithoutFetchHandler) { |
| 987 StartServerAndNavigateToSetup(); | |
| 973 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); | 988 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); |
| 974 EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::DOES_NOT_EXIST, | 989 EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::DOES_NOT_EXIST, |
| 975 version_->fetch_handler_existence()); | 990 version_->fetch_handler_existence()); |
| 976 } | 991 } |
| 977 | 992 |
| 978 // Check that ServiceWorker script requests set a "Service-Worker: script" | 993 // Check that ServiceWorker script requests set a "Service-Worker: script" |
| 979 // header. | 994 // header. |
| 980 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 995 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 981 ServiceWorkerScriptHeader) { | 996 ServiceWorkerScriptHeader) { |
| 982 embedded_test_server()->RegisterRequestHandler( | 997 embedded_test_server()->RegisterRequestHandler( |
| 983 base::Bind(&VerifyServiceWorkerHeaderInRequest)); | 998 base::Bind(&VerifyServiceWorkerHeaderInRequest)); |
| 999 StartServerAndNavigateToSetup(); | |
| 984 InstallTestHelper("/service_worker/generated_sw.js", SERVICE_WORKER_OK); | 1000 InstallTestHelper("/service_worker/generated_sw.js", SERVICE_WORKER_OK); |
| 985 } | 1001 } |
| 986 | 1002 |
| 987 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 1003 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 988 Activate_NoEventListener) { | 1004 Activate_NoEventListener) { |
| 1005 StartServerAndNavigateToSetup(); | |
| 989 ActivateTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); | 1006 ActivateTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); |
| 990 ASSERT_EQ(ServiceWorkerVersion::ACTIVATING, version_->status()); | 1007 ASSERT_EQ(ServiceWorkerVersion::ACTIVATING, version_->status()); |
| 991 } | 1008 } |
| 992 | 1009 |
| 993 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, Activate_Rejected) { | 1010 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, Activate_Rejected) { |
| 1011 StartServerAndNavigateToSetup(); | |
| 994 ActivateTestHelper("/service_worker/worker_activate_rejected.js", | 1012 ActivateTestHelper("/service_worker/worker_activate_rejected.js", |
| 995 SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED); | 1013 SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED); |
| 996 } | 1014 } |
| 997 | 1015 |
| 998 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 1016 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 999 InstallWithWaitUntil_Rejected) { | 1017 InstallWithWaitUntil_Rejected) { |
| 1018 StartServerAndNavigateToSetup(); | |
| 1000 InstallTestHelper("/service_worker/worker_install_rejected.js", | 1019 InstallTestHelper("/service_worker/worker_install_rejected.js", |
| 1001 SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED); | 1020 SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED); |
| 1002 } | 1021 } |
| 1003 | 1022 |
| 1004 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 1023 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 1005 InstallWithWaitUntil_RejectConsoleMessage) { | 1024 InstallWithWaitUntil_RejectConsoleMessage) { |
| 1025 StartServerAndNavigateToSetup(); | |
| 1006 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, | 1026 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, |
| 1007 base::Unretained(this), | 1027 base::Unretained(this), |
| 1008 "/service_worker/worker_install_rejected.js")); | 1028 "/service_worker/worker_install_rejected.js")); |
| 1009 | 1029 |
| 1010 ConsoleListener console_listener; | 1030 ConsoleListener console_listener; |
| 1011 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, | 1031 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, |
| 1012 base::Unretained(version_->embedded_worker()), | 1032 base::Unretained(version_->embedded_worker()), |
| 1013 &console_listener)); | 1033 &console_listener)); |
| 1014 | 1034 |
| 1015 // Dispatch install on a worker. | 1035 // Dispatch install on a worker. |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 1040 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 1060 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 1041 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, quit_); | 1061 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, quit_); |
| 1042 } | 1062 } |
| 1043 bool OnMessageReceived(const IPC::Message& message) override { return false; } | 1063 bool OnMessageReceived(const IPC::Message& message) override { return false; } |
| 1044 | 1064 |
| 1045 private: | 1065 private: |
| 1046 base::Closure quit_; | 1066 base::Closure quit_; |
| 1047 }; | 1067 }; |
| 1048 | 1068 |
| 1049 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, TimeoutStartingWorker) { | 1069 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, TimeoutStartingWorker) { |
| 1070 StartServerAndNavigateToSetup(); | |
| 1050 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, | 1071 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, |
| 1051 base::Unretained(this), | 1072 base::Unretained(this), |
| 1052 "/service_worker/while_true_worker.js")); | 1073 "/service_worker/while_true_worker.js")); |
| 1053 | 1074 |
| 1054 // Start a worker, waiting until the script is loaded. | 1075 // Start a worker, waiting until the script is loaded. |
| 1055 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 1076 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
| 1056 base::RunLoop start_run_loop; | 1077 base::RunLoop start_run_loop; |
| 1057 base::RunLoop load_run_loop; | 1078 base::RunLoop load_run_loop; |
| 1058 WaitForLoaded wait_for_load(load_run_loop.QuitClosure()); | 1079 WaitForLoaded wait_for_load(load_run_loop.QuitClosure()); |
| 1059 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, | 1080 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 1077 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); | 1098 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); |
| 1078 RunOnIOThreadWithDelay( | 1099 RunOnIOThreadWithDelay( |
| 1079 base::Bind(&self::TimeoutWorkerOnIOThread, base::Unretained(this)), | 1100 base::Bind(&self::TimeoutWorkerOnIOThread, base::Unretained(this)), |
| 1080 base::TimeDelta::FromMilliseconds(100)); | 1101 base::TimeDelta::FromMilliseconds(100)); |
| 1081 start_run_loop.Run(); | 1102 start_run_loop.Run(); |
| 1082 | 1103 |
| 1083 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); | 1104 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); |
| 1084 } | 1105 } |
| 1085 | 1106 |
| 1086 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, TimeoutWorkerInEvent) { | 1107 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, TimeoutWorkerInEvent) { |
| 1108 StartServerAndNavigateToSetup(); | |
| 1087 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, | 1109 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, |
| 1088 base::Unretained(this), | 1110 base::Unretained(this), |
| 1089 "/service_worker/while_true_in_install_worker.js")); | 1111 "/service_worker/while_true_in_install_worker.js")); |
| 1090 | 1112 |
| 1091 // Start a worker. | 1113 // Start a worker. |
| 1092 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 1114 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
| 1093 base::RunLoop start_run_loop; | 1115 base::RunLoop start_run_loop; |
| 1094 BrowserThread::PostTask( | 1116 BrowserThread::PostTask( |
| 1095 BrowserThread::IO, FROM_HERE, | 1117 BrowserThread::IO, FROM_HERE, |
| 1096 base::Bind(&self::StartOnIOThread, base::Unretained(this), | 1118 base::Bind(&self::StartOnIOThread, base::Unretained(this), |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 1112 base::Bind(&self::TimeoutWorkerOnIOThread, base::Unretained(this)), | 1134 base::Bind(&self::TimeoutWorkerOnIOThread, base::Unretained(this)), |
| 1113 base::TimeDelta::FromMilliseconds(100)); | 1135 base::TimeDelta::FromMilliseconds(100)); |
| 1114 install_run_loop.Run(); | 1136 install_run_loop.Run(); |
| 1115 | 1137 |
| 1116 // Terminating a worker, even one in an infinite loop, is treated as if | 1138 // Terminating a worker, even one in an infinite loop, is treated as if |
| 1117 // waitUntil was rejected in the renderer code. | 1139 // waitUntil was rejected in the renderer code. |
| 1118 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status); | 1140 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status); |
| 1119 } | 1141 } |
| 1120 | 1142 |
| 1121 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchEvent_Response) { | 1143 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchEvent_Response) { |
| 1144 StartServerAndNavigateToSetup(); | |
| 1122 ServiceWorkerFetchEventResult result; | 1145 ServiceWorkerFetchEventResult result; |
| 1123 ServiceWorkerResponse response; | 1146 ServiceWorkerResponse response; |
| 1124 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; | 1147 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; |
| 1125 ActivateTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK); | 1148 ActivateTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK); |
| 1126 | 1149 |
| 1127 FetchOnRegisteredWorker(&result, &response, &blob_data_handle); | 1150 FetchOnRegisteredWorker(&result, &response, &blob_data_handle); |
| 1128 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); | 1151 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); |
| 1129 EXPECT_EQ(301, response.status_code); | 1152 EXPECT_EQ(301, response.status_code); |
| 1130 EXPECT_EQ("Moved Permanently", response.status_text); | 1153 EXPECT_EQ("Moved Permanently", response.status_text); |
| 1131 ServiceWorkerHeaderMap expected_headers; | 1154 ServiceWorkerHeaderMap expected_headers; |
| 1132 expected_headers["content-language"] = "fi"; | 1155 expected_headers["content-language"] = "fi"; |
| 1133 expected_headers["content-type"] = "text/html; charset=UTF-8"; | 1156 expected_headers["content-type"] = "text/html; charset=UTF-8"; |
| 1134 EXPECT_EQ(expected_headers, response.headers); | 1157 EXPECT_EQ(expected_headers, response.headers); |
| 1135 | 1158 |
| 1136 std::string body; | 1159 std::string body; |
| 1137 RunOnIOThread( | 1160 RunOnIOThread( |
| 1138 base::Bind(&ReadResponseBody, | 1161 base::Bind(&ReadResponseBody, |
| 1139 &body, base::Owned(blob_data_handle.release()))); | 1162 &body, base::Owned(blob_data_handle.release()))); |
| 1140 EXPECT_EQ("This resource is gone. Gone, gone, gone.", body); | 1163 EXPECT_EQ("This resource is gone. Gone, gone, gone.", body); |
| 1141 } | 1164 } |
| 1142 | 1165 |
| 1143 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 1166 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 1144 FetchEvent_ResponseViaCache) { | 1167 FetchEvent_ResponseViaCache) { |
| 1168 StartServerAndNavigateToSetup(); | |
| 1145 ServiceWorkerFetchEventResult result; | 1169 ServiceWorkerFetchEventResult result; |
| 1146 ServiceWorkerResponse response1; | 1170 ServiceWorkerResponse response1; |
| 1147 ServiceWorkerResponse response2; | 1171 ServiceWorkerResponse response2; |
| 1148 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; | 1172 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; |
| 1149 const base::Time start_time(base::Time::Now()); | 1173 const base::Time start_time(base::Time::Now()); |
| 1150 ActivateTestHelper("/service_worker/fetch_event_response_via_cache.js", | 1174 ActivateTestHelper("/service_worker/fetch_event_response_via_cache.js", |
| 1151 SERVICE_WORKER_OK); | 1175 SERVICE_WORKER_OK); |
| 1152 | 1176 |
| 1153 FetchOnRegisteredWorker(&result, &response1, &blob_data_handle); | 1177 FetchOnRegisteredWorker(&result, &response1, &blob_data_handle); |
| 1154 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); | 1178 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); |
| 1155 EXPECT_EQ(200, response1.status_code); | 1179 EXPECT_EQ(200, response1.status_code); |
| 1156 EXPECT_EQ("OK", response1.status_text); | 1180 EXPECT_EQ("OK", response1.status_text); |
| 1157 EXPECT_TRUE(response1.response_time >= start_time); | 1181 EXPECT_TRUE(response1.response_time >= start_time); |
| 1158 EXPECT_FALSE(response1.is_in_cache_storage); | 1182 EXPECT_FALSE(response1.is_in_cache_storage); |
| 1159 EXPECT_EQ(std::string(), response2.cache_storage_cache_name); | 1183 EXPECT_EQ(std::string(), response2.cache_storage_cache_name); |
| 1160 | 1184 |
| 1161 FetchOnRegisteredWorker(&result, &response2, &blob_data_handle); | 1185 FetchOnRegisteredWorker(&result, &response2, &blob_data_handle); |
| 1162 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); | 1186 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); |
| 1163 EXPECT_EQ(200, response2.status_code); | 1187 EXPECT_EQ(200, response2.status_code); |
| 1164 EXPECT_EQ("OK", response2.status_text); | 1188 EXPECT_EQ("OK", response2.status_text); |
| 1165 EXPECT_EQ(response1.response_time, response2.response_time); | 1189 EXPECT_EQ(response1.response_time, response2.response_time); |
| 1166 EXPECT_TRUE(response2.is_in_cache_storage); | 1190 EXPECT_TRUE(response2.is_in_cache_storage); |
| 1167 EXPECT_EQ("cache_name", response2.cache_storage_cache_name); | 1191 EXPECT_EQ("cache_name", response2.cache_storage_cache_name); |
| 1168 } | 1192 } |
| 1169 | 1193 |
| 1170 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 1194 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 1171 FetchEvent_respondWithRejection) { | 1195 FetchEvent_respondWithRejection) { |
| 1196 StartServerAndNavigateToSetup(); | |
| 1172 ServiceWorkerFetchEventResult result; | 1197 ServiceWorkerFetchEventResult result; |
| 1173 ServiceWorkerResponse response; | 1198 ServiceWorkerResponse response; |
| 1174 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; | 1199 std::unique_ptr<storage::BlobDataHandle> blob_data_handle; |
| 1175 ActivateTestHelper("/service_worker/fetch_event_rejected.js", | 1200 ActivateTestHelper("/service_worker/fetch_event_rejected.js", |
| 1176 SERVICE_WORKER_OK); | 1201 SERVICE_WORKER_OK); |
| 1177 | 1202 |
| 1178 ConsoleListener console_listener; | 1203 ConsoleListener console_listener; |
| 1179 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, | 1204 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, |
| 1180 base::Unretained(version_->embedded_worker()), | 1205 base::Unretained(version_->embedded_worker()), |
| 1181 &console_listener)); | 1206 &console_listener)); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1218 prefs->data_saver_enabled = data_saver_enabled_; | 1243 prefs->data_saver_enabled = data_saver_enabled_; |
| 1219 } | 1244 } |
| 1220 | 1245 |
| 1221 private: | 1246 private: |
| 1222 bool data_saver_enabled_; | 1247 bool data_saver_enabled_; |
| 1223 }; | 1248 }; |
| 1224 | 1249 |
| 1225 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchWithSaveData) { | 1250 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchWithSaveData) { |
| 1226 embedded_test_server()->RegisterRequestHandler( | 1251 embedded_test_server()->RegisterRequestHandler( |
| 1227 base::Bind(&VerifySaveDataHeaderInRequest)); | 1252 base::Bind(&VerifySaveDataHeaderInRequest)); |
| 1253 StartServerAndNavigateToSetup(); | |
| 1228 MockContentBrowserClient content_browser_client; | 1254 MockContentBrowserClient content_browser_client; |
| 1229 content_browser_client.set_data_saver_enabled(true); | 1255 content_browser_client.set_data_saver_enabled(true); |
| 1230 ContentBrowserClient* old_client = | 1256 ContentBrowserClient* old_client = |
| 1231 SetBrowserClientForTesting(&content_browser_client); | 1257 SetBrowserClientForTesting(&content_browser_client); |
| 1232 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK); | 1258 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK); |
| 1233 SetBrowserClientForTesting(old_client); | 1259 SetBrowserClientForTesting(old_client); |
| 1234 } | 1260 } |
| 1235 | 1261 |
| 1236 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, | 1262 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, |
| 1237 RequestWorkerScriptWithSaveData) { | 1263 RequestWorkerScriptWithSaveData) { |
| 1238 embedded_test_server()->RegisterRequestHandler( | 1264 embedded_test_server()->RegisterRequestHandler( |
| 1239 base::Bind(&VerifySaveDataHeaderInRequest)); | 1265 base::Bind(&VerifySaveDataHeaderInRequest)); |
| 1266 StartServerAndNavigateToSetup(); | |
| 1240 MockContentBrowserClient content_browser_client; | 1267 MockContentBrowserClient content_browser_client; |
| 1241 content_browser_client.set_data_saver_enabled(true); | 1268 content_browser_client.set_data_saver_enabled(true); |
| 1242 ContentBrowserClient* old_client = | 1269 ContentBrowserClient* old_client = |
| 1243 SetBrowserClientForTesting(&content_browser_client); | 1270 SetBrowserClientForTesting(&content_browser_client); |
| 1244 InstallTestHelper("/service_worker/generated_sw.js", SERVICE_WORKER_OK); | 1271 InstallTestHelper("/service_worker/generated_sw.js", SERVICE_WORKER_OK); |
| 1245 SetBrowserClientForTesting(old_client); | 1272 SetBrowserClientForTesting(old_client); |
| 1246 } | 1273 } |
| 1247 | 1274 |
| 1248 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchWithoutSaveData) { | 1275 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchWithoutSaveData) { |
| 1249 embedded_test_server()->RegisterRequestHandler( | 1276 embedded_test_server()->RegisterRequestHandler( |
| 1250 base::Bind(&VerifySaveDataHeaderNotInRequest)); | 1277 base::Bind(&VerifySaveDataHeaderNotInRequest)); |
| 1278 StartServerAndNavigateToSetup(); | |
| 1251 MockContentBrowserClient content_browser_client; | 1279 MockContentBrowserClient content_browser_client; |
| 1252 ContentBrowserClient* old_client = | 1280 ContentBrowserClient* old_client = |
| 1253 SetBrowserClientForTesting(&content_browser_client); | 1281 SetBrowserClientForTesting(&content_browser_client); |
| 1254 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK); | 1282 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK); |
| 1255 SetBrowserClientForTesting(old_client); | 1283 SetBrowserClientForTesting(old_client); |
| 1256 } | 1284 } |
| 1257 | 1285 |
| 1258 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, FetchPageWithSaveData) { | 1286 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, FetchPageWithSaveData) { |
| 1287 StartServerAndNavigateToSetup(); | |
| 1259 const char kPageUrl[] = "/service_worker/handle_fetch.html"; | 1288 const char kPageUrl[] = "/service_worker/handle_fetch.html"; |
| 1260 const char kWorkerUrl[] = "/service_worker/add_save_data_to_title.js"; | 1289 const char kWorkerUrl[] = "/service_worker/add_save_data_to_title.js"; |
| 1261 MockContentBrowserClient content_browser_client; | 1290 MockContentBrowserClient content_browser_client; |
| 1262 content_browser_client.set_data_saver_enabled(true); | 1291 content_browser_client.set_data_saver_enabled(true); |
| 1263 ContentBrowserClient* old_client = | 1292 ContentBrowserClient* old_client = |
| 1264 SetBrowserClientForTesting(&content_browser_client); | 1293 SetBrowserClientForTesting(&content_browser_client); |
| 1265 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged(); | 1294 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged(); |
| 1266 scoped_refptr<WorkerActivatedObserver> observer = | 1295 scoped_refptr<WorkerActivatedObserver> observer = |
| 1267 new WorkerActivatedObserver(wrapper()); | 1296 new WorkerActivatedObserver(wrapper()); |
| 1268 observer->Init(); | 1297 observer->Init(); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 1284 public_context()->UnregisterServiceWorker( | 1313 public_context()->UnregisterServiceWorker( |
| 1285 embedded_test_server()->GetURL(kPageUrl), | 1314 embedded_test_server()->GetURL(kPageUrl), |
| 1286 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); | 1315 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); |
| 1287 run_loop.Run(); | 1316 run_loop.Run(); |
| 1288 } | 1317 } |
| 1289 | 1318 |
| 1290 // Tests that when data saver is enabled and a cross-origin fetch by a webpage | 1319 // Tests that when data saver is enabled and a cross-origin fetch by a webpage |
| 1291 // is intercepted by a serviceworker, and the serviceworker does a fetch, the | 1320 // is intercepted by a serviceworker, and the serviceworker does a fetch, the |
| 1292 // preflight request does not have save-data in Access-Control-Request-Headers. | 1321 // preflight request does not have save-data in Access-Control-Request-Headers. |
| 1293 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, CrossOriginFetchWithSaveData) { | 1322 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, CrossOriginFetchWithSaveData) { |
| 1323 StartServerAndNavigateToSetup(); | |
| 1294 const char kPageUrl[] = "/service_worker/fetch_cross_origin.html"; | 1324 const char kPageUrl[] = "/service_worker/fetch_cross_origin.html"; |
| 1295 const char kWorkerUrl[] = "/service_worker/fetch_event_pass_through.js"; | 1325 const char kWorkerUrl[] = "/service_worker/fetch_event_pass_through.js"; |
| 1296 net::EmbeddedTestServer cross_origin_server; | 1326 net::EmbeddedTestServer cross_origin_server; |
| 1297 cross_origin_server.ServeFilesFromSourceDirectory("content/test/data"); | 1327 cross_origin_server.ServeFilesFromSourceDirectory("content/test/data"); |
| 1298 cross_origin_server.RegisterRequestHandler( | 1328 cross_origin_server.RegisterRequestHandler( |
| 1299 base::Bind(&VerifySaveDataNotInAccessControlRequestHeader)); | 1329 base::Bind(&VerifySaveDataNotInAccessControlRequestHeader)); |
| 1300 ASSERT_TRUE(cross_origin_server.Start()); | 1330 ASSERT_TRUE(cross_origin_server.Start()); |
| 1301 | 1331 |
| 1302 MockContentBrowserClient content_browser_client; | 1332 MockContentBrowserClient content_browser_client; |
| 1303 content_browser_client.set_data_saver_enabled(true); | 1333 content_browser_client.set_data_saver_enabled(true); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1338 const char kPageUrl[] = "/service_worker/pass_through_fetch.html"; | 1368 const char kPageUrl[] = "/service_worker/pass_through_fetch.html"; |
| 1339 const char kWorkerUrl[] = "/service_worker/fetch_event_pass_through.js"; | 1369 const char kWorkerUrl[] = "/service_worker/fetch_event_pass_through.js"; |
| 1340 MockContentBrowserClient content_browser_client; | 1370 MockContentBrowserClient content_browser_client; |
| 1341 content_browser_client.set_data_saver_enabled(true); | 1371 content_browser_client.set_data_saver_enabled(true); |
| 1342 ContentBrowserClient* old_client = | 1372 ContentBrowserClient* old_client = |
| 1343 SetBrowserClientForTesting(&content_browser_client); | 1373 SetBrowserClientForTesting(&content_browser_client); |
| 1344 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged(); | 1374 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged(); |
| 1345 scoped_refptr<WorkerActivatedObserver> observer = | 1375 scoped_refptr<WorkerActivatedObserver> observer = |
| 1346 new WorkerActivatedObserver(wrapper()); | 1376 new WorkerActivatedObserver(wrapper()); |
| 1347 observer->Init(); | 1377 observer->Init(); |
| 1378 | |
| 1379 embedded_test_server()->RegisterRequestHandler( | |
| 1380 base::Bind(&VerifySaveDataHeaderInRequest)); | |
| 1381 StartServerAndNavigateToSetup(); | |
| 1382 | |
| 1348 public_context()->RegisterServiceWorker( | 1383 public_context()->RegisterServiceWorker( |
| 1349 embedded_test_server()->GetURL(kPageUrl), | 1384 embedded_test_server()->GetURL(kPageUrl), |
| 1350 embedded_test_server()->GetURL(kWorkerUrl), | 1385 embedded_test_server()->GetURL(kWorkerUrl), |
| 1351 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); | 1386 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); |
| 1352 observer->Wait(); | 1387 observer->Wait(); |
| 1353 | 1388 |
| 1354 embedded_test_server()->RegisterRequestHandler( | |
| 1355 base::Bind(&VerifySaveDataHeaderInRequest)); | |
| 1356 | |
| 1357 NavigateToURLBlockUntilNavigationsComplete( | 1389 NavigateToURLBlockUntilNavigationsComplete( |
| 1358 shell(), embedded_test_server()->GetURL(kPageUrl), 1); | 1390 shell(), embedded_test_server()->GetURL(kPageUrl), 1); |
| 1359 | 1391 |
| 1360 SetBrowserClientForTesting(old_client); | 1392 SetBrowserClientForTesting(old_client); |
| 1361 shell()->Close(); | 1393 shell()->Close(); |
| 1362 | 1394 |
| 1363 base::RunLoop run_loop; | 1395 base::RunLoop run_loop; |
| 1364 public_context()->UnregisterServiceWorker( | 1396 public_context()->UnregisterServiceWorker( |
| 1365 embedded_test_server()->GetURL(kPageUrl), | 1397 embedded_test_server()->GetURL(kPageUrl), |
| 1366 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); | 1398 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); |
| 1367 run_loop.Run(); | 1399 run_loop.Run(); |
| 1368 } | 1400 } |
| 1369 | 1401 |
| 1370 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, Reload) { | 1402 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, Reload) { |
| 1403 StartServerAndNavigateToSetup(); | |
| 1371 const char kPageUrl[] = "/service_worker/reload.html"; | 1404 const char kPageUrl[] = "/service_worker/reload.html"; |
| 1372 const char kWorkerUrl[] = "/service_worker/fetch_event_reload.js"; | 1405 const char kWorkerUrl[] = "/service_worker/fetch_event_reload.js"; |
| 1373 scoped_refptr<WorkerActivatedObserver> observer = | 1406 scoped_refptr<WorkerActivatedObserver> observer = |
| 1374 new WorkerActivatedObserver(wrapper()); | 1407 new WorkerActivatedObserver(wrapper()); |
| 1375 observer->Init(); | 1408 observer->Init(); |
| 1376 public_context()->RegisterServiceWorker( | 1409 public_context()->RegisterServiceWorker( |
| 1377 embedded_test_server()->GetURL(kPageUrl), | 1410 embedded_test_server()->GetURL(kPageUrl), |
| 1378 embedded_test_server()->GetURL(kWorkerUrl), | 1411 embedded_test_server()->GetURL(kWorkerUrl), |
| 1379 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); | 1412 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); |
| 1380 observer->Wait(); | 1413 observer->Wait(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1430 const net::test_server::HttpRequest& request) { | 1463 const net::test_server::HttpRequest& request) { |
| 1431 DCHECK(HasNavigationPreloadHeader(request)); | 1464 DCHECK(HasNavigationPreloadHeader(request)); |
| 1432 return request.headers.find(kNavigationPreloadHeaderName)->second; | 1465 return request.headers.find(kNavigationPreloadHeaderName)->second; |
| 1433 } | 1466 } |
| 1434 | 1467 |
| 1435 void SetupForNavigationPreloadTest(const GURL& scope, | 1468 void SetupForNavigationPreloadTest(const GURL& scope, |
| 1436 const GURL& worker_url) { | 1469 const GURL& worker_url) { |
| 1437 scoped_refptr<WorkerActivatedObserver> observer = | 1470 scoped_refptr<WorkerActivatedObserver> observer = |
| 1438 new WorkerActivatedObserver(wrapper()); | 1471 new WorkerActivatedObserver(wrapper()); |
| 1439 observer->Init(); | 1472 observer->Init(); |
| 1473 | |
| 1440 public_context()->RegisterServiceWorker( | 1474 public_context()->RegisterServiceWorker( |
| 1441 scope, worker_url, | 1475 scope, worker_url, |
| 1442 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); | 1476 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); |
| 1443 observer->Wait(); | 1477 observer->Wait(); |
| 1478 } | |
| 1444 | 1479 |
| 1480 void RegisterMonitorRequestHandler() { | |
| 1445 embedded_test_server()->RegisterRequestMonitor( | 1481 embedded_test_server()->RegisterRequestMonitor( |
| 1446 base::Bind(&self::MonitorRequestHandler, base::Unretained(this))); | 1482 base::Bind(&self::MonitorRequestHandler, base::Unretained(this))); |
| 1447 } | 1483 } |
| 1448 | 1484 |
| 1449 void RegisterStaticFile(const std::string& relative_url, | 1485 void RegisterStaticFile(const std::string& relative_url, |
| 1450 const std::string& content, | 1486 const std::string& content, |
| 1451 const std::string& content_type) { | 1487 const std::string& content_type) { |
| 1452 embedded_test_server()->RegisterRequestHandler( | 1488 embedded_test_server()->RegisterRequestHandler( |
| 1453 base::Bind(&self::StaticRequestHandler, base::Unretained(this), | 1489 base::Bind(&self::StaticRequestHandler, base::Unretained(this), |
| 1454 relative_url, content, content_type)); | 1490 relative_url, content, content_type)); |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1618 const char kPage[] = "<title>PASS</title>Hello world."; | 1654 const char kPage[] = "<title>PASS</title>Hello world."; |
| 1619 const std::string kScript = kEnableNavigationPreloadScript + | 1655 const std::string kScript = kEnableNavigationPreloadScript + |
| 1620 "self.addEventListener('fetch', event => {\n" | 1656 "self.addEventListener('fetch', event => {\n" |
| 1621 " // Do nothing.\n" | 1657 " // Do nothing.\n" |
| 1622 " });"; | 1658 " });"; |
| 1623 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 1659 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1624 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 1660 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1625 RegisterStaticFile(kPageUrl, kPage, "text/html"); | 1661 RegisterStaticFile(kPageUrl, kPage, "text/html"); |
| 1626 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); | 1662 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
| 1627 | 1663 |
| 1664 RegisterMonitorRequestHandler(); | |
| 1665 StartServerAndNavigateToSetup(); | |
| 1628 SetupForNavigationPreloadTest(page_url, worker_url); | 1666 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1629 | 1667 |
| 1630 const base::string16 title = base::ASCIIToUTF16("PASS"); | 1668 const base::string16 title = base::ASCIIToUTF16("PASS"); |
| 1631 TitleWatcher title_watcher(shell()->web_contents(), title); | 1669 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 1632 NavigateToURL(shell(), page_url); | 1670 NavigateToURL(shell(), page_url); |
| 1633 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 1671 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 1634 EXPECT_EQ("Hello world.", GetTextContent()); | 1672 EXPECT_EQ("Hello world.", GetTextContent()); |
| 1635 | 1673 |
| 1636 // The page request must be sent once or twice: | 1674 // The page request must be sent once or twice: |
| 1637 // - A navigation preload request may be sent. But it is possible that the | 1675 // - A navigation preload request may be sent. But it is possible that the |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1679 " } else if (event.request.url.indexOf('?test') != -1) {\n" | 1717 " } else if (event.request.url.indexOf('?test') != -1) {\n" |
| 1680 " event.respondWith(event.preloadResponse.then(res =>\n" | 1718 " event.respondWith(event.preloadResponse.then(res =>\n" |
| 1681 " createResponse('TEST', res)));\n" | 1719 " createResponse('TEST', res)));\n" |
| 1682 " }\n" | 1720 " }\n" |
| 1683 " });"; | 1721 " });"; |
| 1684 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 1722 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1685 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 1723 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1686 RegisterStaticFile(kPageUrl, kPage, "text/html"); | 1724 RegisterStaticFile(kPageUrl, kPage, "text/html"); |
| 1687 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); | 1725 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
| 1688 | 1726 |
| 1727 RegisterMonitorRequestHandler(); | |
| 1728 StartServerAndNavigateToSetup(); | |
| 1689 SetupForNavigationPreloadTest(page_url, worker_url); | 1729 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1690 | 1730 |
| 1691 const std::string kPageUrl1 = kPageUrl + "?enable"; | 1731 const std::string kPageUrl1 = kPageUrl + "?enable"; |
| 1692 const base::string16 title1 = base::ASCIIToUTF16("ENABLED"); | 1732 const base::string16 title1 = base::ASCIIToUTF16("ENABLED"); |
| 1693 TitleWatcher title_watcher1(shell()->web_contents(), title1); | 1733 TitleWatcher title_watcher1(shell()->web_contents(), title1); |
| 1694 title_watcher1.AlsoWaitForTitle(base::ASCIIToUTF16("FROM_SERVER")); | 1734 title_watcher1.AlsoWaitForTitle(base::ASCIIToUTF16("FROM_SERVER")); |
| 1695 NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl1)); | 1735 NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl1)); |
| 1696 EXPECT_EQ(title1, title_watcher1.WaitAndGetTitle()); | 1736 EXPECT_EQ(title1, title_watcher1.WaitAndGetTitle()); |
| 1697 // When the navigation started, the navigation preload was not enabled yet. | 1737 // When the navigation started, the navigation preload was not enabled yet. |
| 1698 EXPECT_EQ("null", GetTextContent()); | 1738 EXPECT_EQ("null", GetTextContent()); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1748 " {headers: [['content-type', 'text/html']]}));\n" | 1788 " {headers: [['content-type', 'text/html']]}));\n" |
| 1749 " return;\n" | 1789 " return;\n" |
| 1750 " }\n" | 1790 " }\n" |
| 1751 " event.respondWith(event.preloadResponse);\n" | 1791 " event.respondWith(event.preloadResponse);\n" |
| 1752 " });"; | 1792 " });"; |
| 1753 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 1793 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1754 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 1794 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1755 RegisterStaticFile(kPageUrl, kPage, "text/html"); | 1795 RegisterStaticFile(kPageUrl, kPage, "text/html"); |
| 1756 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); | 1796 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
| 1757 | 1797 |
| 1798 RegisterMonitorRequestHandler(); | |
| 1799 StartServerAndNavigateToSetup(); | |
| 1758 SetupForNavigationPreloadTest(page_url, worker_url); | 1800 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1759 | 1801 |
| 1760 const base::string16 title = base::ASCIIToUTF16("PASS"); | 1802 const base::string16 title = base::ASCIIToUTF16("PASS"); |
| 1761 TitleWatcher title_watcher(shell()->web_contents(), title); | 1803 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 1762 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); | 1804 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); |
| 1763 NavigateToURL(shell(), page_url); | 1805 NavigateToURL(shell(), page_url); |
| 1764 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 1806 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 1765 EXPECT_EQ("Hello world.", GetTextContent()); | 1807 EXPECT_EQ("Hello world.", GetTextContent()); |
| 1766 | 1808 |
| 1767 // The page request must be sent only once, since the worker responded with | 1809 // The page request must be sent only once, since the worker responded with |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 1784 " .then(text =>\n" | 1826 " .then(text =>\n" |
| 1785 " new Response(\n" | 1827 " new Response(\n" |
| 1786 " text,\n" | 1828 " text,\n" |
| 1787 " {headers: [['content-type', 'text/html']]})));\n" | 1829 " {headers: [['content-type', 'text/html']]})));\n" |
| 1788 " });"; | 1830 " });"; |
| 1789 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 1831 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1790 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 1832 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1791 RegisterStaticFile(kPageUrl, kPage, "text/html"); | 1833 RegisterStaticFile(kPageUrl, kPage, "text/html"); |
| 1792 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); | 1834 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
| 1793 | 1835 |
| 1836 RegisterMonitorRequestHandler(); | |
| 1837 StartServerAndNavigateToSetup(); | |
| 1794 SetupForNavigationPreloadTest(page_url, worker_url); | 1838 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1795 | 1839 |
| 1796 const base::string16 title = base::ASCIIToUTF16("PASS"); | 1840 const base::string16 title = base::ASCIIToUTF16("PASS"); |
| 1797 TitleWatcher title_watcher(shell()->web_contents(), title); | 1841 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 1798 NavigateToURL(shell(), page_url); | 1842 NavigateToURL(shell(), page_url); |
| 1799 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 1843 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 1800 EXPECT_EQ("Hello world.", GetTextContent()); | 1844 EXPECT_EQ("Hello world.", GetTextContent()); |
| 1801 | 1845 |
| 1802 // The page request must be sent only once, since the worker responded with | 1846 // The page request must be sent only once, since the worker responded with |
| 1803 // "Hello world". | 1847 // "Hello world". |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1840 "self.addEventListener('message', event => {\n" | 1884 "self.addEventListener('message', event => {\n" |
| 1841 " event.waitUntil(\n" | 1885 " event.waitUntil(\n" |
| 1842 " preload_promise.then(\n" | 1886 " preload_promise.then(\n" |
| 1843 " result => event.source.postMessage(result)));\n" | 1887 " result => event.source.postMessage(result)));\n" |
| 1844 " });"; | 1888 " });"; |
| 1845 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 1889 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1846 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 1890 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1847 RegisterStaticFile(kPageUrl, kPage, "text/html"); | 1891 RegisterStaticFile(kPageUrl, kPage, "text/html"); |
| 1848 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); | 1892 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
| 1849 | 1893 |
| 1894 RegisterMonitorRequestHandler(); | |
| 1895 StartServerAndNavigateToSetup(); | |
| 1850 SetupForNavigationPreloadTest(page_url, worker_url); | 1896 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1851 | 1897 |
| 1852 const base::string16 title = base::ASCIIToUTF16("REJECTED"); | 1898 const base::string16 title = base::ASCIIToUTF16("REJECTED"); |
| 1853 TitleWatcher title_watcher(shell()->web_contents(), title); | 1899 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 1854 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); | 1900 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); |
| 1855 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); | 1901 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); |
| 1856 NavigateToURL(shell(), page_url); | 1902 NavigateToURL(shell(), page_url); |
| 1857 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 1903 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 1858 | 1904 |
| 1859 EXPECT_EQ( | 1905 EXPECT_EQ( |
| 1860 "AbortError: Service Worker navigation preload aborted. Need to guard " | 1906 "AbortError: Service Worker navigation preload aborted. Need to guard " |
| 1861 "with respondWith or waitUntil.", | 1907 "with respondWith or waitUntil.", |
| 1862 GetTextContent()); | 1908 GetTextContent()); |
| 1863 } | 1909 } |
| 1864 | 1910 |
| 1865 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkError) { | 1911 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkError) { |
| 1866 const char kPageUrl[] = "/service_worker/navigation_preload.html"; | 1912 const char kPageUrl[] = "/service_worker/navigation_preload.html"; |
| 1867 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; | 1913 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; |
| 1868 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 1914 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1869 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 1915 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1870 RegisterStaticFile( | 1916 RegisterStaticFile( |
| 1871 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, | 1917 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, |
| 1872 "text/javascript"); | 1918 "text/javascript"); |
| 1873 | 1919 |
| 1920 RegisterMonitorRequestHandler(); | |
| 1921 StartServerAndNavigateToSetup(); | |
| 1874 SetupForNavigationPreloadTest(page_url, worker_url); | 1922 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1875 | 1923 |
| 1876 EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); | 1924 EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); |
| 1877 | 1925 |
| 1878 const base::string16 title = base::ASCIIToUTF16("REJECTED"); | 1926 const base::string16 title = base::ASCIIToUTF16("REJECTED"); |
| 1879 TitleWatcher title_watcher(shell()->web_contents(), title); | 1927 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 1880 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); | 1928 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); |
| 1881 NavigateToURL(shell(), page_url); | 1929 NavigateToURL(shell(), page_url); |
| 1882 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 1930 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 1883 EXPECT_EQ("NetworkError: Service Worker navigation preload network error.", | 1931 EXPECT_EQ("NetworkError: Service Worker navigation preload network error.", |
| 1884 GetTextContent()); | 1932 GetTextContent()); |
| 1885 } | 1933 } |
| 1886 | 1934 |
| 1887 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, | 1935 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
| 1888 PreloadHeadersSimple) { | 1936 PreloadHeadersSimple) { |
| 1889 const char kPageUrl[] = "/service_worker/navigation_preload.html"; | 1937 const char kPageUrl[] = "/service_worker/navigation_preload.html"; |
| 1890 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; | 1938 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; |
| 1891 const char kPage[] = "<title>ERROR</title>Hello world."; | 1939 const char kPage[] = "<title>ERROR</title>Hello world."; |
| 1892 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 1940 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1893 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 1941 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1894 RegisterStaticFile(kPageUrl, kPage, "text/html"); | 1942 RegisterStaticFile(kPageUrl, kPage, "text/html"); |
| 1895 RegisterStaticFile( | 1943 RegisterStaticFile( |
| 1896 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, | 1944 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, |
| 1897 "text/javascript"); | 1945 "text/javascript"); |
| 1898 | 1946 |
| 1947 RegisterMonitorRequestHandler(); | |
| 1948 StartServerAndNavigateToSetup(); | |
| 1899 SetupForNavigationPreloadTest(page_url, worker_url); | 1949 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1900 | 1950 |
| 1901 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); | 1951 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); |
| 1902 TitleWatcher title_watcher(shell()->web_contents(), title); | 1952 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 1903 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); | 1953 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); |
| 1904 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); | 1954 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); |
| 1905 NavigateToURL(shell(), page_url); | 1955 NavigateToURL(shell(), page_url); |
| 1906 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 1956 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 1907 | 1957 |
| 1908 // The page request must be sent only once, since the worker responded with | 1958 // The page request must be sent only once, since the worker responded with |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 1924 | 1974 |
| 1925 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NotEnabled) { | 1975 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NotEnabled) { |
| 1926 const char kPageUrl[] = "/service_worker/navigation_preload.html"; | 1976 const char kPageUrl[] = "/service_worker/navigation_preload.html"; |
| 1927 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; | 1977 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; |
| 1928 const char kPage[] = "<title>ERROR</title>Hello world."; | 1978 const char kPage[] = "<title>ERROR</title>Hello world."; |
| 1929 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 1979 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1930 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 1980 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1931 RegisterStaticFile(kPageUrl, kPage, "text/html"); | 1981 RegisterStaticFile(kPageUrl, kPage, "text/html"); |
| 1932 RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript"); | 1982 RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript"); |
| 1933 | 1983 |
| 1984 RegisterMonitorRequestHandler(); | |
| 1985 StartServerAndNavigateToSetup(); | |
| 1934 SetupForNavigationPreloadTest(page_url, worker_url); | 1986 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1935 | 1987 |
| 1936 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); | 1988 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); |
| 1937 TitleWatcher title_watcher(shell()->web_contents(), title); | 1989 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 1938 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); | 1990 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); |
| 1939 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); | 1991 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); |
| 1940 NavigateToURL(shell(), page_url); | 1992 NavigateToURL(shell(), page_url); |
| 1941 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 1993 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 1942 | 1994 |
| 1943 // The page request must not be sent, since the worker responded with a | 1995 // The page request must not be sent, since the worker responded with a |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 1961 "Set-Cookie2: COOKIE2\r\n" | 2013 "Set-Cookie2: COOKIE2\r\n" |
| 1962 "\r\n" | 2014 "\r\n" |
| 1963 "<title>ERROR</title>Hello world."; | 2015 "<title>ERROR</title>Hello world."; |
| 1964 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 2016 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 1965 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 2017 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 1966 RegisterCustomResponse(kPageUrl, kPageResponse); | 2018 RegisterCustomResponse(kPageUrl, kPageResponse); |
| 1967 RegisterStaticFile( | 2019 RegisterStaticFile( |
| 1968 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, | 2020 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, |
| 1969 "text/javascript"); | 2021 "text/javascript"); |
| 1970 | 2022 |
| 2023 RegisterMonitorRequestHandler(); | |
| 2024 StartServerAndNavigateToSetup(); | |
| 1971 SetupForNavigationPreloadTest(page_url, worker_url); | 2025 SetupForNavigationPreloadTest(page_url, worker_url); |
| 1972 | 2026 |
| 1973 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); | 2027 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); |
| 1974 TitleWatcher title_watcher(shell()->web_contents(), title); | 2028 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 1975 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); | 2029 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); |
| 1976 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); | 2030 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); |
| 1977 NavigateToURL(shell(), page_url); | 2031 NavigateToURL(shell(), page_url); |
| 1978 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 2032 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 1979 | 2033 |
| 1980 // The page request must be sent only once, since the worker responded with | 2034 // The page request must be sent only once, since the worker responded with |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 2011 const GURL redirecred_page_url = | 2065 const GURL redirecred_page_url = |
| 2012 embedded_test_server()->GetURL(kRedirectedPageUrl); | 2066 embedded_test_server()->GetURL(kRedirectedPageUrl); |
| 2013 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 2067 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 2014 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 2068 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 2015 RegisterCustomResponse(kPageUrl, kPageResponse); | 2069 RegisterCustomResponse(kPageUrl, kPageResponse); |
| 2016 RegisterStaticFile( | 2070 RegisterStaticFile( |
| 2017 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, | 2071 kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, |
| 2018 "text/javascript"); | 2072 "text/javascript"); |
| 2019 RegisterStaticFile(kRedirectedPageUrl, kRedirectedPage, "text/html"); | 2073 RegisterStaticFile(kRedirectedPageUrl, kRedirectedPage, "text/html"); |
| 2020 | 2074 |
| 2075 RegisterMonitorRequestHandler(); | |
| 2076 StartServerAndNavigateToSetup(); | |
| 2021 SetupForNavigationPreloadTest(page_url, worker_url); | 2077 SetupForNavigationPreloadTest(page_url, worker_url); |
| 2022 | 2078 |
| 2023 const base::string16 title = base::ASCIIToUTF16("REJECTED"); | 2079 const base::string16 title = base::ASCIIToUTF16("REJECTED"); |
| 2024 TitleWatcher title_watcher(shell()->web_contents(), title); | 2080 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 2025 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); | 2081 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); |
| 2026 NavigateToURL(shell(), page_url); | 2082 NavigateToURL(shell(), page_url); |
| 2027 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 2083 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 2028 | 2084 |
| 2029 // The page request must be sent only once, since the worker responded with | 2085 // The page request must be sent only once, since the worker responded with |
| 2030 // a generated Response. | 2086 // a generated Response. |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 2058 RegisterStaticFile(kPageUrl, kPage, "text/html"); | 2114 RegisterStaticFile(kPageUrl, kPage, "text/html"); |
| 2059 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); | 2115 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
| 2060 | 2116 |
| 2061 // Register redirects to the target URL. The service worker responds to the | 2117 // Register redirects to the target URL. The service worker responds to the |
| 2062 // target URL with the navigation preload response. | 2118 // target URL with the navigation preload response. |
| 2063 const char kRedirectPageUrl[] = "/redirect"; | 2119 const char kRedirectPageUrl[] = "/redirect"; |
| 2064 const char kInScopeRedirectPageUrl[] = "/service_worker/redirect"; | 2120 const char kInScopeRedirectPageUrl[] = "/service_worker/redirect"; |
| 2065 RegisterKeepSearchRedirect(kRedirectPageUrl, page_url.spec()); | 2121 RegisterKeepSearchRedirect(kRedirectPageUrl, page_url.spec()); |
| 2066 RegisterKeepSearchRedirect(kInScopeRedirectPageUrl, page_url.spec()); | 2122 RegisterKeepSearchRedirect(kInScopeRedirectPageUrl, page_url.spec()); |
| 2067 | 2123 |
| 2124 RegisterMonitorRequestHandler(); | |
| 2125 StartServerAndNavigateToSetup(); | |
| 2068 SetupForNavigationPreloadTest( | 2126 SetupForNavigationPreloadTest( |
| 2069 embedded_test_server()->GetURL("/service_worker/"), worker_url); | 2127 embedded_test_server()->GetURL("/service_worker/"), worker_url); |
| 2070 | 2128 |
| 2071 const GURL redirect_page_url = | 2129 const GURL redirect_page_url = |
| 2072 embedded_test_server()->GetURL(kRedirectPageUrl).Resolve("?1"); | 2130 embedded_test_server()->GetURL(kRedirectPageUrl).Resolve("?1"); |
| 2073 const GURL in_scope_redirect_page_url = | 2131 const GURL in_scope_redirect_page_url = |
| 2074 embedded_test_server()->GetURL(kInScopeRedirectPageUrl).Resolve("?2"); | 2132 embedded_test_server()->GetURL(kInScopeRedirectPageUrl).Resolve("?2"); |
| 2075 const GURL cross_origin_redirect_page_url = | 2133 const GURL cross_origin_redirect_page_url = |
| 2076 embedded_test_server()->GetURL("a.com", kRedirectPageUrl).Resolve("?3"); | 2134 embedded_test_server()->GetURL("a.com", kRedirectPageUrl).Resolve("?3"); |
| 2077 | 2135 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2116 "self.addEventListener('fetch', event => {\n" | 2174 "self.addEventListener('fetch', event => {\n" |
| 2117 " event.respondWith(event.preloadResponse);\n" | 2175 " event.respondWith(event.preloadResponse);\n" |
| 2118 " });"; | 2176 " });"; |
| 2119 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); | 2177 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
| 2120 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); | 2178 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
| 2121 | 2179 |
| 2122 // Setting an empty content type to trigger MimeSniffingResourceHandler. | 2180 // Setting an empty content type to trigger MimeSniffingResourceHandler. |
| 2123 RegisterStaticFile(kPageUrl, kPage, ""); | 2181 RegisterStaticFile(kPageUrl, kPage, ""); |
| 2124 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); | 2182 RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
| 2125 | 2183 |
| 2184 RegisterMonitorRequestHandler(); | |
| 2185 StartServerAndNavigateToSetup(); | |
| 2126 SetupForNavigationPreloadTest(page_url, worker_url); | 2186 SetupForNavigationPreloadTest(page_url, worker_url); |
| 2127 | 2187 |
| 2128 const base::string16 title = base::ASCIIToUTF16("PASS"); | 2188 const base::string16 title = base::ASCIIToUTF16("PASS"); |
| 2129 TitleWatcher title_watcher(shell()->web_contents(), title); | 2189 TitleWatcher title_watcher(shell()->web_contents(), title); |
| 2130 NavigateToURL(shell(), page_url); | 2190 NavigateToURL(shell(), page_url); |
| 2131 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 2191 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 2132 EXPECT_EQ("Hello world.", GetTextContent()); | 2192 EXPECT_EQ("Hello world.", GetTextContent()); |
| 2133 | 2193 |
| 2134 // The page request must be sent only once, since the worker responded with | 2194 // The page request must be sent only once, since the worker responded with |
| 2135 // the navigation preload response | 2195 // the navigation preload response |
| 2136 EXPECT_EQ(1, GetRequestCount(kPageUrl)); | 2196 EXPECT_EQ(1, GetRequestCount(kPageUrl)); |
| 2137 } | 2197 } |
| 2138 | 2198 |
| 2139 // Flaky on Win/Mac: http://crbug.com/533631 | 2199 // Flaky on Win/Mac: http://crbug.com/533631 |
| 2140 #if defined(OS_WIN) || defined(OS_MACOSX) | 2200 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 2141 #define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure DISABLED_ResponseFr omHTTPSServiceWorkerIsMarkedAsSecure | 2201 #define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure DISABLED_ResponseFr omHTTPSServiceWorkerIsMarkedAsSecure |
| 2142 #else | 2202 #else |
| 2143 #define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure ResponseFromHTTPSSe rviceWorkerIsMarkedAsSecure | 2203 #define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure ResponseFromHTTPSSe rviceWorkerIsMarkedAsSecure |
| 2144 #endif | 2204 #endif |
| 2145 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, | 2205 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, |
| 2146 MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure) { | 2206 MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure) { |
| 2207 StartServerAndNavigateToSetup(); | |
| 2147 const char kPageUrl[] = "/service_worker/fetch_event_blob.html"; | 2208 const char kPageUrl[] = "/service_worker/fetch_event_blob.html"; |
| 2148 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; | 2209 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; |
| 2149 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); | 2210 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); |
| 2150 https_server.ServeFilesFromSourceDirectory("content/test/data"); | 2211 https_server.ServeFilesFromSourceDirectory("content/test/data"); |
| 2151 ASSERT_TRUE(https_server.Start()); | 2212 ASSERT_TRUE(https_server.Start()); |
| 2152 | 2213 |
| 2153 scoped_refptr<WorkerActivatedObserver> observer = | 2214 scoped_refptr<WorkerActivatedObserver> observer = |
| 2154 new WorkerActivatedObserver(wrapper()); | 2215 new WorkerActivatedObserver(wrapper()); |
| 2155 observer->Init(); | 2216 observer->Init(); |
| 2156 public_context()->RegisterServiceWorker( | 2217 public_context()->RegisterServiceWorker( |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 2176 | 2237 |
| 2177 base::RunLoop run_loop; | 2238 base::RunLoop run_loop; |
| 2178 public_context()->UnregisterServiceWorker( | 2239 public_context()->UnregisterServiceWorker( |
| 2179 https_server.GetURL(kPageUrl), | 2240 https_server.GetURL(kPageUrl), |
| 2180 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); | 2241 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); |
| 2181 run_loop.Run(); | 2242 run_loop.Run(); |
| 2182 } | 2243 } |
| 2183 | 2244 |
| 2184 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, | 2245 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, |
| 2185 ResponseFromHTTPServiceWorkerIsNotMarkedAsSecure) { | 2246 ResponseFromHTTPServiceWorkerIsNotMarkedAsSecure) { |
| 2247 StartServerAndNavigateToSetup(); | |
| 2186 const char kPageUrl[] = "/service_worker/fetch_event_blob.html"; | 2248 const char kPageUrl[] = "/service_worker/fetch_event_blob.html"; |
| 2187 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; | 2249 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; |
| 2188 scoped_refptr<WorkerActivatedObserver> observer = | 2250 scoped_refptr<WorkerActivatedObserver> observer = |
| 2189 new WorkerActivatedObserver(wrapper()); | 2251 new WorkerActivatedObserver(wrapper()); |
| 2190 observer->Init(); | 2252 observer->Init(); |
| 2191 public_context()->RegisterServiceWorker( | 2253 public_context()->RegisterServiceWorker( |
| 2192 embedded_test_server()->GetURL(kPageUrl), | 2254 embedded_test_server()->GetURL(kPageUrl), |
| 2193 embedded_test_server()->GetURL(kWorkerUrl), | 2255 embedded_test_server()->GetURL(kWorkerUrl), |
| 2194 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); | 2256 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); |
| 2195 observer->Wait(); | 2257 observer->Wait(); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 2208 shell()->Close(); | 2270 shell()->Close(); |
| 2209 | 2271 |
| 2210 base::RunLoop run_loop; | 2272 base::RunLoop run_loop; |
| 2211 public_context()->UnregisterServiceWorker( | 2273 public_context()->UnregisterServiceWorker( |
| 2212 embedded_test_server()->GetURL(kPageUrl), | 2274 embedded_test_server()->GetURL(kPageUrl), |
| 2213 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); | 2275 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); |
| 2214 run_loop.Run(); | 2276 run_loop.Run(); |
| 2215 } | 2277 } |
| 2216 | 2278 |
| 2217 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, ImportsBustMemcache) { | 2279 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, ImportsBustMemcache) { |
| 2280 StartServerAndNavigateToSetup(); | |
| 2218 const char kScopeUrl[] = "/service_worker/imports_bust_memcache_scope/"; | 2281 const char kScopeUrl[] = "/service_worker/imports_bust_memcache_scope/"; |
| 2219 const char kPageUrl[] = "/service_worker/imports_bust_memcache.html"; | 2282 const char kPageUrl[] = "/service_worker/imports_bust_memcache.html"; |
| 2220 const char kScriptUrl[] = "/service_worker/worker_with_one_import.js"; | 2283 const char kScriptUrl[] = "/service_worker/worker_with_one_import.js"; |
| 2221 const char kImportUrl[] = "/service_worker/long_lived_import.js"; | 2284 const char kImportUrl[] = "/service_worker/long_lived_import.js"; |
| 2222 const base::string16 kOKTitle(base::ASCIIToUTF16("OK")); | 2285 const base::string16 kOKTitle(base::ASCIIToUTF16("OK")); |
| 2223 const base::string16 kFailTitle(base::ASCIIToUTF16("FAIL")); | 2286 const base::string16 kFailTitle(base::ASCIIToUTF16("FAIL")); |
| 2224 | 2287 |
| 2225 RunOnIOThread( | 2288 RunOnIOThread( |
| 2226 base::Bind(&CreateLongLivedResourceInterceptors, | 2289 base::Bind(&CreateLongLivedResourceInterceptors, |
| 2227 embedded_test_server()->GetURL(kScriptUrl), | 2290 embedded_test_server()->GetURL(kScriptUrl), |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2273 int result = 0; | 2336 int result = 0; |
| 2274 for (RenderProcessHost::iterator iter(RenderProcessHost::AllHostsIterator()); | 2337 for (RenderProcessHost::iterator iter(RenderProcessHost::AllHostsIterator()); |
| 2275 !iter.IsAtEnd(); | 2338 !iter.IsAtEnd(); |
| 2276 iter.Advance()) { | 2339 iter.Advance()) { |
| 2277 result++; | 2340 result++; |
| 2278 } | 2341 } |
| 2279 return result; | 2342 return result; |
| 2280 } | 2343 } |
| 2281 | 2344 |
| 2282 IN_PROC_BROWSER_TEST_P(ServiceWorkerBlackBoxBrowserTest, Registration) { | 2345 IN_PROC_BROWSER_TEST_P(ServiceWorkerBlackBoxBrowserTest, Registration) { |
| 2346 StartServerAndNavigateToSetup(); | |
| 2283 // Close the only window to be sure we're not re-using its RenderProcessHost. | 2347 // Close the only window to be sure we're not re-using its RenderProcessHost. |
| 2284 shell()->Close(); | 2348 shell()->Close(); |
| 2285 EXPECT_EQ(0, CountRenderProcessHosts()); | 2349 EXPECT_EQ(0, CountRenderProcessHosts()); |
| 2286 | 2350 |
| 2287 const char kWorkerUrl[] = "/service_worker/fetch_event.js"; | 2351 const char kWorkerUrl[] = "/service_worker/fetch_event.js"; |
| 2288 const char kScope[] = "/service_worker/"; | 2352 const char kScope[] = "/service_worker/"; |
| 2289 | 2353 |
| 2290 // Unregistering nothing should return false. | 2354 // Unregistering nothing should return false. |
| 2291 { | 2355 { |
| 2292 base::RunLoop run_loop; | 2356 base::RunLoop run_loop; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2355 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status); | 2419 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status); |
| 2356 } | 2420 } |
| 2357 } | 2421 } |
| 2358 | 2422 |
| 2359 #if defined(ANDROID) | 2423 #if defined(ANDROID) |
| 2360 #define MAYBE_CrossSiteTransfer DISABLED_CrossSiteTransfer | 2424 #define MAYBE_CrossSiteTransfer DISABLED_CrossSiteTransfer |
| 2361 #else | 2425 #else |
| 2362 #define MAYBE_CrossSiteTransfer CrossSiteTransfer | 2426 #define MAYBE_CrossSiteTransfer CrossSiteTransfer |
| 2363 #endif | 2427 #endif |
| 2364 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, MAYBE_CrossSiteTransfer) { | 2428 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, MAYBE_CrossSiteTransfer) { |
| 2429 StartServerAndNavigateToSetup(); | |
| 2365 // The first page registers a service worker. | 2430 // The first page registers a service worker. |
| 2366 const char kRegisterPageUrl[] = "/service_worker/cross_site_xfer.html"; | 2431 const char kRegisterPageUrl[] = "/service_worker/cross_site_xfer.html"; |
| 2367 const base::string16 kOKTitle1(base::ASCIIToUTF16("OK_1")); | 2432 const base::string16 kOKTitle1(base::ASCIIToUTF16("OK_1")); |
| 2368 const base::string16 kFailTitle1(base::ASCIIToUTF16("FAIL_1")); | 2433 const base::string16 kFailTitle1(base::ASCIIToUTF16("FAIL_1")); |
| 2369 content::TitleWatcher title_watcher1(shell()->web_contents(), kOKTitle1); | 2434 content::TitleWatcher title_watcher1(shell()->web_contents(), kOKTitle1); |
| 2370 title_watcher1.AlsoWaitForTitle(kFailTitle1); | 2435 title_watcher1.AlsoWaitForTitle(kFailTitle1); |
| 2371 | 2436 |
| 2372 NavigateToURL(shell(), embedded_test_server()->GetURL(kRegisterPageUrl)); | 2437 NavigateToURL(shell(), embedded_test_server()->GetURL(kRegisterPageUrl)); |
| 2373 ASSERT_EQ(kOKTitle1, title_watcher1.WaitAndGetTitle()); | 2438 ASSERT_EQ(kOKTitle1, title_watcher1.WaitAndGetTitle()); |
| 2374 | 2439 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2409 // ServiceWorkerVersion::Listener overrides | 2474 // ServiceWorkerVersion::Listener overrides |
| 2410 void OnCachedMetadataUpdated(ServiceWorkerVersion* version) override { | 2475 void OnCachedMetadataUpdated(ServiceWorkerVersion* version) override { |
| 2411 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 2476 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 2412 cache_updated_closure_); | 2477 cache_updated_closure_); |
| 2413 } | 2478 } |
| 2414 | 2479 |
| 2415 base::Closure cache_updated_closure_; | 2480 base::Closure cache_updated_closure_; |
| 2416 }; | 2481 }; |
| 2417 | 2482 |
| 2418 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserV8CacheTest, Restart) { | 2483 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserV8CacheTest, Restart) { |
| 2484 StartServerAndNavigateToSetup(); | |
| 2419 RunOnIOThread(base::Bind(&self::SetUpRegistrationAndListenerOnIOThread, | 2485 RunOnIOThread(base::Bind(&self::SetUpRegistrationAndListenerOnIOThread, |
| 2420 base::Unretained(this), | 2486 base::Unretained(this), |
| 2421 "/service_worker/worker.js")); | 2487 "/service_worker/worker.js")); |
| 2422 | 2488 |
| 2423 base::RunLoop cached_metadata_run_loop; | 2489 base::RunLoop cached_metadata_run_loop; |
| 2424 cache_updated_closure_ = cached_metadata_run_loop.QuitClosure(); | 2490 cache_updated_closure_ = cached_metadata_run_loop.QuitClosure(); |
| 2425 | 2491 |
| 2426 // Start a worker. | 2492 // Start a worker. |
| 2427 StartWorker(SERVICE_WORKER_OK); | 2493 StartWorker(SERVICE_WORKER_OK); |
| 2428 | 2494 |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2563 std::unique_ptr<storage::BlobDataHandle> blob_data_handle_; | 2629 std::unique_ptr<storage::BlobDataHandle> blob_data_handle_; |
| 2564 std::unique_ptr<storage::BlobReader> blob_reader_; | 2630 std::unique_ptr<storage::BlobReader> blob_reader_; |
| 2565 DISALLOW_COPY_AND_ASSIGN(CacheStorageSideDataSizeChecker); | 2631 DISALLOW_COPY_AND_ASSIGN(CacheStorageSideDataSizeChecker); |
| 2566 }; | 2632 }; |
| 2567 | 2633 |
| 2568 class ServiceWorkerV8CacheStrategiesTest : public ServiceWorkerBrowserTest { | 2634 class ServiceWorkerV8CacheStrategiesTest : public ServiceWorkerBrowserTest { |
| 2569 public: | 2635 public: |
| 2570 ServiceWorkerV8CacheStrategiesTest() {} | 2636 ServiceWorkerV8CacheStrategiesTest() {} |
| 2571 ~ServiceWorkerV8CacheStrategiesTest() override {} | 2637 ~ServiceWorkerV8CacheStrategiesTest() override {} |
| 2572 | 2638 |
| 2639 void SetUpOnMainThread() override { | |
| 2640 ServiceWorkerBrowserTest::SetUpOnMainThread(); | |
| 2641 StartServerAndNavigateToSetup(); | |
| 2642 } | |
| 2643 | |
| 2573 protected: | 2644 protected: |
| 2574 void CheckStrategyIsNone() { | 2645 void CheckStrategyIsNone() { |
| 2575 RegisterAndActivateServiceWorker(); | 2646 RegisterAndActivateServiceWorker(); |
| 2576 | 2647 |
| 2577 NavigateToTestPage(); | 2648 NavigateToTestPage(); |
| 2578 WaitUntilSideDataSizeIs(0); | 2649 WaitUntilSideDataSizeIs(0); |
| 2579 | 2650 |
| 2580 NavigateToTestPage(); | 2651 NavigateToTestPage(); |
| 2581 WaitUntilSideDataSizeIs(0); | 2652 WaitUntilSideDataSizeIs(0); |
| 2582 | 2653 |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2786 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); | 2857 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); |
| 2787 } | 2858 } |
| 2788 | 2859 |
| 2789 private: | 2860 private: |
| 2790 net::EmbeddedTestServer cross_origin_server_; | 2861 net::EmbeddedTestServer cross_origin_server_; |
| 2791 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDisableWebSecurityTest); | 2862 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDisableWebSecurityTest); |
| 2792 }; | 2863 }; |
| 2793 | 2864 |
| 2794 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, | 2865 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, |
| 2795 GetRegistrationNoCrash) { | 2866 GetRegistrationNoCrash) { |
| 2867 StartServerAndNavigateToSetup(); | |
| 2796 const char kPageUrl[] = | 2868 const char kPageUrl[] = |
| 2797 "/service_worker/disable_web_security_get_registration.html"; | 2869 "/service_worker/disable_web_security_get_registration.html"; |
| 2798 const char kScopeUrl[] = "/service_worker/"; | 2870 const char kScopeUrl[] = "/service_worker/"; |
| 2799 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); | 2871 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); |
| 2800 } | 2872 } |
| 2801 | 2873 |
| 2802 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, RegisterNoCrash) { | 2874 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, RegisterNoCrash) { |
| 2875 StartServerAndNavigateToSetup(); | |
| 2803 const char kPageUrl[] = "/service_worker/disable_web_security_register.html"; | 2876 const char kPageUrl[] = "/service_worker/disable_web_security_register.html"; |
| 2804 const char kScopeUrl[] = "/service_worker/"; | 2877 const char kScopeUrl[] = "/service_worker/"; |
| 2805 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); | 2878 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); |
| 2806 } | 2879 } |
| 2807 | 2880 |
| 2808 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, UnregisterNoCrash) { | 2881 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, UnregisterNoCrash) { |
| 2882 StartServerAndNavigateToSetup(); | |
| 2809 const char kPageUrl[] = | 2883 const char kPageUrl[] = |
| 2810 "/service_worker/disable_web_security_unregister.html"; | 2884 "/service_worker/disable_web_security_unregister.html"; |
| 2811 const char kScopeUrl[] = "/service_worker/scope/"; | 2885 const char kScopeUrl[] = "/service_worker/scope/"; |
| 2812 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; | 2886 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; |
| 2813 RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl); | 2887 RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl); |
| 2814 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); | 2888 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); |
| 2815 } | 2889 } |
| 2816 | 2890 |
| 2817 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, UpdateNoCrash) { | 2891 IN_PROC_BROWSER_TEST_P(ServiceWorkerDisableWebSecurityTest, UpdateNoCrash) { |
| 2892 StartServerAndNavigateToSetup(); | |
| 2818 const char kPageUrl[] = "/service_worker/disable_web_security_update.html"; | 2893 const char kPageUrl[] = "/service_worker/disable_web_security_update.html"; |
| 2819 const char kScopeUrl[] = "/service_worker/scope/"; | 2894 const char kScopeUrl[] = "/service_worker/scope/"; |
| 2820 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; | 2895 const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js"; |
| 2821 RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl); | 2896 RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl); |
| 2822 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); | 2897 RunTestWithCrossOriginURL(kPageUrl, kScopeUrl); |
| 2823 } | 2898 } |
| 2824 | 2899 |
| 2825 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, | 2900 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, |
| 2826 ServiceWorkerBrowserTest, | 2901 ServiceWorkerBrowserTest, |
| 2827 ::testing::Values(true, false)); | 2902 ::testing::Values(true, false)); |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 2847 ServiceWorkerV8CacheStrategiesNormalTest, | 2922 ServiceWorkerV8CacheStrategiesNormalTest, |
| 2848 ::testing::Values(true, false)); | 2923 ::testing::Values(true, false)); |
| 2849 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, | 2924 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, |
| 2850 ServiceWorkerV8CacheStrategiesAggressiveTest, | 2925 ServiceWorkerV8CacheStrategiesAggressiveTest, |
| 2851 ::testing::Values(true, false)); | 2926 ::testing::Values(true, false)); |
| 2852 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, | 2927 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, |
| 2853 ServiceWorkerDisableWebSecurityTest, | 2928 ServiceWorkerDisableWebSecurityTest, |
| 2854 ::testing::Values(true, false)); | 2929 ::testing::Values(true, false)); |
| 2855 | 2930 |
| 2856 } // namespace content | 2931 } // namespace content |
| OLD | NEW |