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

Unified Diff: chrome/browser/profiles/profile_list_desktop.cc

Issue 1242793005: Refactor most c/b/profiles calls to ProfileInfoCache. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Windows unit test and ChromeOS build Created 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/profiles/profile_list_desktop.cc
diff --git a/chrome/browser/profiles/profile_list_desktop.cc b/chrome/browser/profiles/profile_list_desktop.cc
index bfa0c4f242b29f5c43186ec64c40793b36275eb1..83c3bee560986c6f42d7e70dc8e9317077393f5b 100644
--- a/chrome/browser/profiles/profile_list_desktop.cc
+++ b/chrome/browser/profiles/profile_list_desktop.cc
@@ -11,9 +11,9 @@
#include "components/signin/core/common/profile_management_switches.h"
#include "ui/base/l10n/l10n_util.h"
-ProfileListDesktop::ProfileListDesktop(ProfileInfoInterface* profile_cache)
- : profile_info_(profile_cache),
- omitted_item_count_(0) {
+ProfileListDesktop::ProfileListDesktop(
+ ProfileAttributesStorage* profile_storage)
+ : profile_storage_(profile_storage) {
}
ProfileListDesktop::~ProfileListDesktop() {
@@ -21,8 +21,8 @@ ProfileListDesktop::~ProfileListDesktop() {
}
// static
-ProfileList* ProfileList::Create(ProfileInfoInterface* profile_cache) {
- return new ProfileListDesktop(profile_cache);
+ProfileList* ProfileList::Create(ProfileAttributesStorage* profile_storage) {
+ return new ProfileListDesktop(profile_storage);
}
size_t ProfileListDesktop::GetNumberOfItems() const {
@@ -37,52 +37,43 @@ const AvatarMenu::Item& ProfileListDesktop::GetItemAt(size_t index) const {
void ProfileListDesktop::RebuildMenu() {
ClearMenu();
- const size_t count = profile_info_->GetNumberOfProfiles();
- for (size_t i = 0; i < count; ++i) {
- if (profile_info_->IsOmittedProfileAtIndex(i)) {
- omitted_item_count_++;
+ std::vector<ProfileAttributesEntry*> entries =
+ profile_storage_->GetAllProfilesAttributes();
+ std::sort(entries.begin(), entries.end(),
+ [] (ProfileAttributesEntry* first, ProfileAttributesEntry* second) {
+ return first->LessThan(*second);
Mike Lerman 2015/08/06 16:06:19 If this is the only reference to LessThan(), can w
+ });
+ size_t item_count = 0;
+ for (ProfileAttributesEntry* entry: entries) {
+ if (entry->IsOmitted()) {
continue;
}
- gfx::Image icon = profile_info_->GetAvatarIconOfProfileAtIndex(i);
- AvatarMenu::Item* item = new AvatarMenu::Item(i - omitted_item_count_,
- i,
- icon);
- item->name = profile_info_->GetNameOfProfileAtIndex(i);
- item->username = profile_info_->GetUserNameOfProfileAtIndex(i);
- item->profile_path = profile_info_->GetPathOfProfileAtIndex(i);
- item->legacy_supervised =
- profile_info_->ProfileIsLegacySupervisedAtIndex(i);
- item->child_account = profile_info_->ProfileIsChildAtIndex(i);
- item->signed_in = profile_info_->ProfileIsAuthenticatedAtIndex(i);
+ gfx::Image icon = entry->GetAvatarIcon();
Mike Lerman 2015/08/06 16:06:19 You can just inline icon below.
+ AvatarMenu::Item* item = new AvatarMenu::Item(item_count++, icon);
+ item->name = entry->GetName();
+ item->username = entry->GetUserName();
+ item->profile_path = entry->GetPath();
+ item->legacy_supervised = entry->IsLegacySupervised();
+ item->child_account = entry->IsChild();
+ item->signed_in = entry->IsAuthenticated();
if (!item->signed_in) {
item->username = l10n_util::GetStringUTF16(
item->legacy_supervised ? IDS_SUPERVISED_USER_AVATAR_LABEL :
IDS_PROFILES_LOCAL_PROFILE_STATE);
}
- item->active = profile_info_->GetPathOfProfileAtIndex(i) ==
- active_profile_path_;
- item->signin_required = profile_info_->ProfileIsSigninRequiredAtIndex(i);
+ item->active = entry->GetPath() == active_profile_path_;
+ item->signin_required = entry->IsSigninRequired();
items_.push_back(item);
}
- // One omitted item is expected when a supervised-user profile is in the
- // process of being registered, but there shouldn't be more than one.
- VLOG_IF(2, (omitted_item_count_ > 1)) << omitted_item_count_
Mike Lerman 2015/08/06 16:06:19 Can you check with treib@ or bernhard@ that we can
- << " profiles omitted fom list.";
}
-size_t ProfileListDesktop::MenuIndexFromProfileIndex(size_t index) {
+size_t ProfileListDesktop::MenuIndexFromProfilePath(
+ const base::FilePath& path) {
const size_t menu_count = GetNumberOfItems();
- DCHECK_LT(index, menu_count + omitted_item_count_);
-
- // In the common case, valid profile-cache indices correspond to indices in
- // the menu.
- if (!omitted_item_count_)
- return index;
-
for (size_t i = 0; i < menu_count; ++i) {
const AvatarMenu::Item item = GetItemAt(i);
- if (item.profile_index == index)
+ if (item.profile_path == path)
return i;
}
@@ -97,5 +88,4 @@ void ProfileListDesktop::ActiveProfilePathChanged(base::FilePath& path) {
void ProfileListDesktop::ClearMenu() {
STLDeleteElements(&items_);
- omitted_item_count_ = 0;
}

Powered by Google App Engine
This is Rietveld 408576698