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

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

Issue 12040085: Adding show profile switcher field trial. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
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/avatar_menu_model.h" 5 #include "chrome/browser/profiles/avatar_menu_model.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/field_trial.h"
8 #include "base/stl_util.h" 9 #include "base/stl_util.h"
9 #include "base/string_number_conversions.h" 10 #include "base/string_number_conversions.h"
10 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
11 #include "chrome/browser/browser_process.h" 12 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/profiles/avatar_menu_model_observer.h" 13 #include "chrome/browser/profiles/avatar_menu_model_observer.h"
13 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/profiles/profile_info_cache.h" 15 #include "chrome/browser/profiles/profile_info_cache.h"
15 #include "chrome/browser/profiles/profile_info_util.h" 16 #include "chrome/browser/profiles/profile_info_util.h"
16 #include "chrome/browser/profiles/profile_manager.h" 17 #include "chrome/browser/profiles/profile_manager.h"
17 #include "chrome/browser/profiles/profile_metrics.h" 18 #include "chrome/browser/profiles/profile_metrics.h"
(...skipping 23 matching lines...) Expand all
41 if (status == Profile::CREATE_STATUS_INITIALIZED) { 42 if (status == Profile::CREATE_STATUS_INITIALIZED) {
42 ProfileManager::FindOrCreateNewWindowForProfile( 43 ProfileManager::FindOrCreateNewWindowForProfile(
43 profile, 44 profile,
44 chrome::startup::IS_NOT_PROCESS_STARTUP, 45 chrome::startup::IS_NOT_PROCESS_STARTUP,
45 chrome::startup::IS_NOT_FIRST_RUN, 46 chrome::startup::IS_NOT_FIRST_RUN,
46 desktop_type, 47 desktop_type,
47 always_create); 48 always_create);
48 } 49 }
49 } 50 }
50 51
52 // Constants for the show profile switcher experiment
53 const char kShowProfileSwitcherFieldTrialName[] = "ShowProfileSwitcher";
54 const char kAlwaysShowSwitcherGroupName[] = "AlwaysShow";
55
51 } // namespace 56 } // namespace
52 57
53 AvatarMenuModel::AvatarMenuModel(ProfileInfoInterface* profile_cache, 58 AvatarMenuModel::AvatarMenuModel(ProfileInfoInterface* profile_cache,
54 AvatarMenuModelObserver* observer, 59 AvatarMenuModelObserver* observer,
55 Browser* browser) 60 Browser* browser)
56 : profile_info_(profile_cache), 61 : profile_info_(profile_cache),
57 observer_(observer), 62 observer_(observer),
58 browser_(browser) { 63 browser_(browser) {
59 DCHECK(profile_info_); 64 DCHECK(profile_info_);
60 // Don't DCHECK(browser_) so that unit tests can reuse this ctor. 65 // Don't DCHECK(browser_) so that unit tests can reuse this ctor.
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 const content::NotificationSource& source, 165 const content::NotificationSource& source,
161 const content::NotificationDetails& details) { 166 const content::NotificationDetails& details) {
162 DCHECK_EQ(chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, type); 167 DCHECK_EQ(chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, type);
163 RebuildMenu(); 168 RebuildMenu();
164 if (observer_) 169 if (observer_)
165 observer_->OnAvatarMenuModelChanged(this); 170 observer_->OnAvatarMenuModelChanged(this);
166 } 171 }
167 172
168 // static 173 // static
169 bool AvatarMenuModel::ShouldShowAvatarMenu() { 174 bool AvatarMenuModel::ShouldShowAvatarMenu() {
175 if (base::FieldTrialList::FindFullName(kShowProfileSwitcherFieldTrialName) ==
176 kAlwaysShowSwitcherGroupName) {
177 // We should only be in this group when multi-profiles is enabled.
178 DCHECK(ProfileManager::IsMultipleProfilesEnabled());
179 return true;
180 }
170 return ProfileManager::IsMultipleProfilesEnabled() && 181 return ProfileManager::IsMultipleProfilesEnabled() &&
171 g_browser_process->profile_manager()->GetNumberOfProfiles() > 1; 182 g_browser_process->profile_manager()->GetNumberOfProfiles() > 1;
172 } 183 }
173 184
174 void AvatarMenuModel::RebuildMenu() { 185 void AvatarMenuModel::RebuildMenu() {
175 ClearMenu(); 186 ClearMenu();
176 187
177 const size_t count = profile_info_->GetNumberOfProfiles(); 188 const size_t count = profile_info_->GetNumberOfProfiles();
178 for (size_t i = 0; i < count; ++i) { 189 for (size_t i = 0; i < count; ++i) {
179 bool is_gaia_picture = 190 bool is_gaia_picture =
(...skipping 14 matching lines...) Expand all
194 FilePath path = profile_info_->GetPathOfProfileAtIndex(i); 205 FilePath path = profile_info_->GetPathOfProfileAtIndex(i);
195 item->active = browser_->profile()->GetPath() == path; 206 item->active = browser_->profile()->GetPath() == path;
196 } 207 }
197 items_.push_back(item); 208 items_.push_back(item);
198 } 209 }
199 } 210 }
200 211
201 void AvatarMenuModel::ClearMenu() { 212 void AvatarMenuModel::ClearMenu() {
202 STLDeleteElements(&items_); 213 STLDeleteElements(&items_);
203 } 214 }
OLDNEW
« no previous file with comments | « chrome/browser/chrome_browser_field_trials.cc ('k') | chrome/browser/profiles/avatar_menu_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698