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

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

Issue 20656002: Add profile selector menu to app list. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove binary changes Created 7 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #include "chrome/browser/ui/app_list/apps_model_builder.h" 5 #include "chrome/browser/ui/app_list/apps_model_builder.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 // There should be 4 extensions in the test profile. 84 // There should be 4 extensions in the test profile.
85 const ExtensionSet* extensions = service_->extensions(); 85 const ExtensionSet* extensions = service_->extensions();
86 ASSERT_EQ(static_cast<size_t>(4), extensions->size()); 86 ASSERT_EQ(static_cast<size_t>(4), extensions->size());
87 } 87 }
88 }; 88 };
89 89
90 TEST_F(AppsModelBuilderTest, Build) { 90 TEST_F(AppsModelBuilderTest, Build) {
91 scoped_ptr<app_list::AppListModel::Apps> model( 91 scoped_ptr<app_list::AppListModel::Apps> model(
92 new app_list::AppListModel::Apps); 92 new app_list::AppListModel::Apps);
93 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 93 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
94 builder.Build();
95 94
96 // The apps list would have 3 extension apps in the profile. 95 // The apps list would have 3 extension apps in the profile.
97 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"), 96 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"),
98 GetModelContent(model.get())); 97 GetModelContent(model.get()));
99 } 98 }
100 99
101 TEST_F(AppsModelBuilderTest, HideWebStore) { 100 TEST_F(AppsModelBuilderTest, HideWebStore) {
102 // Install a "web store" app. 101 // Install a "web store" app.
103 scoped_refptr<extensions::Extension> store = 102 scoped_refptr<extensions::Extension> store =
104 MakeApp("webstore", 103 MakeApp("webstore",
105 "0.0", 104 "0.0",
106 "http://google.com", 105 "http://google.com",
107 std::string(extension_misc::kWebStoreAppId)); 106 std::string(extension_misc::kWebStoreAppId));
108 service_->AddExtension(store.get()); 107 service_->AddExtension(store.get());
109 108
110 // Install an "enterprise web store" app. 109 // Install an "enterprise web store" app.
111 scoped_refptr<extensions::Extension> enterprise_store = 110 scoped_refptr<extensions::Extension> enterprise_store =
112 MakeApp("enterprise_webstore", 111 MakeApp("enterprise_webstore",
113 "0.0", 112 "0.0",
114 "http://google.com", 113 "http://google.com",
115 std::string(extension_misc::kEnterpriseWebStoreAppId)); 114 std::string(extension_misc::kEnterpriseWebStoreAppId));
116 service_->AddExtension(enterprise_store.get()); 115 service_->AddExtension(enterprise_store.get());
117 116
118 // Web stores should be present in the AppListModel. 117 // Web stores should be present in the AppListModel.
119 app_list::AppListModel::Apps model1; 118 app_list::AppListModel::Apps model1;
120 AppsModelBuilder builder1(profile_.get(), &model1, NULL); 119 AppsModelBuilder builder1(profile_.get(), &model1, NULL);
121 builder1.Build();
122 std::string content = GetModelContent(&model1); 120 std::string content = GetModelContent(&model1);
123 EXPECT_NE(std::string::npos, content.find("webstore")); 121 EXPECT_NE(std::string::npos, content.find("webstore"));
124 EXPECT_NE(std::string::npos, content.find("enterprise_webstore")); 122 EXPECT_NE(std::string::npos, content.find("enterprise_webstore"));
125 123
126 // Activate the HideWebStoreIcon policy. 124 // Activate the HideWebStoreIcon policy.
127 profile_->GetPrefs()->SetBoolean(prefs::kHideWebStoreIcon, true); 125 profile_->GetPrefs()->SetBoolean(prefs::kHideWebStoreIcon, true);
128 126
129 // Web stores should NOT be in the AppListModel. 127 // Web stores should NOT be in the AppListModel.
130 app_list::AppListModel::Apps model2; 128 app_list::AppListModel::Apps model2;
131 AppsModelBuilder builder2(profile_.get(), &model2, NULL); 129 AppsModelBuilder builder2(profile_.get(), &model2, NULL);
132 builder2.Build();
133 content = GetModelContent(&model2); 130 content = GetModelContent(&model2);
134 EXPECT_EQ(std::string::npos, content.find("webstore")); 131 EXPECT_EQ(std::string::npos, content.find("webstore"));
135 EXPECT_EQ(std::string::npos, content.find("enterprise_webstore")); 132 EXPECT_EQ(std::string::npos, content.find("enterprise_webstore"));
136 } 133 }
137 134
138 TEST_F(AppsModelBuilderTest, DisableAndEnable) { 135 TEST_F(AppsModelBuilderTest, DisableAndEnable) {
139 scoped_ptr<app_list::AppListModel::Apps> model( 136 scoped_ptr<app_list::AppListModel::Apps> model(
140 new app_list::AppListModel::Apps); 137 new app_list::AppListModel::Apps);
141 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 138 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
142 builder.Build();
143 139
144 service_->DisableExtension(kHostedAppId, 140 service_->DisableExtension(kHostedAppId,
145 extensions::Extension::DISABLE_NONE); 141 extensions::Extension::DISABLE_NONE);
146 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"), 142 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"),
147 GetModelContent(model.get())); 143 GetModelContent(model.get()));
148 144
149 service_->EnableExtension(kHostedAppId); 145 service_->EnableExtension(kHostedAppId);
150 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"), 146 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"),
151 GetModelContent(model.get())); 147 GetModelContent(model.get()));
152 } 148 }
153 149
154 TEST_F(AppsModelBuilderTest, Uninstall) { 150 TEST_F(AppsModelBuilderTest, Uninstall) {
155 scoped_ptr<app_list::AppListModel::Apps> model( 151 scoped_ptr<app_list::AppListModel::Apps> model(
156 new app_list::AppListModel::Apps); 152 new app_list::AppListModel::Apps);
157 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 153 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
158 builder.Build();
159 154
160 service_->UninstallExtension(kPackagedApp2Id, false, NULL); 155 service_->UninstallExtension(kPackagedApp2Id, false, NULL);
161 EXPECT_EQ(std::string("Packaged App 1,Hosted App"), 156 EXPECT_EQ(std::string("Packaged App 1,Hosted App"),
162 GetModelContent(model.get())); 157 GetModelContent(model.get()));
163 158
164 base::RunLoop().RunUntilIdle(); 159 base::RunLoop().RunUntilIdle();
165 } 160 }
166 161
167 TEST_F(AppsModelBuilderTest, UninstallTerminatedApp) { 162 TEST_F(AppsModelBuilderTest, UninstallTerminatedApp) {
168 scoped_ptr<app_list::AppListModel::Apps> model( 163 scoped_ptr<app_list::AppListModel::Apps> model(
169 new app_list::AppListModel::Apps); 164 new app_list::AppListModel::Apps);
170 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 165 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
171 builder.Build();
172 166
173 const extensions::Extension* app = 167 const extensions::Extension* app =
174 service_->GetInstalledExtension(kPackagedApp2Id); 168 service_->GetInstalledExtension(kPackagedApp2Id);
175 ASSERT_TRUE(app != NULL); 169 ASSERT_TRUE(app != NULL);
176 170
177 // Simulate an app termination. 171 // Simulate an app termination.
178 service_->TrackTerminatedExtensionForTest(app); 172 service_->TrackTerminatedExtensionForTest(app);
179 173
180 service_->UninstallExtension(kPackagedApp2Id, false, NULL); 174 service_->UninstallExtension(kPackagedApp2Id, false, NULL);
181 EXPECT_EQ(std::string("Packaged App 1,Hosted App"), 175 EXPECT_EQ(std::string("Packaged App 1,Hosted App"),
182 GetModelContent(model.get())); 176 GetModelContent(model.get()));
183 177
184 base::RunLoop().RunUntilIdle(); 178 base::RunLoop().RunUntilIdle();
185 } 179 }
186 180
187 TEST_F(AppsModelBuilderTest, OrdinalPrefsChange) { 181 TEST_F(AppsModelBuilderTest, OrdinalPrefsChange) {
188 scoped_ptr<app_list::AppListModel::Apps> model( 182 scoped_ptr<app_list::AppListModel::Apps> model(
189 new app_list::AppListModel::Apps); 183 new app_list::AppListModel::Apps);
190 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 184 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
191 builder.Build();
192 185
193 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 186 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting();
194 187
195 syncer::StringOrdinal package_app_page = 188 syncer::StringOrdinal package_app_page =
196 sorting->GetPageOrdinal(kPackagedApp1Id); 189 sorting->GetPageOrdinal(kPackagedApp1Id);
197 sorting->SetPageOrdinal(kHostedAppId, package_app_page.CreateBefore()); 190 sorting->SetPageOrdinal(kHostedAppId, package_app_page.CreateBefore());
198 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"), 191 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"),
199 GetModelContent(model.get())); 192 GetModelContent(model.get()));
200 193
201 syncer::StringOrdinal app1_ordinal = 194 syncer::StringOrdinal app1_ordinal =
202 sorting->GetAppLaunchOrdinal(kPackagedApp1Id); 195 sorting->GetAppLaunchOrdinal(kPackagedApp1Id);
203 syncer::StringOrdinal app2_ordinal = 196 syncer::StringOrdinal app2_ordinal =
204 sorting->GetAppLaunchOrdinal(kPackagedApp2Id); 197 sorting->GetAppLaunchOrdinal(kPackagedApp2Id);
205 sorting->SetPageOrdinal(kHostedAppId, package_app_page); 198 sorting->SetPageOrdinal(kHostedAppId, package_app_page);
206 sorting->SetAppLaunchOrdinal(kHostedAppId, 199 sorting->SetAppLaunchOrdinal(kHostedAppId,
207 app1_ordinal.CreateBetween(app2_ordinal)); 200 app1_ordinal.CreateBetween(app2_ordinal));
208 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"), 201 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"),
209 GetModelContent(model.get())); 202 GetModelContent(model.get()));
210 } 203 }
211 204
212 TEST_F(AppsModelBuilderTest, OnExtensionMoved) { 205 TEST_F(AppsModelBuilderTest, OnExtensionMoved) {
213 scoped_ptr<app_list::AppListModel::Apps> model( 206 scoped_ptr<app_list::AppListModel::Apps> model(
214 new app_list::AppListModel::Apps); 207 new app_list::AppListModel::Apps);
215 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 208 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
216 builder.Build();
217 209
218 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 210 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting();
219 sorting->SetPageOrdinal(kHostedAppId, 211 sorting->SetPageOrdinal(kHostedAppId,
220 sorting->GetPageOrdinal(kPackagedApp1Id)); 212 sorting->GetPageOrdinal(kPackagedApp1Id));
221 213
222 service_->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id); 214 service_->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id);
223 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"), 215 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"),
224 GetModelContent(model.get())); 216 GetModelContent(model.get()));
225 217
226 service_->OnExtensionMoved(kHostedAppId, kPackagedApp2Id, std::string()); 218 service_->OnExtensionMoved(kHostedAppId, kPackagedApp2Id, std::string());
(...skipping 12 matching lines...) Expand all
239 231
240 // Creates an corrupted ordinal case. 232 // Creates an corrupted ordinal case.
241 ExtensionScopedPrefs* scoped_prefs = service_->extension_prefs(); 233 ExtensionScopedPrefs* scoped_prefs = service_->extension_prefs();
242 scoped_prefs->UpdateExtensionPref( 234 scoped_prefs->UpdateExtensionPref(
243 kHostedAppId, 235 kHostedAppId,
244 "page_ordinal", 236 "page_ordinal",
245 base::Value::CreateStringValue("a corrupted ordinal")); 237 base::Value::CreateStringValue("a corrupted ordinal"));
246 238
247 scoped_ptr<app_list::AppListModel::Apps> model( 239 scoped_ptr<app_list::AppListModel::Apps> model(
248 new app_list::AppListModel::Apps); 240 new app_list::AppListModel::Apps);
249 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
250 241
251 // This should not assert or crash. 242 // This should not assert or crash.
252 builder.Build(); 243 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
253 } 244 }
254 245
255 TEST_F(AppsModelBuilderTest, OrdinalConfilicts) { 246 TEST_F(AppsModelBuilderTest, OrdinalConfilicts) {
256 // Creates conflict ordinals for app1 and app2. 247 // Creates conflict ordinals for app1 and app2.
257 syncer::StringOrdinal conflict_ordinal = 248 syncer::StringOrdinal conflict_ordinal =
258 syncer::StringOrdinal::CreateInitialOrdinal(); 249 syncer::StringOrdinal::CreateInitialOrdinal();
259 250
260 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 251 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting();
261 sorting->SetPageOrdinal(kHostedAppId, conflict_ordinal); 252 sorting->SetPageOrdinal(kHostedAppId, conflict_ordinal);
262 sorting->SetAppLaunchOrdinal(kHostedAppId, conflict_ordinal); 253 sorting->SetAppLaunchOrdinal(kHostedAppId, conflict_ordinal);
263 254
264 sorting->SetPageOrdinal(kPackagedApp1Id, conflict_ordinal); 255 sorting->SetPageOrdinal(kPackagedApp1Id, conflict_ordinal);
265 sorting->SetAppLaunchOrdinal(kPackagedApp1Id, conflict_ordinal); 256 sorting->SetAppLaunchOrdinal(kPackagedApp1Id, conflict_ordinal);
266 257
267 sorting->SetPageOrdinal(kPackagedApp2Id, conflict_ordinal); 258 sorting->SetPageOrdinal(kPackagedApp2Id, conflict_ordinal);
268 sorting->SetAppLaunchOrdinal(kPackagedApp2Id, conflict_ordinal); 259 sorting->SetAppLaunchOrdinal(kPackagedApp2Id, conflict_ordinal);
269 260
270 scoped_ptr<app_list::AppListModel::Apps> model( 261 scoped_ptr<app_list::AppListModel::Apps> model(
271 new app_list::AppListModel::Apps); 262 new app_list::AppListModel::Apps);
272 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 263 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
273 builder.Build();
274 264
275 // By default, conflicted items are sorted by their app ids. 265 // By default, conflicted items are sorted by their app ids.
276 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"), 266 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"),
277 GetModelContent(model.get())); 267 GetModelContent(model.get()));
278 268
279 // Move hosted app between app1 and app2 and it should not crash. 269 // Move hosted app between app1 and app2 and it should not crash.
280 service_->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id); 270 service_->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id);
281 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"), 271 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"),
282 GetModelContent(model.get())); 272 GetModelContent(model.get()));
283 } 273 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/app_list/apps_model_builder.cc ('k') | chrome/browser/ui/app_list/chrome_signin_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698