Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: content/browser/service_worker/service_worker_registration_unittest.cc

Issue 2218943002: Introduce ServiceWorker.EventDispatchingDelay UMA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: incorporated mpearson@'s comment Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/browser/service_worker/service_worker_registration.h" 5 #include "content/browser/service_worker/service_worker_registration.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/run_loop.h" 12 #include "base/run_loop.h"
13 #include "base/threading/thread_task_runner_handle.h" 13 #include "base/threading/thread_task_runner_handle.h"
14 #include "base/time/time.h"
14 #include "content/browser/service_worker/embedded_worker_status.h" 15 #include "content/browser/service_worker/embedded_worker_status.h"
15 #include "content/browser/service_worker/embedded_worker_test_helper.h" 16 #include "content/browser/service_worker/embedded_worker_test_helper.h"
16 #include "content/browser/service_worker/service_worker_context_core.h" 17 #include "content/browser/service_worker/service_worker_context_core.h"
17 #include "content/browser/service_worker/service_worker_registration_handle.h" 18 #include "content/browser/service_worker/service_worker_registration_handle.h"
18 #include "content/browser/service_worker/service_worker_test_utils.h" 19 #include "content/browser/service_worker/service_worker_test_utils.h"
19 #include "content/common/service_worker/service_worker_utils.h" 20 #include "content/common/service_worker/service_worker_utils.h"
20 #include "content/public/test/test_browser_thread_bundle.h" 21 #include "content/public/test/test_browser_thread_bundle.h"
21 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
22 #include "url/gurl.h" 23 #include "url/gurl.h"
23 24
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 scoped_refptr<ServiceWorkerVersion> version_1 = reg->active_version(); 266 scoped_refptr<ServiceWorkerVersion> version_1 = reg->active_version();
266 scoped_refptr<ServiceWorkerVersion> version_2 = reg->waiting_version(); 267 scoped_refptr<ServiceWorkerVersion> version_2 = reg->waiting_version();
267 268
268 // Remove the controllee. Since there is an in-flight request, 269 // Remove the controllee. Since there is an in-flight request,
269 // activation should not yet happen. 270 // activation should not yet happen.
270 version_1->RemoveControllee(controllee()); 271 version_1->RemoveControllee(controllee());
271 base::RunLoop().RunUntilIdle(); 272 base::RunLoop().RunUntilIdle();
272 EXPECT_EQ(version_1.get(), reg->active_version()); 273 EXPECT_EQ(version_1.get(), reg->active_version());
273 274
274 // Finish the request. Activation should happen. 275 // Finish the request. Activation should happen.
275 version_1->FinishRequest(inflight_request_id(), true /* was_handled */); 276 version_1->FinishRequest(inflight_request_id(), true /* was_handled */,
277 base::Time::Now());
276 base::RunLoop().RunUntilIdle(); 278 base::RunLoop().RunUntilIdle();
277 EXPECT_EQ(version_2.get(), reg->active_version()); 279 EXPECT_EQ(version_2.get(), reg->active_version());
278 } 280 }
279 281
280 // Test activation triggered by loss of controllee. 282 // Test activation triggered by loss of controllee.
281 TEST_F(ServiceWorkerActivationTest, NoControllee) { 283 TEST_F(ServiceWorkerActivationTest, NoControllee) {
282 scoped_refptr<ServiceWorkerRegistration> reg = registration(); 284 scoped_refptr<ServiceWorkerRegistration> reg = registration();
283 scoped_refptr<ServiceWorkerVersion> version_1 = reg->active_version(); 285 scoped_refptr<ServiceWorkerVersion> version_1 = reg->active_version();
284 scoped_refptr<ServiceWorkerVersion> version_2 = reg->waiting_version(); 286 scoped_refptr<ServiceWorkerVersion> version_2 = reg->waiting_version();
285 287
286 // Finish the request. Since there is a controllee, activation should not yet 288 // Finish the request. Since there is a controllee, activation should not yet
287 // happen. 289 // happen.
288 version_1->FinishRequest(inflight_request_id(), true /* was_handled */); 290 version_1->FinishRequest(inflight_request_id(), true /* was_handled */,
291 base::Time::Now());
289 base::RunLoop().RunUntilIdle(); 292 base::RunLoop().RunUntilIdle();
290 EXPECT_EQ(version_1.get(), reg->active_version()); 293 EXPECT_EQ(version_1.get(), reg->active_version());
291 294
292 // Remove the controllee. Activation should happen. 295 // Remove the controllee. Activation should happen.
293 version_1->RemoveControllee(controllee()); 296 version_1->RemoveControllee(controllee());
294 base::RunLoop().RunUntilIdle(); 297 base::RunLoop().RunUntilIdle();
295 EXPECT_EQ(version_2.get(), reg->active_version()); 298 EXPECT_EQ(version_2.get(), reg->active_version());
296 } 299 }
297 300
298 // Test activation triggered by skipWaiting. 301 // Test activation triggered by skipWaiting.
299 TEST_F(ServiceWorkerActivationTest, SkipWaiting) { 302 TEST_F(ServiceWorkerActivationTest, SkipWaiting) {
300 scoped_refptr<ServiceWorkerRegistration> reg = registration(); 303 scoped_refptr<ServiceWorkerRegistration> reg = registration();
301 scoped_refptr<ServiceWorkerVersion> version_1 = reg->active_version(); 304 scoped_refptr<ServiceWorkerVersion> version_1 = reg->active_version();
302 scoped_refptr<ServiceWorkerVersion> version_2 = reg->waiting_version(); 305 scoped_refptr<ServiceWorkerVersion> version_2 = reg->waiting_version();
303 306
304 // Finish the in-flight request. Since there is a controllee, 307 // Finish the in-flight request. Since there is a controllee,
305 // activation should not happen. 308 // activation should not happen.
306 version_1->FinishRequest(inflight_request_id(), true /* was_handled */); 309 version_1->FinishRequest(inflight_request_id(), true /* was_handled */,
310 base::Time::Now());
307 base::RunLoop().RunUntilIdle(); 311 base::RunLoop().RunUntilIdle();
308 EXPECT_EQ(version_1.get(), reg->active_version()); 312 EXPECT_EQ(version_1.get(), reg->active_version());
309 313
310 // Call skipWaiting. Activation should happen. 314 // Call skipWaiting. Activation should happen.
311 version_2->OnSkipWaiting(77 /* dummy request_id */); 315 version_2->OnSkipWaiting(77 /* dummy request_id */);
312 base::RunLoop().RunUntilIdle(); 316 base::RunLoop().RunUntilIdle();
313 EXPECT_EQ(version_2.get(), reg->active_version()); 317 EXPECT_EQ(version_2.get(), reg->active_version());
314 } 318 }
315 319
316 // Test activation triggered by skipWaiting and finishing requests. 320 // Test activation triggered by skipWaiting and finishing requests.
317 TEST_F(ServiceWorkerActivationTest, SkipWaitingWithInflightRequest) { 321 TEST_F(ServiceWorkerActivationTest, SkipWaitingWithInflightRequest) {
318 scoped_refptr<ServiceWorkerRegistration> reg = registration(); 322 scoped_refptr<ServiceWorkerRegistration> reg = registration();
319 scoped_refptr<ServiceWorkerVersion> version_1 = reg->active_version(); 323 scoped_refptr<ServiceWorkerVersion> version_1 = reg->active_version();
320 scoped_refptr<ServiceWorkerVersion> version_2 = reg->waiting_version(); 324 scoped_refptr<ServiceWorkerVersion> version_2 = reg->waiting_version();
321 325
322 // Set skip waiting flag. Since there is still an in-flight request, 326 // Set skip waiting flag. Since there is still an in-flight request,
323 // activation should not happen. 327 // activation should not happen.
324 version_2->OnSkipWaiting(77 /* dummy request_id */); 328 version_2->OnSkipWaiting(77 /* dummy request_id */);
325 base::RunLoop().RunUntilIdle(); 329 base::RunLoop().RunUntilIdle();
326 EXPECT_EQ(version_1.get(), reg->active_version()); 330 EXPECT_EQ(version_1.get(), reg->active_version());
327 331
328 // Finish the request. Activation should happen. 332 // Finish the request. Activation should happen.
329 version_1->FinishRequest(inflight_request_id(), true /* was_handled */); 333 version_1->FinishRequest(inflight_request_id(), true /* was_handled */,
334 base::Time::Now());
330 base::RunLoop().RunUntilIdle(); 335 base::RunLoop().RunUntilIdle();
331 EXPECT_EQ(version_2.get(), reg->active_version()); 336 EXPECT_EQ(version_2.get(), reg->active_version());
332 } 337 }
333 338
334 } // namespace content 339 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698