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

Side by Side Diff: chrome/browser/ui/app_list/app_list_service_unittest.cc

Issue 134303006: Revert of Add UMA to track app launcher discoverability. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/command_line.h" 5 #include "base/command_line.h"
6 #include "base/files/file_path.h" 6 #include "base/files/file_path.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/prefs/pref_registry_simple.h" 8 #include "base/prefs/pref_registry_simple.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/prefs/pref_service_factory.h" 10 #include "base/prefs/pref_service_factory.h"
(...skipping 20 matching lines...) Expand all
31 local_state, 31 local_state,
32 profile_store.Pass(), 32 profile_store.Pass(),
33 keep_alive_service.Pass()), 33 keep_alive_service.Pass()),
34 showing_for_profile_(NULL) { 34 showing_for_profile_(NULL) {
35 } 35 }
36 36
37 Profile* showing_for_profile() const { 37 Profile* showing_for_profile() const {
38 return showing_for_profile_; 38 return showing_for_profile_;
39 } 39 }
40 40
41 void PerformStartupChecks(Profile* profile) { 41 void HandleCommandLineFlags(Profile* profile) {
42 AppListServiceImpl::PerformStartupChecks(profile); 42 AppListServiceImpl::HandleCommandLineFlags(profile);
43 } 43 }
44 44
45 virtual Profile* GetCurrentAppListProfile() OVERRIDE { 45 virtual Profile* GetCurrentAppListProfile() OVERRIDE {
46 // We don't return showing_for_profile_ here because that is only defined if 46 // We don't return showing_for_profile_ here because that is only defined if
47 // the app list is visible. 47 // the app list is visible.
48 return NULL; 48 return NULL;
49 } 49 }
50 50
51 virtual void CreateForProfile(Profile* requested_profile) OVERRIDE { 51 virtual void CreateForProfile(Profile* requested_profile) OVERRIDE {
52 } 52 }
53 53
54 virtual void ShowForProfile(Profile* requested_profile) OVERRIDE { 54 virtual void ShowForProfile(Profile* requested_profile) OVERRIDE {
55 showing_for_profile_ = requested_profile; 55 showing_for_profile_ = requested_profile;
56 RecordAppListLaunch();
57 } 56 }
58 57
59 virtual void DismissAppList() OVERRIDE { 58 virtual void DismissAppList() OVERRIDE {
60 showing_for_profile_ = NULL; 59 showing_for_profile_ = NULL;
61 } 60 }
62 61
63 virtual bool IsAppListVisible() const OVERRIDE { 62 virtual bool IsAppListVisible() const OVERRIDE {
64 return !!showing_for_profile_; 63 return !!showing_for_profile_;
65 } 64 }
66 65
67 virtual gfx::NativeWindow GetAppListWindow() OVERRIDE { 66 virtual gfx::NativeWindow GetAppListWindow() OVERRIDE {
68 return NULL; 67 return NULL;
69 } 68 }
70 69
71 virtual AppListControllerDelegate* GetControllerDelegate() OVERRIDE { 70 virtual AppListControllerDelegate* GetControllerDelegate() OVERRIDE {
72 return NULL; 71 return NULL;
73 } 72 }
74 73
75 private: 74 private:
76 Profile* showing_for_profile_; 75 Profile* showing_for_profile_;
77 }; 76 };
78 77
79 class AppListServiceUnitTest : public testing::Test { 78 class AppListServiceUnitTest : public testing::Test {
80 public: 79 public:
81 AppListServiceUnitTest() {}
82
83 virtual void SetUp() OVERRIDE { 80 virtual void SetUp() OVERRIDE {
84 SetupWithCommandLine(CommandLine(CommandLine::NO_PROGRAM)); 81 SetupWithCommandLine(CommandLine(CommandLine::NO_PROGRAM));
85 } 82 }
86 83
87 protected:
88 void SetupWithCommandLine(const CommandLine& command_line) { 84 void SetupWithCommandLine(const CommandLine& command_line) {
89 user_data_dir_ = base::FilePath(FILE_PATH_LITERAL("udd")); 85 user_data_dir_ = base::FilePath(FILE_PATH_LITERAL("udd"));
90 profile1_.reset( 86 profile1_.reset(
91 new FakeProfile("p1", user_data_dir_.AppendASCII("profile1"))); 87 new FakeProfile("p1", user_data_dir_.AppendASCII("profile1")));
92 profile2_.reset( 88 profile2_.reset(
93 new FakeProfile("p2", user_data_dir_.AppendASCII("profile2"))); 89 new FakeProfile("p2", user_data_dir_.AppendASCII("profile2")));
94 PrefRegistrySimple* pref_registry = new PrefRegistrySimple; 90 PrefRegistrySimple* pref_registry = new PrefRegistrySimple;
95 91
96 AppListService::RegisterPrefs(pref_registry); 92 AppListService::RegisterPrefs(pref_registry);
97 profiles::RegisterPrefs(pref_registry); 93 profiles::RegisterPrefs(pref_registry);
98 94
99 base::PrefServiceFactory factory; 95 base::PrefServiceFactory factory;
100 factory.set_user_prefs(make_scoped_refptr(new TestingPrefStore)); 96 factory.set_user_prefs(make_scoped_refptr(new TestingPrefStore));
101 local_state_ = factory.Create(pref_registry).Pass(); 97 local_state_ = factory.Create(pref_registry).Pass();
102 98
103 keep_alive_service_ = new FakeKeepAliveService; 99 keep_alive_service_ = new FakeKeepAliveService;
104 profile_store_ = new FakeProfileStore(user_data_dir_); 100 profile_store_ = new FakeProfileStore(user_data_dir_);
105 service_.reset(new TestingAppListServiceImpl( 101 service_.reset(new TestingAppListServiceImpl(
106 command_line, 102 command_line,
107 local_state_.get(), 103 local_state_.get(),
108 scoped_ptr<ProfileStore>(profile_store_), 104 scoped_ptr<ProfileStore>(profile_store_),
109 scoped_ptr<KeepAliveService>(keep_alive_service_))); 105 scoped_ptr<KeepAliveService>(keep_alive_service_)));
110 } 106 }
111 107
112 void EnableAppList() {
113 service_->EnableAppList(profile1_.get(),
114 AppListService::ENABLE_VIA_COMMAND_LINE);
115 }
116
117 base::FilePath user_data_dir_; 108 base::FilePath user_data_dir_;
118 scoped_ptr<PrefService> local_state_; 109 scoped_ptr<PrefService> local_state_;
119 FakeProfileStore* profile_store_; 110 FakeProfileStore* profile_store_;
120 FakeKeepAliveService* keep_alive_service_; 111 FakeKeepAliveService* keep_alive_service_;
121 scoped_ptr<TestingAppListServiceImpl> service_; 112 scoped_ptr<TestingAppListServiceImpl> service_;
122 scoped_ptr<FakeProfile> profile1_; 113 scoped_ptr<FakeProfile> profile1_;
123 scoped_ptr<FakeProfile> profile2_; 114 scoped_ptr<FakeProfile> profile2_;
124
125 DISALLOW_COPY_AND_ASSIGN(AppListServiceUnitTest);
126 }; 115 };
127 116
128 TEST_F(AppListServiceUnitTest, EnablingStateIsPersisted) { 117 TEST_F(AppListServiceUnitTest, EnablingStateIsPersisted) {
129 EXPECT_FALSE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled)); 118 EXPECT_FALSE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled));
130 EnableAppList(); 119 service_->EnableAppList(profile1_.get());
131 EXPECT_TRUE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled)); 120 EXPECT_TRUE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled));
132 EXPECT_EQ(profile1_->GetPath(), user_data_dir_.Append( 121 EXPECT_EQ(profile1_->GetPath(), user_data_dir_.Append(
133 local_state_->GetFilePath(prefs::kAppListProfile))); 122 local_state_->GetFilePath(prefs::kAppListProfile)));
134 } 123 }
135 124
136 TEST_F(AppListServiceUnitTest, ShowingForProfileLoadsAProfile) { 125 TEST_F(AppListServiceUnitTest, ShowingForProfileLoadsAProfile) {
137 profile_store_->LoadProfile(profile1_.get()); 126 profile_store_->LoadProfile(profile1_.get());
138 EnableAppList(); 127 service_->EnableAppList(profile1_.get());
139 service_->Show(); 128 service_->Show();
140 EXPECT_EQ(profile1_.get(), service_->showing_for_profile()); 129 EXPECT_EQ(profile1_.get(), service_->showing_for_profile());
141 EXPECT_TRUE(service_->IsAppListVisible()); 130 EXPECT_TRUE(service_->IsAppListVisible());
142 } 131 }
143 132
144 TEST_F(AppListServiceUnitTest, RemovedProfileResetsToInitialProfile) { 133 TEST_F(AppListServiceUnitTest, RemovedProfileResetsToInitialProfile) {
145 EnableAppList(); 134 service_->EnableAppList(profile1_.get());
146 profile_store_->RemoveProfile(profile1_.get()); 135 profile_store_->RemoveProfile(profile1_.get());
147 base::FilePath initial_profile_path = 136 base::FilePath initial_profile_path =
148 user_data_dir_.AppendASCII(chrome::kInitialProfile); 137 user_data_dir_.AppendASCII(chrome::kInitialProfile);
149 EXPECT_EQ(initial_profile_path, 138 EXPECT_EQ(initial_profile_path,
150 service_->GetProfilePath(profile_store_->GetUserDataDir())); 139 service_->GetProfilePath(profile_store_->GetUserDataDir()));
151 } 140 }
152 141
153 TEST_F(AppListServiceUnitTest, 142 TEST_F(AppListServiceUnitTest,
154 RemovedProfileResetsToLastUsedProfileIfExists) { 143 RemovedProfileResetsToLastUsedProfileIfExists) {
155 local_state_->SetString(prefs::kProfileLastUsed, "last-used"); 144 local_state_->SetString(prefs::kProfileLastUsed, "last-used");
156 EnableAppList(); 145 service_->EnableAppList(profile1_.get());
157 profile_store_->RemoveProfile(profile1_.get()); 146 profile_store_->RemoveProfile(profile1_.get());
158 base::FilePath last_used_profile_path = 147 base::FilePath last_used_profile_path =
159 user_data_dir_.AppendASCII("last-used"); 148 user_data_dir_.AppendASCII("last-used");
160 EXPECT_EQ(last_used_profile_path, 149 EXPECT_EQ(last_used_profile_path,
161 service_->GetProfilePath(profile_store_->GetUserDataDir())); 150 service_->GetProfilePath(profile_store_->GetUserDataDir()));
162 } 151 }
163 152
164 TEST_F(AppListServiceUnitTest, SwitchingProfilesPersists) { 153 TEST_F(AppListServiceUnitTest, SwitchingProfilesPersists) {
165 profile_store_->LoadProfile(profile1_.get()); 154 profile_store_->LoadProfile(profile1_.get());
166 profile_store_->LoadProfile(profile2_.get()); 155 profile_store_->LoadProfile(profile2_.get());
167 EnableAppList(); 156 service_->EnableAppList(profile1_.get());
168 service_->SetProfilePath(profile2_->GetPath()); 157 service_->SetProfilePath(profile2_->GetPath());
169 service_->Show(); 158 service_->Show();
170 EXPECT_EQ(profile2_.get(), service_->showing_for_profile()); 159 EXPECT_EQ(profile2_.get(), service_->showing_for_profile());
171 EXPECT_EQ(profile2_->GetPath(), 160 EXPECT_EQ(profile2_->GetPath(),
172 service_->GetProfilePath(profile_store_->GetUserDataDir())); 161 service_->GetProfilePath(profile_store_->GetUserDataDir()));
173 service_->SetProfilePath(profile1_->GetPath()); 162 service_->SetProfilePath(profile1_->GetPath());
174 EXPECT_EQ(profile1_->GetPath(), 163 EXPECT_EQ(profile1_->GetPath(),
175 service_->GetProfilePath(profile_store_->GetUserDataDir())); 164 service_->GetProfilePath(profile_store_->GetUserDataDir()));
176 } 165 }
177 166
178 TEST_F(AppListServiceUnitTest, EnableViaCommandLineFlag) { 167 TEST_F(AppListServiceUnitTest, EnableViaCommandLineFlag) {
179 CommandLine command_line(CommandLine::NO_PROGRAM); 168 CommandLine command_line(CommandLine::NO_PROGRAM);
180 command_line.AppendSwitch(switches::kEnableAppList); 169 command_line.AppendSwitch(switches::kEnableAppList);
181 SetupWithCommandLine(command_line); 170 SetupWithCommandLine(command_line);
182 service_->PerformStartupChecks(profile1_.get()); 171 service_->HandleCommandLineFlags(profile1_.get());
183 EXPECT_TRUE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled)); 172 EXPECT_TRUE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled));
184 } 173 }
185 174
186 TEST_F(AppListServiceUnitTest, DisableViaCommandLineFlag) { 175 TEST_F(AppListServiceUnitTest, DisableViaCommandLineFlag) {
187 CommandLine command_line(CommandLine::NO_PROGRAM); 176 CommandLine command_line(CommandLine::NO_PROGRAM);
188 command_line.AppendSwitch(switches::kResetAppListInstallState); 177 command_line.AppendSwitch(switches::kResetAppListInstallState);
189 SetupWithCommandLine(command_line); 178 SetupWithCommandLine(command_line);
190 service_->PerformStartupChecks(profile1_.get()); 179 service_->HandleCommandLineFlags(profile1_.get());
191 EXPECT_FALSE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled)); 180 EXPECT_FALSE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled));
192 } 181 }
193
194 TEST_F(AppListServiceUnitTest, UMAPrefStates) {
195 EXPECT_FALSE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled));
196 EXPECT_EQ(AppListService::ENABLE_NOT_RECORDED,
197 local_state_->GetInteger(prefs::kAppListEnableMethod));
198 EXPECT_EQ(0, local_state_->GetInt64(prefs::kAppListEnableTime));
199
200 service_->EnableAppList(profile1_.get(),
201 AppListService::ENABLE_FOR_APP_INSTALL);
202
203 // After enable, method and time should be recorded.
204 EXPECT_TRUE(local_state_->GetBoolean(prefs::kAppLauncherHasBeenEnabled));
205 EXPECT_EQ(AppListService::ENABLE_FOR_APP_INSTALL,
206 local_state_->GetInteger(prefs::kAppListEnableMethod));
207 EXPECT_NE(0, local_state_->GetInt64(prefs::kAppListEnableTime));
208
209 service_->ShowForProfile(profile1_.get());
210
211 // After a regular "show", time should be cleared, so UMA is not re-recorded.
212 EXPECT_EQ(AppListService::ENABLE_FOR_APP_INSTALL,
213 local_state_->GetInteger(prefs::kAppListEnableMethod));
214 EXPECT_EQ(0, local_state_->GetInt64(prefs::kAppListEnableTime));
215
216 // A second enable should be a no-op.
217 service_->EnableAppList(profile1_.get(),
218 AppListService::ENABLE_FOR_APP_INSTALL);
219 EXPECT_EQ(AppListService::ENABLE_FOR_APP_INSTALL,
220 local_state_->GetInteger(prefs::kAppListEnableMethod));
221 EXPECT_EQ(0, local_state_->GetInt64(prefs::kAppListEnableTime));
222
223 // An auto-show here should keep the recorded enable method.
224 service_->AutoShowForProfile(profile1_.get());
225 EXPECT_EQ(AppListService::ENABLE_FOR_APP_INSTALL,
226 local_state_->GetInteger(prefs::kAppListEnableMethod));
227
228 // Clear the enable state, so we can enable again.
229 local_state_->SetBoolean(prefs::kAppLauncherHasBeenEnabled, false);
230 service_->EnableAppList(profile1_.get(),
231 AppListService::ENABLE_FOR_APP_INSTALL);
232
233 EXPECT_EQ(AppListService::ENABLE_FOR_APP_INSTALL,
234 local_state_->GetInteger(prefs::kAppListEnableMethod));
235 EXPECT_NE(0, local_state_->GetInt64(prefs::kAppListEnableTime));
236
237 // An auto-show here should update the enable method to prevent recording it
238 // as ENABLE_FOR_APP_INSTALL.
239 service_->AutoShowForProfile(profile1_.get());
240 EXPECT_EQ(AppListService::ENABLE_SHOWN_UNDISCOVERED,
241 local_state_->GetInteger(prefs::kAppListEnableMethod));
242 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/app_list/app_list_service_mac.mm ('k') | chrome/browser/ui/ash/app_list/app_list_service_ash.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698