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

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: rename app_list_extension_ordering to app_list_extension_sorting for consistency Created 7 years, 5 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) 2013 The Chromium Authors. All rights reserved.
xiyuan 2013/07/05 06:06:18 We no longer need to update license headers.
calamity 2013/07/11 03:31:00 Done.
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/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/extensions/extension_function_test_utils.h" 13 #include "chrome/browser/extensions/extension_function_test_utils.h"
14 #include "chrome/browser/extensions/extension_service_unittest.h" 14 #include "chrome/browser/extensions/extension_service_unittest.h"
15 #include "chrome/browser/extensions/extension_sorting.h" 15 #include "chrome/browser/ui/app_list/app_list_extension_sorting.h"
16 #include "chrome/common/extensions/extension_constants.h" 16 #include "chrome/common/extensions/extension_constants.h"
17 #include "chrome/common/extensions/manifest.h" 17 #include "chrome/common/extensions/manifest.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 "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
21 #include "ui/app_list/app_list_item_model.h" 21 #include "ui/app_list/app_list_item_model.h"
22 22
23 namespace { 23 namespace {
24 24
25 const char kHostedAppId[] = "dceacbkfkmllgmjmbhgkpjegnodmildf"; 25 const char kHostedAppId[] = "dceacbkfkmllgmjmbhgkpjegnodmildf";
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 162
163 loop_.RunUntilIdle(); 163 loop_.RunUntilIdle();
164 } 164 }
165 165
166 TEST_F(AppsModelBuilderTest, OrdinalPrefsChange) { 166 TEST_F(AppsModelBuilderTest, OrdinalPrefsChange) {
167 scoped_ptr<app_list::AppListModel::Apps> model( 167 scoped_ptr<app_list::AppListModel::Apps> model(
168 new app_list::AppListModel::Apps); 168 new app_list::AppListModel::Apps);
169 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 169 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
170 builder.Build(); 170 builder.Build();
171 171
172 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 172 AppListExtensionSorting* ordering =
173 service_->extension_prefs()->app_list_extension_sorting();
173 174
174 syncer::StringOrdinal package_app_page = 175 syncer::StringOrdinal app1_ordinal =
175 sorting->GetPageOrdinal(kPackagedApp1Id); 176 ordering->GetAppListOrdinalFromPrefs(kPackagedApp1Id);
176 sorting->SetPageOrdinal(kHostedAppId, package_app_page.CreateBefore()); 177 syncer::StringOrdinal app2_ordinal =
178 ordering->GetAppListOrdinalFromPrefs(kPackagedApp2Id);
179
180 ordering->UpdateAppListOrdinalFromSync(
181 kHostedAppId,
182 app1_ordinal.CreateBefore());
177 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"), 183 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"),
178 GetModelContent(model.get())); 184 GetModelContent(model.get()));
179 185
180 syncer::StringOrdinal app1_ordinal = 186 ordering->UpdateAppListOrdinalFromSync(
181 sorting->GetAppLaunchOrdinal(kPackagedApp1Id); 187 kHostedAppId,
182 syncer::StringOrdinal app2_ordinal = 188 app1_ordinal.CreateBetween(app2_ordinal));
183 sorting->GetAppLaunchOrdinal(kPackagedApp2Id);
184 sorting->SetPageOrdinal(kHostedAppId, package_app_page);
185 sorting->SetAppLaunchOrdinal(kHostedAppId,
186 app1_ordinal.CreateBetween(app2_ordinal));
187 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"), 189 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"),
188 GetModelContent(model.get())); 190 GetModelContent(model.get()));
189 } 191 }
190 192
191 TEST_F(AppsModelBuilderTest, OnExtensionMoved) { 193 TEST_F(AppsModelBuilderTest, OnExtensionMoved) {
192 scoped_ptr<app_list::AppListModel::Apps> model( 194 scoped_ptr<app_list::AppListModel::Apps> model(
193 new app_list::AppListModel::Apps); 195 new app_list::AppListModel::Apps);
194 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 196 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
195 builder.Build(); 197 builder.Build();
196 198
197 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 199 AppListExtensionSorting* ordering =
198 sorting->SetPageOrdinal(kHostedAppId, 200 service_->extension_prefs()->app_list_extension_sorting();
199 sorting->GetPageOrdinal(kPackagedApp1Id));
200 201
201 service_->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id); 202 ordering->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id);
202 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"),
203 GetModelContent(model.get())); 204 GetModelContent(model.get()));
204 205
205 service_->OnExtensionMoved(kHostedAppId, kPackagedApp2Id, std::string()); 206 ordering->OnExtensionMoved(kHostedAppId, kPackagedApp2Id, std::string());
206 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"), 207 EXPECT_EQ(std::string("Packaged App 1,Packaged App 2,Hosted App"),
207 GetModelContent(model.get())); 208 GetModelContent(model.get()));
208 209
209 service_->OnExtensionMoved(kHostedAppId, std::string(), kPackagedApp1Id); 210 ordering->OnExtensionMoved(kHostedAppId, std::string(), kPackagedApp1Id);
210 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"), 211 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"),
211 GetModelContent(model.get())); 212 GetModelContent(model.get()));
212 } 213 }
213 214
214 TEST_F(AppsModelBuilderTest, InvalidOrdinal) { 215 TEST_F(AppsModelBuilderTest, InvalidOrdinal) {
215 // Creates a no-ordinal case. 216 // Creates a no-ordinal case.
216 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 217 AppListExtensionSorting* ordering =
217 sorting->ClearOrdinals(kPackagedApp1Id); 218 service_->extension_prefs()->app_list_extension_sorting();
219 ordering->Erase(kPackagedApp1Id);
218 220
219 // Creates an corrupted ordinal case. 221 // Creates an corrupted ordinal case.
220 ExtensionScopedPrefs* scoped_prefs = service_->extension_prefs(); 222 ExtensionScopedPrefs* scoped_prefs = service_->extension_prefs();
221 scoped_prefs->UpdateExtensionPref( 223 scoped_prefs->UpdateExtensionPref(
222 kHostedAppId, 224 kHostedAppId,
223 "page_ordinal", 225 "app_list_ordinal",
224 base::Value::CreateStringValue("a corrupted ordinal")); 226 base::Value::CreateStringValue("a corrupted ordinal"));
225 227
226 scoped_ptr<app_list::AppListModel::Apps> model( 228 scoped_ptr<app_list::AppListModel::Apps> model(
227 new app_list::AppListModel::Apps); 229 new app_list::AppListModel::Apps);
228 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 230 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
229 231
230 // This should not assert or crash. 232 // This should not assert or crash.
231 builder.Build(); 233 builder.Build();
232 } 234 }
233 235
234 TEST_F(AppsModelBuilderTest, OrdinalConfilicts) { 236 TEST_F(AppsModelBuilderTest, OrdinalConfilicts) {
235 // Creates conflict ordinals for app1 and app2. 237 // Creates conflict ordinals for app1 and app2.
236 syncer::StringOrdinal conflict_ordinal = 238 syncer::StringOrdinal conflict_ordinal =
237 syncer::StringOrdinal::CreateInitialOrdinal(); 239 syncer::StringOrdinal::CreateInitialOrdinal();
238 240
239 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); 241 AppListExtensionSorting* ordering =
240 sorting->SetPageOrdinal(kHostedAppId, conflict_ordinal); 242 service_->extension_prefs()->app_list_extension_sorting();
241 sorting->SetAppLaunchOrdinal(kHostedAppId, conflict_ordinal); 243 ordering->UpdateAppListOrdinalFromSync(kHostedAppId, conflict_ordinal);
242 244 ordering->UpdateAppListOrdinalFromSync(kPackagedApp1Id, conflict_ordinal);
243 sorting->SetPageOrdinal(kPackagedApp1Id, conflict_ordinal); 245 ordering->UpdateAppListOrdinalFromSync(kPackagedApp2Id, conflict_ordinal);
244 sorting->SetAppLaunchOrdinal(kPackagedApp1Id, conflict_ordinal);
245
246 sorting->SetPageOrdinal(kPackagedApp2Id, conflict_ordinal);
247 sorting->SetAppLaunchOrdinal(kPackagedApp2Id, conflict_ordinal);
248 246
249 scoped_ptr<app_list::AppListModel::Apps> model( 247 scoped_ptr<app_list::AppListModel::Apps> model(
250 new app_list::AppListModel::Apps); 248 new app_list::AppListModel::Apps);
251 AppsModelBuilder builder(profile_.get(), model.get(), NULL); 249 AppsModelBuilder builder(profile_.get(), model.get(), NULL);
250 // This fixes the collisions.
252 builder.Build(); 251 builder.Build();
253 252
254 // By default, conflicted items are sorted by their app ids. 253 // By default, conflicted items are sorted by their app ids.
255 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"), 254 EXPECT_EQ(std::string("Hosted App,Packaged App 1,Packaged App 2"),
256 GetModelContent(model.get())); 255 GetModelContent(model.get()));
257 256
258 // Move hosted app between app1 and app2 and it should not crash. 257 // Move hosted app between app1 and app2 and it should not crash.
259 service_->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id); 258 ordering->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id);
260 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"), 259 EXPECT_EQ(std::string("Packaged App 1,Hosted App,Packaged App 2"),
261 GetModelContent(model.get())); 260 GetModelContent(model.get()));
262 } 261 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698