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

Side by Side Diff: chrome/browser/ui/browser_instant_controller.cc

Issue 12378025: Record InstantExtended pref setting on startup with an UMA histogram. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 9 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
« no previous file with comments | « no previous file | chrome/browser/ui/search/search.h » ('j') | chrome/browser/ui/search/search.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/ui/browser_instant_controller.h" 5 #include "chrome/browser/ui/browser_instant_controller.h"
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/extensions/extension_service.h" 8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/browser/extensions/extension_web_ui.h" 9 #include "chrome/browser/extensions/extension_web_ui.h"
10 #include "chrome/browser/prefs/pref_registry_syncable.h" 10 #include "chrome/browser/prefs/pref_registry_syncable.h"
(...skipping 21 matching lines...) Expand all
32 32
33 using content::UserMetricsAction; 33 using content::UserMetricsAction;
34 34
35 namespace { 35 namespace {
36 36
37 const char* GetInstantPrefName(Profile* profile) { 37 const char* GetInstantPrefName(Profile* profile) {
38 return chrome::search::IsInstantExtendedAPIEnabled(profile) ? 38 return chrome::search::IsInstantExtendedAPIEnabled(profile) ?
39 prefs::kInstantExtendedEnabled : prefs::kInstantEnabled; 39 prefs::kInstantExtendedEnabled : prefs::kInstantEnabled;
40 } 40 }
41 41
42 // Returns the PrefsService to use for checking the Instant pref for the given
43 // profile, or NULL if profile does not support instant.
44 PrefService* GetPrefsForInstantEnabledCheck(Profile* profile) {
45 if (profile && !profile->IsOffTheRecord())
46 return profile->GetPrefs();
47 return NULL;
48 }
49
42 } // namespace 50 } // namespace
43 51
44 namespace chrome { 52 namespace chrome {
45 53
46 //////////////////////////////////////////////////////////////////////////////// 54 ////////////////////////////////////////////////////////////////////////////////
47 // BrowserInstantController, public: 55 // BrowserInstantController, public:
48 56
49 BrowserInstantController::BrowserInstantController(Browser* browser) 57 BrowserInstantController::BrowserInstantController(Browser* browser)
50 : browser_(browser), 58 : browser_(browser),
51 instant_(ALLOW_THIS_IN_INITIALIZER_LIST(this), 59 instant_(ALLOW_THIS_IN_INITIALIZER_LIST(this),
52 chrome::search::IsInstantExtendedAPIEnabled(profile())), 60 chrome::search::IsInstantExtendedAPIEnabled(profile())),
53 instant_unload_handler_(browser), 61 instant_unload_handler_(browser),
54 initialized_theme_info_(false) { 62 initialized_theme_info_(false) {
55 profile_pref_registrar_.Init(profile()->GetPrefs()); 63 profile_pref_registrar_.Init(profile()->GetPrefs());
56 profile_pref_registrar_.Add( 64 profile_pref_registrar_.Add(
57 GetInstantPrefName(profile()), 65 GetInstantPrefName(profile()),
58 base::Bind(&BrowserInstantController::ResetInstant, 66 base::Bind(&BrowserInstantController::ResetInstant,
59 base::Unretained(this))); 67 base::Unretained(this)));
60 profile_pref_registrar_.Add( 68 profile_pref_registrar_.Add(
61 prefs::kSearchSuggestEnabled, 69 prefs::kSearchSuggestEnabled,
62 base::Bind(&BrowserInstantController::ResetInstant, 70 base::Bind(&BrowserInstantController::ResetInstant,
63 base::Unretained(this))); 71 base::Unretained(this)));
64 ResetInstant(); 72 ResetInstant();
65 browser_->search_model()->AddObserver(this); 73 browser_->search_model()->AddObserver(this);
66 74
75 if (chrome::search::IsInstantExtendedAPIEnabled(profile())) {
76 // Only record this for valid (e.g. non-incognito) profiles.
77 PrefService* prefs = GetPrefsForInstantEnabledCheck(profile());
78 if (prefs) {
79 const bool pref_value = prefs->GetBoolean(GetInstantPrefName(profile()));
80 chrome::search::RecordInstantExtendedPrefValue(pref_value);
81 }
82 }
83
67 #if defined(ENABLE_THEMES) 84 #if defined(ENABLE_THEMES)
68 // Listen for theme installation. 85 // Listen for theme installation.
69 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, 86 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
70 content::Source<ThemeService>( 87 content::Source<ThemeService>(
71 ThemeServiceFactory::GetForProfile(profile()))); 88 ThemeServiceFactory::GetForProfile(profile())));
72 #endif // defined(ENABLE_THEMES) 89 #endif // defined(ENABLE_THEMES)
73 } 90 }
74 91
75 BrowserInstantController::~BrowserInstantController() { 92 BrowserInstantController::~BrowserInstantController() {
76 browser_->search_model()->RemoveObserver(this); 93 browser_->search_model()->RemoveObserver(this);
77 } 94 }
78 95
79 bool BrowserInstantController::IsInstantEnabled(Profile* profile) { 96 bool BrowserInstantController::IsInstantEnabled(Profile* profile) {
80 return profile && !profile->IsOffTheRecord() && profile->GetPrefs() && 97 PrefService* prefs = GetPrefsForInstantEnabledCheck(profile);
81 profile->GetPrefs()->GetBoolean(GetInstantPrefName(profile)); 98 return prefs && prefs->GetBoolean(GetInstantPrefName(profile));
82 } 99 }
83 100
84 void BrowserInstantController::RegisterUserPrefs( 101 void BrowserInstantController::RegisterUserPrefs(
85 PrefService* prefs, 102 PrefService* prefs,
86 PrefRegistrySyncable* registry) { 103 PrefRegistrySyncable* registry) {
87 // TODO(joi): Get rid of the need for PrefService param above. 104 // TODO(joi): Get rid of the need for PrefService param above.
88 registry->RegisterBooleanPref(prefs::kInstantConfirmDialogShown, false, 105 registry->RegisterBooleanPref(prefs::kInstantConfirmDialogShown, false,
89 PrefRegistrySyncable::SYNCABLE_PREF); 106 PrefRegistrySyncable::SYNCABLE_PREF);
90 registry->RegisterBooleanPref(prefs::kInstantEnabled, false, 107 registry->RegisterBooleanPref(prefs::kInstantEnabled, false,
91 PrefRegistrySyncable::SYNCABLE_PREF); 108 PrefRegistrySyncable::SYNCABLE_PREF);
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 initialized_theme_info_ = true; 377 initialized_theme_info_ = true;
361 } 378 }
362 379
363 DCHECK(initialized_theme_info_); 380 DCHECK(initialized_theme_info_);
364 381
365 if (browser_->search_model()->mode().is_ntp()) 382 if (browser_->search_model()->mode().is_ntp())
366 instant_.ThemeChanged(theme_info_); 383 instant_.ThemeChanged(theme_info_);
367 } 384 }
368 385
369 } // namespace chrome 386 } // namespace chrome
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/search/search.h » ('j') | chrome/browser/ui/search/search.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698