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

Side by Side Diff: chrome/browser/notifications/message_center_settings_controller.cc

Issue 1657913003: Refactor of ProfileInfoCache in c/b/notifications (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/notifications/message_center_settings_controller.h" 5 #include "chrome/browser/notifications/message_center_settings_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string>
8 #include <utility> 9 #include <utility>
9 10
10 #include "base/command_line.h" 11 #include "base/command_line.h"
11 #include "base/i18n/string_compare.h" 12 #include "base/i18n/string_compare.h"
12 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
13 #include "base/task/cancelable_task_tracker.h" 14 #include "base/task/cancelable_task_tracker.h"
14 #include "base/thread_task_runner_handle.h" 15 #include "base/thread_task_runner_handle.h"
15 #include "build/build_config.h" 16 #include "build/build_config.h"
16 #include "chrome/browser/browser_process.h" 17 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/chrome_notification_types.h" 18 #include "chrome/browser/chrome_notification_types.h"
18 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 19 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
19 #include "chrome/browser/extensions/app_icon_loader_impl.h" 20 #include "chrome/browser/extensions/app_icon_loader_impl.h"
20 #include "chrome/browser/favicon/favicon_service_factory.h" 21 #include "chrome/browser/favicon/favicon_service_factory.h"
21 #include "chrome/browser/notifications/desktop_notification_profile_util.h" 22 #include "chrome/browser/notifications/desktop_notification_profile_util.h"
22 #include "chrome/browser/notifications/notifier_state_tracker.h" 23 #include "chrome/browser/notifications/notifier_state_tracker.h"
23 #include "chrome/browser/notifications/notifier_state_tracker_factory.h" 24 #include "chrome/browser/notifications/notifier_state_tracker_factory.h"
24 #include "chrome/browser/profiles/profile.h" 25 #include "chrome/browser/profiles/profile.h"
26 #include "chrome/browser/profiles/profile_attributes_entry.h"
27 #include "chrome/browser/profiles/profile_attributes_storage.h"
25 #include "chrome/browser/profiles/profile_info_cache.h" 28 #include "chrome/browser/profiles/profile_info_cache.h"
26 #include "chrome/browser/profiles/profile_manager.h" 29 #include "chrome/browser/profiles/profile_manager.h"
27 #include "chrome/common/extensions/api/notifications.h" 30 #include "chrome/common/extensions/api/notifications.h"
28 #include "chrome/common/extensions/extension_constants.h" 31 #include "chrome/common/extensions/extension_constants.h"
29 #include "components/content_settings/core/browser/host_content_settings_map.h" 32 #include "components/content_settings/core/browser/host_content_settings_map.h"
30 #include "components/favicon/core/favicon_service.h" 33 #include "components/favicon/core/favicon_service.h"
31 #include "components/favicon_base/favicon_types.h" 34 #include "components/favicon_base/favicon_types.h"
32 #include "components/history/core/browser/history_types.h" 35 #include "components/history/core/browser/history_types.h"
33 #include "content/public/browser/notification_service.h" 36 #include "content/public/browser/notification_service.h"
34 #include "content/public/browser/notification_source.h" 37 #include "content/public/browser/notification_source.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 return n1->name < n2->name; 116 return n1->name < n2->name;
114 } 117 }
115 118
116 private: 119 private:
117 icu::Collator* collator_; 120 icu::Collator* collator_;
118 }; 121 };
119 122
120 } // namespace 123 } // namespace
121 124
122 MessageCenterSettingsController::MessageCenterSettingsController( 125 MessageCenterSettingsController::MessageCenterSettingsController(
123 ProfileInfoCache* profile_info_cache) 126 ProfileAttributesStorage& storage)
124 : current_notifier_group_(0), 127 : current_notifier_group_(0),
125 profile_info_cache_(profile_info_cache), 128 storage_(storage),
126 weak_factory_(this) { 129 weak_factory_(this) {
127 DCHECK(profile_info_cache_);
128 // The following events all represent changes that may need to be reflected in 130 // The following events all represent changes that may need to be reflected in
129 // the profile selector context menu, so listen for them all. We'll just 131 // the profile selector context menu, so listen for them all. We'll just
130 // rebuild the list when we get any of them. 132 // rebuild the list when we get any of them.
131 registrar_.Add(this, 133 registrar_.Add(this,
132 chrome::NOTIFICATION_PROFILE_CREATED, 134 chrome::NOTIFICATION_PROFILE_CREATED,
133 content::NotificationService::AllBrowserContextsAndSources()); 135 content::NotificationService::AllBrowserContextsAndSources());
134 registrar_.Add(this, 136 registrar_.Add(this,
135 chrome::NOTIFICATION_PROFILE_ADDED, 137 chrome::NOTIFICATION_PROFILE_ADDED,
136 content::NotificationService::AllBrowserContextsAndSources()); 138 content::NotificationService::AllBrowserContextsAndSources());
137 registrar_.Add(this, 139 registrar_.Add(this,
138 chrome::NOTIFICATION_PROFILE_DESTROYED, 140 chrome::NOTIFICATION_PROFILE_DESTROYED,
139 content::NotificationService::AllBrowserContextsAndSources()); 141 content::NotificationService::AllBrowserContextsAndSources());
140 g_browser_process->profile_manager()->GetProfileInfoCache().AddObserver(this); 142 storage_.AddObserver(this);
141 RebuildNotifierGroups(false); 143 RebuildNotifierGroups(false);
142 144
143 #if defined(OS_CHROMEOS) 145 #if defined(OS_CHROMEOS)
144 // UserManager may not exist in some tests. 146 // UserManager may not exist in some tests.
145 if (user_manager::UserManager::IsInitialized()) 147 if (user_manager::UserManager::IsInitialized())
146 user_manager::UserManager::Get()->AddSessionStateObserver(this); 148 user_manager::UserManager::Get()->AddSessionStateObserver(this);
147 #endif 149 #endif
148 } 150 }
149 151
150 MessageCenterSettingsController::~MessageCenterSettingsController() { 152 MessageCenterSettingsController::~MessageCenterSettingsController() {
151 g_browser_process->profile_manager()-> 153 storage_.RemoveObserver(this);
152 GetProfileInfoCache().RemoveObserver(this);
153 #if defined(OS_CHROMEOS) 154 #if defined(OS_CHROMEOS)
154 // UserManager may not exist in some tests. 155 // UserManager may not exist in some tests.
155 if (user_manager::UserManager::IsInitialized()) 156 if (user_manager::UserManager::IsInitialized())
156 user_manager::UserManager::Get()->RemoveSessionStateObserver(this); 157 user_manager::UserManager::Get()->RemoveSessionStateObserver(this);
157 #endif 158 #endif
158 } 159 }
159 160
160 void MessageCenterSettingsController::AddObserver( 161 void MessageCenterSettingsController::AddObserver(
161 message_center::NotifierSettingsObserver* observer) { 162 message_center::NotifierSettingsObserver* observer) {
162 observers_.AddObserver(observer); 163 observers_.AddObserver(observer);
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 FOR_EACH_OBSERVER(message_center::NotifierSettingsObserver, 501 FOR_EACH_OBSERVER(message_center::NotifierSettingsObserver,
501 observers_, 502 observers_,
502 NotifierGroupChanged()); 503 NotifierGroupChanged());
503 } 504 }
504 #endif 505 #endif
505 506
506 void MessageCenterSettingsController::RebuildNotifierGroups(bool notify) { 507 void MessageCenterSettingsController::RebuildNotifierGroups(bool notify) {
507 notifier_groups_.clear(); 508 notifier_groups_.clear();
508 current_notifier_group_ = 0; 509 current_notifier_group_ = 0;
509 510
510 const size_t count = profile_info_cache_->GetNumberOfProfiles(); 511 std::vector<ProfileAttributesEntry*> entries =
511 for (size_t i = 0; i < count; ++i) { 512 storage_.GetAllProfilesAttributes();
513 ProfileInfoCache& cache = g_browser_process->profile_manager()->
514 GetProfileInfoCache();
515 for (const auto entry : entries) {
512 scoped_ptr<message_center::ProfileNotifierGroup> group( 516 scoped_ptr<message_center::ProfileNotifierGroup> group(
513 new message_center::ProfileNotifierGroup( 517 new message_center::ProfileNotifierGroup(
514 profile_info_cache_->GetAvatarIconOfProfileAtIndex(i), 518 entry->GetAvatarIcon(),
515 profile_info_cache_->GetNameOfProfileAtIndex(i), 519 entry->GetName(),
516 profile_info_cache_->GetUserNameOfProfileAtIndex(i), 520 entry->GetUserName(),
517 i, 521 cache.GetIndexOfProfileWithPath(entry->GetPath()),
518 profile_info_cache_->GetPathOfProfileAtIndex(i))); 522 entry->GetPath()));
lwchkg 2016/02/03 17:40:12 Do you know what is the use of the index in Profil
dewittj 2016/02/03 17:43:59 According to code search it isn't used at all. I
519 if (group->profile() == NULL) 523 if (group->profile() == NULL)
520 continue; 524 continue;
521 525
522 #if defined(OS_CHROMEOS) 526 #if defined(OS_CHROMEOS)
523 // Allows the active user only. 527 // Allows the active user only.
524 // UserManager may not exist in some tests. 528 // UserManager may not exist in some tests.
525 if (user_manager::UserManager::IsInitialized()) { 529 if (user_manager::UserManager::IsInitialized()) {
526 user_manager::UserManager* user_manager = 530 user_manager::UserManager* user_manager =
527 user_manager::UserManager::Get(); 531 user_manager::UserManager::Get();
528 if (chromeos::ProfileHelper::Get()->GetUserByProfile(group->profile()) != 532 if (chromeos::ProfileHelper::Get()->GetUserByProfile(group->profile()) !=
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 weak_factory_.GetWeakPtr())); 564 weak_factory_.GetWeakPtr()));
561 } 565 }
562 #endif 566 #endif
563 567
564 if (notify) { 568 if (notify) {
565 FOR_EACH_OBSERVER(message_center::NotifierSettingsObserver, 569 FOR_EACH_OBSERVER(message_center::NotifierSettingsObserver,
566 observers_, 570 observers_,
567 NotifierGroupChanged()); 571 NotifierGroupChanged());
568 } 572 }
569 } 573 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698