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

Side by Side Diff: chrome/browser/ui/webui/help/version_updater_chromeos_unittest.cc

Issue 578293002: Fixed channel switch when user decides to switch to another channel in (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments are addressed. Created 6 years, 3 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
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698