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

Side by Side Diff: chrome/browser/component_updater/test/component_updater_service_unittest.cc

Issue 251403002: Implement an observer for the component updater. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add asserts. 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "chrome/browser/component_updater/test/component_updater_service_unitte st.h" 5 #include "chrome/browser/component_updater/test/component_updater_service_unitte st.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 17 matching lines...) Expand all
28 using ::testing::_; 28 using ::testing::_;
29 using ::testing::InSequence; 29 using ::testing::InSequence;
30 using ::testing::Mock; 30 using ::testing::Mock;
31 31
32 namespace component_updater { 32 namespace component_updater {
33 33
34 #define POST_INTERCEPT_SCHEME "https" 34 #define POST_INTERCEPT_SCHEME "https"
35 #define POST_INTERCEPT_HOSTNAME "localhost2" 35 #define POST_INTERCEPT_HOSTNAME "localhost2"
36 #define POST_INTERCEPT_PATH "/update2" 36 #define POST_INTERCEPT_PATH "/update2"
37 37
38 MockComponentObserver::MockComponentObserver() { 38 MockServiceObserver::MockServiceObserver() {
39 } 39 }
40 40
41 MockComponentObserver::~MockComponentObserver() { 41 MockServiceObserver::~MockServiceObserver() {
42 } 42 }
43 43
44 bool PartialMatch::Match(const std::string& actual) const { 44 bool PartialMatch::Match(const std::string& actual) const {
45 return actual.find(expected_) != std::string::npos; 45 return actual.find(expected_) != std::string::npos;
46 } 46 }
47 47
48 TestConfigurator::TestConfigurator() 48 TestConfigurator::TestConfigurator()
49 : initial_time_(0), 49 : initial_time_(0),
50 times_(1), 50 times_(1),
51 recheck_time_(0), 51 recheck_time_(0),
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 TEST_F(ComponentUpdaterTest, StartStop) { 247 TEST_F(ComponentUpdaterTest, StartStop) {
248 component_updater()->Start(); 248 component_updater()->Start();
249 RunThreadsUntilIdle(); 249 RunThreadsUntilIdle();
250 component_updater()->Stop(); 250 component_updater()->Stop();
251 } 251 }
252 252
253 // Verify that when the server has no updates, we go back to sleep and 253 // Verify that when the server has no updates, we go back to sleep and
254 // the COMPONENT_UPDATER_STARTED and COMPONENT_UPDATER_SLEEPING notifications 254 // the COMPONENT_UPDATER_STARTED and COMPONENT_UPDATER_SLEEPING notifications
255 // are generated. No pings are sent. 255 // are generated. No pings are sent.
256 TEST_F(ComponentUpdaterTest, CheckCrxSleep) { 256 TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
257 MockComponentObserver observer; 257 MockServiceObserver observer;
258 258
259 EXPECT_CALL(observer, 259 EXPECT_CALL(observer,
260 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 260 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
261 .Times(1); 261 .Times(1);
262 EXPECT_CALL(observer, 262 EXPECT_CALL(observer,
263 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 263 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
264 .Times(2); 264 .Times(2);
265 EXPECT_CALL(observer, 265 EXPECT_CALL(observer,
266 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 266 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
267 "abagagagagagagagagagagagagagagag"))
267 .Times(2); 268 .Times(2);
268 269
269 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 270 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
270 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 271 "updatecheck"), test_file("updatecheck_reply_1.xml")));
271 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 272 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
272 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 273 "updatecheck"), test_file("updatecheck_reply_1.xml")));
273 274
274 TestInstaller installer; 275 TestInstaller installer;
275 CrxComponent com; 276 CrxComponent com;
276 com.observer = &observer; 277 component_updater()->AddObserver(&observer);
277 EXPECT_EQ(ComponentUpdateService::kOk, 278 EXPECT_EQ(ComponentUpdateService::kOk,
278 RegisterComponent(&com, 279 RegisterComponent(&com,
279 kTestComponent_abag, 280 kTestComponent_abag,
280 Version("1.1"), 281 Version("1.1"),
281 &installer)); 282 &installer));
282 283
283 // We loop twice, but there are no updates so we expect two sleep messages. 284 // We loop twice, but there are no updates so we expect two sleep messages.
284 test_configurator()->SetLoopCount(2); 285 test_configurator()->SetLoopCount(2);
285 component_updater()->Start(); 286 component_updater()->Start();
286 RunThreads(); 287 RunThreads();
(...skipping 14 matching lines...) Expand all
301 EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find( 302 EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
302 "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">" 303 "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
303 "<updatecheck /></app>")) 304 "<updatecheck /></app>"))
304 << post_interceptor_->GetRequestsAsString(); 305 << post_interceptor_->GetRequestsAsString();
305 306
306 component_updater()->Stop(); 307 component_updater()->Stop();
307 308
308 // Loop twice again but this case we simulate a server error by returning 309 // Loop twice again but this case we simulate a server error by returning
309 // an empty file. Expect the behavior of the service to be the same as before. 310 // an empty file. Expect the behavior of the service to be the same as before.
310 EXPECT_CALL(observer, 311 EXPECT_CALL(observer,
311 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 312 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
312 .Times(1); 313 .Times(1);
313 EXPECT_CALL(observer, 314 EXPECT_CALL(observer,
314 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 315 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
315 .Times(2); 316 .Times(2);
316 EXPECT_CALL(observer, 317 EXPECT_CALL(observer,
317 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 318 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
319 "abagagagagagagagagagagagagagagag"))
318 .Times(2); 320 .Times(2);
319 321
320 post_interceptor_->Reset(); 322 post_interceptor_->Reset();
321 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 323 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
322 "updatecheck"), test_file("updatecheck_reply_empty"))); 324 "updatecheck"), test_file("updatecheck_reply_empty")));
323 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 325 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
324 "updatecheck"), test_file("updatecheck_reply_empty"))); 326 "updatecheck"), test_file("updatecheck_reply_empty")));
325 327
326 test_configurator()->SetLoopCount(2); 328 test_configurator()->SetLoopCount(2);
327 component_updater()->Start(); 329 component_updater()->Start();
(...skipping 21 matching lines...) Expand all
349 // Verify that we can check for updates and install one component. Besides 351 // Verify that we can check for updates and install one component. Besides
350 // the notifications above COMPONENT_UPDATE_FOUND and COMPONENT_UPDATE_READY 352 // the notifications above COMPONENT_UPDATE_FOUND and COMPONENT_UPDATE_READY
351 // should have been fired. We do two loops so the second time around there 353 // should have been fired. We do two loops so the second time around there
352 // should be nothing left to do. 354 // should be nothing left to do.
353 // We also check that the following network requests are issued: 355 // We also check that the following network requests are issued:
354 // 1- update check 356 // 1- update check
355 // 2- download crx 357 // 2- download crx
356 // 3- ping 358 // 3- ping
357 // 4- second update check. 359 // 4- second update check.
358 TEST_F(ComponentUpdaterTest, InstallCrx) { 360 TEST_F(ComponentUpdaterTest, InstallCrx) {
359 MockComponentObserver observer1; 361 MockServiceObserver observer;
360 { 362 {
361 InSequence seq; 363 InSequence seq;
362 EXPECT_CALL(observer1, 364 EXPECT_CALL(observer,
363 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 365 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
364 .Times(1); 366 .Times(1);
365 EXPECT_CALL(observer1, 367 EXPECT_CALL(observer,
366 OnEvent(ComponentObserver::COMPONENT_UPDATE_FOUND, 0)) 368 OnEvent(ServiceObserver::COMPONENT_UPDATE_FOUND,
369 "jebgalgnebhfojomionfpkfelancnnkf"))
367 .Times(1); 370 .Times(1);
368 EXPECT_CALL(observer1, 371 EXPECT_CALL(observer,
369 OnEvent(ComponentObserver::COMPONENT_UPDATE_READY, 0)) 372 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
373 "abagagagagagagagagagagagagagagag"))
370 .Times(1); 374 .Times(1);
371 EXPECT_CALL(observer1, 375 EXPECT_CALL(observer,
372 OnEvent(ComponentObserver::COMPONENT_UPDATED, 0)) 376 OnEvent(ServiceObserver::COMPONENT_UPDATE_READY,
377 "jebgalgnebhfojomionfpkfelancnnkf"))
373 .Times(1); 378 .Times(1);
374 EXPECT_CALL(observer1, 379 EXPECT_CALL(observer,
375 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 380 OnEvent(ServiceObserver::COMPONENT_UPDATED,
381 "jebgalgnebhfojomionfpkfelancnnkf"))
376 .Times(1); 382 .Times(1);
377 EXPECT_CALL(observer1, 383 EXPECT_CALL(observer,
378 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 384 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
379 .Times(1); 385 .Times(1);
380 EXPECT_CALL(observer1, 386 EXPECT_CALL(observer,
381 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 387 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
388 "jebgalgnebhfojomionfpkfelancnnkf"))
389 .Times(1);
390 EXPECT_CALL(observer,
391 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
392 "abagagagagagagagagagagagagagagag"))
393 .Times(1);
394 EXPECT_CALL(observer,
395 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
382 .Times(1); 396 .Times(1);
383 } 397 }
384 398
385 MockComponentObserver observer2;
386 {
387 InSequence seq;
388 EXPECT_CALL(observer2,
389 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
390 .Times(1);
391 EXPECT_CALL(observer2,
392 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
393 .Times(1);
394 EXPECT_CALL(observer2,
395 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
396 .Times(1);
397 EXPECT_CALL(observer2,
398 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
399 .Times(1);
400 EXPECT_CALL(observer2,
401 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
402 .Times(1);
403 }
404
405 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 399 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
406 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 400 "updatecheck"), test_file("updatecheck_reply_1.xml")));
407 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event"))); 401 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
408 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 402 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
409 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 403 "updatecheck"), test_file("updatecheck_reply_1.xml")));
410 404
411 get_interceptor_->SetResponse( 405 get_interceptor_->SetResponse(
412 GURL(expected_crx_url), 406 GURL(expected_crx_url),
413 test_file("jebgalgnebhfojomionfpkfelancnnkf.crx")); 407 test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
414 408
409 component_updater()->AddObserver(&observer);
410
415 TestInstaller installer1; 411 TestInstaller installer1;
416 CrxComponent com1; 412 CrxComponent com1;
417 com1.observer = &observer1;
418 RegisterComponent(&com1, kTestComponent_jebg, Version("0.9"), &installer1); 413 RegisterComponent(&com1, kTestComponent_jebg, Version("0.9"), &installer1);
419 TestInstaller installer2; 414 TestInstaller installer2;
420 CrxComponent com2; 415 CrxComponent com2;
421 com2.observer = &observer2;
422 RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2); 416 RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2);
423 417
424 test_configurator()->SetLoopCount(2); 418 test_configurator()->SetLoopCount(2);
425 component_updater()->Start(); 419 component_updater()->Start();
426 RunThreads(); 420 RunThreads();
427 421
428 EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->error()); 422 EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->error());
429 EXPECT_EQ(1, static_cast<TestInstaller*>(com1.installer)->install_count()); 423 EXPECT_EQ(1, static_cast<TestInstaller*>(com1.installer)->install_count());
430 EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error()); 424 EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
431 EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count()); 425 EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count());
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 component_updater()->Stop(); 524 component_updater()->Stop();
531 } 525 }
532 526
533 // Test that a update check due to an on demand call can cause installs. 527 // Test that a update check due to an on demand call can cause installs.
534 // Here is the timeline: 528 // Here is the timeline:
535 // - First loop: we return a reply that indicates no update, so 529 // - First loop: we return a reply that indicates no update, so
536 // nothing happens. 530 // nothing happens.
537 // - We make an on demand call. 531 // - We make an on demand call.
538 // - This triggers a second loop, which has a reply that triggers an install. 532 // - This triggers a second loop, which has a reply that triggers an install.
539 TEST_F(ComponentUpdaterTest, OnDemandUpdate) { 533 TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
540 MockComponentObserver observer1; 534 MockServiceObserver observer;
541 { 535 {
542 InSequence seq; 536 InSequence seq;
543 EXPECT_CALL(observer1, 537 EXPECT_CALL(observer,
544 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 538 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
545 .Times(1); 539 .Times(1);
546 EXPECT_CALL(observer1, 540 EXPECT_CALL(observer,
547 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 541 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
542 "abagagagagagagagagagagagagagagag"))
548 .Times(1); 543 .Times(1);
549 EXPECT_CALL(observer1, 544 EXPECT_CALL(observer,
550 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 545 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
546 "jebgalgnebhfojomionfpkfelancnnkf"))
551 .Times(1); 547 .Times(1);
552 EXPECT_CALL(observer1, 548 EXPECT_CALL(observer,
553 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 549 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
554 .Times(1); 550 .Times(1);
555 EXPECT_CALL(observer1, 551 EXPECT_CALL(observer,
556 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 552 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
557 .Times(1); 553 .Times(1);
558 EXPECT_CALL(observer1, 554 EXPECT_CALL(observer,
559 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 555 OnEvent(ServiceObserver::COMPONENT_UPDATE_FOUND,
556 "jebgalgnebhfojomionfpkfelancnnkf"))
557 .Times(1);
558 EXPECT_CALL(observer,
559 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
560 "abagagagagagagagagagagagagagagag"))
561 .Times(1);
562 EXPECT_CALL(observer,
563 OnEvent(ServiceObserver::COMPONENT_UPDATE_READY,
564 "jebgalgnebhfojomionfpkfelancnnkf"))
565 .Times(1);
566 EXPECT_CALL(observer,
567 OnEvent(ServiceObserver::COMPONENT_UPDATED,
568 "jebgalgnebhfojomionfpkfelancnnkf"))
569 .Times(1);
570 EXPECT_CALL(observer,
571 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
560 .Times(1); 572 .Times(1);
561 } 573 }
562 574
563 MockComponentObserver observer2;
564 {
565 InSequence seq;
566 EXPECT_CALL(observer2,
567 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
568 .Times(1);
569 EXPECT_CALL(observer2,
570 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
571 .Times(1);
572 EXPECT_CALL(observer2,
573 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
574 .Times(1);
575 EXPECT_CALL(observer2,
576 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
577 .Times(1);
578 EXPECT_CALL(observer2,
579 OnEvent(ComponentObserver::COMPONENT_UPDATE_FOUND, 0))
580 .Times(1);
581 EXPECT_CALL(observer2,
582 OnEvent(ComponentObserver::COMPONENT_UPDATE_READY, 0))
583 .Times(1);
584 EXPECT_CALL(observer2,
585 OnEvent(ComponentObserver::COMPONENT_UPDATED, 0))
586 .Times(1);
587 EXPECT_CALL(observer2,
588 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
589 .Times(1);
590 }
591
592 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 575 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
593 "updatecheck"), test_file("updatecheck_reply_empty"))); 576 "updatecheck"), test_file("updatecheck_reply_empty")));
594 577
595 get_interceptor_->SetResponse( 578 get_interceptor_->SetResponse(
596 GURL(expected_crx_url), 579 GURL(expected_crx_url),
597 test_file("jebgalgnebhfojomionfpkfelancnnkf.crx")); 580 test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
598 581
582 component_updater()->AddObserver(&observer);
583
599 TestInstaller installer1; 584 TestInstaller installer1;
600 CrxComponent com1; 585 CrxComponent com1;
601 com1.observer = &observer1;
602 RegisterComponent(&com1, kTestComponent_abag, Version("2.2"), &installer1); 586 RegisterComponent(&com1, kTestComponent_abag, Version("2.2"), &installer1);
603 TestInstaller installer2; 587 TestInstaller installer2;
604 CrxComponent com2; 588 CrxComponent com2;
605 com2.observer = &observer2;
606 RegisterComponent(&com2, kTestComponent_jebg, Version("0.9"), &installer2); 589 RegisterComponent(&com2, kTestComponent_jebg, Version("0.9"), &installer2);
607 590
608 // No update normally. 591 // No update normally.
609 test_configurator()->SetLoopCount(1); 592 test_configurator()->SetLoopCount(1);
610 component_updater()->Start(); 593 component_updater()->Start();
611 RunThreads(); 594 RunThreads();
612 component_updater()->Stop(); 595 component_updater()->Stop();
613 596
614 EXPECT_EQ(1, post_interceptor_->GetHitCount()) 597 EXPECT_EQ(1, post_interceptor_->GetHitCount())
615 << post_interceptor_->GetRequestsAsString(); 598 << post_interceptor_->GetRequestsAsString();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 test_configurator()->SetOnDemandTime(60 * 60); 646 test_configurator()->SetOnDemandTime(60 * 60);
664 EXPECT_EQ(ComponentUpdateService::kError, 647 EXPECT_EQ(ComponentUpdateService::kError,
665 OnDemandTester::OnDemand(component_updater(), 648 OnDemandTester::OnDemand(component_updater(),
666 GetCrxComponentID(com2))); 649 GetCrxComponentID(com2)));
667 // Okay, now reset to 0 for the other tests. 650 // Okay, now reset to 0 for the other tests.
668 test_configurator()->SetOnDemandTime(0); 651 test_configurator()->SetOnDemandTime(0);
669 component_updater()->Stop(); 652 component_updater()->Stop();
670 653
671 // Test a few error cases. NOTE: We don't have callbacks for 654 // Test a few error cases. NOTE: We don't have callbacks for
672 // when the updates failed yet. 655 // when the updates failed yet.
673 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1)); 656 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer));
674 { 657 {
675 InSequence seq; 658 InSequence seq;
676 EXPECT_CALL(observer1, 659 EXPECT_CALL(observer,
677 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 660 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
678 .Times(1); 661 .Times(1);
679 EXPECT_CALL(observer1, 662 EXPECT_CALL(observer,
680 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 663 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
664 "abagagagagagagagagagagagagagagag"))
681 .Times(1); 665 .Times(1);
682 EXPECT_CALL(observer1, 666 EXPECT_CALL(observer,
683 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 667 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
668 "jebgalgnebhfojomionfpkfelancnnkf"))
684 .Times(1); 669 .Times(1);
685 } 670 EXPECT_CALL(observer,
686 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2)); 671 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
687 {
688 InSequence seq;
689 EXPECT_CALL(observer2,
690 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
691 .Times(1);
692 EXPECT_CALL(observer2,
693 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
694 .Times(1);
695 EXPECT_CALL(observer2,
696 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
697 .Times(1); 672 .Times(1);
698 } 673 }
699 674
700 // No update: error from no server response 675 // No update: error from no server response
701 post_interceptor_->Reset(); 676 post_interceptor_->Reset();
702 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 677 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
703 "updatecheck"), test_file("updatecheck_reply_empty"))); 678 "updatecheck"), test_file("updatecheck_reply_empty")));
704 679
705 test_configurator()->SetLoopCount(1); 680 test_configurator()->SetLoopCount(1);
706 component_updater()->Start(); 681 component_updater()->Start();
707 EXPECT_EQ(ComponentUpdateService::kOk, 682 EXPECT_EQ(ComponentUpdateService::kOk,
708 OnDemandTester::OnDemand(component_updater(), 683 OnDemandTester::OnDemand(component_updater(),
709 GetCrxComponentID(com2))); 684 GetCrxComponentID(com2)));
710 RunThreads(); 685 RunThreads();
711 component_updater()->Stop(); 686 component_updater()->Stop();
712 687
713 EXPECT_EQ(1, post_interceptor_->GetHitCount()) 688 EXPECT_EQ(1, post_interceptor_->GetHitCount())
714 << post_interceptor_->GetRequestsAsString(); 689 << post_interceptor_->GetRequestsAsString();
715 EXPECT_EQ(1, post_interceptor_->GetCount()) 690 EXPECT_EQ(1, post_interceptor_->GetCount())
716 << post_interceptor_->GetRequestsAsString(); 691 << post_interceptor_->GetRequestsAsString();
717 692
718 // No update: already updated to 1.0 so nothing new 693 // No update: already updated to 1.0 so nothing new
719 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1)); 694 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer));
720 { 695 {
721 InSequence seq; 696 InSequence seq;
722 EXPECT_CALL(observer1, 697 EXPECT_CALL(observer,
723 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 698 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
724 .Times(1); 699 .Times(1);
725 EXPECT_CALL(observer1, 700 EXPECT_CALL(observer,
726 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 701 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
702 "jebgalgnebhfojomionfpkfelancnnkf"))
727 .Times(1); 703 .Times(1);
728 EXPECT_CALL(observer1, 704 EXPECT_CALL(observer,
729 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 705 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
706 "abagagagagagagagagagagagagagagag"))
730 .Times(1); 707 .Times(1);
731 } 708 EXPECT_CALL(observer,
732 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2)); 709 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
733 {
734 InSequence seq;
735 EXPECT_CALL(observer2,
736 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
737 .Times(1);
738 EXPECT_CALL(observer2,
739 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
740 .Times(1);
741 EXPECT_CALL(observer2,
742 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
743 .Times(1); 710 .Times(1);
744 } 711 }
745 712
746 post_interceptor_->Reset(); 713 post_interceptor_->Reset();
747 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 714 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
748 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 715 "updatecheck"), test_file("updatecheck_reply_1.xml")));
749 716
750 test_configurator()->SetLoopCount(1); 717 test_configurator()->SetLoopCount(1);
751 component_updater()->Start(); 718 component_updater()->Start();
752 EXPECT_EQ(ComponentUpdateService::kOk, 719 EXPECT_EQ(ComponentUpdateService::kOk,
753 OnDemandTester::OnDemand(component_updater(), 720 OnDemandTester::OnDemand(component_updater(),
754 GetCrxComponentID(com2))); 721 GetCrxComponentID(com2)));
755 RunThreads(); 722 RunThreads();
756 723
757 EXPECT_EQ(1, post_interceptor_->GetHitCount()) 724 EXPECT_EQ(1, post_interceptor_->GetHitCount())
758 << post_interceptor_->GetRequestsAsString(); 725 << post_interceptor_->GetRequestsAsString();
759 EXPECT_EQ(1, post_interceptor_->GetCount()) 726 EXPECT_EQ(1, post_interceptor_->GetCount())
760 << post_interceptor_->GetRequestsAsString(); 727 << post_interceptor_->GetRequestsAsString();
761 728
762 component_updater()->Stop(); 729 component_updater()->Stop();
763 } 730 }
764 731
765 // Verify that a previously registered component can get re-registered 732 // Verify that a previously registered component can get re-registered
766 // with a different version. 733 // with a different version.
767 TEST_F(ComponentUpdaterTest, CheckReRegistration) { 734 TEST_F(ComponentUpdaterTest, CheckReRegistration) {
768 MockComponentObserver observer1; 735 MockServiceObserver observer;
769 { 736 {
770 InSequence seq; 737 InSequence seq;
771 EXPECT_CALL(observer1, 738 EXPECT_CALL(observer,
772 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 739 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
773 .Times(1); 740 .Times(1);
774 EXPECT_CALL(observer1, 741 EXPECT_CALL(observer,
775 OnEvent(ComponentObserver::COMPONENT_UPDATE_FOUND, 0)) 742 OnEvent(ServiceObserver::COMPONENT_UPDATE_FOUND,
743 "jebgalgnebhfojomionfpkfelancnnkf"))
776 .Times(1); 744 .Times(1);
777 EXPECT_CALL(observer1, 745 EXPECT_CALL(observer,
778 OnEvent(ComponentObserver::COMPONENT_UPDATE_READY, 0)) 746 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
747 "abagagagagagagagagagagagagagagag"))
779 .Times(1); 748 .Times(1);
780 EXPECT_CALL(observer1, 749 EXPECT_CALL(observer,
781 OnEvent(ComponentObserver::COMPONENT_UPDATED, 0)) 750 OnEvent(ServiceObserver::COMPONENT_UPDATE_READY,
751 "jebgalgnebhfojomionfpkfelancnnkf"))
782 .Times(1); 752 .Times(1);
783 EXPECT_CALL(observer1, 753 EXPECT_CALL(observer,
784 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 754 OnEvent(ServiceObserver::COMPONENT_UPDATED,
755 "jebgalgnebhfojomionfpkfelancnnkf"))
785 .Times(1); 756 .Times(1);
786 EXPECT_CALL(observer1, 757 EXPECT_CALL(observer,
787 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 758 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
788 .Times(1); 759 .Times(1);
789 EXPECT_CALL(observer1, 760 EXPECT_CALL(observer,
790 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 761 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
762 "jebgalgnebhfojomionfpkfelancnnkf"))
763 .Times(1);
764 EXPECT_CALL(observer,
765 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
766 "abagagagagagagagagagagagagagagag"))
767 .Times(1);
768 EXPECT_CALL(observer,
769 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
791 .Times(1); 770 .Times(1);
792 } 771 }
793 772
794 MockComponentObserver observer2;
795 {
796 InSequence seq;
797 EXPECT_CALL(observer2,
798 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
799 .Times(1);
800 EXPECT_CALL(observer2,
801 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
802 .Times(1);
803 EXPECT_CALL(observer2,
804 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
805 .Times(1);
806 EXPECT_CALL(observer2,
807 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
808 .Times(1);
809 EXPECT_CALL(observer2,
810 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
811 .Times(1);
812 }
813
814 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 773 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
815 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 774 "updatecheck"), test_file("updatecheck_reply_1.xml")));
816 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event"))); 775 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
817 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 776 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
818 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 777 "updatecheck"), test_file("updatecheck_reply_1.xml")));
819 778
820 get_interceptor_->SetResponse( 779 get_interceptor_->SetResponse(
821 GURL(expected_crx_url), 780 GURL(expected_crx_url),
822 test_file("jebgalgnebhfojomionfpkfelancnnkf.crx")); 781 test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
823 782
783 component_updater()->AddObserver(&observer);
784
824 TestInstaller installer1; 785 TestInstaller installer1;
825 CrxComponent com1; 786 CrxComponent com1;
826 com1.observer = &observer1;
827 RegisterComponent(&com1, kTestComponent_jebg, Version("0.9"), &installer1); 787 RegisterComponent(&com1, kTestComponent_jebg, Version("0.9"), &installer1);
828 TestInstaller installer2; 788 TestInstaller installer2;
829 CrxComponent com2; 789 CrxComponent com2;
830 com2.observer = &observer2;
831 RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2); 790 RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2);
832 791
833 // Loop twice to issue two checks: (1) with original 0.9 version, update to 792 // Loop twice to issue two checks: (1) with original 0.9 version, update to
834 // 1.0, and do the second check (2) with the updated 1.0 version. 793 // 1.0, and do the second check (2) with the updated 1.0 version.
835 test_configurator()->SetLoopCount(2); 794 test_configurator()->SetLoopCount(2);
836 component_updater()->Start(); 795 component_updater()->Start();
837 RunThreads(); 796 RunThreads();
838 797
839 EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->error()); 798 EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->error());
840 EXPECT_EQ(1, static_cast<TestInstaller*>(com1.installer)->install_count()); 799 EXPECT_EQ(1, static_cast<TestInstaller*>(com1.installer)->install_count());
(...skipping 14 matching lines...) Expand all
855 "<event eventtype=\"3\" eventresult=\"1\"/>")) 814 "<event eventtype=\"3\" eventresult=\"1\"/>"))
856 << post_interceptor_->GetRequestsAsString(); 815 << post_interceptor_->GetRequestsAsString();
857 EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find( 816 EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
858 "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">" 817 "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
859 "<updatecheck /></app>")) 818 "<updatecheck /></app>"))
860 << post_interceptor_->GetRequestsAsString(); 819 << post_interceptor_->GetRequestsAsString();
861 820
862 component_updater()->Stop(); 821 component_updater()->Stop();
863 822
864 // Now re-register, pretending to be an even newer version (2.2) 823 // Now re-register, pretending to be an even newer version (2.2)
865 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1)); 824 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer));
866 { 825 {
867 InSequence seq; 826 InSequence seq;
868 EXPECT_CALL(observer1, 827 EXPECT_CALL(observer,
869 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 828 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
870 .Times(1); 829 .Times(1);
871 EXPECT_CALL(observer1, 830 EXPECT_CALL(observer,
872 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 831 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
832 "jebgalgnebhfojomionfpkfelancnnkf"))
873 .Times(1); 833 .Times(1);
874 EXPECT_CALL(observer1, 834 EXPECT_CALL(observer,
875 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 835 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
836 "abagagagagagagagagagagagagagagag"))
837 .Times(1);
838 EXPECT_CALL(observer,
839 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
876 .Times(1); 840 .Times(1);
877 } 841 }
878 842
879 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2));
880 {
881 InSequence seq;
882 EXPECT_CALL(observer2,
883 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
884 .Times(1);
885 EXPECT_CALL(observer2,
886 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
887 .Times(1);
888 EXPECT_CALL(observer2,
889 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
890 .Times(1);
891 }
892
893 post_interceptor_->Reset(); 843 post_interceptor_->Reset();
894 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 844 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
895 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 845 "updatecheck"), test_file("updatecheck_reply_1.xml")));
896 846
897 TestInstaller installer3; 847 TestInstaller installer3;
898 EXPECT_EQ(ComponentUpdateService::kReplaced, 848 EXPECT_EQ(ComponentUpdateService::kReplaced,
899 RegisterComponent(&com1, 849 RegisterComponent(&com1,
900 kTestComponent_jebg, 850 kTestComponent_jebg,
901 Version("2.2"), 851 Version("2.2"),
902 &installer3)); 852 &installer3));
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 virtual void Cancel() OVERRIDE { CHECK(false); } 1209 virtual void Cancel() OVERRIDE { CHECK(false); }
1260 virtual void CancelAndIgnore() OVERRIDE { CHECK(false); } 1210 virtual void CancelAndIgnore() OVERRIDE { CHECK(false); }
1261 virtual void CancelWithError(int error_code) OVERRIDE { CHECK(false); } 1211 virtual void CancelWithError(int error_code) OVERRIDE { CHECK(false); }
1262 virtual void Resume() OVERRIDE { CHECK(false); } 1212 virtual void Resume() OVERRIDE { CHECK(false); }
1263 } controller; 1213 } controller;
1264 1214
1265 delete RequestTestResourceThrottle(cus, &controller, crx_id); 1215 delete RequestTestResourceThrottle(cus, &controller, crx_id);
1266 } 1216 }
1267 1217
1268 TEST_F(ComponentUpdaterTest, ResourceThrottleDeletedNoUpdate) { 1218 TEST_F(ComponentUpdaterTest, ResourceThrottleDeletedNoUpdate) {
1269 MockComponentObserver observer; 1219 MockServiceObserver observer;
1270 EXPECT_CALL(observer, 1220 {
1271 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 1221 InSequence seq;
1272 .Times(1); 1222 EXPECT_CALL(observer,
1273 EXPECT_CALL(observer, 1223 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
1274 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 1224 .Times(1);
1275 .Times(1); 1225 EXPECT_CALL(observer,
1276 EXPECT_CALL(observer, 1226 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
1277 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 1227 "abagagagagagagagagagagagagagagag"))
1278 .Times(1); 1228 .Times(1);
1229 EXPECT_CALL(observer,
1230 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
1231 .Times(1);
1232 }
1279 1233
1280 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 1234 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
1281 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 1235 "updatecheck"), test_file("updatecheck_reply_1.xml")));
1282 1236
1283 TestInstaller installer; 1237 TestInstaller installer;
1284 CrxComponent com; 1238 CrxComponent com;
1285 com.observer = &observer; 1239 component_updater()->AddObserver(&observer);
1286 EXPECT_EQ(ComponentUpdateService::kOk, 1240 EXPECT_EQ(ComponentUpdateService::kOk,
1287 RegisterComponent(&com, 1241 RegisterComponent(&com,
1288 kTestComponent_abag, 1242 kTestComponent_abag,
1289 Version("1.1"), 1243 Version("1.1"),
1290 &installer)); 1244 &installer));
1291 // The following two calls ensure that we don't do an update check via the 1245 // The following two calls ensure that we don't do an update check via the
1292 // timer, so the only update check should be the on-demand one. 1246 // timer, so the only update check should be the on-demand one.
1293 test_configurator()->SetInitialDelay(1000000); 1247 test_configurator()->SetInitialDelay(1000000);
1294 test_configurator()->SetRecheckTime(1000000); 1248 test_configurator()->SetRecheckTime(1000000);
1295 test_configurator()->SetLoopCount(1); 1249 test_configurator()->SetLoopCount(1);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1344 } 1298 }
1345 1299
1346 private: 1300 private:
1347 void ResumeCalled() { ++resume_called_; } 1301 void ResumeCalled() { ++resume_called_; }
1348 1302
1349 content::ResourceThrottle* throttle_; 1303 content::ResourceThrottle* throttle_;
1350 int resume_called_; 1304 int resume_called_;
1351 }; 1305 };
1352 1306
1353 TEST_F(ComponentUpdaterTest, ResourceThrottleLiveNoUpdate) { 1307 TEST_F(ComponentUpdaterTest, ResourceThrottleLiveNoUpdate) {
1354 MockComponentObserver observer; 1308 MockServiceObserver observer;
1355 EXPECT_CALL(observer, 1309 {
1356 OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0)) 1310 InSequence seq;
1357 .Times(1); 1311 EXPECT_CALL(observer,
1358 EXPECT_CALL(observer, 1312 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
1359 OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0)) 1313 .Times(1);
1360 .Times(1); 1314 EXPECT_CALL(observer,
1361 EXPECT_CALL(observer, 1315 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
1362 OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0)) 1316 "abagagagagagagagagagagagagagagag"))
1363 .Times(1); 1317 .Times(1);
1318 EXPECT_CALL(observer,
1319 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
1320 .Times(1);
1321 }
1364 1322
1365 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch( 1323 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
1366 "updatecheck"), test_file("updatecheck_reply_1.xml"))); 1324 "updatecheck"), test_file("updatecheck_reply_1.xml")));
1367 1325
1368 TestInstaller installer; 1326 TestInstaller installer;
1369 CrxComponent com; 1327 CrxComponent com;
1370 com.observer = &observer; 1328 component_updater()->AddObserver(&observer);
1371 EXPECT_EQ(ComponentUpdateService::kOk, 1329 EXPECT_EQ(ComponentUpdateService::kOk,
1372 RegisterComponent(&com, 1330 RegisterComponent(&com,
1373 kTestComponent_abag, 1331 kTestComponent_abag,
1374 Version("1.1"), 1332 Version("1.1"),
1375 &installer)); 1333 &installer));
1376 // The following two calls ensure that we don't do an update check via the 1334 // The following two calls ensure that we don't do an update check via the
1377 // timer, so the only update check should be the on-demand one. 1335 // timer, so the only update check should be the on-demand one.
1378 test_configurator()->SetInitialDelay(1000000); 1336 test_configurator()->SetInitialDelay(1000000);
1379 test_configurator()->SetRecheckTime(1000000); 1337 test_configurator()->SetRecheckTime(1000000);
1380 test_configurator()->SetLoopCount(1); 1338 test_configurator()->SetLoopCount(1);
(...skipping 15 matching lines...) Expand all
1396 1354
1397 RunThreads(); 1355 RunThreads();
1398 1356
1399 EXPECT_EQ(1, post_interceptor_->GetHitCount()); 1357 EXPECT_EQ(1, post_interceptor_->GetHitCount());
1400 EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error()); 1358 EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
1401 EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count()); 1359 EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count());
1402 1360
1403 component_updater()->Stop(); 1361 component_updater()->Stop();
1404 } 1362 }
1405 1363
1364 // Tests adding and removing observers.
1365 TEST_F(ComponentUpdaterTest, Observer) {
1366 MockServiceObserver observer1, observer2;
1367
1368 // Expect that two observers see the events.
1369 {
1370 InSequence seq;
1371 EXPECT_CALL(observer1,
1372 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
1373 .Times(1);
1374 EXPECT_CALL(observer2,
1375 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
1376 .Times(1);
1377 EXPECT_CALL(observer1,
1378 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
1379 "abagagagagagagagagagagagagagagag"))
1380 .Times(1);
1381 EXPECT_CALL(observer2,
1382 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
1383 "abagagagagagagagagagagagagagagag"))
1384 .Times(1);
1385 EXPECT_CALL(observer1,
1386 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
1387 .Times(1);
1388 EXPECT_CALL(observer2,
1389 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
1390 .Times(1);
1391 }
1392
1393 EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
1394 "updatecheck"), test_file("updatecheck_reply_1.xml")));
1395
1396 component_updater()->AddObserver(&observer1);
1397 component_updater()->AddObserver(&observer2);
1398
1399 TestInstaller installer;
1400 CrxComponent com;
1401 EXPECT_EQ(ComponentUpdateService::kOk,
1402 RegisterComponent(&com,
1403 kTestComponent_abag,
1404 Version("1.1"),
1405 &installer));
1406 test_configurator()->SetLoopCount(1);
1407 component_updater()->Start();
1408 RunThreads();
1409
1410 // After removing the first observer, it's only the second observer that
1411 // gets the events.
1412 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
1413 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2));
1414 {
1415 InSequence seq;
1416 EXPECT_CALL(observer2,
1417 OnEvent(ServiceObserver::COMPONENT_UPDATER_STARTED, ""))
1418 .Times(1);
1419 EXPECT_CALL(observer2,
1420 OnEvent(ServiceObserver::COMPONENT_NOT_UPDATED,
1421 "abagagagagagagagagagagagagagagag"))
1422 .Times(1);
1423 EXPECT_CALL(observer2,
1424 OnEvent(ServiceObserver::COMPONENT_UPDATER_SLEEPING, ""))
1425 .Times(1);
1426 }
1427
1428 component_updater()->RemoveObserver(&observer1);
1429
1430 test_configurator()->SetLoopCount(1);
1431 component_updater()->Start();
1432 RunThreads();
1433
1434 // Both observers are removed and no one gets the events.
1435 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
1436 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2));
1437 component_updater()->RemoveObserver(&observer2);
1438
1439 test_configurator()->SetLoopCount(1);
1440 component_updater()->Start();
1441 RunThreads();
1442
1443 component_updater()->Stop();
1444 }
1406 1445
1407 } // namespace component_updater 1446 } // namespace component_updater
1408
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698