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

Unified Diff: content/browser/service_worker/service_worker_provider_host_unittest.cc

Issue 2653493009: Add two interfaces for ServiceWorkerProviderContext/ProviderHost (Closed)
Patch Set: Addressed comments from falken Created 3 years, 7 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_provider_host_unittest.cc
diff --git a/content/browser/service_worker/service_worker_provider_host_unittest.cc b/content/browser/service_worker/service_worker_provider_host_unittest.cc
index ce0560be5e6e4003d99cd3ad8eab9158f3c1bf93..ee87d1149c3e0c37ea1da792166e0f67901e0ab2 100644
--- a/content/browser/service_worker/service_worker_provider_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_provider_host_unittest.cc
@@ -18,6 +18,7 @@
#include "content/browser/service_worker/service_worker_test_utils.h"
#include "content/browser/service_worker/service_worker_version.h"
#include "content/common/url_schemes.h"
+#include "content/public/common/browser_side_navigation_policy.h"
#include "content/public/common/origin_util.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "content/public/test/test_utils.h"
@@ -75,10 +76,32 @@ class ServiceWorkerProviderHostTest : public testing::Test {
}
ServiceWorkerProviderHost* CreateProviderHost(const GURL& document_url) {
- std::unique_ptr<ServiceWorkerProviderHost> host =
- CreateProviderHostForWindow(
- helper_->mock_render_process_id(), next_provider_id_++,
- true /* is_parent_frame_secure */, helper_->context()->AsWeakPtr());
+ remote_endpoints_.emplace_back();
+ std::unique_ptr<ServiceWorkerProviderHost> host;
+ if (IsBrowserSideNavigationEnabled()) {
+ static int next_browser_provided_id = -2;
falken 2017/05/22 08:28:12 could this be a class member like |next_provider_i
shimazu 2017/05/23 06:29:34 Done.
+ host = ServiceWorkerProviderHost::PreCreateNavigationHost(
+ helper_->context()->AsWeakPtr(), true,
+ base::Callback<WebContents*(void)>());
+ ServiceWorkerProviderHostInfo info(next_browser_provided_id--,
+ 1 /* route_id */,
+ SERVICE_WORKER_PROVIDER_FOR_WINDOW,
+ true /* is_parent_frame_secure */);
+ mojom::ServiceWorkerProviderAssociatedPtr client_ptr;
+ remote_endpoints_.back().client_request =
+ mojo::MakeIsolatedRequest(&client_ptr);
+ info.client_ptr_info = client_ptr.PassInterface();
+ info.host_request =
+ mojo::MakeIsolatedRequest(&remote_endpoints_.back().host_ptr);
+ host->CompleteNavigationInitialized(helper_->mock_render_process_id(),
+ std::move(info), nullptr);
+ } else {
+ host = CreateProviderHostForWindow(
+ helper_->mock_render_process_id(), next_provider_id_++,
+ true /* is_parent_frame_secure */, helper_->context()->AsWeakPtr(),
+ &remote_endpoints_.back());
+ }
+
ServiceWorkerProviderHost* host_raw = host.get();
host->SetDocumentUrl(document_url);
context_->AddProviderHost(std::move(host));
@@ -87,11 +110,12 @@ class ServiceWorkerProviderHostTest : public testing::Test {
ServiceWorkerProviderHost* CreateProviderHostWithInsecureParentFrame(
const GURL& document_url) {
+ remote_endpoints_.emplace_back();
std::unique_ptr<ServiceWorkerProviderHost> host =
- CreateProviderHostForWindow(helper_->mock_render_process_id(),
- next_provider_id_++,
- false /* is_parent_frame_secure */,
- helper_->context()->AsWeakPtr());
+ CreateProviderHostForWindow(
+ helper_->mock_render_process_id(), next_provider_id_++,
+ false /* is_parent_frame_secure */, helper_->context()->AsWeakPtr(),
+ &remote_endpoints_.back());
ServiceWorkerProviderHost* host_raw = host.get();
host->SetDocumentUrl(document_url);
context_->AddProviderHost(std::move(host));
@@ -109,6 +133,7 @@ class ServiceWorkerProviderHostTest : public testing::Test {
TestContentBrowserClient test_content_browser_client_;
ContentBrowserClient* old_content_browser_client_;
int next_provider_id_;
+ std::vector<ServiceWorkerRemoteProviderEndpoint> remote_endpoints_;
private:
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerProviderHostTest);
@@ -224,4 +249,19 @@ TEST_F(ServiceWorkerProviderHostTest, ContextSecurity) {
provider_host_insecure_parent->IsContextSecureForServiceWorker());
}
+TEST_F(ServiceWorkerProviderHostTest, RemoveProvider) {
+ // Create a provider host connected with the renderer process.
+ ServiceWorkerProviderHost* provider_host =
+ CreateProviderHost(GURL("https://www.example.com/example1.html"));
+ int process_id = provider_host->process_id();
+ int provider_id = provider_host->provider_id();
+ EXPECT_TRUE(context_->GetProviderHost(process_id, provider_id));
+
+ // Disconnect the mojo pipe from the renderer side.
+ ASSERT_TRUE(remote_endpoints_.back().host_ptr.is_bound());
+ remote_endpoints_.back().host_ptr.reset();
+ base::RunLoop().RunUntilIdle();
+ EXPECT_FALSE(context_->GetProviderHost(process_id, provider_id));
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698