OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/ui/webui/help/version_updater_chromeos.h" | |
6 | |
7 #include "base/bind.h" | |
8 #include "base/compiler_specific.h" | |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" | |
11 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | |
12 #include "chromeos/dbus/dbus_thread_manager.h" | |
13 #include "chromeos/dbus/fake_update_engine_client.h" | |
14 #include "testing/gmock/include/gmock/gmock.h" | |
15 #include "testing/gtest/include/gtest/gtest.h" | |
16 | |
17 using ::testing::AtLeast; | |
18 using ::testing::Return; | |
19 | |
20 namespace chromeos { | |
21 | |
22 namespace { | |
23 | |
24 void CheckNotification(VersionUpdater::Status /* status */, | |
25 int /* progress */, | |
26 const base::string16& /* message */) { | |
27 } | |
28 | |
29 } // namespace | |
30 | |
31 class VersionUpdaterCrosTest : public ::testing::Test { | |
32 protected: | |
33 VersionUpdaterCrosTest() | |
34 : version_updater_(VersionUpdater::Create()), | |
35 fake_update_engine_client_(NULL), | |
36 mock_user_manager_(new MockUserManager()), | |
37 user_manager_enabler_(mock_user_manager_) { | |
38 VersionUpdaterCros* version_updater = | |
39 static_cast<VersionUpdaterCros*>(version_updater_.get()); | |
40 version_updater->set_can_update_for_testing(true); | |
41 } | |
42 | |
43 virtual ~VersionUpdaterCrosTest() {} | |
44 | |
45 virtual void SetUp() OVERRIDE { | |
46 fake_update_engine_client_ = new FakeUpdateEngineClient(); | |
47 scoped_ptr<DBusThreadManagerSetter> dbus_setter = | |
48 DBusThreadManager::GetSetterForTesting(); | |
49 dbus_setter->SetUpdateEngineClient( | |
50 scoped_ptr<UpdateEngineClient>(fake_update_engine_client_).Pass()); | |
51 | |
52 EXPECT_CALL(*mock_user_manager_, IsCurrentUserOwner()) | |
53 .WillRepeatedly(Return(false)); | |
54 EXPECT_CALL(*mock_user_manager_, Shutdown()).Times(AtLeast(0)); | |
55 } | |
56 | |
57 scoped_ptr<VersionUpdater> version_updater_; | |
58 FakeUpdateEngineClient* fake_update_engine_client_; // Not owned. | |
59 | |
60 MockUserManager* mock_user_manager_; // Not owned. | |
61 ScopedUserManagerEnabler user_manager_enabler_; | |
62 }; | |
63 | |
64 TEST_F(VersionUpdaterCrosTest, SetChannelDuringChannelSwitch) { | |
James Hawkins
2014/09/18 16:34:03
SetChannelDuringChannelSwitch is not particularly
ygorshenin1
2014/09/18 19:46:47
Done.
| |
65 version_updater_->SetChannel("beta-channel", true); | |
66 | |
67 { | |
68 UpdateEngineClient::Status status; | |
69 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; | |
70 fake_update_engine_client_->set_default_status(status); | |
71 fake_update_engine_client_->NotifyObserversThatStatusChanged(status); | |
72 } | |
73 | |
74 EXPECT_EQ(0, fake_update_engine_client_->request_update_check_call_count()); | |
75 | |
76 // IDLE -> DOWNLOADING transition after update check. | |
77 version_updater_->CheckForUpdate(base::Bind(&CheckNotification)); | |
78 EXPECT_EQ(1, fake_update_engine_client_->request_update_check_call_count()); | |
79 | |
80 { | |
81 UpdateEngineClient::Status status; | |
82 status.status = UpdateEngineClient::UPDATE_STATUS_DOWNLOADING; | |
83 status.download_progress = 0.1; | |
84 fake_update_engine_client_->set_default_status(status); | |
85 fake_update_engine_client_->NotifyObserversThatStatusChanged(status); | |
86 } | |
87 | |
88 version_updater_->SetChannel("stable-channel", true); | |
89 | |
90 // DOWNLOADING -> REPORTING_ERROR_EVENT transition since target channel is not | |
91 // equal to downloading channel now. | |
92 { | |
93 UpdateEngineClient::Status status; | |
94 status.status = UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT; | |
95 fake_update_engine_client_->set_default_status(status); | |
96 fake_update_engine_client_->NotifyObserversThatStatusChanged(status); | |
97 } | |
98 | |
99 version_updater_->CheckForUpdate(base::Bind(&CheckNotification)); | |
100 EXPECT_EQ(1, fake_update_engine_client_->request_update_check_call_count()); | |
101 | |
102 // REPORTING_ERROR_EVENT -> IDLE transition, update check should be | |
103 // automatically scheduled. | |
104 { | |
105 UpdateEngineClient::Status status; | |
106 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; | |
107 fake_update_engine_client_->set_default_status(status); | |
108 fake_update_engine_client_->NotifyObserversThatStatusChanged(status); | |
109 } | |
110 | |
111 EXPECT_EQ(2, fake_update_engine_client_->request_update_check_call_count()); | |
112 } | |
113 | |
114 } // namespace chromeos | |
OLD | NEW |