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

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

Issue 2653493009: Add two interfaces for ServiceWorkerProviderContext/ProviderHost (Closed)
Patch Set: Rebase Created 3 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_provider_host.h" 5 #include "content/browser/service_worker/service_worker_provider_host.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 CreateProviderHostForWindow(helper_->mock_render_process_id(), 91 CreateProviderHostForWindow(helper_->mock_render_process_id(),
92 next_provider_id_++, 92 next_provider_id_++,
93 false /* is_parent_frame_secure */, 93 false /* is_parent_frame_secure */,
94 helper_->context()->AsWeakPtr()); 94 helper_->context()->AsWeakPtr());
95 ServiceWorkerProviderHost* host_raw = host.get(); 95 ServiceWorkerProviderHost* host_raw = host.get();
96 host->SetDocumentUrl(document_url); 96 host->SetDocumentUrl(document_url);
97 context_->AddProviderHost(std::move(host)); 97 context_->AddProviderHost(std::move(host));
98 return host_raw; 98 return host_raw;
99 } 99 }
100 100
101 ServiceWorkerProviderHost* CreateProviderHostWithMojo(
102 const GURL& document_url,
103 mojom::ServiceWorkerProviderHostAssociatedPtr* host_ptr,
104 mojom::ServiceWorkerProviderAssociatedPtr client_ptr) {
105 ServiceWorkerProviderHostInfo info(next_provider_id_++, MSG_ROUTING_NONE,
106 SERVICE_WORKER_PROVIDER_FOR_WINDOW,
107 true /* is_parent_frame_secure */);
108 info.host_request = mojo::MakeIsolatedRequest(host_ptr);
109 info.client_ptr_info = client_ptr.PassInterface();
110 std::unique_ptr<ServiceWorkerProviderHost> host =
111 ServiceWorkerProviderHost::Create(
112 helper_->mock_render_process_id(), std::move(info),
113 helper_->context()->AsWeakPtr(), nullptr);
114 ServiceWorkerProviderHost* host_raw = host.get();
115 host->SetDocumentUrl(document_url);
116 context_->AddProviderHost(std::move(host));
117 return host_raw;
118 }
119
101 TestBrowserThreadBundle thread_bundle_; 120 TestBrowserThreadBundle thread_bundle_;
102 std::unique_ptr<EmbeddedWorkerTestHelper> helper_; 121 std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
103 ServiceWorkerContextCore* context_; 122 ServiceWorkerContextCore* context_;
104 scoped_refptr<ServiceWorkerRegistration> registration1_; 123 scoped_refptr<ServiceWorkerRegistration> registration1_;
105 scoped_refptr<ServiceWorkerRegistration> registration2_; 124 scoped_refptr<ServiceWorkerRegistration> registration2_;
106 scoped_refptr<ServiceWorkerRegistration> registration3_; 125 scoped_refptr<ServiceWorkerRegistration> registration3_;
107 GURL script_url_; 126 GURL script_url_;
108 ServiceWorkerTestContentClient test_content_client_; 127 ServiceWorkerTestContentClient test_content_client_;
109 TestContentBrowserClient test_content_browser_client_; 128 TestContentBrowserClient test_content_browser_client_;
110 ContentBrowserClient* old_content_browser_client_; 129 ContentBrowserClient* old_content_browser_client_;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 EXPECT_TRUE(OriginCanAccessServiceWorkers(url)); 236 EXPECT_TRUE(OriginCanAccessServiceWorkers(url));
218 provider_host_secure_parent->SetDocumentUrl(url); 237 provider_host_secure_parent->SetDocumentUrl(url);
219 EXPECT_TRUE(provider_host_secure_parent->IsContextSecureForServiceWorker()); 238 EXPECT_TRUE(provider_host_secure_parent->IsContextSecureForServiceWorker());
220 239
221 // Exceptional service worker scheme with insecure parent frame. 240 // Exceptional service worker scheme with insecure parent frame.
222 provider_host_insecure_parent->SetDocumentUrl(url); 241 provider_host_insecure_parent->SetDocumentUrl(url);
223 EXPECT_FALSE( 242 EXPECT_FALSE(
224 provider_host_insecure_parent->IsContextSecureForServiceWorker()); 243 provider_host_insecure_parent->IsContextSecureForServiceWorker());
225 } 244 }
226 245
246 class MockServiceWorkerProvider : public mojom::ServiceWorkerProvider {
247 public:
248 MockServiceWorkerProvider(
249 mojom::ServiceWorkerProviderAssociatedRequest request)
250 : binding_(this, std::move(request)) {}
251 bool is_bound() const { return binding_.is_bound(); }
252
253 private:
254 mojo::AssociatedBinding<mojom::ServiceWorkerProvider> binding_;
255 };
256
257 TEST_F(ServiceWorkerProviderHostTest, RemoveProvider) {
258 // Prepare mojo pointers living on the renderer side.
259 mojom::ServiceWorkerProviderAssociatedPtr provider_client_ptr;
260 MockServiceWorkerProvider provider_client(
261 mojo::MakeIsolatedRequest(&provider_client_ptr));
262 mojom::ServiceWorkerProviderHostAssociatedPtr provider_host_ptr;
263
264 // Create a provider host connected with the renderer process.
265 ServiceWorkerProviderHost* provider_host = CreateProviderHostWithMojo(
266 GURL("https://www.example.com/example1.html"), &provider_host_ptr,
267 std::move(provider_client_ptr));
268 int process_id = provider_host->process_id();
269 int provider_id = provider_host->provider_id();
270 EXPECT_TRUE(context_->GetProviderHost(process_id, provider_id));
271
272 // Disconnect the mojo pipe from the renderer side.
273 provider_host_ptr.reset();
274 base::RunLoop().RunUntilIdle();
275 EXPECT_FALSE(context_->GetProviderHost(process_id, provider_id));
276 }
277
227 } // namespace content 278 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698