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

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

Issue 225403014: ServiceWorker: propagate provider_id to the browser process in .register + int32/int cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 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 | Annotate | Revision Log
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/public/browser/service_worker_context.h" 5 #include "content/public/browser/service_worker_context.h"
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "content/browser/browser_thread_impl.h" 10 #include "content/browser/browser_thread_impl.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 109
110 // Make sure basic registration is working. 110 // Make sure basic registration is working.
111 TEST_F(ServiceWorkerContextTest, Register) { 111 TEST_F(ServiceWorkerContextTest, Register) {
112 int64 registration_id = kInvalidServiceWorkerRegistrationId; 112 int64 registration_id = kInvalidServiceWorkerRegistrationId;
113 int64 version_id = kInvalidServiceWorkerVersionId; 113 int64 version_id = kInvalidServiceWorkerVersionId;
114 bool called = false; 114 bool called = false;
115 context_->RegisterServiceWorker( 115 context_->RegisterServiceWorker(
116 GURL("http://www.example.com/*"), 116 GURL("http://www.example.com/*"),
117 GURL("http://www.example.com/service_worker.js"), 117 GURL("http://www.example.com/service_worker.js"),
118 render_process_id_, 118 render_process_id_,
119 NULL,
119 MakeRegisteredCallback(&called, &registration_id, &version_id)); 120 MakeRegisteredCallback(&called, &registration_id, &version_id));
120 121
121 ASSERT_FALSE(called); 122 ASSERT_FALSE(called);
122 base::RunLoop().RunUntilIdle(); 123 base::RunLoop().RunUntilIdle();
123 EXPECT_TRUE(called); 124 EXPECT_TRUE(called);
124 125
125 EXPECT_EQ(2UL, helper_->ipc_sink()->message_count()); 126 EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
126 EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching( 127 EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
127 ServiceWorkerMsg_InstallEvent::ID)); 128 ServiceWorkerMsg_InstallEvent::ID));
128 EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id); 129 EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 TEST_F(ServiceWorkerContextTest, Register_RejectInstall) { 162 TEST_F(ServiceWorkerContextTest, Register_RejectInstall) {
162 helper_.reset( 163 helper_.reset(
163 new RejectInstallTestHelper(context_.get(), render_process_id_)); 164 new RejectInstallTestHelper(context_.get(), render_process_id_));
164 int64 registration_id = kInvalidServiceWorkerRegistrationId; 165 int64 registration_id = kInvalidServiceWorkerRegistrationId;
165 int64 version_id = kInvalidServiceWorkerVersionId; 166 int64 version_id = kInvalidServiceWorkerVersionId;
166 bool called = false; 167 bool called = false;
167 context_->RegisterServiceWorker( 168 context_->RegisterServiceWorker(
168 GURL("http://www.example.com/*"), 169 GURL("http://www.example.com/*"),
169 GURL("http://www.example.com/service_worker.js"), 170 GURL("http://www.example.com/service_worker.js"),
170 render_process_id_, 171 render_process_id_,
172 NULL,
171 MakeRegisteredCallback(&called, &registration_id, &version_id)); 173 MakeRegisteredCallback(&called, &registration_id, &version_id));
172 174
173 ASSERT_FALSE(called); 175 ASSERT_FALSE(called);
174 base::RunLoop().RunUntilIdle(); 176 base::RunLoop().RunUntilIdle();
175 EXPECT_TRUE(called); 177 EXPECT_TRUE(called);
176 178
177 EXPECT_EQ(2UL, helper_->ipc_sink()->message_count()); 179 EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
178 EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching( 180 EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
179 ServiceWorkerMsg_InstallEvent::ID)); 181 ServiceWorkerMsg_InstallEvent::ID));
180 EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id); 182 EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
(...skipping 14 matching lines...) Expand all
195 TEST_F(ServiceWorkerContextTest, Register_DuplicateScriptNoActiveWorker) { 197 TEST_F(ServiceWorkerContextTest, Register_DuplicateScriptNoActiveWorker) {
196 helper_.reset( 198 helper_.reset(
197 new RejectInstallTestHelper(context_.get(), render_process_id_)); 199 new RejectInstallTestHelper(context_.get(), render_process_id_));
198 int64 old_registration_id = kInvalidServiceWorkerRegistrationId; 200 int64 old_registration_id = kInvalidServiceWorkerRegistrationId;
199 int64 old_version_id = kInvalidServiceWorkerVersionId; 201 int64 old_version_id = kInvalidServiceWorkerVersionId;
200 bool called = false; 202 bool called = false;
201 context_->RegisterServiceWorker( 203 context_->RegisterServiceWorker(
202 GURL("http://www.example.com/*"), 204 GURL("http://www.example.com/*"),
203 GURL("http://www.example.com/service_worker.js"), 205 GURL("http://www.example.com/service_worker.js"),
204 render_process_id_, 206 render_process_id_,
207 NULL,
205 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id)); 208 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id));
206 209
207 ASSERT_FALSE(called); 210 ASSERT_FALSE(called);
208 base::RunLoop().RunUntilIdle(); 211 base::RunLoop().RunUntilIdle();
209 EXPECT_TRUE(called); 212 EXPECT_TRUE(called);
210 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id); 213 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id);
211 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id); 214 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id);
212 215
213 EXPECT_EQ(2UL, helper_->ipc_sink()->message_count()); 216 EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
214 217
215 int64 new_registration_id = kInvalidServiceWorkerRegistrationId; 218 int64 new_registration_id = kInvalidServiceWorkerRegistrationId;
216 int64 new_version_id = kInvalidServiceWorkerVersionId; 219 int64 new_version_id = kInvalidServiceWorkerVersionId;
217 called = false; 220 called = false;
218 context_->RegisterServiceWorker( 221 context_->RegisterServiceWorker(
219 GURL("http://www.example.com/*"), 222 GURL("http://www.example.com/*"),
220 GURL("http://www.example.com/service_worker.js"), 223 GURL("http://www.example.com/service_worker.js"),
221 render_process_id_, 224 render_process_id_,
225 NULL,
222 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id)); 226 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id));
223 227
224 ASSERT_FALSE(called); 228 ASSERT_FALSE(called);
225 base::RunLoop().RunUntilIdle(); 229 base::RunLoop().RunUntilIdle();
226 EXPECT_TRUE(called); 230 EXPECT_TRUE(called);
227 231
228 EXPECT_EQ(old_registration_id, new_registration_id); 232 EXPECT_EQ(old_registration_id, new_registration_id);
229 // Our current implementation does the full registration flow on re-register, 233 // Our current implementation does the full registration flow on re-register,
230 // so the worker receives another start message and install message. 234 // so the worker receives another start message and install message.
231 EXPECT_EQ(4UL, helper_->ipc_sink()->message_count()); 235 EXPECT_EQ(4UL, helper_->ipc_sink()->message_count());
232 } 236 }
233 237
234 // Make sure registrations are cleaned up when they are unregistered. 238 // Make sure registrations are cleaned up when they are unregistered.
235 TEST_F(ServiceWorkerContextTest, Unregister) { 239 TEST_F(ServiceWorkerContextTest, Unregister) {
236 GURL pattern("http://www.example.com/*"); 240 GURL pattern("http://www.example.com/*");
237 241
238 bool called = false; 242 bool called = false;
239 int64 registration_id = kInvalidServiceWorkerRegistrationId; 243 int64 registration_id = kInvalidServiceWorkerRegistrationId;
240 int64 version_id = kInvalidServiceWorkerVersionId; 244 int64 version_id = kInvalidServiceWorkerVersionId;
241 context_->RegisterServiceWorker( 245 context_->RegisterServiceWorker(
242 pattern, 246 pattern,
243 GURL("http://www.example.com/service_worker.js"), 247 GURL("http://www.example.com/service_worker.js"),
244 render_process_id_, 248 render_process_id_,
249 NULL,
245 MakeRegisteredCallback(&called, &registration_id, &version_id)); 250 MakeRegisteredCallback(&called, &registration_id, &version_id));
246 251
247 ASSERT_FALSE(called); 252 ASSERT_FALSE(called);
248 base::RunLoop().RunUntilIdle(); 253 base::RunLoop().RunUntilIdle();
249 ASSERT_TRUE(called); 254 ASSERT_TRUE(called);
250 EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id); 255 EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
251 EXPECT_NE(kInvalidServiceWorkerVersionId, version_id); 256 EXPECT_NE(kInvalidServiceWorkerVersionId, version_id);
252 257
253 called = false; 258 called = false;
254 context_->UnregisterServiceWorker( 259 context_->UnregisterServiceWorker(
255 pattern, render_process_id_, MakeUnregisteredCallback(&called)); 260 pattern, render_process_id_, NULL, MakeUnregisteredCallback(&called));
256 261
257 ASSERT_FALSE(called); 262 ASSERT_FALSE(called);
258 base::RunLoop().RunUntilIdle(); 263 base::RunLoop().RunUntilIdle();
259 ASSERT_TRUE(called); 264 ASSERT_TRUE(called);
260 265
261 context_->storage()->FindRegistrationForId( 266 context_->storage()->FindRegistrationForId(
262 registration_id, 267 registration_id,
263 base::Bind(&ExpectRegisteredWorkers, 268 base::Bind(&ExpectRegisteredWorkers,
264 SERVICE_WORKER_ERROR_NOT_FOUND, 269 SERVICE_WORKER_ERROR_NOT_FOUND,
265 kInvalidServiceWorkerVersionId, 270 kInvalidServiceWorkerVersionId,
266 false /* expect_pending */, 271 false /* expect_pending */,
267 false /* expect_active */)); 272 false /* expect_active */));
268 base::RunLoop().RunUntilIdle(); 273 base::RunLoop().RunUntilIdle();
269 } 274 }
270 275
271 // Make sure that when a new registration replaces an existing 276 // Make sure that when a new registration replaces an existing
272 // registration, that the old one is cleaned up. 277 // registration, that the old one is cleaned up.
273 TEST_F(ServiceWorkerContextTest, RegisterNewScript) { 278 TEST_F(ServiceWorkerContextTest, RegisterNewScript) {
274 GURL pattern("http://www.example.com/*"); 279 GURL pattern("http://www.example.com/*");
275 280
276 bool called = false; 281 bool called = false;
277 int64 old_registration_id = kInvalidServiceWorkerRegistrationId; 282 int64 old_registration_id = kInvalidServiceWorkerRegistrationId;
278 int64 old_version_id = kInvalidServiceWorkerVersionId; 283 int64 old_version_id = kInvalidServiceWorkerVersionId;
279 context_->RegisterServiceWorker( 284 context_->RegisterServiceWorker(
280 pattern, 285 pattern,
281 GURL("http://www.example.com/service_worker.js"), 286 GURL("http://www.example.com/service_worker.js"),
282 render_process_id_, 287 render_process_id_,
288 NULL,
283 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id)); 289 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id));
284 290
285 ASSERT_FALSE(called); 291 ASSERT_FALSE(called);
286 base::RunLoop().RunUntilIdle(); 292 base::RunLoop().RunUntilIdle();
287 ASSERT_TRUE(called); 293 ASSERT_TRUE(called);
288 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id); 294 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id);
289 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id); 295 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id);
290 296
291 called = false; 297 called = false;
292 int64 new_registration_id = kInvalidServiceWorkerRegistrationId; 298 int64 new_registration_id = kInvalidServiceWorkerRegistrationId;
293 int64 new_version_id = kInvalidServiceWorkerVersionId; 299 int64 new_version_id = kInvalidServiceWorkerVersionId;
294 context_->RegisterServiceWorker( 300 context_->RegisterServiceWorker(
295 pattern, 301 pattern,
296 GURL("http://www.example.com/service_worker_new.js"), 302 GURL("http://www.example.com/service_worker_new.js"),
297 render_process_id_, 303 render_process_id_,
304 NULL,
298 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id)); 305 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id));
299 306
300 ASSERT_FALSE(called); 307 ASSERT_FALSE(called);
301 base::RunLoop().RunUntilIdle(); 308 base::RunLoop().RunUntilIdle();
302 ASSERT_TRUE(called); 309 ASSERT_TRUE(called);
303 310
304 // Returned IDs should be valid, and should differ from the values 311 // Returned IDs should be valid, and should differ from the values
305 // returned for the previous registration. 312 // returned for the previous registration.
306 EXPECT_NE(kInvalidServiceWorkerRegistrationId, new_registration_id); 313 EXPECT_NE(kInvalidServiceWorkerRegistrationId, new_registration_id);
307 EXPECT_NE(kInvalidServiceWorkerVersionId, new_version_id); 314 EXPECT_NE(kInvalidServiceWorkerVersionId, new_version_id);
308 EXPECT_NE(old_registration_id, new_registration_id); 315 EXPECT_NE(old_registration_id, new_registration_id);
309 EXPECT_NE(old_version_id, new_version_id); 316 EXPECT_NE(old_version_id, new_version_id);
310 } 317 }
311 318
312 // Make sure that when registering a duplicate pattern+script_url 319 // Make sure that when registering a duplicate pattern+script_url
313 // combination, that the same registration is used. 320 // combination, that the same registration is used.
314 TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) { 321 TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) {
315 GURL pattern("http://www.example.com/*"); 322 GURL pattern("http://www.example.com/*");
316 GURL script_url("http://www.example.com/service_worker.js"); 323 GURL script_url("http://www.example.com/service_worker.js");
317 324
318 bool called = false; 325 bool called = false;
319 int64 old_registration_id = kInvalidServiceWorkerRegistrationId; 326 int64 old_registration_id = kInvalidServiceWorkerRegistrationId;
320 int64 old_version_id = kInvalidServiceWorkerVersionId; 327 int64 old_version_id = kInvalidServiceWorkerVersionId;
321 context_->RegisterServiceWorker( 328 context_->RegisterServiceWorker(
322 pattern, 329 pattern,
323 script_url, 330 script_url,
324 render_process_id_, 331 render_process_id_,
332 NULL,
325 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id)); 333 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id));
326 334
327 ASSERT_FALSE(called); 335 ASSERT_FALSE(called);
328 base::RunLoop().RunUntilIdle(); 336 base::RunLoop().RunUntilIdle();
329 ASSERT_TRUE(called); 337 ASSERT_TRUE(called);
330 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id); 338 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id);
331 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id); 339 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id);
332 340
333 called = false; 341 called = false;
334 int64 new_registration_id = kInvalidServiceWorkerRegistrationId; 342 int64 new_registration_id = kInvalidServiceWorkerRegistrationId;
335 int64 new_version_id = kInvalidServiceWorkerVersionId; 343 int64 new_version_id = kInvalidServiceWorkerVersionId;
336 context_->RegisterServiceWorker( 344 context_->RegisterServiceWorker(
337 pattern, 345 pattern,
338 script_url, 346 script_url,
339 render_process_id_, 347 render_process_id_,
348 NULL,
340 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id)); 349 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id));
341 350
342 ASSERT_FALSE(called); 351 ASSERT_FALSE(called);
343 base::RunLoop().RunUntilIdle(); 352 base::RunLoop().RunUntilIdle();
344 ASSERT_TRUE(called); 353 ASSERT_TRUE(called);
345 EXPECT_EQ(old_registration_id, new_registration_id); 354 EXPECT_EQ(old_registration_id, new_registration_id);
346 EXPECT_EQ(old_version_id, new_version_id); 355 EXPECT_EQ(old_version_id, new_version_id);
347 } 356 }
348 357
349 } // namespace content 358 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698