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> |
| 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 |