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

Side by Side Diff: chrome/browser/profiles/profile_info_cache.cc

Issue 1415223002: Add counts of User data to ProfileInfoCache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
« no previous file with comments | « chrome/browser/profiles/profile_info_cache.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/profiles/profile_info_cache.h" 5 #include "chrome/browser/profiles/profile_info_cache.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/i18n/case_conversion.h" 9 #include "base/i18n/case_conversion.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 const char kPasswordTokenKey[] = "gaia_password_token"; 53 const char kPasswordTokenKey[] = "gaia_password_token";
54 const char kUseGAIAPictureKey[] = "use_gaia_picture"; 54 const char kUseGAIAPictureKey[] = "use_gaia_picture";
55 const char kBackgroundAppsKey[] = "background_apps"; 55 const char kBackgroundAppsKey[] = "background_apps";
56 const char kGAIAPictureFileNameKey[] = "gaia_picture_file_name"; 56 const char kGAIAPictureFileNameKey[] = "gaia_picture_file_name";
57 const char kIsOmittedFromProfileListKey[] = "is_omitted_from_profile_list"; 57 const char kIsOmittedFromProfileListKey[] = "is_omitted_from_profile_list";
58 const char kSigninRequiredKey[] = "signin_required"; 58 const char kSigninRequiredKey[] = "signin_required";
59 const char kSupervisedUserId[] = "managed_user_id"; 59 const char kSupervisedUserId[] = "managed_user_id";
60 const char kProfileIsEphemeral[] = "is_ephemeral"; 60 const char kProfileIsEphemeral[] = "is_ephemeral";
61 const char kActiveTimeKey[] = "active_time"; 61 const char kActiveTimeKey[] = "active_time";
62 const char kIsAuthErrorKey[] = "is_auth_error"; 62 const char kIsAuthErrorKey[] = "is_auth_error";
63 const char kStatistics[] = "statistics";
anthonyvd 2015/10/23 15:53:13 nit: kStatisticsKey
lwchkg 2015/10/24 02:02:32 Acknowledged.
63 64
64 // First eight are generic icons, which use IDS_NUMBERED_PROFILE_NAME. 65 // First eight are generic icons, which use IDS_NUMBERED_PROFILE_NAME.
65 const int kDefaultNames[] = { 66 const int kDefaultNames[] = {
66 IDS_DEFAULT_AVATAR_NAME_8, 67 IDS_DEFAULT_AVATAR_NAME_8,
67 IDS_DEFAULT_AVATAR_NAME_9, 68 IDS_DEFAULT_AVATAR_NAME_9,
68 IDS_DEFAULT_AVATAR_NAME_10, 69 IDS_DEFAULT_AVATAR_NAME_10,
69 IDS_DEFAULT_AVATAR_NAME_11, 70 IDS_DEFAULT_AVATAR_NAME_11,
70 IDS_DEFAULT_AVATAR_NAME_12, 71 IDS_DEFAULT_AVATAR_NAME_12,
71 IDS_DEFAULT_AVATAR_NAME_13, 72 IDS_DEFAULT_AVATAR_NAME_13,
72 IDS_DEFAULT_AVATAR_NAME_14, 73 IDS_DEFAULT_AVATAR_NAME_14,
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 const { 493 const {
493 std::string icon_url; 494 std::string icon_url;
494 GetInfoForProfileAtIndex(index)->GetString(kAvatarIconKey, &icon_url); 495 GetInfoForProfileAtIndex(index)->GetString(kAvatarIconKey, &icon_url);
495 size_t icon_index = 0; 496 size_t icon_index = 0;
496 if (!profiles::IsDefaultAvatarIconUrl(icon_url, &icon_index)) 497 if (!profiles::IsDefaultAvatarIconUrl(icon_url, &icon_index))
497 DLOG(WARNING) << "Unknown avatar icon: " << icon_url; 498 DLOG(WARNING) << "Unknown avatar icon: " << icon_url;
498 499
499 return icon_index; 500 return icon_index;
500 } 501 }
501 502
503
504 bool ProfileInfoCache::GetStatisticOfProfileAtIndex(size_t index,
505 const std::string& category, int* out_value) const {
506 const base::DictionaryValue* statistics;
507 if (!GetInfoForProfileAtIndex(index)->GetDictionaryWithoutPathExpansion(
508 kStatistics, &statistics))
509 return false;
510
511 return statistics->GetIntegerWithoutPathExpansion(category, out_value);
512 }
513
514 std::map<std::string, int> ProfileInfoCache::GetAllStatisticOfProfileAtIndex(
515 size_t index) const {
516 const base::DictionaryValue* statistics;
517 std::map<std::string, int> out_value;
518
519 if (!GetInfoForProfileAtIndex(index)->GetDictionaryWithoutPathExpansion(
520 kStatistics, &statistics))
521 return out_value; // No statistics are set, so return an empty map.
522
523 for (base::DictionaryValue::Iterator it(*statistics); !it.IsAtEnd();
524 it.Advance()) {
525 int value;
526 if (it.value().GetAsInteger(&value)) {
527 out_value.insert(std::make_pair(it.key(), value));
528 }
529 }
530 return out_value;
531 }
532
533 scoped_ptr<base::DictionaryValue>
534 ProfileInfoCache::GetAllStatisticsOfProfileAtIndexAsDictionaryValue(
535 size_t index) const {
536 const base::DictionaryValue* statistics;
537
538 if (!GetInfoForProfileAtIndex(index)->GetDictionaryWithoutPathExpansion(
539 kStatistics, &statistics))
540 // No statistics are set, so return an empty map.
541 return make_scoped_ptr(new base::DictionaryValue()).Pass();
542
543 return statistics->CreateDeepCopy().Pass();
544 }
545
502 void ProfileInfoCache::SetProfileActiveTimeAtIndex(size_t index) { 546 void ProfileInfoCache::SetProfileActiveTimeAtIndex(size_t index) {
503 if (base::Time::Now() - GetProfileActiveTimeAtIndex(index) < 547 if (base::Time::Now() - GetProfileActiveTimeAtIndex(index) <
504 base::TimeDelta::FromHours(1)) { 548 base::TimeDelta::FromHours(1)) {
505 return; 549 return;
506 } 550 }
507 551
508 scoped_ptr<base::DictionaryValue> info( 552 scoped_ptr<base::DictionaryValue> info(
509 GetInfoForProfileAtIndex(index)->DeepCopy()); 553 GetInfoForProfileAtIndex(index)->DeepCopy());
510 info->SetDouble(kActiveTimeKey, base::Time::Now().ToDoubleT()); 554 info->SetDouble(kActiveTimeKey, base::Time::Now().ToDoubleT());
511 // This takes ownership of |info|. 555 // This takes ownership of |info|.
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 if (ChooseAvatarIconIndexForNewProfile(true, true, &icon_index)) 946 if (ChooseAvatarIconIndexForNewProfile(true, true, &icon_index))
903 return icon_index; 947 return icon_index;
904 // Settle for any random icon, even if it's not unique. 948 // Settle for any random icon, even if it's not unique.
905 if (ChooseAvatarIconIndexForNewProfile(true, false, &icon_index)) 949 if (ChooseAvatarIconIndexForNewProfile(true, false, &icon_index))
906 return icon_index; 950 return icon_index;
907 951
908 NOTREACHED(); 952 NOTREACHED();
909 return 0; 953 return 0;
910 } 954 }
911 955
956 void ProfileInfoCache::SetStatisticOfProfileAtIndex(size_t index,
957 const std::string& category, int value) {
958 scoped_ptr<base::DictionaryValue> info(
959 GetInfoForProfileAtIndex(index)->DeepCopy());
960
961 base::DictionaryValue* statistics;
962 if (info->GetDictionaryWithoutPathExpansion(kStatistics, &statistics)) {
963 statistics = new base::DictionaryValue();
964 info->SetWithoutPathExpansion(kStatistics, make_scoped_ptr(statistics));
965 }
966
967 statistics->SetIntegerWithoutPathExpansion(category, value);
968 // This takes ownership of |info|.
969 SetInfoForProfileAtIndex(index, info.release());
970
971 base::FilePath profile_path = GetPathOfProfileAtIndex(index);
972 FOR_EACH_OBSERVER(ProfileInfoCacheObserver,
973 observer_list_,
974 OnProfileSigninRequiredChanged(profile_path));
975 }
976
912 const base::FilePath& ProfileInfoCache::GetUserDataDir() const { 977 const base::FilePath& ProfileInfoCache::GetUserDataDir() const {
913 return user_data_dir_; 978 return user_data_dir_;
914 } 979 }
915 980
916 // static 981 // static
917 void ProfileInfoCache::RegisterPrefs(PrefRegistrySimple* registry) { 982 void ProfileInfoCache::RegisterPrefs(PrefRegistrySimple* registry) {
918 registry->RegisterDictionaryPref(prefs::kProfileInfoCache); 983 registry->RegisterDictionaryPref(prefs::kProfileInfoCache);
919 } 984 }
920 985
921 void ProfileInfoCache::DownloadHighResAvatarIfNeeded( 986 void ProfileInfoCache::DownloadHighResAvatarIfNeeded(
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 // The profile info is in the cache but its entry isn't created yet, insert 1346 // The profile info is in the cache but its entry isn't created yet, insert
1282 // it in the map. 1347 // it in the map.
1283 scoped_ptr<ProfileAttributesEntry> new_entry(new ProfileAttributesEntry()); 1348 scoped_ptr<ProfileAttributesEntry> new_entry(new ProfileAttributesEntry());
1284 profile_attributes_entries_.add(path, new_entry.Pass()); 1349 profile_attributes_entries_.add(path, new_entry.Pass());
1285 profile_attributes_entries_.get(path)->Initialize(this, path); 1350 profile_attributes_entries_.get(path)->Initialize(this, path);
1286 } 1351 }
1287 1352
1288 *entry = profile_attributes_entries_.get(path); 1353 *entry = profile_attributes_entries_.get(path);
1289 return true; 1354 return true;
1290 } 1355 }
OLDNEW
« no previous file with comments | « chrome/browser/profiles/profile_info_cache.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698