| Index: chrome/browser/component_updater/test/component_updater_service_unittest.cc
|
| diff --git a/chrome/browser/component_updater/test/component_updater_service_unittest.cc b/chrome/browser/component_updater/test/component_updater_service_unittest.cc
|
| index 7a66d55af0f5840705807d663cc501bfc865a01c..ca4227f4e7ccfbc2612c5f7fd59831279ae65fda 100644
|
| --- a/chrome/browser/component_updater/test/component_updater_service_unittest.cc
|
| +++ b/chrome/browser/component_updater/test/component_updater_service_unittest.cc
|
| @@ -24,6 +24,16 @@
|
| using content::BrowserThread;
|
| using content::TestNotificationTracker;
|
|
|
| +using ::testing::_;
|
| +using ::testing::InSequence;
|
| +using ::testing::Mock;
|
| +
|
| +MockComponentObserver::MockComponentObserver() {
|
| +}
|
| +
|
| +MockComponentObserver::~MockComponentObserver() {
|
| +}
|
| +
|
| TestConfigurator::TestConfigurator()
|
| : times_(1),
|
| recheck_time_(0),
|
| @@ -264,8 +274,11 @@ TEST_F(ComponentUpdaterTest, StartStop) {
|
| TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
|
| content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
|
|
| + MockComponentObserver observer;
|
| +
|
| TestInstaller installer;
|
| CrxComponent com;
|
| + com.observer = &observer;
|
| EXPECT_EQ(ComponentUpdateService::kOk,
|
| RegisterComponent(&com,
|
| kTestComponent_abag,
|
| @@ -281,12 +294,19 @@ TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
|
|
|
| // We loop twice, but there are no updates so we expect two sleep messages.
|
| test_configurator()->SetLoopCount(2);
|
| +
|
| + EXPECT_CALL(observer,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| component_updater()->Start();
|
|
|
| ASSERT_EQ(1ul, notification_tracker().size());
|
| TestNotificationTracker::Event ev1 = notification_tracker().at(0);
|
| EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATER_STARTED, ev1.type);
|
|
|
| + EXPECT_CALL(observer,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(2);
|
| message_loop_.Run();
|
|
|
| ASSERT_EQ(3ul, notification_tracker().size());
|
| @@ -309,8 +329,15 @@ TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
|
|
|
| notification_tracker().Reset();
|
| test_configurator()->SetLoopCount(2);
|
| +
|
| + EXPECT_CALL(observer,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| component_updater()->Start();
|
|
|
| + EXPECT_CALL(observer,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(2);
|
| message_loop_.Run();
|
|
|
| ASSERT_EQ(3ul, notification_tracker().size());
|
| @@ -347,11 +374,41 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
|
| URLRequestPostInterceptor post_interceptor(&ping_checker);
|
| content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
|
|
| + MockComponentObserver observer1;
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATE_FOUND, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATE_READY, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(2);
|
| + }
|
| +
|
| + MockComponentObserver observer2;
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(2);
|
| + }
|
| +
|
| TestInstaller installer1;
|
| CrxComponent com1;
|
| + com1.observer = &observer1;
|
| RegisterComponent(&com1, kTestComponent_jebg, Version("0.9"), &installer1);
|
| TestInstaller installer2;
|
| CrxComponent com2;
|
| + com2.observer = &observer2;
|
| RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2);
|
|
|
| const GURL expected_update_url_1(
|
| @@ -387,6 +444,9 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
|
|
|
| ASSERT_EQ(5ul, notification_tracker().size());
|
|
|
| + TestNotificationTracker::Event ev0 = notification_tracker().at(0);
|
| + EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATER_STARTED, ev0.type);
|
| +
|
| TestNotificationTracker::Event ev1 = notification_tracker().at(1);
|
| EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATE_FOUND, ev1.type);
|
|
|
| @@ -454,11 +514,47 @@ TEST_F(ComponentUpdaterTest, CheckForUpdateSoon) {
|
| URLRequestPostInterceptor post_interceptor(&ping_checker);
|
| content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
|
|
| + MockComponentObserver observer1;
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| +
|
| + MockComponentObserver observer2;
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATE_FOUND, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATE_READY, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| +
|
| TestInstaller installer1;
|
| CrxComponent com1;
|
| + com1.observer = &observer1;
|
| RegisterComponent(&com1, kTestComponent_abag, Version("2.2"), &installer1);
|
| TestInstaller installer2;
|
| CrxComponent com2;
|
| + com2.observer = &observer2;
|
| RegisterComponent(&com2, kTestComponent_jebg, Version("0.9"), &installer2);
|
|
|
| const GURL expected_update_url_1(
|
| @@ -518,6 +614,27 @@ TEST_F(ComponentUpdaterTest, CheckForUpdateSoon) {
|
|
|
| // Test a few error cases. NOTE: We don't have callbacks for
|
| // when the updates failed yet.
|
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2));
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| +
|
| const GURL expected_update_url_3(
|
| "http://localhost/upd?extra=foo"
|
| "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D1.0%26fp%3D%26uc"
|
| @@ -542,6 +659,27 @@ TEST_F(ComponentUpdaterTest, CheckForUpdateSoon) {
|
| component_updater()->Stop();
|
|
|
| // No update: already updated to 1.0 so nothing new
|
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2));
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| +
|
| interceptor.SetResponse(expected_update_url_3,
|
| test_file("updatecheck_reply_1.xml"));
|
| notification_tracker().Reset();
|
| @@ -575,11 +713,47 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| URLRequestPostInterceptor post_interceptor(&ping_checker);
|
| content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
|
|
| + MockComponentObserver observer1;
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATE_FOUND, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATE_READY, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| +
|
| + MockComponentObserver observer2;
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| +
|
| TestInstaller installer1;
|
| CrxComponent com1;
|
| + com1.observer = &observer1;
|
| RegisterComponent(&com1, kTestComponent_jebg, Version("0.9"), &installer1);
|
| TestInstaller installer2;
|
| CrxComponent com2;
|
| + com2.observer = &observer2;
|
| RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2);
|
|
|
| // Start with 0.9, and update to 1.0
|
| @@ -633,9 +807,32 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| TestNotificationTracker::Event ev4 = notification_tracker().at(4);
|
| EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATER_SLEEPING, ev4.type);
|
|
|
| + component_updater()->Stop();
|
| +
|
| // Now re-register, pretending to be an even newer version (2.2)
|
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer1,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| +
|
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2));
|
| + {
|
| + InSequence seq;
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer2,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(1);
|
| + }
|
| +
|
| TestInstaller installer3;
|
| - component_updater()->Stop();
|
| EXPECT_EQ(ComponentUpdateService::kReplaced,
|
| RegisterComponent(&com1,
|
| kTestComponent_jebg,
|
|
|