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

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

Issue 2653493009: Add two interfaces for ServiceWorkerProviderContext/ProviderHost (Closed)
Patch Set: Rebase Created 3 years, 9 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 <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 *called = true; 43 *called = true;
44 *out = status; 44 *out = status;
45 } 45 }
46 46
47 void SetUpDummyMessagePort(std::vector<MessagePort>* ports) { 47 void SetUpDummyMessagePort(std::vector<MessagePort>* ports) {
48 // Let the other end of the pipe close. 48 // Let the other end of the pipe close.
49 mojo::MessagePipe pipe; 49 mojo::MessagePipe pipe;
50 ports->push_back(MessagePort(std::move(pipe.handle0))); 50 ports->push_back(MessagePort(std::move(pipe.handle0)));
51 } 51 }
52 52
53 struct RemoteProviderInfo {
54 mojom::ServiceWorkerProviderHostAssociatedPtr host_ptr;
55 mojom::ServiceWorkerProviderAssociatedRequest client_request;
56 };
57
58 RemoteProviderInfo SetupProviderHostInfoPtrs(
59 ServiceWorkerProviderHostInfo* host_info) {
60 RemoteProviderInfo remote_info;
61 mojom::ServiceWorkerProviderAssociatedPtr browser_side_client_ptr;
62 remote_info.client_request =
63 mojo::MakeIsolatedRequest(&browser_side_client_ptr);
64 host_info->host_request = mojo::MakeIsolatedRequest(&remote_info.host_ptr);
65 host_info->client_ptr_info = browser_side_client_ptr.PassInterface();
66 EXPECT_TRUE(host_info->host_request.is_pending());
67 EXPECT_TRUE(host_info->client_ptr_info.is_valid());
68 EXPECT_TRUE(remote_info.host_ptr.is_bound());
69 EXPECT_TRUE(remote_info.client_request.is_pending());
70 return remote_info;
71 }
72
53 } // namespace 73 } // namespace
54 74
55 static const int kRenderFrameId = 1; 75 static const int kRenderFrameId = 1;
56 76
57 class TestingServiceWorkerDispatcherHost : public ServiceWorkerDispatcherHost { 77 class TestingServiceWorkerDispatcherHost : public ServiceWorkerDispatcherHost {
58 public: 78 public:
59 TestingServiceWorkerDispatcherHost( 79 TestingServiceWorkerDispatcherHost(
60 int process_id, 80 int process_id,
61 ServiceWorkerContextWrapper* context_wrapper, 81 ServiceWorkerContextWrapper* context_wrapper,
62 ResourceContext* resource_context, 82 ResourceContext* resource_context,
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 Register(-1, 522 Register(-1,
503 GURL(), 523 GURL(),
504 GURL(), 524 GURL(),
505 ServiceWorkerMsg_ServiceWorkerRegistrationError::ID); 525 ServiceWorkerMsg_ServiceWorkerRegistrationError::ID);
506 } 526 }
507 527
508 TEST_F(ServiceWorkerDispatcherHostTest, ProviderCreatedAndDestroyed) { 528 TEST_F(ServiceWorkerDispatcherHostTest, ProviderCreatedAndDestroyed) {
509 const int kProviderId = 1001; 529 const int kProviderId = 1001;
510 int process_id = helper_->mock_render_process_id(); 530 int process_id = helper_->mock_render_process_id();
511 531
512 dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo( 532 // Setup ServiceWorkerProviderHostInfo
513 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW, 533 ServiceWorkerProviderHostInfo host_info_1(kProviderId, MSG_ROUTING_NONE,
514 true /* is_parent_frame_secure */)); 534 SERVICE_WORKER_PROVIDER_FOR_WINDOW,
535 true /* is_parent_frame_secure */);
536 ServiceWorkerProviderHostInfo host_info_2(kProviderId, MSG_ROUTING_NONE,
537 SERVICE_WORKER_PROVIDER_FOR_WINDOW,
538 true /* is_parent_frame_secure */);
539 ServiceWorkerProviderHostInfo host_info_3(kProviderId, MSG_ROUTING_NONE,
540 SERVICE_WORKER_PROVIDER_FOR_WINDOW,
541 true /* is_parent_frame_secure */);
542 RemoteProviderInfo remote_info_1 = SetupProviderHostInfoPtrs(&host_info_1);
543 RemoteProviderInfo remote_info_2 = SetupProviderHostInfoPtrs(&host_info_2);
544 RemoteProviderInfo remote_info_3 = SetupProviderHostInfoPtrs(&host_info_3);
545
546 dispatcher_host_->OnProviderCreated(std::move(host_info_1));
515 EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId)); 547 EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId));
516 548
517 // Two with the same ID should be seen as a bad message. 549 // Two with the same ID should be seen as a bad message.
518 dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo( 550 dispatcher_host_->OnProviderCreated(std::move(host_info_2));
519 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW,
520 true /* is_parent_frame_secure */));
521 EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_); 551 EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_);
522 552
523 dispatcher_host_->OnProviderDestroyed(kProviderId); 553 // Releasing the interface pointer destroys the counterpart.
554 remote_info_1.host_ptr.reset();
555 base::RunLoop().RunUntilIdle();
524 EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId)); 556 EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId));
525 557
526 // Destroying an ID that does not exist warrants a bad message.
527 dispatcher_host_->OnProviderDestroyed(kProviderId);
528 EXPECT_EQ(2, dispatcher_host_->bad_messages_received_count_);
529
530 // Deletion of the dispatcher_host should cause providers for that 558 // Deletion of the dispatcher_host should cause providers for that
531 // process to get deleted as well. 559 // process to get deleted as well.
532 dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo( 560 dispatcher_host_->OnProviderCreated(std::move(host_info_3));
533 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW,
534 true /* is_parent_frame_secure */));
535 EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId)); 561 EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId));
536 EXPECT_TRUE(dispatcher_host_->HasOneRef()); 562 EXPECT_TRUE(dispatcher_host_->HasOneRef());
537 dispatcher_host_ = nullptr; 563 dispatcher_host_ = nullptr;
538 EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId)); 564 EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId));
539 } 565 }
540 566
541 TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_SameOrigin) { 567 TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_SameOrigin) {
542 const int64_t kProviderId = 99; // Dummy value 568 const int64_t kProviderId = 99; // Dummy value
543 std::unique_ptr<ServiceWorkerProviderHost> host( 569 std::unique_ptr<ServiceWorkerProviderHost> host(
544 CreateServiceWorkerProviderHost(kProviderId)); 570 CreateServiceWorkerProviderHost(kProviderId));
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 dispatcher_host_->OnMessageReceived(ServiceWorkerHostMsg_FetchEventResponse( 857 dispatcher_host_->OnMessageReceived(ServiceWorkerHostMsg_FetchEventResponse(
832 version_->embedded_worker()->embedded_worker_id(), kFetchEventId, 858 version_->embedded_worker()->embedded_worker_id(), kFetchEventId,
833 SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK, ServiceWorkerResponse(), 859 SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK, ServiceWorkerResponse(),
834 base::Time::Now())); 860 base::Time::Now()));
835 861
836 base::RunLoop().RunUntilIdle(); 862 base::RunLoop().RunUntilIdle();
837 EXPECT_EQ(0, dispatcher_host_->bad_messages_received_count_); 863 EXPECT_EQ(0, dispatcher_host_->bad_messages_received_count_);
838 } 864 }
839 865
840 } // namespace content 866 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698