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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "content/browser/message_port_service.h" | 9 #include "content/browser/message_port_service.h" |
10 #include "content/browser/service_worker/embedded_worker_registry.h" | 10 #include "content/browser/service_worker/embedded_worker_registry.h" |
(...skipping 1044 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1055 TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) { | 1055 TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) { |
1056 version_->SetStatus(ServiceWorkerVersion::INSTALLING); | 1056 version_->SetStatus(ServiceWorkerVersion::INSTALLING); |
1057 // Start a worker. | 1057 // Start a worker. |
1058 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 1058 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
1059 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); | 1059 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
1060 base::RunLoop().RunUntilIdle(); | 1060 base::RunLoop().RunUntilIdle(); |
1061 EXPECT_EQ(SERVICE_WORKER_OK, status); | 1061 EXPECT_EQ(SERVICE_WORKER_OK, status); |
1062 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); | 1062 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
1063 EXPECT_EQ(0, helper_->mock_render_process_host()->bad_msg_count()); | 1063 EXPECT_EQ(0, helper_->mock_render_process_host()->bad_msg_count()); |
1064 | 1064 |
1065 // Invalid URL, should kill worker (but in tests will only increase bad | 1065 GURL valid_scope_1("http://www.example.com/test/subscope"); |
| 1066 GURL valid_scope_2("http://www.example.com/test/othersubscope"); |
| 1067 std::vector<GURL> valid_scopes; |
| 1068 valid_scopes.push_back(valid_scope_1); |
| 1069 valid_scopes.push_back(valid_scope_2); |
| 1070 |
| 1071 std::vector<url::Origin> all_origins; |
| 1072 url::Origin valid_origin(GURL("https://chromium.org/")); |
| 1073 std::vector<url::Origin> valid_origin_list(1, valid_origin); |
| 1074 |
| 1075 // Invalid subscope, should kill worker (but in tests will only increase bad |
1066 // message count). | 1076 // message count). |
1067 version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, GURL())); | 1077 version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, GURL()), |
| 1078 valid_origin_list); |
1068 base::RunLoop().RunUntilIdle(); | 1079 base::RunLoop().RunUntilIdle(); |
1069 EXPECT_EQ(1, helper_->mock_render_process_host()->bad_msg_count()); | 1080 EXPECT_EQ(1, helper_->mock_render_process_host()->bad_msg_count()); |
1070 EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size()); | 1081 EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size()); |
| 1082 EXPECT_EQ(0u, version_->foreign_fetch_origins_.size()); |
1071 | 1083 |
1072 // URL outside the scope of the worker. | 1084 // Subscope outside the scope of the worker. |
1073 version_->OnRegisterForeignFetchScopes( | 1085 version_->OnRegisterForeignFetchScopes( |
1074 std::vector<GURL>(1, GURL("http://www.example.com/wrong"))); | 1086 std::vector<GURL>(1, GURL("http://www.example.com/wrong")), |
| 1087 valid_origin_list); |
1075 base::RunLoop().RunUntilIdle(); | 1088 base::RunLoop().RunUntilIdle(); |
1076 EXPECT_EQ(2, helper_->mock_render_process_host()->bad_msg_count()); | 1089 EXPECT_EQ(2, helper_->mock_render_process_host()->bad_msg_count()); |
1077 EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size()); | 1090 EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size()); |
| 1091 EXPECT_EQ(0u, version_->foreign_fetch_origins_.size()); |
1078 | 1092 |
1079 // URL on wrong origin. | 1093 // Subscope on wrong origin. |
1080 version_->OnRegisterForeignFetchScopes( | 1094 version_->OnRegisterForeignFetchScopes( |
1081 std::vector<GURL>(1, GURL("http://example.com/test/"))); | 1095 std::vector<GURL>(1, GURL("http://example.com/test/")), |
| 1096 valid_origin_list); |
1082 base::RunLoop().RunUntilIdle(); | 1097 base::RunLoop().RunUntilIdle(); |
1083 EXPECT_EQ(3, helper_->mock_render_process_host()->bad_msg_count()); | 1098 EXPECT_EQ(3, helper_->mock_render_process_host()->bad_msg_count()); |
1084 EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size()); | 1099 EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size()); |
| 1100 EXPECT_EQ(0u, version_->foreign_fetch_origins_.size()); |
1085 | 1101 |
1086 // Valid URL 1. | 1102 // Invalid origin. |
1087 GURL valid_scope_1("http://www.example.com/test/subscope"); | 1103 version_->OnRegisterForeignFetchScopes( |
1088 version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, valid_scope_1)); | 1104 valid_scopes, std::vector<url::Origin>(1, url::Origin())); |
1089 base::RunLoop().RunUntilIdle(); | 1105 base::RunLoop().RunUntilIdle(); |
1090 EXPECT_EQ(3, helper_->mock_render_process_host()->bad_msg_count()); | 1106 EXPECT_EQ(4, helper_->mock_render_process_host()->bad_msg_count()); |
| 1107 EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size()); |
| 1108 EXPECT_EQ(0u, version_->foreign_fetch_origins_.size()); |
| 1109 |
| 1110 // Valid subscope, no origins. |
| 1111 version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, valid_scope_1), |
| 1112 all_origins); |
| 1113 base::RunLoop().RunUntilIdle(); |
| 1114 EXPECT_EQ(4, helper_->mock_render_process_host()->bad_msg_count()); |
1091 EXPECT_EQ(1u, version_->foreign_fetch_scopes_.size()); | 1115 EXPECT_EQ(1u, version_->foreign_fetch_scopes_.size()); |
1092 EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]); | 1116 EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]); |
| 1117 EXPECT_EQ(0u, version_->foreign_fetch_origins_.size()); |
1093 | 1118 |
1094 // Valid URL 2. | 1119 // Valid subscope, explicit origins. |
1095 GURL valid_scope_2("http://www.example.com/test/subscope"); | 1120 version_->OnRegisterForeignFetchScopes(valid_scopes, valid_origin_list); |
1096 version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, valid_scope_2)); | |
1097 base::RunLoop().RunUntilIdle(); | 1121 base::RunLoop().RunUntilIdle(); |
1098 EXPECT_EQ(3, helper_->mock_render_process_host()->bad_msg_count()); | 1122 EXPECT_EQ(4, helper_->mock_render_process_host()->bad_msg_count()); |
1099 EXPECT_EQ(2u, version_->foreign_fetch_scopes_.size()); | 1123 EXPECT_EQ(2u, version_->foreign_fetch_scopes_.size()); |
1100 EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]); | 1124 EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]); |
1101 EXPECT_EQ(valid_scope_2, version_->foreign_fetch_scopes_[1]); | 1125 EXPECT_EQ(valid_scope_2, version_->foreign_fetch_scopes_[1]); |
| 1126 EXPECT_EQ(1u, version_->foreign_fetch_origins_.size()); |
| 1127 EXPECT_EQ(valid_origin, version_->foreign_fetch_origins_[0]); |
1102 } | 1128 } |
1103 | 1129 |
1104 TEST_F(ServiceWorkerVersionTest, RendererCrashDuringEvent) { | 1130 TEST_F(ServiceWorkerVersionTest, RendererCrashDuringEvent) { |
1105 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value | 1131 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
1106 | 1132 |
1107 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 1133 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
1108 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); | 1134 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
1109 base::RunLoop().RunUntilIdle(); | 1135 base::RunLoop().RunUntilIdle(); |
1110 EXPECT_EQ(SERVICE_WORKER_OK, status); | 1136 EXPECT_EQ(SERVICE_WORKER_OK, status); |
1111 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); | 1137 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1428 helper_->SimulateSendSimpleEventResult( | 1454 helper_->SimulateSendSimpleEventResult( |
1429 version_->embedded_worker()->embedded_worker_id(), request_id, | 1455 version_->embedded_worker()->embedded_worker_id(), request_id, |
1430 blink::WebServiceWorkerEventResultRejected); | 1456 blink::WebServiceWorkerEventResultRejected); |
1431 runner->Run(); | 1457 runner->Run(); |
1432 | 1458 |
1433 // Verify callback was called with correct status. | 1459 // Verify callback was called with correct status. |
1434 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status); | 1460 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status); |
1435 } | 1461 } |
1436 | 1462 |
1437 } // namespace content | 1463 } // namespace content |
OLD | NEW |