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> |
11 | 11 |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/callback.h" | 13 #include "base/callback.h" |
14 #include "base/command_line.h" | 14 #include "base/command_line.h" |
15 #include "base/json/json_reader.h" | 15 #include "base/json/json_reader.h" |
16 #include "base/macros.h" | 16 #include "base/macros.h" |
17 #include "base/memory/ptr_util.h" | 17 #include "base/memory/ptr_util.h" |
18 #include "base/memory/ref_counted.h" | 18 #include "base/memory/ref_counted.h" |
19 #include "base/run_loop.h" | 19 #include "base/run_loop.h" |
20 #include "base/single_thread_task_runner.h" | 20 #include "base/single_thread_task_runner.h" |
21 #include "base/strings/string16.h" | 21 #include "base/strings/string16.h" |
22 #include "base/strings/string_number_conversions.h" | 22 #include "base/strings/string_number_conversions.h" |
23 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
24 #include "base/strings/utf_string_conversions.h" | 24 #include "base/strings/utf_string_conversions.h" |
25 #include "base/test/simple_test_tick_clock.h" | |
25 #include "base/threading/thread_task_runner_handle.h" | 26 #include "base/threading/thread_task_runner_handle.h" |
26 #include "base/time/time.h" | 27 #include "base/time/time.h" |
27 #include "build/build_config.h" | 28 #include "build/build_config.h" |
28 #include "content/browser/blob_storage/chrome_blob_storage_context.h" | 29 #include "content/browser/blob_storage/chrome_blob_storage_context.h" |
29 #include "content/browser/cache_storage/cache_storage_cache.h" | 30 #include "content/browser/cache_storage/cache_storage_cache.h" |
30 #include "content/browser/cache_storage/cache_storage_cache_handle.h" | 31 #include "content/browser/cache_storage/cache_storage_cache_handle.h" |
31 #include "content/browser/cache_storage/cache_storage_context_impl.h" | 32 #include "content/browser/cache_storage/cache_storage_context_impl.h" |
32 #include "content/browser/cache_storage/cache_storage_manager.h" | 33 #include "content/browser/cache_storage/cache_storage_manager.h" |
33 #include "content/browser/service_worker/embedded_worker_instance.h" | 34 #include "content/browser/service_worker/embedded_worker_instance.h" |
34 #include "content/browser/service_worker/embedded_worker_registry.h" | 35 #include "content/browser/service_worker/embedded_worker_registry.h" |
(...skipping 1213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1248 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchWithoutSaveData) { | 1249 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, FetchWithoutSaveData) { |
1249 embedded_test_server()->RegisterRequestHandler( | 1250 embedded_test_server()->RegisterRequestHandler( |
1250 base::Bind(&VerifySaveDataHeaderNotInRequest)); | 1251 base::Bind(&VerifySaveDataHeaderNotInRequest)); |
1251 MockContentBrowserClient content_browser_client; | 1252 MockContentBrowserClient content_browser_client; |
1252 ContentBrowserClient* old_client = | 1253 ContentBrowserClient* old_client = |
1253 SetBrowserClientForTesting(&content_browser_client); | 1254 SetBrowserClientForTesting(&content_browser_client); |
1254 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK); | 1255 InstallTestHelper("/service_worker/fetch_in_install.js", SERVICE_WORKER_OK); |
1255 SetBrowserClientForTesting(old_client); | 1256 SetBrowserClientForTesting(old_client); |
1256 } | 1257 } |
1257 | 1258 |
1259 IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionBrowserTest, MessageSelf) { | |
1260 const base::string16 activateMsg = base::ASCIIToUTF16("ACTIVATE"); | |
1261 const base::string16 messageMsg = base::ASCIIToUTF16("MESSAGE"); | |
falken
2016/11/21 08:01:48
nit: activateMsg isn't used, and naming style shou
| |
1262 | |
1263 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, | |
1264 base::Unretained(this), | |
1265 "/service_worker/worker_message_to_self.js")); | |
1266 base::SimpleTestTickClock* tick_clock = new base::SimpleTestTickClock(); | |
1267 tick_clock->SetNowTicks(base::TimeTicks::Now()); | |
1268 version_->SetTickClockForTesting(base::WrapUnique(tick_clock)); | |
1269 | |
1270 ConsoleListener console_listener; | |
1271 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::AddListener, | |
1272 base::Unretained(version_->embedded_worker()), | |
1273 &console_listener)); | |
1274 | |
1275 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | |
1276 base::RunLoop run_loop; | |
1277 BrowserThread::PostTask( | |
1278 BrowserThread::IO, FROM_HERE, | |
1279 base::Bind(&self::ActivateOnIOThread, base::Unretained(this), | |
1280 run_loop.QuitClosure(), &status)); | |
1281 run_loop.Run(); | |
1282 ASSERT_EQ(SERVICE_WORKER_OK, status); | |
1283 | |
1284 base::TimeDelta request_timeout = base::TimeDelta::FromMinutes( | |
1285 ServiceWorkerVersion::kRequestTimeoutMinutes); | |
1286 base::TimeDelta remaining = base::TimeDelta::FromSeconds(10); | |
1287 | |
1288 console_listener.WaitForConsoleMessages(1); | |
1289 EXPECT_EQ(messageMsg, console_listener.messages()[0]); | |
1290 EXPECT_EQ(request_timeout, version_->remaining_timeout()); | |
1291 | |
1292 // Advance clock some, but not enough to trigger the timeout. | |
1293 tick_clock->Advance(request_timeout - remaining); | |
1294 EXPECT_EQ(remaining, version_->remaining_timeout()); | |
1295 | |
1296 // Wait for another onmessage event. | |
1297 console_listener.WaitForConsoleMessages(2); | |
1298 EXPECT_EQ(messageMsg, console_listener.messages()[1]); | |
1299 // Timeout should not have changed. | |
1300 EXPECT_EQ(remaining, version_->remaining_timeout()); | |
1301 | |
1302 // Advance clock enough to trigger the timeout. | |
1303 tick_clock->Advance(remaining * 2); | |
1304 EXPECT_LT(version_->remaining_timeout(), base::TimeDelta()); | |
1305 RunOnIOThread(base::Bind(&ServiceWorkerVersion::OnTimeoutTimer, version_)); | |
1306 | |
1307 // Advance clock more to trigger idle timeout. | |
1308 tick_clock->Advance(base::TimeDelta::FromSeconds( | |
1309 ServiceWorkerVersion::kIdleWorkerTimeoutSeconds)); | |
1310 RunOnIOThread(base::Bind(&ServiceWorkerVersion::OnTimeoutTimer, version_)); | |
1311 | |
1312 // Worker should be stopping. | |
1313 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status()); | |
1314 | |
1315 // One more message event might already have been queued before advancing the | |
1316 // time, but no other message events should have triggered while stopping | |
1317 // worker. | |
1318 EXPECT_LE(console_listener.messages().size(), 3u); | |
1319 | |
falken
2016/11/21 08:01:48
It'd be slightly nicer if this could verify that t
Marijn Kruisselbrink
2016/12/01 19:54:29
Unfortunately I couldn't even figure out how to ma
| |
1320 RunOnIOThread(base::Bind(&EmbeddedWorkerInstance::RemoveListener, | |
1321 base::Unretained(version_->embedded_worker()), | |
1322 &console_listener)); | |
1323 } | |
1324 | |
1258 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, FetchPageWithSaveData) { | 1325 IN_PROC_BROWSER_TEST_P(ServiceWorkerBrowserTest, FetchPageWithSaveData) { |
1259 const char kPageUrl[] = "/service_worker/handle_fetch.html"; | 1326 const char kPageUrl[] = "/service_worker/handle_fetch.html"; |
1260 const char kWorkerUrl[] = "/service_worker/add_save_data_to_title.js"; | 1327 const char kWorkerUrl[] = "/service_worker/add_save_data_to_title.js"; |
1261 MockContentBrowserClient content_browser_client; | 1328 MockContentBrowserClient content_browser_client; |
1262 content_browser_client.set_data_saver_enabled(true); | 1329 content_browser_client.set_data_saver_enabled(true); |
1263 ContentBrowserClient* old_client = | 1330 ContentBrowserClient* old_client = |
1264 SetBrowserClientForTesting(&content_browser_client); | 1331 SetBrowserClientForTesting(&content_browser_client); |
1265 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged(); | 1332 shell()->web_contents()->GetRenderViewHost()->OnWebkitPreferencesChanged(); |
1266 scoped_refptr<WorkerActivatedObserver> observer = | 1333 scoped_refptr<WorkerActivatedObserver> observer = |
1267 new WorkerActivatedObserver(wrapper()); | 1334 new WorkerActivatedObserver(wrapper()); |
(...skipping 1579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2847 ServiceWorkerV8CacheStrategiesNormalTest, | 2914 ServiceWorkerV8CacheStrategiesNormalTest, |
2848 ::testing::Values(true, false)); | 2915 ::testing::Values(true, false)); |
2849 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, | 2916 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, |
2850 ServiceWorkerV8CacheStrategiesAggressiveTest, | 2917 ServiceWorkerV8CacheStrategiesAggressiveTest, |
2851 ::testing::Values(true, false)); | 2918 ::testing::Values(true, false)); |
2852 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, | 2919 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, |
2853 ServiceWorkerDisableWebSecurityTest, | 2920 ServiceWorkerDisableWebSecurityTest, |
2854 ::testing::Values(true, false)); | 2921 ::testing::Values(true, false)); |
2855 | 2922 |
2856 } // namespace content | 2923 } // namespace content |
OLD | NEW |