| OLD | NEW |
| 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 <limits> | 5 #include <limits> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 void(const std::string& id, | 64 void(const std::string& id, |
| 65 const CrxDataCallback& crx_data_callback, | 65 const CrxDataCallback& crx_data_callback, |
| 66 const CompletionCallback& completion_callback)); | 66 const CompletionCallback& completion_callback)); |
| 67 MOCK_METHOD3(Update, | 67 MOCK_METHOD3(Update, |
| 68 void(const std::vector<std::string>& ids, | 68 void(const std::vector<std::string>& ids, |
| 69 const CrxDataCallback& crx_data_callback, | 69 const CrxDataCallback& crx_data_callback, |
| 70 const CompletionCallback& completion_callback)); | 70 const CompletionCallback& completion_callback)); |
| 71 MOCK_CONST_METHOD2(GetCrxUpdateState, | 71 MOCK_CONST_METHOD2(GetCrxUpdateState, |
| 72 bool(const std::string& id, CrxUpdateItem* update_item)); | 72 bool(const std::string& id, CrxUpdateItem* update_item)); |
| 73 MOCK_CONST_METHOD1(IsUpdating, bool(const std::string& id)); | 73 MOCK_CONST_METHOD1(IsUpdating, bool(const std::string& id)); |
| 74 MOCK_METHOD0(Stop, void()); |
| 74 | 75 |
| 75 private: | 76 private: |
| 76 ~MockUpdateClient() override; | 77 ~MockUpdateClient() override; |
| 77 }; | 78 }; |
| 78 | 79 |
| 79 class MockServiceObserver : public ServiceObserver { | 80 class MockServiceObserver : public ServiceObserver { |
| 80 public: | 81 public: |
| 81 MockServiceObserver(); | 82 MockServiceObserver(); |
| 82 ~MockServiceObserver() override; | 83 ~MockServiceObserver() override; |
| 83 | 84 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 void ComponentUpdaterTest::TearDown() { | 184 void ComponentUpdaterTest::TearDown() { |
| 184 } | 185 } |
| 185 | 186 |
| 186 void ComponentUpdaterTest::RunThreads() { | 187 void ComponentUpdaterTest::RunThreads() { |
| 187 runloop_.Run(); | 188 runloop_.Run(); |
| 188 } | 189 } |
| 189 | 190 |
| 190 TEST_F(ComponentUpdaterTest, AddObserver) { | 191 TEST_F(ComponentUpdaterTest, AddObserver) { |
| 191 MockServiceObserver observer; | 192 MockServiceObserver observer; |
| 192 EXPECT_CALL(update_client(), AddObserver(&observer)).Times(1); | 193 EXPECT_CALL(update_client(), AddObserver(&observer)).Times(1); |
| 194 EXPECT_CALL(update_client(), Stop()).Times(1); |
| 193 component_updater().AddObserver(&observer); | 195 component_updater().AddObserver(&observer); |
| 194 } | 196 } |
| 195 | 197 |
| 196 TEST_F(ComponentUpdaterTest, RemoveObserver) { | 198 TEST_F(ComponentUpdaterTest, RemoveObserver) { |
| 197 MockServiceObserver observer; | 199 MockServiceObserver observer; |
| 198 EXPECT_CALL(update_client(), RemoveObserver(&observer)).Times(1); | 200 EXPECT_CALL(update_client(), RemoveObserver(&observer)).Times(1); |
| 201 EXPECT_CALL(update_client(), Stop()).Times(1); |
| 199 component_updater().RemoveObserver(&observer); | 202 component_updater().RemoveObserver(&observer); |
| 200 } | 203 } |
| 201 | 204 |
| 202 // Tests that UpdateClient::Update is called by the timer loop when | 205 // Tests that UpdateClient::Update is called by the timer loop when |
| 203 // components are registered, and the component update starts. | 206 // components are registered, and the component update starts. |
| 204 // Also tests that Uninstall is called when a component is unregistered. | 207 // Also tests that Uninstall is called when a component is unregistered. |
| 205 TEST_F(ComponentUpdaterTest, RegisterComponent) { | 208 TEST_F(ComponentUpdaterTest, RegisterComponent) { |
| 206 class LoopHandler { | 209 class LoopHandler { |
| 207 public: | 210 public: |
| 208 LoopHandler(int max_cnt, const base::Closure& quit_closure) | 211 LoopHandler(int max_cnt, const base::Closure& quit_closure) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 crx_component2.pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash)); | 246 crx_component2.pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash)); |
| 244 crx_component2.version = Version("0.9"); | 247 crx_component2.version = Version("0.9"); |
| 245 crx_component2.installer = installer; | 248 crx_component2.installer = installer; |
| 246 | 249 |
| 247 // Quit after two update checks have fired. | 250 // Quit after two update checks have fired. |
| 248 LoopHandler loop_handler(2, quit_closure()); | 251 LoopHandler loop_handler(2, quit_closure()); |
| 249 EXPECT_CALL(update_client(), Update(ids, _, _)) | 252 EXPECT_CALL(update_client(), Update(ids, _, _)) |
| 250 .WillRepeatedly(Invoke(&loop_handler, &LoopHandler::OnUpdate)); | 253 .WillRepeatedly(Invoke(&loop_handler, &LoopHandler::OnUpdate)); |
| 251 | 254 |
| 252 EXPECT_CALL(update_client(), IsUpdating(id1)).Times(1); | 255 EXPECT_CALL(update_client(), IsUpdating(id1)).Times(1); |
| 256 EXPECT_CALL(update_client(), Stop()).Times(1); |
| 253 | 257 |
| 254 EXPECT_TRUE(component_updater().RegisterComponent(crx_component1)); | 258 EXPECT_TRUE(component_updater().RegisterComponent(crx_component1)); |
| 255 EXPECT_TRUE(component_updater().RegisterComponent(crx_component2)); | 259 EXPECT_TRUE(component_updater().RegisterComponent(crx_component2)); |
| 256 | 260 |
| 257 RunThreads(); | 261 RunThreads(); |
| 258 | 262 |
| 259 EXPECT_TRUE(component_updater().UnregisterComponent(id1)); | 263 EXPECT_TRUE(component_updater().UnregisterComponent(id1)); |
| 260 } | 264 } |
| 261 | 265 |
| 262 // Tests that on-demand updates invoke UpdateClient::Install. | 266 // Tests that on-demand updates invoke UpdateClient::Install. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 using update_client::jebg_hash; | 298 using update_client::jebg_hash; |
| 295 CrxComponent crx_component; | 299 CrxComponent crx_component; |
| 296 crx_component.pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash)); | 300 crx_component.pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash)); |
| 297 crx_component.version = Version("0.9"); | 301 crx_component.version = Version("0.9"); |
| 298 crx_component.installer = installer; | 302 crx_component.installer = installer; |
| 299 | 303 |
| 300 LoopHandler loop_handler(1, quit_closure()); | 304 LoopHandler loop_handler(1, quit_closure()); |
| 301 EXPECT_CALL(update_client(), | 305 EXPECT_CALL(update_client(), |
| 302 Install("jebgalgnebhfojomionfpkfelancnnkf", _, _)) | 306 Install("jebgalgnebhfojomionfpkfelancnnkf", _, _)) |
| 303 .WillOnce(Invoke(&loop_handler, &LoopHandler::OnInstall)); | 307 .WillOnce(Invoke(&loop_handler, &LoopHandler::OnInstall)); |
| 308 EXPECT_CALL(update_client(), Stop()).Times(1); |
| 304 | 309 |
| 305 EXPECT_TRUE(cus.RegisterComponent(crx_component)); | 310 EXPECT_TRUE(cus.RegisterComponent(crx_component)); |
| 306 EXPECT_TRUE(OnDemandTester::OnDemand(&cus, id)); | 311 EXPECT_TRUE(OnDemandTester::OnDemand(&cus, id)); |
| 307 | 312 |
| 308 RunThreads(); | 313 RunThreads(); |
| 309 } | 314 } |
| 310 | 315 |
| 311 // Tests that throttling an update invokes UpdateClient::Install. | 316 // Tests that throttling an update invokes UpdateClient::Install. |
| 312 TEST_F(ComponentUpdaterTest, MaybeThrottle) { | 317 TEST_F(ComponentUpdaterTest, MaybeThrottle) { |
| 313 class LoopHandler { | 318 class LoopHandler { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 338 using update_client::jebg_hash; | 343 using update_client::jebg_hash; |
| 339 CrxComponent crx_component; | 344 CrxComponent crx_component; |
| 340 crx_component.pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash)); | 345 crx_component.pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash)); |
| 341 crx_component.version = Version("0.9"); | 346 crx_component.version = Version("0.9"); |
| 342 crx_component.installer = installer; | 347 crx_component.installer = installer; |
| 343 | 348 |
| 344 LoopHandler loop_handler(1, quit_closure()); | 349 LoopHandler loop_handler(1, quit_closure()); |
| 345 EXPECT_CALL(update_client(), | 350 EXPECT_CALL(update_client(), |
| 346 Install("jebgalgnebhfojomionfpkfelancnnkf", _, _)) | 351 Install("jebgalgnebhfojomionfpkfelancnnkf", _, _)) |
| 347 .WillOnce(Invoke(&loop_handler, &LoopHandler::OnInstall)); | 352 .WillOnce(Invoke(&loop_handler, &LoopHandler::OnInstall)); |
| 353 EXPECT_CALL(update_client(), Stop()).Times(1); |
| 348 | 354 |
| 349 EXPECT_TRUE(component_updater().RegisterComponent(crx_component)); | 355 EXPECT_TRUE(component_updater().RegisterComponent(crx_component)); |
| 350 component_updater().MaybeThrottle( | 356 component_updater().MaybeThrottle( |
| 351 "jebgalgnebhfojomionfpkfelancnnkf", | 357 "jebgalgnebhfojomionfpkfelancnnkf", |
| 352 base::Bind(&ComponentUpdaterTest::ReadyCallback)); | 358 base::Bind(&ComponentUpdaterTest::ReadyCallback)); |
| 353 | 359 |
| 354 RunThreads(); | 360 RunThreads(); |
| 355 } | 361 } |
| 356 | 362 |
| 357 } // namespace component_updater | 363 } // namespace component_updater |
| OLD | NEW |