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

Side by Side Diff: ios/chrome/browser/omaha/omaha_service_unittest.mm

Issue 2622913002: Simplify registration of a test ChromeBrowserStateManager. (Closed)
Patch Set: Created 3 years, 11 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 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 #import "ios/chrome/browser/omaha/omaha_service.h" 5 #import "ios/chrome/browser/omaha/omaha_service.h"
6 6
7 #include <regex.h> 7 #include <regex.h>
8 #include <sys/types.h> 8 #include <sys/types.h>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/message_loop/message_loop.h"
13 #include "base/run_loop.h" 12 #include "base/run_loop.h"
14 #include "base/strings/stringprintf.h" 13 #include "base/strings/stringprintf.h"
15 #include "components/metrics/metrics_pref_names.h" 14 #include "components/metrics/metrics_pref_names.h"
16 #include "components/prefs/pref_registry_simple.h" 15 #include "components/prefs/pref_registry_simple.h"
17 #include "components/version_info/version_info.h" 16 #include "components/version_info/version_info.h"
18 #include "ios/chrome/browser/application_context.h" 17 #include "ios/chrome/browser/application_context.h"
19 #include "ios/chrome/browser/browser_state/test_chrome_browser_state_manager.h" 18 #include "ios/chrome/browser/browser_state/test_chrome_browser_state_manager.h"
20 #include "ios/chrome/browser/install_time_util.h" 19 #include "ios/chrome/browser/install_time_util.h"
21 #include "ios/chrome/common/channel_info.h" 20 #include "ios/chrome/common/channel_info.h"
22 #include "ios/chrome/test/testing_application_context.h" 21 #include "ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_state_manager .h"
23 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" 22 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
24 #include "ios/public/provider/chrome/browser/omaha/omaha_service_provider.h" 23 #include "ios/public/provider/chrome/browser/omaha/omaha_service_provider.h"
25 #include "ios/web/public/test/test_web_thread.h" 24 #include "ios/web/public/test/test_web_thread_bundle.h"
25 #include "ios/web/public/web_thread.h"
26 #include "net/url_request/test_url_fetcher_factory.h" 26 #include "net/url_request/test_url_fetcher_factory.h"
27 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
28 #include "testing/gtest_mac.h" 28 #include "testing/gtest_mac.h"
29 #include "testing/platform_test.h" 29 #include "testing/platform_test.h"
30 30
31 namespace { 31 namespace {
32 32
33 const char kUserDataDir[] = "."; 33 const char kUserDataDir[] = FILE_PATH_LITERAL(".");
34 34
35 } // namespace 35 } // namespace
36 36
37 class OmahaServiceTest : public PlatformTest { 37 class OmahaServiceTest : public PlatformTest {
38 public: 38 public:
39 OmahaServiceTest() 39 OmahaServiceTest()
40 : need_update_(false), 40 : need_update_(false),
41 loop_(base::MessageLoop::TYPE_IO), 41 scoped_browser_state_manager_(
42 browser_state_manager_(base::FilePath(kUserDataDir)), 42 base::MakeUnique<TestChromeBrowserStateManager>(
43 ui_thread_(web::WebThread::UI, &loop_), 43 base::FilePath(kUserDataDir))) {
44 io_thread_(web::WebThread::IO, &loop_) {
45 GetApplicationContext()->GetLocalState()->SetInt64( 44 GetApplicationContext()->GetLocalState()->SetInt64(
46 metrics::prefs::kInstallDate, install_time_util::kUnknownInstallDate); 45 metrics::prefs::kInstallDate, install_time_util::kUnknownInstallDate);
47 OmahaService::ClearPersistentStateForTests(); 46 OmahaService::ClearPersistentStateForTests();
48 test_application_id_ = ios::GetChromeBrowserProvider()
49 ->GetOmahaServiceProvider()
50 ->GetApplicationID();
51 } 47 }
52 48
53 ~OmahaServiceTest() override {}
54
55 void OnNeedUpdate(const UpgradeRecommendedDetails& details) { 49 void OnNeedUpdate(const UpgradeRecommendedDetails& details) {
56 need_update_ = true; 50 need_update_ = true;
57 } 51 }
58 52
59 bool NeedUpdate() { 53 bool NeedUpdate() {
60 DCHECK_CURRENTLY_ON(web::WebThread::UI); 54 DCHECK_CURRENTLY_ON(web::WebThread::UI);
61 if (!need_update_) { 55 if (!need_update_) {
62 base::RunLoop().RunUntilIdle(); 56 base::RunLoop().RunUntilIdle();
63 } 57 }
64 return need_update_; 58 return need_update_;
65 } 59 }
66 60
67 void CleanService(OmahaService* service, 61 void CleanService(OmahaService* service,
68 const std::string& last_sent_version) { 62 const std::string& last_sent_version) {
69 service->ClearInstallRetryRequestId(); 63 service->ClearInstallRetryRequestId();
70 service->number_of_tries_ = 0; 64 service->number_of_tries_ = 0;
71 if (last_sent_version.length() == 0) 65 if (last_sent_version.length() == 0)
72 service->last_sent_version_ = base::Version("0.0.0.0"); 66 service->last_sent_version_ = base::Version("0.0.0.0");
73 else 67 else
74 service->last_sent_version_ = base::Version(last_sent_version); 68 service->last_sent_version_ = base::Version(last_sent_version);
75 service->current_ping_time_ = base::Time(); 69 service->current_ping_time_ = base::Time();
76 service->last_sent_time_ = base::Time(); 70 service->last_sent_time_ = base::Time();
77 service->locale_lang_ = std::string(); 71 service->locale_lang_ = std::string();
78 } 72 }
79 73
80 protected: 74 std::string test_application_id() const {
81 std::string test_application_id_; 75 return ios::GetChromeBrowserProvider()
82 bool need_update_; 76 ->GetOmahaServiceProvider()
83 base::MessageLoop loop_; 77 ->GetApplicationID();
84 TestChromeBrowserStateManager browser_state_manager_; 78 }
85 79
86 private: 80 private:
87 web::TestWebThread ui_thread_; 81 bool need_update_;
88 web::TestWebThread io_thread_; 82 IOSChromeScopedTestingChromeBrowserStateManager scoped_browser_state_manager_;
83 web::TestWebThreadBundle thread_bundle_;
sdefresne 2017/01/10 14:27:25 Using web::TestWebThreadBundle is better than usin
84
85 DISALLOW_COPY_AND_ASSIGN(OmahaServiceTest);
89 }; 86 };
90 87
91 TEST_F(OmahaServiceTest, PingMessageTest) { 88 TEST_F(OmahaServiceTest, PingMessageTest) {
92 const char* expectedResult = 89 const char* expectedResult =
93 "<request protocol=\"3.0\" version=\"iOS-1.0.0.0\" ismachine=\"1\" " 90 "<request protocol=\"3.0\" version=\"iOS-1.0.0.0\" ismachine=\"1\" "
94 "requestid=\"requestId\" sessionid=\"sessionId\"" 91 "requestid=\"requestId\" sessionid=\"sessionId\""
95 " hardware_class=\"[^\"]*\">" 92 " hardware_class=\"[^\"]*\">"
96 "<os platform=\"ios\" version=\"[0-9][0-9]*\\(\\.[0-9][0-9]*\\)*\"" 93 "<os platform=\"ios\" version=\"[0-9][0-9]*\\(\\.[0-9][0-9]*\\)*\""
97 " arch=\"[^\"]*\"/>" 94 " arch=\"[^\"]*\"/>"
98 "<app version=\"[^\"]*\" nextversion=\"\" lang=\"[^\"]*\"" 95 "<app version=\"[^\"]*\" nextversion=\"\" lang=\"[^\"]*\""
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 203
207 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 204 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
208 DCHECK(fetcher); 205 DCHECK(fetcher);
209 DCHECK(fetcher->delegate()); 206 DCHECK(fetcher->delegate());
210 fetcher->set_status(net::URLRequestStatus()); 207 fetcher->set_status(net::URLRequestStatus());
211 fetcher->set_response_code(200); 208 fetcher->set_response_code(200);
212 std::string response = 209 std::string response =
213 std::string( 210 std::string(
214 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">" 211 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">"
215 "<daystart elapsed_seconds=\"56754\"/><app appid=\"") + 212 "<daystart elapsed_seconds=\"56754\"/><app appid=\"") +
216 test_application_id_ + 213 test_application_id() +
217 "\" status=\"ok\">" 214 "\" status=\"ok\">"
218 "<updatecheck status=\"noupdate\"/><ping status=\"ok\"/>" 215 "<updatecheck status=\"noupdate\"/><ping status=\"ok\"/>"
219 "</app></response>"; 216 "</app></response>";
220 fetcher->SetResponseString(response); 217 fetcher->SetResponseString(response);
221 fetcher->delegate()->OnURLFetchComplete(fetcher); 218 fetcher->delegate()->OnURLFetchComplete(fetcher);
222 219
223 EXPECT_EQ(0, service.number_of_tries_); 220 EXPECT_EQ(0, service.number_of_tries_);
224 EXPECT_FALSE(service.current_ping_time_.is_null()); 221 EXPECT_FALSE(service.current_ping_time_.is_null());
225 EXPECT_EQ(service.current_ping_time_, service.next_tries_time_); 222 EXPECT_EQ(service.current_ping_time_, service.next_tries_time_);
226 EXPECT_GT(service.last_sent_time_, now); 223 EXPECT_GT(service.last_sent_time_, now);
(...skipping 16 matching lines...) Expand all
243 240
244 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 241 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
245 DCHECK(fetcher); 242 DCHECK(fetcher);
246 DCHECK(fetcher->delegate()); 243 DCHECK(fetcher->delegate());
247 fetcher->set_status(net::URLRequestStatus()); 244 fetcher->set_status(net::URLRequestStatus());
248 fetcher->set_response_code(200); 245 fetcher->set_response_code(200);
249 std::string response = 246 std::string response =
250 std::string( 247 std::string(
251 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">" 248 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">"
252 "<daystart elapsed_seconds=\"56754\"/><app appid=\"") + 249 "<daystart elapsed_seconds=\"56754\"/><app appid=\"") +
253 test_application_id_ + 250 test_application_id() +
254 "\" status=\"ok\">" 251 "\" status=\"ok\">"
255 "<event status=\"ok\"/>" 252 "<event status=\"ok\"/>"
256 "</app></response>"; 253 "</app></response>";
257 fetcher->SetResponseString(response); 254 fetcher->SetResponseString(response);
258 fetcher->delegate()->OnURLFetchComplete(fetcher); 255 fetcher->delegate()->OnURLFetchComplete(fetcher);
259 256
260 EXPECT_FALSE(service.current_ping_time_.is_null()); 257 EXPECT_FALSE(service.current_ping_time_.is_null());
261 EXPECT_GT(service.last_sent_time_, now); 258 EXPECT_GT(service.last_sent_time_, now);
262 EXPECT_FALSE(NeedUpdate()); 259 EXPECT_FALSE(NeedUpdate());
263 } 260 }
(...skipping 14 matching lines...) Expand all
278 275
279 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 276 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
280 DCHECK(fetcher); 277 DCHECK(fetcher);
281 DCHECK(fetcher->delegate()); 278 DCHECK(fetcher->delegate());
282 fetcher->set_status(net::URLRequestStatus()); 279 fetcher->set_status(net::URLRequestStatus());
283 fetcher->set_response_code(200); 280 fetcher->set_response_code(200);
284 std::string response = 281 std::string response =
285 std::string( 282 std::string(
286 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">" 283 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">"
287 "<daystart elapsed_seconds=\"56754\"/><app appid=\"") + 284 "<daystart elapsed_seconds=\"56754\"/><app appid=\"") +
288 test_application_id_ + 285 test_application_id() +
289 "\" status=\"ok\">" 286 "\" status=\"ok\">"
290 "<updatecheck status=\"ok\"><urls>" 287 "<updatecheck status=\"ok\"><urls>"
291 "<url codebase=\"http://www.goo.fr/foo/\"/></urls>" 288 "<url codebase=\"http://www.goo.fr/foo/\"/></urls>"
292 "<manifest version=\"0.0.1075.1441\">" 289 "<manifest version=\"0.0.1075.1441\">"
293 "<packages>" 290 "<packages>"
294 "<package hash=\"0\" name=\"Chrome\" required=\"true\" size=\"0\"/>" 291 "<package hash=\"0\" name=\"Chrome\" required=\"true\" size=\"0\"/>"
295 "</packages>" 292 "</packages>"
296 "<actions>" 293 "<actions>"
297 "<action event=\"update\" run=\"Chrome\"/>" 294 "<action event=\"update\" run=\"Chrome\"/>"
298 "<action event=\"postinstall\" osminversion=\"6.0\"/>" 295 "<action event=\"postinstall\" osminversion=\"6.0\"/>"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 410
414 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 411 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
415 DCHECK(fetcher); 412 DCHECK(fetcher);
416 DCHECK(fetcher->delegate()); 413 DCHECK(fetcher->delegate());
417 fetcher->set_status(net::URLRequestStatus()); 414 fetcher->set_status(net::URLRequestStatus());
418 fetcher->set_response_code(200); 415 fetcher->set_response_code(200);
419 std::string response = 416 std::string response =
420 std::string( 417 std::string(
421 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">" 418 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">"
422 "<daystart elapsed_seconds=\"0\"/><app appid=\"") + 419 "<daystart elapsed_seconds=\"0\"/><app appid=\"") +
423 test_application_id_ + 420 test_application_id() +
424 "\" status=\"ok\">" 421 "\" status=\"ok\">"
425 "<event status=\"ok\"/>" 422 "<event status=\"ok\"/>"
426 "</app></response>"; 423 "</app></response>";
427 fetcher->SetResponseString(response); 424 fetcher->SetResponseString(response);
428 fetcher->delegate()->OnURLFetchComplete(fetcher); 425 fetcher->delegate()->OnURLFetchComplete(fetcher);
429 426
430 EXPECT_EQ(1, service.number_of_tries_); 427 EXPECT_EQ(1, service.number_of_tries_);
431 EXPECT_LT(service.current_ping_time_ - now, base::TimeDelta::FromMinutes(1)); 428 EXPECT_LT(service.current_ping_time_ - now, base::TimeDelta::FromMinutes(1));
432 EXPECT_GT(service.next_tries_time_, service.current_ping_time_); 429 EXPECT_GT(service.next_tries_time_, service.current_ping_time_);
433 EXPECT_FALSE(NeedUpdate()); 430 EXPECT_FALSE(NeedUpdate());
(...skipping 16 matching lines...) Expand all
450 447
451 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 448 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
452 DCHECK(fetcher); 449 DCHECK(fetcher);
453 DCHECK(fetcher->delegate()); 450 DCHECK(fetcher->delegate());
454 fetcher->set_status(net::URLRequestStatus()); 451 fetcher->set_status(net::URLRequestStatus());
455 fetcher->set_response_code(200); 452 fetcher->set_response_code(200);
456 std::string response = 453 std::string response =
457 std::string( 454 std::string(
458 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">" 455 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">"
459 "<daystart elapsed_seconds=\"0\"/><app appid=\"") + 456 "<daystart elapsed_seconds=\"0\"/><app appid=\"") +
460 test_application_id_ + 457 test_application_id() +
461 "\" status=\"ok\">" 458 "\" status=\"ok\">"
462 "<updatecheck status=\"noupdate\"/><ping status=\"ok\"/>" 459 "<updatecheck status=\"noupdate\"/><ping status=\"ok\"/>"
463 "</app></response>"; 460 "</app></response>";
464 fetcher->SetResponseString(response); 461 fetcher->SetResponseString(response);
465 fetcher->delegate()->OnURLFetchComplete(fetcher); 462 fetcher->delegate()->OnURLFetchComplete(fetcher);
466 463
467 EXPECT_EQ(0, service.number_of_tries_); 464 EXPECT_EQ(0, service.number_of_tries_);
468 EXPECT_FALSE(service.current_ping_time_.is_null()); 465 EXPECT_FALSE(service.current_ping_time_.is_null());
469 EXPECT_GE(service.next_tries_time_ - now, base::TimeDelta::FromHours(2)); 466 EXPECT_GE(service.next_tries_time_ - now, base::TimeDelta::FromHours(2));
470 EXPECT_GT(service.last_sent_time_, now); 467 EXPECT_GT(service.last_sent_time_, now);
(...skipping 15 matching lines...) Expand all
486 service.SendPing(); 483 service.SendPing();
487 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 484 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
488 DCHECK(fetcher); 485 DCHECK(fetcher);
489 DCHECK(fetcher->delegate()); 486 DCHECK(fetcher->delegate());
490 fetcher->set_status(net::URLRequestStatus()); 487 fetcher->set_status(net::URLRequestStatus());
491 fetcher->set_response_code(200); 488 fetcher->set_response_code(200);
492 std::string response = 489 std::string response =
493 std::string( 490 std::string(
494 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">" 491 "<?xml version=\"1.0\"?><response protocol=\"3.0\" server=\"prod\">"
495 "<daystart elapsed_seconds=\"56754\"/><app appid=\"") + 492 "<daystart elapsed_seconds=\"56754\"/><app appid=\"") +
496 test_application_id_ + 493 test_application_id() +
497 "\" status=\"ok\">" 494 "\" status=\"ok\">"
498 "<updatecheck status=\"noupdate\"/><ping status=\"ok\"/>" 495 "<updatecheck status=\"noupdate\"/><ping status=\"ok\"/>"
499 "</app></response>"; 496 "</app></response>";
500 fetcher->SetResponseString(response); 497 fetcher->SetResponseString(response);
501 fetcher->delegate()->OnURLFetchComplete(fetcher); 498 fetcher->delegate()->OnURLFetchComplete(fetcher);
502 499
503 EXPECT_FALSE(service.IsNextPingInstallRetry()); 500 EXPECT_FALSE(service.IsNextPingInstallRetry());
504 id1 = service.GetNextPingRequestId(OmahaService::USAGE_PING); 501 id1 = service.GetNextPingRequestId(OmahaService::USAGE_PING);
505 ASSERT_NE(id1, service.GetNextPingRequestId(OmahaService::USAGE_PING)); 502 ASSERT_NE(id1, service.GetNextPingRequestId(OmahaService::USAGE_PING));
506 } 503 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698