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

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

Issue 17038002: Separate the NTP app ordering from the app list app ordering (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 7 years, 2 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"
11 #include "base/prefs/pref_service.h" 11 #include "base/prefs/pref_service.h"
12 #include "base/run_loop.h" 12 #include "base/run_loop.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "chrome/browser/extensions/extension_function_test_utils.h" 14 #include "chrome/browser/extensions/extension_function_test_utils.h"
15 #include "chrome/browser/extensions/extension_service_unittest.h" 15 #include "chrome/browser/extensions/extension_service_unittest.h"
16 #include "chrome/browser/extensions/extension_sorting.h" 16 #include "chrome/browser/ui/app_list/app_list_extension_sorting.h"
17 #include "chrome/common/extensions/extension_constants.h" 17 #include "chrome/common/extensions/extension_constants.h"
18 #include "chrome/common/pref_names.h" 18 #include "chrome/common/pref_names.h"
19 #include "chrome/test/base/testing_profile.h" 19 #include "chrome/test/base/testing_profile.h"
20 #include "extensions/common/manifest.h" 20 #include "extensions/common/manifest.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 #include "ui/app_list/app_list_item_model.h" 22 #include "ui/app_list/app_list_item_model.h"
23 23
24 namespace { 24 namespace {
25 25
26 const char kHostedAppId[] = "dceacbkfkmllgmjmbhgkpjegnodmildf"; 26 const char kHostedAppId[] = "dceacbkfkmllgmjmbhgkpjegnodmildf";
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 GetModelContent(model.get())); 176 GetModelContent(model.get()));
177 177
178 base::RunLoop().RunUntilIdle(); 178 base::RunLoop().RunUntilIdle();
179 } 179 }
180 180
181 TEST_F(AppsModelBuilderTest, OrdinalPrefsChange) { 181 TEST_F(AppsModelBuilderTest, OrdinalPrefsChange) {
182 scoped_ptr<app_list::AppListModel::Apps> model( 182 scoped_ptr<app_list::AppListModel::Apps> model(
183 new app_list::AppListModel::Apps); 183 new app_list::AppListModel::Apps);
184 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 184 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
185 185
186 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 186 AppListExtensionSorting* ordering =
187 service_->extension_prefs()->app_list_extension_sorting();
187 188
188 syncer::StringOrdinal package_app_page = 189 syncer::StringOrdinal app1_ordinal =
189 sorting->GetPageOrdinal(kPackagedApp1Id); 190 ordering->GetAppListOrdinalFromPrefs(kPackagedApp1Id);
190 sorting->SetPageOrdinal(kHostedAppId, package_app_page.CreateBefore()); 191 syncer::StringOrdinal app2_ordinal =
192 ordering->GetAppListOrdinalFromPrefs(kPackagedApp2Id);
193
194 ordering->UpdateAppListOrdinalFromSync(
195 kHostedAppId,
196 app1_ordinal.CreateBefore());
191 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"), 197 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"),
192 GetModelContent(model.get())); 198 GetModelContent(model.get()));
193 199
194 syncer::StringOrdinal app1_ordinal = 200 ordering->UpdateAppListOrdinalFromSync(
195 sorting->GetAppLaunchOrdinal(kPackagedApp1Id); 201 kHostedAppId,
196 syncer::StringOrdinal app2_ordinal = 202 app1_ordinal.CreateBetween(app2_ordinal));
197 sorting->GetAppLaunchOrdinal(kPackagedApp2Id);
198 sorting->SetPageOrdinal(kHostedAppId, package_app_page);
199 sorting->SetAppLaunchOrdinal(kHostedAppId,
200 app1_ordinal.CreateBetween(app2_ordinal));
201 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"), 203 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"),
202 GetModelContent(model.get())); 204 GetModelContent(model.get()));
203 } 205 }
204 206
205 TEST_F(AppsModelBuilderTest, OnExtensionMoved) { 207 TEST_F(AppsModelBuilderTest, OnExtensionMoved) {
206 scoped_ptr<app_list::AppListModel::Apps> model( 208 scoped_ptr<app_list::AppListModel::Apps> model(
207 new app_list::AppListModel::Apps); 209 new app_list::AppListModel::Apps);
208 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 210 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
209 211
210 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 212 AppListExtensionSorting* ordering =
211 sorting->SetPageOrdinal(kHostedAppId, 213 service_->extension_prefs()->app_list_extension_sorting();
212 sorting->GetPageOrdinal(kPackagedApp1Id));
213 214
214 service_->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id); 215 ordering->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id);
215 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"), 216 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"),
216 GetModelContent(model.get())); 217 GetModelContent(model.get()));
217 218
218 service_->OnExtensionMoved(kHostedAppId, kPackagedApp2Id, std::string()); 219 ordering->OnExtensionMoved(kHostedAppId, kPackagedApp2Id, std::string());
219 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"), 220 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"),
220 GetModelContent(model.get())); 221 GetModelContent(model.get()));
221 222
222 service_->OnExtensionMoved(kHostedAppId, std::string(), kPackagedApp1Id); 223 ordering->OnExtensionMoved(kHostedAppId, std::string(), kPackagedApp1Id);
223 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"), 224 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"),
224 GetModelContent(model.get())); 225 GetModelContent(model.get()));
225 } 226 }
226 227
227 TEST_F(AppsModelBuilderTest, InvalidOrdinal) { 228 TEST_F(AppsModelBuilderTest, InvalidOrdinal) {
228 // Creates a no-ordinal case. 229 // Creates a no-ordinal case.
229 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 230 AppListExtensionSorting* ordering =
230 sorting->ClearOrdinals(kPackagedApp1Id); 231 service_->extension_prefs()->app_list_extension_sorting();
232 ordering->Erase(kPackagedApp1Id);
231 233
232 // Creates an corrupted ordinal case. 234 // Creates an corrupted ordinal case.
233 ExtensionScopedPrefs* scoped_prefs = service_->extension_prefs(); 235 ExtensionScopedPrefs* scoped_prefs = service_->extension_prefs();
234 scoped_prefs->UpdateExtensionPref( 236 scoped_prefs->UpdateExtensionPref(
235 kHostedAppId, 237 kHostedAppId,
236 "page_ordinal", 238 "app_list_ordinal",
237 base::Value::CreateStringValue("a corrupted ordinal")); 239 base::Value::CreateStringValue("a corrupted ordinal"));
238 240
239 scoped_ptr<app_list::AppListModel::Apps> model( 241 scoped_ptr<app_list::AppListModel::Apps> model(
240 new app_list::AppListModel::Apps); 242 new app_list::AppListModel::Apps);
241 243
242 // This should not assert or crash. 244 // This should not assert or crash.
243 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 245 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
244 } 246 }
245 247
246 TEST_F(AppsModelBuilderTest, OrdinalConfilicts) { 248 TEST_F(AppsModelBuilderTest, OrdinalConfilicts) {
247 // Creates conflict ordinals for app1 and app2. 249 // Creates conflict ordinals for app1 and app2.
248 syncer::StringOrdinal conflict_ordinal = 250 syncer::StringOrdinal conflict_ordinal =
249 syncer::StringOrdinal::CreateInitialOrdinal(); 251 syncer::StringOrdinal::CreateInitialOrdinal();
250 252
251 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 253 AppListExtensionSorting* ordering =
252 sorting->SetPageOrdinal(kHostedAppId, conflict_ordinal); 254 service_->extension_prefs()->app_list_extension_sorting();
253 sorting->SetAppLaunchOrdinal(kHostedAppId, conflict_ordinal); 255 ordering->UpdateAppListOrdinalFromSync(kHostedAppId, conflict_ordinal);
254 256 ordering->UpdateAppListOrdinalFromSync(kPackagedApp1Id, conflict_ordinal);
255 sorting->SetPageOrdinal(kPackagedApp1Id, conflict_ordinal); 257 ordering->UpdateAppListOrdinalFromSync(kPackagedApp2Id, conflict_ordinal);
256 sorting->SetAppLaunchOrdinal(kPackagedApp1Id, conflict_ordinal);
257
258 sorting->SetPageOrdinal(kPackagedApp2Id, conflict_ordinal);
259 sorting->SetAppLaunchOrdinal(kPackagedApp2Id, conflict_ordinal);
260 258
261 scoped_ptr<app_list::AppListModel::Apps> model( 259 scoped_ptr<app_list::AppListModel::Apps> model(
262 new app_list::AppListModel::Apps); 260 new app_list::AppListModel::Apps);
263 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 261 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
264 262
265 // By default, conflicted items are sorted by their app ids. 263 // By default, conflicted items are sorted by their app ids.
266 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"), 264 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"),
267 GetModelContent(model.get())); 265 GetModelContent(model.get()));
268 266
269 // Move hosted app between app1 and app2 and it should not crash. 267 // Move hosted app between app1 and app2 and it should not crash.
270 service_->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id); 268 ordering->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id);
271 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"), 269 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"),
272 GetModelContent(model.get())); 270 GetModelContent(model.get()));
273 } 271 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698