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

Side by Side Diff: content/browser/background_sync/background_sync_browsertest.cc

Issue 1358063004: Use mojo to connect to BackgroundSyncManager object (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix crash in HasWindowProviderHost Created 5 years, 2 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
« no previous file with comments | « no previous file | content/browser/service_worker/service_worker_context_core.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 // run on the IO thread. 155 // run on the IO thread.
156 void SetOnline(bool online); 156 void SetOnline(bool online);
157 void SetOnlineOnIOThread( 157 void SetOnlineOnIOThread(
158 const scoped_refptr<BackgroundSyncContext>& sync_context, 158 const scoped_refptr<BackgroundSyncContext>& sync_context,
159 bool online); 159 bool online);
160 160
161 // Returns true if the one-shot sync with tag is currently pending. Fails 161 // Returns true if the one-shot sync with tag is currently pending. Fails
162 // (assertion failure) if the tag isn't registered. 162 // (assertion failure) if the tag isn't registered.
163 bool OneShotPending(const std::string& tag); 163 bool OneShotPending(const std::string& tag);
164 164
165 std::string PopConsoleString();
165 bool PopConsole(const std::string& expected_msg); 166 bool PopConsole(const std::string& expected_msg);
166 bool RegisterServiceWorker(); 167 bool RegisterServiceWorker();
167 bool RegisterOneShot(const std::string& tag); 168 bool RegisterOneShot(const std::string& tag);
169 bool RegisterOneShotFromServiceWorker(const std::string& tag);
168 bool UnregisterOneShot(const std::string& tag); 170 bool UnregisterOneShot(const std::string& tag);
169 bool UnregisterOneShotTwice(const std::string& tag); 171 bool UnregisterOneShotTwice(const std::string& tag);
170 bool GetRegistrationOneShot(const std::string& tag); 172 bool GetRegistrationOneShot(const std::string& tag);
173 bool GetRegistrationOneShotFromServiceWorker(const std::string& tag);
174 bool MatchRegistrations(const std::string& script_result,
175 const std::vector<std::string>& expected_tags);
171 bool GetRegistrationsOneShot(const std::vector<std::string>& expected_tags); 176 bool GetRegistrationsOneShot(const std::vector<std::string>& expected_tags);
177 bool GetRegistrationsOneShotFromServiceWorker(
178 const std::vector<std::string>& expected_tags);
172 bool CompleteDelayedOneShot(); 179 bool CompleteDelayedOneShot();
173 bool RejectDelayedOneShot(); 180 bool RejectDelayedOneShot();
174 bool NotifyWhenDoneOneShot(const std::string& tag); 181 bool NotifyWhenDoneOneShot(const std::string& tag);
175 bool NotifyWhenDoneImmediateOneShot(const std::string& expected_msg); 182 bool NotifyWhenDoneImmediateOneShot(const std::string& expected_msg);
176 bool StoreRegistrationOneShot(const std::string& tag); 183 bool StoreRegistrationOneShot(const std::string& tag);
177 184
178 private: 185 private:
179 scoped_ptr<net::SpawnedTestServer> https_server_; 186 scoped_ptr<net::SpawnedTestServer> https_server_;
180 Shell* shell_ = nullptr; 187 Shell* shell_ = nullptr;
181 188
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 BrowserThread::IO, FROM_HERE, 233 BrowserThread::IO, FROM_HERE,
227 base::Bind(&OneShotPendingOnIOThread, make_scoped_refptr(sync_context), 234 base::Bind(&OneShotPendingOnIOThread, make_scoped_refptr(sync_context),
228 make_scoped_refptr(service_worker_context), tag, 235 make_scoped_refptr(service_worker_context), tag,
229 https_server_->GetURL(kDefaultTestURL), callback)); 236 https_server_->GetURL(kDefaultTestURL), callback));
230 237
231 run_loop.Run(); 238 run_loop.Run();
232 239
233 return is_pending; 240 return is_pending;
234 } 241 }
235 242
236 bool BackgroundSyncBrowserTest::PopConsole(const std::string& expected_msg) { 243 std::string BackgroundSyncBrowserTest::PopConsoleString() {
237 std::string script_result; 244 std::string script_result;
238 EXPECT_TRUE(RunScript("resultQueue.pop()", &script_result)); 245 EXPECT_TRUE(RunScript("resultQueue.pop()", &script_result));
246 return script_result;
247 }
248
249 bool BackgroundSyncBrowserTest::PopConsole(const std::string& expected_msg) {
250 std::string script_result = PopConsoleString();
239 return script_result == expected_msg; 251 return script_result == expected_msg;
240 } 252 }
241 253
242 bool BackgroundSyncBrowserTest::RegisterServiceWorker() { 254 bool BackgroundSyncBrowserTest::RegisterServiceWorker() {
243 std::string script_result; 255 std::string script_result;
244 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); 256 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result));
245 return script_result == BuildExpectedResult("service worker", "registered"); 257 return script_result == BuildExpectedResult("service worker", "registered");
246 } 258 }
247 259
248 bool BackgroundSyncBrowserTest::RegisterOneShot(const std::string& tag) { 260 bool BackgroundSyncBrowserTest::RegisterOneShot(const std::string& tag) {
249 std::string script_result; 261 std::string script_result;
250 EXPECT_TRUE( 262 EXPECT_TRUE(
251 RunScript(BuildScriptString("registerOneShot", tag), &script_result)); 263 RunScript(BuildScriptString("registerOneShot", tag), &script_result));
252 return script_result == BuildExpectedResult(tag, "registered"); 264 return script_result == BuildExpectedResult(tag, "registered");
253 } 265 }
254 266
267 bool BackgroundSyncBrowserTest::RegisterOneShotFromServiceWorker(
268 const std::string& tag) {
269 std::string script_result;
270 EXPECT_TRUE(
271 RunScript(BuildScriptString("registerOneShotFromServiceWorker", tag),
272 &script_result));
273 return script_result == BuildExpectedResult(tag, "register sent to SW");
274 }
275
255 bool BackgroundSyncBrowserTest::UnregisterOneShot(const std::string& tag) { 276 bool BackgroundSyncBrowserTest::UnregisterOneShot(const std::string& tag) {
256 std::string script_result; 277 std::string script_result;
257 EXPECT_TRUE( 278 EXPECT_TRUE(
258 RunScript(BuildScriptString("unregisterOneShot", tag), &script_result)); 279 RunScript(BuildScriptString("unregisterOneShot", tag), &script_result));
259 return script_result == BuildExpectedResult(tag, "unregistered"); 280 return script_result == BuildExpectedResult(tag, "unregistered");
260 } 281 }
261 282
262 bool BackgroundSyncBrowserTest::UnregisterOneShotTwice(const std::string& tag) { 283 bool BackgroundSyncBrowserTest::UnregisterOneShotTwice(const std::string& tag) {
263 std::string script_result; 284 std::string script_result;
264 EXPECT_TRUE(RunScript(BuildScriptString("unregisterOneShotTwice", tag), 285 EXPECT_TRUE(RunScript(BuildScriptString("unregisterOneShotTwice", tag),
265 &script_result)); 286 &script_result));
266 return script_result == 287 return script_result ==
267 BuildExpectedResult(tag, "failed to unregister twice"); 288 BuildExpectedResult(tag, "failed to unregister twice");
268 } 289 }
269 290
270 bool BackgroundSyncBrowserTest::GetRegistrationOneShot(const std::string& tag) { 291 bool BackgroundSyncBrowserTest::GetRegistrationOneShot(const std::string& tag) {
271 std::string script_result; 292 std::string script_result;
272 EXPECT_TRUE(RunScript(BuildScriptString("getRegistrationOneShot", tag), 293 EXPECT_TRUE(RunScript(BuildScriptString("getRegistrationOneShot", tag),
273 &script_result)); 294 &script_result));
274 return script_result == BuildExpectedResult(tag, "found"); 295 return script_result == BuildExpectedResult(tag, "found");
275 } 296 }
276 297
298 bool BackgroundSyncBrowserTest::GetRegistrationOneShotFromServiceWorker(
299 const std::string& tag) {
300 std::string script_result;
301 EXPECT_TRUE(RunScript(
302 BuildScriptString("getRegistrationOneShotFromServiceWorker", tag),
303 &script_result));
304 EXPECT_TRUE(script_result == "ok - getRegistration sent to SW");
305
306 return PopConsole(BuildExpectedResult(tag, "found"));
307 }
308
309 bool BackgroundSyncBrowserTest::MatchRegistrations(
310 const std::string& script_result,
311 const std::vector<std::string>& expected_tags) {
312 EXPECT_TRUE(base::StartsWith(script_result, kSuccessfulOperationPrefix,
313 base::CompareCase::INSENSITIVE_ASCII));
314 std::string tag_string =
315 script_result.substr(strlen(kSuccessfulOperationPrefix));
316 std::vector<std::string> result_tags = base::SplitString(
317 tag_string, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
318
319 return std::set<std::string>(expected_tags.begin(), expected_tags.end()) ==
320 std::set<std::string>(result_tags.begin(), result_tags.end());
321 }
322
277 bool BackgroundSyncBrowserTest::GetRegistrationsOneShot( 323 bool BackgroundSyncBrowserTest::GetRegistrationsOneShot(
278 const std::vector<std::string>& expected_tags) { 324 const std::vector<std::string>& expected_tags) {
279 std::string script_result; 325 std::string script_result;
280 EXPECT_TRUE(RunScript("getRegistrationsOneShot()", &script_result)); 326 EXPECT_TRUE(RunScript("getRegistrationsOneShot()", &script_result));
281 327
282 EXPECT_TRUE(base::StartsWith(script_result, kSuccessfulOperationPrefix, 328 return MatchRegistrations(script_result, expected_tags);
283 base::CompareCase::INSENSITIVE_ASCII)); 329 }
284 script_result = script_result.substr(strlen(kSuccessfulOperationPrefix));
285 std::vector<std::string> result_tags = base::SplitString(
286 script_result, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
287 330
288 return std::set<std::string>(expected_tags.begin(), expected_tags.end()) == 331 bool BackgroundSyncBrowserTest::GetRegistrationsOneShotFromServiceWorker(
289 std::set<std::string>(result_tags.begin(), result_tags.end()); 332 const std::vector<std::string>& expected_tags) {
333 std::string script_result;
334 EXPECT_TRUE(
335 RunScript("getRegistrationsOneShotFromServiceWorker()", &script_result));
336 EXPECT_TRUE(script_result == "ok - getRegistrations sent to SW");
337
338 return MatchRegistrations(PopConsoleString(), expected_tags);
290 } 339 }
291 340
292 bool BackgroundSyncBrowserTest::CompleteDelayedOneShot() { 341 bool BackgroundSyncBrowserTest::CompleteDelayedOneShot() {
293 std::string script_result; 342 std::string script_result;
294 EXPECT_TRUE(RunScript("completeDelayedOneShot()", &script_result)); 343 EXPECT_TRUE(RunScript("completeDelayedOneShot()", &script_result));
295 return script_result == BuildExpectedResult("delay", "completing"); 344 return script_result == BuildExpectedResult("delay", "completing");
296 } 345 }
297 346
298 bool BackgroundSyncBrowserTest::RejectDelayedOneShot() { 347 bool BackgroundSyncBrowserTest::RejectDelayedOneShot() {
299 std::string script_result; 348 std::string script_result;
(...skipping 24 matching lines...) Expand all
324 373
325 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotFires) { 374 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotFires) {
326 EXPECT_TRUE(RegisterServiceWorker()); 375 EXPECT_TRUE(RegisterServiceWorker());
327 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. 376 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
328 377
329 EXPECT_TRUE(RegisterOneShot("foo")); 378 EXPECT_TRUE(RegisterOneShot("foo"));
330 EXPECT_TRUE(PopConsole("foo fired")); 379 EXPECT_TRUE(PopConsole("foo fired"));
331 EXPECT_FALSE(GetRegistrationOneShot("foo")); 380 EXPECT_FALSE(GetRegistrationOneShot("foo"));
332 } 381 }
333 382
383 // Verify that Register works in a service worker
384 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest,
385 OneShotFromServiceWorkerFires) {
386 EXPECT_TRUE(RegisterServiceWorker());
387 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
388
389 EXPECT_TRUE(RegisterOneShotFromServiceWorker("foo_sw"));
390 EXPECT_TRUE(PopConsole("ok - foo_sw registered in SW"));
391 EXPECT_TRUE(PopConsole("foo_sw fired"));
392 EXPECT_FALSE(GetRegistrationOneShot("foo_sw"));
393 }
394
334 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotDelaysForNetwork) { 395 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotDelaysForNetwork) {
335 EXPECT_TRUE(RegisterServiceWorker()); 396 EXPECT_TRUE(RegisterServiceWorker());
336 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. 397 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
337 398
338 // Prevent firing by going offline. 399 // Prevent firing by going offline.
339 SetOnline(false); 400 SetOnline(false);
340 EXPECT_TRUE(RegisterOneShot("foo")); 401 EXPECT_TRUE(RegisterOneShot("foo"));
341 EXPECT_TRUE(GetRegistrationOneShot("foo")); 402 EXPECT_TRUE(GetRegistrationOneShot("foo"));
342 EXPECT_TRUE(OneShotPending("foo")); 403 EXPECT_TRUE(OneShotPending("foo"));
343 404
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 SetOnline(false); 489 SetOnline(false);
429 registered_tags.push_back("foo"); 490 registered_tags.push_back("foo");
430 registered_tags.push_back("bar"); 491 registered_tags.push_back("bar");
431 492
432 for (const std::string& tag : registered_tags) 493 for (const std::string& tag : registered_tags)
433 EXPECT_TRUE(RegisterOneShot(tag)); 494 EXPECT_TRUE(RegisterOneShot(tag));
434 495
435 EXPECT_TRUE(GetRegistrationsOneShot(registered_tags)); 496 EXPECT_TRUE(GetRegistrationsOneShot(registered_tags));
436 } 497 }
437 498
499 // Verify that GetRegistrations works in a service worker
500 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest,
501 GetRegistrationsFromServiceWorker) {
502 EXPECT_TRUE(RegisterServiceWorker());
503 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
504
505 std::vector<std::string> registered_tags;
506 EXPECT_TRUE(GetRegistrationsOneShot(registered_tags));
507
508 SetOnline(false);
509 registered_tags.push_back("foo_sw");
510 registered_tags.push_back("bar_sw");
511
512 for (const std::string& tag : registered_tags) {
513 EXPECT_TRUE(RegisterOneShotFromServiceWorker(tag));
514 EXPECT_TRUE(PopConsole(BuildExpectedResult(tag, "registered in SW")));
515 }
516
517 EXPECT_TRUE(GetRegistrationsOneShotFromServiceWorker(registered_tags));
518 }
519
520 // Verify that GetRegistration works in a service worker
521 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest,
522 GetRegistrationFromServiceWorker) {
523 EXPECT_TRUE(RegisterServiceWorker());
524 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
525
526 std::vector<std::string> registered_tags;
527 EXPECT_TRUE(GetRegistrationsOneShot(registered_tags));
528
529 SetOnline(false);
530
531 EXPECT_TRUE(RegisterOneShotFromServiceWorker("foo_sw"));
532 EXPECT_TRUE(PopConsole("ok - foo_sw registered in SW"));
533 EXPECT_TRUE(GetRegistrationOneShotFromServiceWorker("foo_sw"));
534 }
535
438 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, Unregister) { 536 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, Unregister) {
439 EXPECT_TRUE(RegisterServiceWorker()); 537 EXPECT_TRUE(RegisterServiceWorker());
440 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. 538 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
441 539
442 SetOnline(false); 540 SetOnline(false);
443 EXPECT_TRUE(RegisterOneShot("foo")); 541 EXPECT_TRUE(RegisterOneShot("foo"));
444 EXPECT_TRUE(UnregisterOneShot("foo")); 542 EXPECT_TRUE(UnregisterOneShot("foo"));
445 EXPECT_FALSE(GetRegistrationOneShot("foo")); 543 EXPECT_FALSE(GetRegistrationOneShot("foo"));
446 } 544 }
447 545
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 EXPECT_TRUE(RegisterOneShot("delay")); 627 EXPECT_TRUE(RegisterOneShot("delay"));
530 EXPECT_FALSE(OneShotPending("delay")); 628 EXPECT_FALSE(OneShotPending("delay"));
531 EXPECT_TRUE(StoreRegistrationOneShot("delay")); 629 EXPECT_TRUE(StoreRegistrationOneShot("delay"));
532 630
533 EXPECT_TRUE(RejectDelayedOneShot()); 631 EXPECT_TRUE(RejectDelayedOneShot());
534 EXPECT_TRUE(PopConsole("ok - delay rejected")); 632 EXPECT_TRUE(PopConsole("ok - delay rejected"));
535 EXPECT_TRUE(NotifyWhenDoneImmediateOneShot("ok - delay result: false")); 633 EXPECT_TRUE(NotifyWhenDoneImmediateOneShot("ok - delay result: false"));
536 } 634 }
537 635
538 } // namespace content 636 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/service_worker/service_worker_context_core.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698