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

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: Add browser tests 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
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 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 return content::ExecuteScriptAndExtractString(shell_->web_contents(), 147 return content::ExecuteScriptAndExtractString(shell_->web_contents(),
148 script, result); 148 script, result);
149 } 149 }
150 150
151 void SetOnline(bool online); 151 void SetOnline(bool online);
152 152
153 // Returns true if the one-shot sync with tag is currently pending. Fails 153 // Returns true if the one-shot sync with tag is currently pending. Fails
154 // (assertion failure) if the tag isn't registered. 154 // (assertion failure) if the tag isn't registered.
155 bool OneShotPending(const std::string& tag); 155 bool OneShotPending(const std::string& tag);
156 156
157 std::string PopConsoleString();
157 bool PopConsole(const std::string& expected_msg); 158 bool PopConsole(const std::string& expected_msg);
158 bool RegisterServiceWorker(); 159 bool RegisterServiceWorker();
159 bool RegisterOneShot(const std::string& tag); 160 bool RegisterOneShot(const std::string& tag);
161 bool RegisterOneShotFromServiceWorker(const std::string& tag);
160 bool UnregisterOneShot(const std::string& tag); 162 bool UnregisterOneShot(const std::string& tag);
161 bool UnregisterOneShotTwice(const std::string& tag); 163 bool UnregisterOneShotTwice(const std::string& tag);
162 bool GetRegistrationOneShot(const std::string& tag); 164 bool GetRegistrationOneShot(const std::string& tag);
165 bool GetRegistrationOneShotFromServiceWorker(const std::string& tag);
166 bool MatchRegistrations(const std::string& script_result,
167 const std::vector<std::string>& expected_tags);
163 bool GetRegistrationsOneShot(const std::vector<std::string>& expected_tags); 168 bool GetRegistrationsOneShot(const std::vector<std::string>& expected_tags);
169 bool GetRegistrationsOneShotFromServiceWorker(
170 const std::vector<std::string>& expected_tags);
164 bool CompleteDelayedOneShot(); 171 bool CompleteDelayedOneShot();
165 bool RejectDelayedOneShot(); 172 bool RejectDelayedOneShot();
166 bool NotifyWhenDoneOneShot(const std::string& tag); 173 bool NotifyWhenDoneOneShot(const std::string& tag);
167 bool NotifyWhenDoneImmediateOneShot(const std::string& expected_msg); 174 bool NotifyWhenDoneImmediateOneShot(const std::string& expected_msg);
168 bool StoreRegistrationOneShot(const std::string& tag); 175 bool StoreRegistrationOneShot(const std::string& tag);
169 176
170 private: 177 private:
171 scoped_ptr<net::SpawnedTestServer> https_server_; 178 scoped_ptr<net::SpawnedTestServer> https_server_;
172 Shell* shell_ = nullptr; 179 Shell* shell_ = nullptr;
173 180
(...skipping 30 matching lines...) Expand all
204 BrowserThread::IO, FROM_HERE, 211 BrowserThread::IO, FROM_HERE,
205 base::Bind(&OneShotPendingOnIOThread, make_scoped_refptr(sync_context), 212 base::Bind(&OneShotPendingOnIOThread, make_scoped_refptr(sync_context),
206 make_scoped_refptr(service_worker_context), tag, 213 make_scoped_refptr(service_worker_context), tag,
207 https_server_->GetURL(kDefaultTestURL), callback)); 214 https_server_->GetURL(kDefaultTestURL), callback));
208 215
209 run_loop.Run(); 216 run_loop.Run();
210 217
211 return is_pending; 218 return is_pending;
212 } 219 }
213 220
214 bool BackgroundSyncBrowserTest::PopConsole(const std::string& expected_msg) { 221 std::string BackgroundSyncBrowserTest::PopConsoleString() {
215 std::string script_result; 222 std::string script_result;
216 EXPECT_TRUE(RunScript("resultQueue.pop()", &script_result)); 223 EXPECT_TRUE(RunScript("resultQueue.pop()", &script_result));
224 return script_result;
225 }
226
227 bool BackgroundSyncBrowserTest::PopConsole(const std::string& expected_msg) {
228 std::string script_result = PopConsoleString();
217 return script_result == expected_msg; 229 return script_result == expected_msg;
218 } 230 }
219 231
220 bool BackgroundSyncBrowserTest::RegisterServiceWorker() { 232 bool BackgroundSyncBrowserTest::RegisterServiceWorker() {
221 std::string script_result; 233 std::string script_result;
222 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); 234 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result));
223 return script_result == BuildExpectedResult("service worker", "registered"); 235 return script_result == BuildExpectedResult("service worker", "registered");
224 } 236 }
225 237
226 bool BackgroundSyncBrowserTest::RegisterOneShot(const std::string& tag) { 238 bool BackgroundSyncBrowserTest::RegisterOneShot(const std::string& tag) {
227 std::string script_result; 239 std::string script_result;
228 EXPECT_TRUE( 240 EXPECT_TRUE(
229 RunScript(BuildScriptString("registerOneShot", tag), &script_result)); 241 RunScript(BuildScriptString("registerOneShot", tag), &script_result));
230 return script_result == BuildExpectedResult(tag, "registered"); 242 return script_result == BuildExpectedResult(tag, "registered");
231 } 243 }
232 244
245 bool BackgroundSyncBrowserTest::RegisterOneShotFromServiceWorker(
246 const std::string& tag) {
247 std::string script_result;
248 EXPECT_TRUE(
249 RunScript(BuildScriptString("registerOneShotFromServiceWorker", tag),
250 &script_result));
251 return script_result == BuildExpectedResult(tag, "register sent to SW");
252 }
253
233 bool BackgroundSyncBrowserTest::UnregisterOneShot(const std::string& tag) { 254 bool BackgroundSyncBrowserTest::UnregisterOneShot(const std::string& tag) {
234 std::string script_result; 255 std::string script_result;
235 EXPECT_TRUE( 256 EXPECT_TRUE(
236 RunScript(BuildScriptString("unregisterOneShot", tag), &script_result)); 257 RunScript(BuildScriptString("unregisterOneShot", tag), &script_result));
237 return script_result == BuildExpectedResult(tag, "unregistered"); 258 return script_result == BuildExpectedResult(tag, "unregistered");
238 } 259 }
239 260
240 bool BackgroundSyncBrowserTest::UnregisterOneShotTwice(const std::string& tag) { 261 bool BackgroundSyncBrowserTest::UnregisterOneShotTwice(const std::string& tag) {
241 std::string script_result; 262 std::string script_result;
242 EXPECT_TRUE(RunScript(BuildScriptString("unregisterOneShotTwice", tag), 263 EXPECT_TRUE(RunScript(BuildScriptString("unregisterOneShotTwice", tag),
243 &script_result)); 264 &script_result));
244 return script_result == 265 return script_result ==
245 BuildExpectedResult(tag, "failed to unregister twice"); 266 BuildExpectedResult(tag, "failed to unregister twice");
246 } 267 }
247 268
248 bool BackgroundSyncBrowserTest::GetRegistrationOneShot(const std::string& tag) { 269 bool BackgroundSyncBrowserTest::GetRegistrationOneShot(const std::string& tag) {
249 std::string script_result; 270 std::string script_result;
250 EXPECT_TRUE(RunScript(BuildScriptString("getRegistrationOneShot", tag), 271 EXPECT_TRUE(RunScript(BuildScriptString("getRegistrationOneShot", tag),
251 &script_result)); 272 &script_result));
252 return script_result == BuildExpectedResult(tag, "found"); 273 return script_result == BuildExpectedResult(tag, "found");
253 } 274 }
254 275
276 bool BackgroundSyncBrowserTest::GetRegistrationOneShotFromServiceWorker(
277 const std::string& tag) {
278 std::string script_result;
279 EXPECT_TRUE(RunScript(
280 BuildScriptString("getRegistrationOneShotFromServiceWorker", tag),
281 &script_result));
282 EXPECT_TRUE(script_result == "ok - getRegistration sent to SW");
283
284 return PopConsole(BuildExpectedResult(tag, "found"));
285 }
286
287 bool BackgroundSyncBrowserTest::MatchRegistrations(
288 const std::string& script_result,
289 const std::vector<std::string>& expected_tags) {
290 EXPECT_TRUE(base::StartsWith(script_result, kSuccessfulOperationPrefix,
291 base::CompareCase::INSENSITIVE_ASCII));
292 std::string tag_string =
293 script_result.substr(strlen(kSuccessfulOperationPrefix));
294 std::vector<std::string> result_tags = base::SplitString(
295 tag_string, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
296
297 return std::set<std::string>(expected_tags.begin(), expected_tags.end()) ==
298 std::set<std::string>(result_tags.begin(), result_tags.end());
299 }
300
255 bool BackgroundSyncBrowserTest::GetRegistrationsOneShot( 301 bool BackgroundSyncBrowserTest::GetRegistrationsOneShot(
256 const std::vector<std::string>& expected_tags) { 302 const std::vector<std::string>& expected_tags) {
257 std::string script_result; 303 std::string script_result;
258 EXPECT_TRUE(RunScript("getRegistrationsOneShot()", &script_result)); 304 EXPECT_TRUE(RunScript("getRegistrationsOneShot()", &script_result));
259 305
260 EXPECT_TRUE(base::StartsWith(script_result, kSuccessfulOperationPrefix, 306 return MatchRegistrations(script_result, expected_tags);
261 base::CompareCase::INSENSITIVE_ASCII)); 307 }
262 script_result = script_result.substr(strlen(kSuccessfulOperationPrefix));
263 std::vector<std::string> result_tags = base::SplitString(
264 script_result, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
265 308
266 return std::set<std::string>(expected_tags.begin(), expected_tags.end()) == 309 bool BackgroundSyncBrowserTest::GetRegistrationsOneShotFromServiceWorker(
267 std::set<std::string>(result_tags.begin(), result_tags.end()); 310 const std::vector<std::string>& expected_tags) {
311 std::string script_result;
312 EXPECT_TRUE(
313 RunScript("getRegistrationsOneShotFromServiceWorker()", &script_result));
314 EXPECT_TRUE(script_result == "ok - getRegistrations sent to SW");
315
316 return MatchRegistrations(PopConsoleString(), expected_tags);
268 } 317 }
269 318
270 bool BackgroundSyncBrowserTest::CompleteDelayedOneShot() { 319 bool BackgroundSyncBrowserTest::CompleteDelayedOneShot() {
271 std::string script_result; 320 std::string script_result;
272 EXPECT_TRUE(RunScript("completeDelayedOneShot()", &script_result)); 321 EXPECT_TRUE(RunScript("completeDelayedOneShot()", &script_result));
273 return script_result == BuildExpectedResult("delay", "completing"); 322 return script_result == BuildExpectedResult("delay", "completing");
274 } 323 }
275 324
276 bool BackgroundSyncBrowserTest::RejectDelayedOneShot() { 325 bool BackgroundSyncBrowserTest::RejectDelayedOneShot() {
277 std::string script_result; 326 std::string script_result;
(...skipping 24 matching lines...) Expand all
302 351
303 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotFires) { 352 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotFires) {
304 EXPECT_TRUE(RegisterServiceWorker()); 353 EXPECT_TRUE(RegisterServiceWorker());
305 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. 354 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
306 355
307 EXPECT_TRUE(RegisterOneShot("foo")); 356 EXPECT_TRUE(RegisterOneShot("foo"));
308 EXPECT_TRUE(PopConsole("foo fired")); 357 EXPECT_TRUE(PopConsole("foo fired"));
309 EXPECT_FALSE(GetRegistrationOneShot("foo")); 358 EXPECT_FALSE(GetRegistrationOneShot("foo"));
310 } 359 }
311 360
361 // Verify that Register works in a service worker
362 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest,
363 OneShotFromServiceWorkerFires) {
364 EXPECT_TRUE(RegisterServiceWorker());
365 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
366
367 EXPECT_TRUE(RegisterOneShotFromServiceWorker("foo_sw"));
368 EXPECT_TRUE(PopConsole("ok - foo_sw registered in SW"));
369 EXPECT_TRUE(PopConsole("foo_sw fired"));
370 EXPECT_FALSE(GetRegistrationOneShot("foo_sw"));
371 }
372
312 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotDelaysForNetwork) { 373 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotDelaysForNetwork) {
313 EXPECT_TRUE(RegisterServiceWorker()); 374 EXPECT_TRUE(RegisterServiceWorker());
314 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. 375 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
315 376
316 // Prevent firing by going offline. 377 // Prevent firing by going offline.
317 SetOnline(false); 378 SetOnline(false);
318 EXPECT_TRUE(RegisterOneShot("foo")); 379 EXPECT_TRUE(RegisterOneShot("foo"));
319 EXPECT_TRUE(GetRegistrationOneShot("foo")); 380 EXPECT_TRUE(GetRegistrationOneShot("foo"));
320 EXPECT_TRUE(OneShotPending("foo")); 381 EXPECT_TRUE(OneShotPending("foo"));
321 382
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 SetOnline(false); 467 SetOnline(false);
407 registered_tags.push_back("foo"); 468 registered_tags.push_back("foo");
408 registered_tags.push_back("bar"); 469 registered_tags.push_back("bar");
409 470
410 for (const std::string& tag : registered_tags) 471 for (const std::string& tag : registered_tags)
411 EXPECT_TRUE(RegisterOneShot(tag)); 472 EXPECT_TRUE(RegisterOneShot(tag));
412 473
413 EXPECT_TRUE(GetRegistrationsOneShot(registered_tags)); 474 EXPECT_TRUE(GetRegistrationsOneShot(registered_tags));
414 } 475 }
415 476
477 // Verify that GetRegistrations works in a service worker
478 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest,
479 GetRegistrationsFromServiceWorker) {
480 EXPECT_TRUE(RegisterServiceWorker());
481 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
482
483 std::vector<std::string> registered_tags;
484 EXPECT_TRUE(GetRegistrationsOneShot(registered_tags));
485
486 SetOnline(false);
487 registered_tags.push_back("foo_sw");
488 registered_tags.push_back("bar_sw");
489
490 for (const std::string& tag : registered_tags) {
491 EXPECT_TRUE(RegisterOneShotFromServiceWorker(tag));
492 EXPECT_TRUE(PopConsole(BuildExpectedResult(tag, "registered in SW")));
493 }
494
495 EXPECT_TRUE(GetRegistrationsOneShotFromServiceWorker(registered_tags));
496 }
497
498 // Verify that GetRegistration works in a service worker
499 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest,
500 GetRegistrationFromServiceWorker) {
501 EXPECT_TRUE(RegisterServiceWorker());
502 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
503
504 std::vector<std::string> registered_tags;
505 EXPECT_TRUE(GetRegistrationsOneShot(registered_tags));
506
507 SetOnline(false);
508
509 EXPECT_TRUE(RegisterOneShotFromServiceWorker("foo_sw"));
510 EXPECT_TRUE(PopConsole("ok - foo_sw registered in SW"));
511 EXPECT_TRUE(GetRegistrationOneShotFromServiceWorker("foo_sw"));
512 }
513
416 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, Unregister) { 514 IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, Unregister) {
417 EXPECT_TRUE(RegisterServiceWorker()); 515 EXPECT_TRUE(RegisterServiceWorker());
418 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. 516 EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page.
419 517
420 SetOnline(false); 518 SetOnline(false);
421 EXPECT_TRUE(RegisterOneShot("foo")); 519 EXPECT_TRUE(RegisterOneShot("foo"));
422 EXPECT_TRUE(UnregisterOneShot("foo")); 520 EXPECT_TRUE(UnregisterOneShot("foo"));
423 EXPECT_FALSE(GetRegistrationOneShot("foo")); 521 EXPECT_FALSE(GetRegistrationOneShot("foo"));
424 } 522 }
425 523
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 EXPECT_TRUE(StoreRegistrationOneShot("delay")); 607 EXPECT_TRUE(StoreRegistrationOneShot("delay"));
510 608
511 EXPECT_TRUE(RejectDelayedOneShot()); 609 EXPECT_TRUE(RejectDelayedOneShot());
512 EXPECT_TRUE(PopConsole("ok - delay rejected")); 610 EXPECT_TRUE(PopConsole("ok - delay rejected"));
513 EXPECT_TRUE(NotifyWhenDoneImmediateOneShot("ok - delay result: false")); 611 EXPECT_TRUE(NotifyWhenDoneImmediateOneShot("ok - delay result: false"));
514 } 612 }
515 613
516 } // namespace 614 } // namespace
517 615
518 } // namespace content 616 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698