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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
diff --git a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
index 0c3fdb678eea6b56ab493ca2eba85d61c9dd2b4d..acc89f9fb74b019ba7c0f43519728e407469d84a 100644
--- a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
@@ -50,6 +50,26 @@ void SetUpDummyMessagePort(std::vector<MessagePort>* ports) {
ports->push_back(MessagePort(std::move(pipe.handle0)));
}
+struct RemoteProviderInfo {
+ mojom::ServiceWorkerProviderHostAssociatedPtr host_ptr;
+ mojom::ServiceWorkerProviderAssociatedRequest client_request;
+};
+
+RemoteProviderInfo SetupProviderHostInfoPtrs(
+ ServiceWorkerProviderHostInfo* host_info) {
+ RemoteProviderInfo remote_info;
+ mojom::ServiceWorkerProviderAssociatedPtr browser_side_client_ptr;
+ remote_info.client_request =
+ mojo::MakeIsolatedRequest(&browser_side_client_ptr);
+ host_info->host_request = mojo::MakeIsolatedRequest(&remote_info.host_ptr);
+ host_info->client_ptr_info = browser_side_client_ptr.PassInterface();
+ EXPECT_TRUE(host_info->host_request.is_pending());
+ EXPECT_TRUE(host_info->client_ptr_info.is_valid());
+ EXPECT_TRUE(remote_info.host_ptr.is_bound());
+ EXPECT_TRUE(remote_info.client_request.is_pending());
+ return remote_info;
+}
+
} // namespace
static const int kRenderFrameId = 1;
@@ -509,29 +529,35 @@ TEST_F(ServiceWorkerDispatcherHostTest, ProviderCreatedAndDestroyed) {
const int kProviderId = 1001;
int process_id = helper_->mock_render_process_id();
- dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo(
- kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW,
- true /* is_parent_frame_secure */));
+ // Setup ServiceWorkerProviderHostInfo
+ ServiceWorkerProviderHostInfo host_info_1(kProviderId, MSG_ROUTING_NONE,
+ SERVICE_WORKER_PROVIDER_FOR_WINDOW,
+ true /* is_parent_frame_secure */);
+ ServiceWorkerProviderHostInfo host_info_2(kProviderId, MSG_ROUTING_NONE,
+ SERVICE_WORKER_PROVIDER_FOR_WINDOW,
+ true /* is_parent_frame_secure */);
+ ServiceWorkerProviderHostInfo host_info_3(kProviderId, MSG_ROUTING_NONE,
+ SERVICE_WORKER_PROVIDER_FOR_WINDOW,
+ true /* is_parent_frame_secure */);
+ RemoteProviderInfo remote_info_1 = SetupProviderHostInfoPtrs(&host_info_1);
+ RemoteProviderInfo remote_info_2 = SetupProviderHostInfoPtrs(&host_info_2);
+ RemoteProviderInfo remote_info_3 = SetupProviderHostInfoPtrs(&host_info_3);
+
+ dispatcher_host_->OnProviderCreated(std::move(host_info_1));
EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId));
// Two with the same ID should be seen as a bad message.
- dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo(
- kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW,
- true /* is_parent_frame_secure */));
+ dispatcher_host_->OnProviderCreated(std::move(host_info_2));
EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_);
- dispatcher_host_->OnProviderDestroyed(kProviderId);
+ // Releasing the interface pointer destroys the counterpart.
+ remote_info_1.host_ptr.reset();
+ base::RunLoop().RunUntilIdle();
EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId));
- // Destroying an ID that does not exist warrants a bad message.
- dispatcher_host_->OnProviderDestroyed(kProviderId);
- EXPECT_EQ(2, dispatcher_host_->bad_messages_received_count_);
-
// Deletion of the dispatcher_host should cause providers for that
// process to get deleted as well.
- dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo(
- kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW,
- true /* is_parent_frame_secure */));
+ dispatcher_host_->OnProviderCreated(std::move(host_info_3));
EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId));
EXPECT_TRUE(dispatcher_host_->HasOneRef());
dispatcher_host_ = nullptr;

Powered by Google App Engine
This is Rietveld 408576698