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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
13 #include "base/path_service.h" | 13 #include "base/path_service.h" |
14 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
| 15 #include "base/test/sequenced_worker_pool_owner.h" |
15 #include "base/thread_task_runner_handle.h" | 16 #include "base/thread_task_runner_handle.h" |
| 17 #include "base/threading/thread.h" |
16 #include "base/values.h" | 18 #include "base/values.h" |
17 #include "base/version.h" | 19 #include "base/version.h" |
18 #include "components/update_client/crx_update_item.h" | 20 #include "components/update_client/crx_update_item.h" |
19 #include "components/update_client/ping_manager.h" | 21 #include "components/update_client/ping_manager.h" |
20 #include "components/update_client/test_configurator.h" | 22 #include "components/update_client/test_configurator.h" |
21 #include "components/update_client/test_installer.h" | 23 #include "components/update_client/test_installer.h" |
22 #include "components/update_client/update_checker.h" | 24 #include "components/update_client/update_checker.h" |
23 #include "components/update_client/update_client_internal.h" | 25 #include "components/update_client/update_client_internal.h" |
24 #include "content/public/browser/browser_thread.h" | |
25 #include "content/public/test/test_browser_thread_bundle.h" | |
26 #include "testing/gmock/include/gmock/gmock.h" | 26 #include "testing/gmock/include/gmock/gmock.h" |
27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
28 #include "url/gurl.h" | 28 #include "url/gurl.h" |
29 | 29 |
30 namespace update_client { | 30 namespace update_client { |
31 | 31 |
32 namespace { | 32 namespace { |
33 | 33 |
34 using base::FilePath; | 34 using base::FilePath; |
35 | 35 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 } // namespace | 97 } // namespace |
98 | 98 |
99 using ::testing::_; | 99 using ::testing::_; |
100 using ::testing::AnyNumber; | 100 using ::testing::AnyNumber; |
101 using ::testing::DoAll; | 101 using ::testing::DoAll; |
102 using ::testing::InSequence; | 102 using ::testing::InSequence; |
103 using ::testing::Invoke; | 103 using ::testing::Invoke; |
104 using ::testing::Mock; | 104 using ::testing::Mock; |
105 using ::testing::Return; | 105 using ::testing::Return; |
106 | 106 |
107 using content::BrowserThread; | |
108 | |
109 using std::string; | 107 using std::string; |
110 | 108 |
111 class UpdateClientTest : public testing::Test { | 109 class UpdateClientTest : public testing::Test { |
112 public: | 110 public: |
113 UpdateClientTest(); | 111 UpdateClientTest(); |
114 ~UpdateClientTest() override; | 112 ~UpdateClientTest() override; |
115 | 113 |
116 void SetUp() override; | |
117 void TearDown() override; | |
118 | |
119 protected: | 114 protected: |
120 void RunThreads(); | 115 void RunThreads(); |
121 | 116 |
122 // Returns the full path to a test file. | 117 // Returns the full path to a test file. |
123 static base::FilePath TestFilePath(const char* file); | 118 static base::FilePath TestFilePath(const char* file); |
124 | 119 |
125 content::TestBrowserThreadBundle thread_bundle_; | 120 scoped_refptr<update_client::Configurator> config() { return config_; } |
126 | 121 |
| 122 base::Closure quit_closure() { return quit_closure_; } |
| 123 |
| 124 private: |
| 125 static const int kNumWorkerThreads_ = 2; |
| 126 |
| 127 base::MessageLoopForUI message_loop_; |
127 base::RunLoop runloop_; | 128 base::RunLoop runloop_; |
128 base::Closure quit_closure_; | 129 base::Closure quit_closure_; |
129 | 130 |
130 scoped_refptr<update_client::TestConfigurator> config_; | 131 scoped_ptr<base::SequencedWorkerPoolOwner> worker_pool_; |
| 132 scoped_ptr<base::Thread> thread_; |
131 | 133 |
132 private: | 134 scoped_refptr<update_client::Configurator> config_; |
| 135 |
133 DISALLOW_COPY_AND_ASSIGN(UpdateClientTest); | 136 DISALLOW_COPY_AND_ASSIGN(UpdateClientTest); |
134 }; | 137 }; |
135 | 138 |
136 UpdateClientTest::UpdateClientTest() | 139 UpdateClientTest::UpdateClientTest() |
137 : config_(new TestConfigurator( | 140 : worker_pool_( |
138 BrowserThread::GetBlockingPool() | 141 new base::SequencedWorkerPoolOwner(kNumWorkerThreads_, "test")), |
139 ->GetSequencedTaskRunnerWithShutdownBehavior( | 142 thread_(new base::Thread("test")) { |
140 BrowserThread::GetBlockingPool()->GetSequenceToken(), | 143 quit_closure_ = runloop_.QuitClosure(); |
141 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN), | 144 |
142 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO))) { | 145 thread_->Start(); |
| 146 |
| 147 auto pool = worker_pool_->pool(); |
| 148 config_ = new TestConfigurator( |
| 149 pool->GetSequencedTaskRunner(pool->GetSequenceToken()), |
| 150 thread_->task_runner()); |
143 } | 151 } |
144 | 152 |
145 UpdateClientTest::~UpdateClientTest() { | 153 UpdateClientTest::~UpdateClientTest() { |
146 } | 154 config_ = nullptr; |
147 | 155 thread_->Stop(); |
148 void UpdateClientTest::SetUp() { | 156 worker_pool_->pool()->Shutdown(); |
149 quit_closure_ = runloop_.QuitClosure(); | |
150 } | |
151 | |
152 void UpdateClientTest::TearDown() { | |
153 } | 157 } |
154 | 158 |
155 void UpdateClientTest::RunThreads() { | 159 void UpdateClientTest::RunThreads() { |
156 runloop_.Run(); | 160 runloop_.Run(); |
157 } | 161 } |
158 | 162 |
159 base::FilePath UpdateClientTest::TestFilePath(const char* file) { | 163 base::FilePath UpdateClientTest::TestFilePath(const char* file) { |
160 base::FilePath path; | 164 base::FilePath path; |
161 PathService::Get(base::DIR_SOURCE_ROOT, &path); | 165 PathService::Get(base::DIR_SOURCE_ROOT, &path); |
162 return path.AppendASCII("components") | 166 return path.AppendASCII("components") |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 void DoStartDownload(const GURL& url) override { EXPECT_TRUE(false); } | 229 void DoStartDownload(const GURL& url) override { EXPECT_TRUE(false); } |
226 }; | 230 }; |
227 | 231 |
228 class FakePingManager : public FakePingManagerImpl { | 232 class FakePingManager : public FakePingManagerImpl { |
229 public: | 233 public: |
230 explicit FakePingManager(const Configurator& config) | 234 explicit FakePingManager(const Configurator& config) |
231 : FakePingManagerImpl(config) {} | 235 : FakePingManagerImpl(config) {} |
232 ~FakePingManager() override { EXPECT_TRUE(items().empty()); } | 236 ~FakePingManager() override { EXPECT_TRUE(items().empty()); } |
233 }; | 237 }; |
234 | 238 |
235 scoped_ptr<PingManager> ping_manager(new FakePingManager(*config_)); | 239 scoped_ptr<PingManager> ping_manager(new FakePingManager(*config())); |
236 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( | 240 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( |
237 config_, ping_manager.Pass(), &FakeUpdateChecker::Create, | 241 config(), ping_manager.Pass(), &FakeUpdateChecker::Create, |
238 &FakeCrxDownloader::Create)); | 242 &FakeCrxDownloader::Create)); |
239 | 243 |
240 MockObserver observer; | 244 MockObserver observer; |
241 InSequence seq; | 245 InSequence seq; |
242 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, | 246 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, |
243 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 247 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
244 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_NOT_UPDATED, | 248 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_NOT_UPDATED, |
245 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 249 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
246 | 250 |
247 update_client->AddObserver(&observer); | 251 update_client->AddObserver(&observer); |
248 | 252 |
249 std::vector<std::string> ids; | 253 std::vector<std::string> ids; |
250 ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf")); | 254 ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf")); |
251 | 255 |
252 update_client->Update( | 256 update_client->Update( |
253 ids, base::Bind(&DataCallbackFake::Callback), | 257 ids, base::Bind(&DataCallbackFake::Callback), |
254 base::Bind(&CompletionCallbackFake::Callback, quit_closure_)); | 258 base::Bind(&CompletionCallbackFake::Callback, quit_closure())); |
255 | 259 |
256 RunThreads(); | 260 RunThreads(); |
257 | 261 |
258 update_client->RemoveObserver(&observer); | 262 update_client->RemoveObserver(&observer); |
259 } | 263 } |
260 | 264 |
261 // Tests the scenario where two CRXs are checked for updates. On CRX has | 265 // Tests the scenario where two CRXs are checked for updates. On CRX has |
262 // an update, the other CRX does not. | 266 // an update, the other CRX does not. |
263 TEST_F(UpdateClientTest, TwoCrxUpdateNoUpdate) { | 267 TEST_F(UpdateClientTest, TwoCrxUpdateNoUpdate) { |
264 class DataCallbackFake { | 268 class DataCallbackFake { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 const auto& ping_items = items(); | 395 const auto& ping_items = items(); |
392 EXPECT_EQ(1U, ping_items.size()); | 396 EXPECT_EQ(1U, ping_items.size()); |
393 EXPECT_EQ("jebgalgnebhfojomionfpkfelancnnkf", ping_items[0].id); | 397 EXPECT_EQ("jebgalgnebhfojomionfpkfelancnnkf", ping_items[0].id); |
394 EXPECT_TRUE(base::Version("0.9").Equals(ping_items[0].previous_version)); | 398 EXPECT_TRUE(base::Version("0.9").Equals(ping_items[0].previous_version)); |
395 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[0].next_version)); | 399 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[0].next_version)); |
396 EXPECT_EQ(0, ping_items[0].error_category); | 400 EXPECT_EQ(0, ping_items[0].error_category); |
397 EXPECT_EQ(0, ping_items[0].error_code); | 401 EXPECT_EQ(0, ping_items[0].error_code); |
398 } | 402 } |
399 }; | 403 }; |
400 | 404 |
401 scoped_ptr<PingManager> ping_manager(new FakePingManager(*config_)); | 405 scoped_ptr<PingManager> ping_manager(new FakePingManager(*config())); |
402 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( | 406 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( |
403 config_, ping_manager.Pass(), &FakeUpdateChecker::Create, | 407 config(), ping_manager.Pass(), &FakeUpdateChecker::Create, |
404 &FakeCrxDownloader::Create)); | 408 &FakeCrxDownloader::Create)); |
405 | 409 |
406 MockObserver observer; | 410 MockObserver observer; |
407 { | 411 { |
408 InSequence seq; | 412 InSequence seq; |
409 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, | 413 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, |
410 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 414 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
411 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, | 415 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, |
412 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 416 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
413 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, | 417 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, |
(...skipping 12 matching lines...) Expand all Loading... |
426 } | 430 } |
427 | 431 |
428 update_client->AddObserver(&observer); | 432 update_client->AddObserver(&observer); |
429 | 433 |
430 std::vector<std::string> ids; | 434 std::vector<std::string> ids; |
431 ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf")); | 435 ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf")); |
432 ids.push_back(std::string("abagagagagagagagagagagagagagagag")); | 436 ids.push_back(std::string("abagagagagagagagagagagagagagagag")); |
433 | 437 |
434 update_client->Update( | 438 update_client->Update( |
435 ids, base::Bind(&DataCallbackFake::Callback), | 439 ids, base::Bind(&DataCallbackFake::Callback), |
436 base::Bind(&CompletionCallbackFake::Callback, quit_closure_)); | 440 base::Bind(&CompletionCallbackFake::Callback, quit_closure())); |
437 | 441 |
438 RunThreads(); | 442 RunThreads(); |
439 | 443 |
440 update_client->RemoveObserver(&observer); | 444 update_client->RemoveObserver(&observer); |
441 } | 445 } |
442 | 446 |
443 // Tests the update check for two CRXs scenario. Both CRXs have updates. | 447 // Tests the update check for two CRXs scenario. Both CRXs have updates. |
444 TEST_F(UpdateClientTest, TwoCrxUpdate) { | 448 TEST_F(UpdateClientTest, TwoCrxUpdate) { |
445 class DataCallbackFake { | 449 class DataCallbackFake { |
446 public: | 450 public: |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 EXPECT_EQ(0, ping_items[0].error_category); | 624 EXPECT_EQ(0, ping_items[0].error_category); |
621 EXPECT_EQ(0, ping_items[0].error_code); | 625 EXPECT_EQ(0, ping_items[0].error_code); |
622 EXPECT_EQ("ihfokbkgjpifnbbojhneepfflplebdkc", ping_items[1].id); | 626 EXPECT_EQ("ihfokbkgjpifnbbojhneepfflplebdkc", ping_items[1].id); |
623 EXPECT_TRUE(base::Version("0.8").Equals(ping_items[1].previous_version)); | 627 EXPECT_TRUE(base::Version("0.8").Equals(ping_items[1].previous_version)); |
624 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[1].next_version)); | 628 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[1].next_version)); |
625 EXPECT_EQ(0, ping_items[1].error_category); | 629 EXPECT_EQ(0, ping_items[1].error_category); |
626 EXPECT_EQ(0, ping_items[1].error_code); | 630 EXPECT_EQ(0, ping_items[1].error_code); |
627 } | 631 } |
628 }; | 632 }; |
629 | 633 |
630 scoped_ptr<FakePingManager> ping_manager(new FakePingManager(*config_)); | 634 scoped_ptr<FakePingManager> ping_manager(new FakePingManager(*config())); |
631 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( | 635 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( |
632 config_, ping_manager.Pass(), &FakeUpdateChecker::Create, | 636 config(), ping_manager.Pass(), &FakeUpdateChecker::Create, |
633 &FakeCrxDownloader::Create)); | 637 &FakeCrxDownloader::Create)); |
634 | 638 |
635 MockObserver observer; | 639 MockObserver observer; |
636 { | 640 { |
637 InSequence seq; | 641 InSequence seq; |
638 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, | 642 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, |
639 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 643 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
640 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, | 644 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, |
641 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 645 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
642 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, | 646 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, |
(...skipping 20 matching lines...) Expand all Loading... |
663 } | 667 } |
664 | 668 |
665 update_client->AddObserver(&observer); | 669 update_client->AddObserver(&observer); |
666 | 670 |
667 std::vector<std::string> ids; | 671 std::vector<std::string> ids; |
668 ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf")); | 672 ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf")); |
669 ids.push_back(std::string("ihfokbkgjpifnbbojhneepfflplebdkc")); | 673 ids.push_back(std::string("ihfokbkgjpifnbbojhneepfflplebdkc")); |
670 | 674 |
671 update_client->Update( | 675 update_client->Update( |
672 ids, base::Bind(&DataCallbackFake::Callback), | 676 ids, base::Bind(&DataCallbackFake::Callback), |
673 base::Bind(&CompletionCallbackFake::Callback, quit_closure_)); | 677 base::Bind(&CompletionCallbackFake::Callback, quit_closure())); |
674 | 678 |
675 RunThreads(); | 679 RunThreads(); |
676 | 680 |
677 update_client->RemoveObserver(&observer); | 681 update_client->RemoveObserver(&observer); |
678 } | 682 } |
679 | 683 |
680 // Tests the differential update scenario for one CRX. | 684 // Tests the differential update scenario for one CRX. |
681 TEST_F(UpdateClientTest, OneCrxDiffUpdate) { | 685 TEST_F(UpdateClientTest, OneCrxDiffUpdate) { |
682 class DataCallbackFake { | 686 class DataCallbackFake { |
683 public: | 687 public: |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 EXPECT_EQ(0, ping_items[0].error_category); | 885 EXPECT_EQ(0, ping_items[0].error_category); |
882 EXPECT_EQ(0, ping_items[0].error_code); | 886 EXPECT_EQ(0, ping_items[0].error_code); |
883 EXPECT_EQ("ihfokbkgjpifnbbojhneepfflplebdkc", ping_items[1].id); | 887 EXPECT_EQ("ihfokbkgjpifnbbojhneepfflplebdkc", ping_items[1].id); |
884 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[1].previous_version)); | 888 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[1].previous_version)); |
885 EXPECT_TRUE(base::Version("2.0").Equals(ping_items[1].next_version)); | 889 EXPECT_TRUE(base::Version("2.0").Equals(ping_items[1].next_version)); |
886 EXPECT_EQ(0, ping_items[1].diff_error_category); | 890 EXPECT_EQ(0, ping_items[1].diff_error_category); |
887 EXPECT_EQ(0, ping_items[1].diff_error_code); | 891 EXPECT_EQ(0, ping_items[1].diff_error_code); |
888 } | 892 } |
889 }; | 893 }; |
890 | 894 |
891 scoped_ptr<FakePingManager> ping_manager(new FakePingManager(*config_)); | 895 scoped_ptr<FakePingManager> ping_manager(new FakePingManager(*config())); |
892 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( | 896 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( |
893 config_, ping_manager.Pass(), &FakeUpdateChecker::Create, | 897 config(), ping_manager.Pass(), &FakeUpdateChecker::Create, |
894 &FakeCrxDownloader::Create)); | 898 &FakeCrxDownloader::Create)); |
895 | 899 |
896 MockObserver observer; | 900 MockObserver observer; |
897 { | 901 { |
898 InSequence seq; | 902 InSequence seq; |
899 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, | 903 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, |
900 "ihfokbkgjpifnbbojhneepfflplebdkc")).Times(1); | 904 "ihfokbkgjpifnbbojhneepfflplebdkc")).Times(1); |
901 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, | 905 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, |
902 "ihfokbkgjpifnbbojhneepfflplebdkc")).Times(1); | 906 "ihfokbkgjpifnbbojhneepfflplebdkc")).Times(1); |
903 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, | 907 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1094 const auto& ping_items = items(); | 1098 const auto& ping_items = items(); |
1095 EXPECT_EQ(1U, ping_items.size()); | 1099 EXPECT_EQ(1U, ping_items.size()); |
1096 EXPECT_EQ("jebgalgnebhfojomionfpkfelancnnkf", ping_items[0].id); | 1100 EXPECT_EQ("jebgalgnebhfojomionfpkfelancnnkf", ping_items[0].id); |
1097 EXPECT_TRUE(base::Version("0.9").Equals(ping_items[0].previous_version)); | 1101 EXPECT_TRUE(base::Version("0.9").Equals(ping_items[0].previous_version)); |
1098 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[0].next_version)); | 1102 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[0].next_version)); |
1099 EXPECT_EQ(3, ping_items[0].error_category); // kInstallError. | 1103 EXPECT_EQ(3, ping_items[0].error_category); // kInstallError. |
1100 EXPECT_EQ(9, ping_items[0].error_code); // kInstallerError. | 1104 EXPECT_EQ(9, ping_items[0].error_code); // kInstallerError. |
1101 } | 1105 } |
1102 }; | 1106 }; |
1103 | 1107 |
1104 scoped_ptr<PingManager> ping_manager(new FakePingManager(*config_)); | 1108 scoped_ptr<PingManager> ping_manager(new FakePingManager(*config())); |
1105 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( | 1109 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( |
1106 config_, ping_manager.Pass(), &FakeUpdateChecker::Create, | 1110 config(), ping_manager.Pass(), &FakeUpdateChecker::Create, |
1107 &FakeCrxDownloader::Create)); | 1111 &FakeCrxDownloader::Create)); |
1108 | 1112 |
1109 MockObserver observer; | 1113 MockObserver observer; |
1110 { | 1114 { |
1111 InSequence seq; | 1115 InSequence seq; |
1112 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, | 1116 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, |
1113 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 1117 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
1114 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, | 1118 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, |
1115 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 1119 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
1116 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, | 1120 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, |
1117 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 1121 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
1118 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_READY, | 1122 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_READY, |
1119 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 1123 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
1120 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_NOT_UPDATED, | 1124 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_NOT_UPDATED, |
1121 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); | 1125 "jebgalgnebhfojomionfpkfelancnnkf")).Times(1); |
1122 } | 1126 } |
1123 | 1127 |
1124 update_client->AddObserver(&observer); | 1128 update_client->AddObserver(&observer); |
1125 | 1129 |
1126 std::vector<std::string> ids; | 1130 std::vector<std::string> ids; |
1127 ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf")); | 1131 ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf")); |
1128 | 1132 |
1129 update_client->Update( | 1133 update_client->Update( |
1130 ids, base::Bind(&DataCallbackFake::Callback), | 1134 ids, base::Bind(&DataCallbackFake::Callback), |
1131 base::Bind(&CompletionCallbackFake::Callback, quit_closure_)); | 1135 base::Bind(&CompletionCallbackFake::Callback, quit_closure())); |
1132 | 1136 |
1133 RunThreads(); | 1137 RunThreads(); |
1134 | 1138 |
1135 update_client->RemoveObserver(&observer); | 1139 update_client->RemoveObserver(&observer); |
1136 } | 1140 } |
1137 | 1141 |
1138 // Tests the fallback from differential to full update scenario for one CRX. | 1142 // Tests the fallback from differential to full update scenario for one CRX. |
1139 TEST_F(UpdateClientTest, OneCrxDiffUpdateFailsFullUpdateSucceeds) { | 1143 TEST_F(UpdateClientTest, OneCrxDiffUpdateFailsFullUpdateSucceeds) { |
1140 class DataCallbackFake { | 1144 class DataCallbackFake { |
1141 public: | 1145 public: |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1355 EXPECT_EQ(0, ping_items[0].error_code); | 1359 EXPECT_EQ(0, ping_items[0].error_code); |
1356 EXPECT_EQ("ihfokbkgjpifnbbojhneepfflplebdkc", ping_items[1].id); | 1360 EXPECT_EQ("ihfokbkgjpifnbbojhneepfflplebdkc", ping_items[1].id); |
1357 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[1].previous_version)); | 1361 EXPECT_TRUE(base::Version("1.0").Equals(ping_items[1].previous_version)); |
1358 EXPECT_TRUE(base::Version("2.0").Equals(ping_items[1].next_version)); | 1362 EXPECT_TRUE(base::Version("2.0").Equals(ping_items[1].next_version)); |
1359 EXPECT_TRUE(ping_items[1].diff_update_failed); | 1363 EXPECT_TRUE(ping_items[1].diff_update_failed); |
1360 EXPECT_EQ(1, ping_items[1].diff_error_category); // kNetworkError. | 1364 EXPECT_EQ(1, ping_items[1].diff_error_category); // kNetworkError. |
1361 EXPECT_EQ(-1, ping_items[1].diff_error_code); | 1365 EXPECT_EQ(-1, ping_items[1].diff_error_code); |
1362 } | 1366 } |
1363 }; | 1367 }; |
1364 | 1368 |
1365 scoped_ptr<FakePingManager> ping_manager(new FakePingManager(*config_)); | 1369 scoped_ptr<FakePingManager> ping_manager(new FakePingManager(*config())); |
1366 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( | 1370 scoped_ptr<UpdateClient> update_client(new UpdateClientImpl( |
1367 config_, ping_manager.Pass(), &FakeUpdateChecker::Create, | 1371 config(), ping_manager.Pass(), &FakeUpdateChecker::Create, |
1368 &FakeCrxDownloader::Create)); | 1372 &FakeCrxDownloader::Create)); |
1369 | 1373 |
1370 MockObserver observer; | 1374 MockObserver observer; |
1371 { | 1375 { |
1372 InSequence seq; | 1376 InSequence seq; |
1373 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, | 1377 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES, |
1374 "ihfokbkgjpifnbbojhneepfflplebdkc")).Times(1); | 1378 "ihfokbkgjpifnbbojhneepfflplebdkc")).Times(1); |
1375 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, | 1379 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_FOUND, |
1376 "ihfokbkgjpifnbbojhneepfflplebdkc")).Times(1); | 1380 "ihfokbkgjpifnbbojhneepfflplebdkc")).Times(1); |
1377 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, | 1381 EXPECT_CALL(observer, OnEvent(Events::COMPONENT_UPDATE_DOWNLOADING, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1413 update_client->Update( | 1417 update_client->Update( |
1414 ids, base::Bind(&DataCallbackFake::Callback), | 1418 ids, base::Bind(&DataCallbackFake::Callback), |
1415 base::Bind(&CompletionCallbackFake::Callback, runloop.QuitClosure())); | 1419 base::Bind(&CompletionCallbackFake::Callback, runloop.QuitClosure())); |
1416 runloop.Run(); | 1420 runloop.Run(); |
1417 } | 1421 } |
1418 | 1422 |
1419 update_client->RemoveObserver(&observer); | 1423 update_client->RemoveObserver(&observer); |
1420 } | 1424 } |
1421 | 1425 |
1422 } // namespace update_client | 1426 } // namespace update_client |
OLD | NEW |