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

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

Issue 1042933002: ServiceWorker: Support non-window clients in Clients.matchAll (1/2 chromium) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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_dispatcher_host.h" 5 #include "content/browser/service_worker/service_worker_dispatcher_host.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "content/browser/browser_thread_impl.h" 10 #include "content/browser/browser_thread_impl.h"
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 void GetRegistration(int64 provider_id, 123 void GetRegistration(int64 provider_id,
124 GURL document_url, 124 GURL document_url,
125 uint32 expected_message) { 125 uint32 expected_message) {
126 SendGetRegistration(provider_id, document_url); 126 SendGetRegistration(provider_id, document_url);
127 EXPECT_TRUE(dispatcher_host_->ipc_sink()->GetUniqueMessageMatching( 127 EXPECT_TRUE(dispatcher_host_->ipc_sink()->GetUniqueMessageMatching(
128 expected_message)); 128 expected_message));
129 dispatcher_host_->ipc_sink()->ClearMessages(); 129 dispatcher_host_->ipc_sink()->ClearMessages();
130 } 130 }
131 131
132 ServiceWorkerProviderHost* CreateServiceWorkerProviderHost(int provider_id) { 132 ServiceWorkerProviderHost* CreateServiceWorkerProviderHost(int provider_id) {
133 return new ServiceWorkerProviderHost(kRenderProcessId, 133 return new ServiceWorkerProviderHost(
134 kRenderFrameId, 134 kRenderProcessId, kRenderFrameId, provider_id,
135 provider_id, 135 SERVICE_WORKER_PROVIDER_FOR_WINDOW, context()->AsWeakPtr(),
136 SERVICE_WORKER_PROVIDER_FOR_CONTROLLEE, 136 dispatcher_host_.get());
137 context()->AsWeakPtr(),
138 dispatcher_host_.get());
139 } 137 }
140 138
141 139
142 TestBrowserThreadBundle browser_thread_bundle_; 140 TestBrowserThreadBundle browser_thread_bundle_;
143 content::MockResourceContext resource_context_; 141 content::MockResourceContext resource_context_;
144 scoped_ptr<EmbeddedWorkerTestHelper> helper_; 142 scoped_ptr<EmbeddedWorkerTestHelper> helper_;
145 scoped_refptr<TestingServiceWorkerDispatcherHost> dispatcher_host_; 143 scoped_refptr<TestingServiceWorkerDispatcherHost> dispatcher_host_;
146 }; 144 };
147 145
148 class ServiceWorkerTestContentBrowserClient : public TestContentBrowserClient { 146 class ServiceWorkerTestContentBrowserClient : public TestContentBrowserClient {
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 399
402 Register(-1, 400 Register(-1,
403 GURL(), 401 GURL(),
404 GURL(), 402 GURL(),
405 ServiceWorkerMsg_ServiceWorkerRegistrationError::ID); 403 ServiceWorkerMsg_ServiceWorkerRegistrationError::ID);
406 } 404 }
407 405
408 TEST_F(ServiceWorkerDispatcherHostTest, ProviderCreatedAndDestroyed) { 406 TEST_F(ServiceWorkerDispatcherHostTest, ProviderCreatedAndDestroyed) {
409 const int kProviderId = 1001; // Test with a value != kRenderProcessId. 407 const int kProviderId = 1001; // Test with a value != kRenderProcessId.
410 408
411 dispatcher_host_->OnMessageReceived( 409 dispatcher_host_->OnMessageReceived(ServiceWorkerHostMsg_ProviderCreated(
412 ServiceWorkerHostMsg_ProviderCreated( 410 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW));
413 kProviderId, MSG_ROUTING_NONE,
414 SERVICE_WORKER_PROVIDER_FOR_CONTROLLEE));
415 EXPECT_TRUE(context()->GetProviderHost(kRenderProcessId, kProviderId)); 411 EXPECT_TRUE(context()->GetProviderHost(kRenderProcessId, kProviderId));
416 412
417 // Two with the same ID should be seen as a bad message. 413 // Two with the same ID should be seen as a bad message.
418 dispatcher_host_->OnMessageReceived( 414 dispatcher_host_->OnMessageReceived(ServiceWorkerHostMsg_ProviderCreated(
419 ServiceWorkerHostMsg_ProviderCreated( 415 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW));
420 kProviderId, MSG_ROUTING_NONE,
421 SERVICE_WORKER_PROVIDER_FOR_CONTROLLEE));
422 EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_); 416 EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_);
423 417
424 dispatcher_host_->OnMessageReceived( 418 dispatcher_host_->OnMessageReceived(
425 ServiceWorkerHostMsg_ProviderDestroyed(kProviderId)); 419 ServiceWorkerHostMsg_ProviderDestroyed(kProviderId));
426 EXPECT_FALSE(context()->GetProviderHost(kRenderProcessId, kProviderId)); 420 EXPECT_FALSE(context()->GetProviderHost(kRenderProcessId, kProviderId));
427 421
428 // Destroying an ID that does not exist warrants a bad message. 422 // Destroying an ID that does not exist warrants a bad message.
429 dispatcher_host_->OnMessageReceived( 423 dispatcher_host_->OnMessageReceived(
430 ServiceWorkerHostMsg_ProviderDestroyed(kProviderId)); 424 ServiceWorkerHostMsg_ProviderDestroyed(kProviderId));
431 EXPECT_EQ(2, dispatcher_host_->bad_messages_received_count_); 425 EXPECT_EQ(2, dispatcher_host_->bad_messages_received_count_);
432 426
433 // Deletion of the dispatcher_host should cause providers for that 427 // Deletion of the dispatcher_host should cause providers for that
434 // process to get deleted as well. 428 // process to get deleted as well.
435 dispatcher_host_->OnMessageReceived( 429 dispatcher_host_->OnMessageReceived(ServiceWorkerHostMsg_ProviderCreated(
436 ServiceWorkerHostMsg_ProviderCreated( 430 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW));
437 kProviderId, MSG_ROUTING_NONE,
438 SERVICE_WORKER_PROVIDER_FOR_CONTROLLEE));
439 EXPECT_TRUE(context()->GetProviderHost(kRenderProcessId, kProviderId)); 431 EXPECT_TRUE(context()->GetProviderHost(kRenderProcessId, kProviderId));
440 EXPECT_TRUE(dispatcher_host_->HasOneRef()); 432 EXPECT_TRUE(dispatcher_host_->HasOneRef());
441 dispatcher_host_ = NULL; 433 dispatcher_host_ = NULL;
442 EXPECT_FALSE(context()->GetProviderHost(kRenderProcessId, kProviderId)); 434 EXPECT_FALSE(context()->GetProviderHost(kRenderProcessId, kProviderId));
443 } 435 }
444 436
445 TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_SameOrigin) { 437 TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_SameOrigin) {
446 const int64 kProviderId = 99; // Dummy value 438 const int64 kProviderId = 99; // Dummy value
447 scoped_ptr<ServiceWorkerProviderHost> host( 439 scoped_ptr<ServiceWorkerProviderHost> host(
448 CreateServiceWorkerProviderHost(kProviderId)); 440 CreateServiceWorkerProviderHost(kProviderId));
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 base::RunLoop().RunUntilIdle(); 488 base::RunLoop().RunUntilIdle();
497 489
498 GetRegistration(-1, 490 GetRegistration(-1,
499 GURL(), 491 GURL(),
500 ServiceWorkerMsg_ServiceWorkerGetRegistrationError::ID); 492 ServiceWorkerMsg_ServiceWorkerGetRegistrationError::ID);
501 } 493 }
502 494
503 TEST_F(ServiceWorkerDispatcherHostTest, CleanupOnRendererCrash) { 495 TEST_F(ServiceWorkerDispatcherHostTest, CleanupOnRendererCrash) {
504 // Add a provider and worker. 496 // Add a provider and worker.
505 const int64 kProviderId = 99; // Dummy value 497 const int64 kProviderId = 99; // Dummy value
506 dispatcher_host_->OnMessageReceived( 498 dispatcher_host_->OnMessageReceived(ServiceWorkerHostMsg_ProviderCreated(
507 ServiceWorkerHostMsg_ProviderCreated( 499 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW));
508 kProviderId, MSG_ROUTING_NONE,
509 SERVICE_WORKER_PROVIDER_FOR_CONTROLLEE));
510 500
511 GURL pattern = GURL("http://www.example.com/"); 501 GURL pattern = GURL("http://www.example.com/");
512 scoped_refptr<ServiceWorkerRegistration> registration( 502 scoped_refptr<ServiceWorkerRegistration> registration(
513 new ServiceWorkerRegistration(pattern, 503 new ServiceWorkerRegistration(pattern,
514 1L, 504 1L,
515 helper_->context()->AsWeakPtr())); 505 helper_->context()->AsWeakPtr()));
516 scoped_refptr<ServiceWorkerVersion> version( 506 scoped_refptr<ServiceWorkerVersion> version(
517 new ServiceWorkerVersion(registration.get(), 507 new ServiceWorkerVersion(registration.get(),
518 GURL("http://www.example.com/service_worker.js"), 508 GURL("http://www.example.com/service_worker.js"),
519 1L, 509 1L,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 // render process. 547 // render process.
558 scoped_refptr<TestingServiceWorkerDispatcherHost> new_dispatcher_host( 548 scoped_refptr<TestingServiceWorkerDispatcherHost> new_dispatcher_host(
559 new TestingServiceWorkerDispatcherHost(kRenderProcessId, 549 new TestingServiceWorkerDispatcherHost(kRenderProcessId,
560 context_wrapper(), 550 context_wrapper(),
561 &resource_context_, 551 &resource_context_,
562 helper_.get())); 552 helper_.get()));
563 553
564 // To show the new dispatcher can operate, simulate provider creation. Since 554 // To show the new dispatcher can operate, simulate provider creation. Since
565 // the old dispatcher cleaned up the old provider host, the new one won't 555 // the old dispatcher cleaned up the old provider host, the new one won't
566 // complain. 556 // complain.
567 new_dispatcher_host->OnMessageReceived( 557 new_dispatcher_host->OnMessageReceived(ServiceWorkerHostMsg_ProviderCreated(
568 ServiceWorkerHostMsg_ProviderCreated( 558 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW));
569 kProviderId, MSG_ROUTING_NONE,
570 SERVICE_WORKER_PROVIDER_FOR_CONTROLLEE));
571 EXPECT_EQ(0, new_dispatcher_host->bad_messages_received_count_); 559 EXPECT_EQ(0, new_dispatcher_host->bad_messages_received_count_);
572 } 560 }
573 561
574 } // namespace content 562 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698