pref_metrics_service.cc revision 3240926e260ce088908e02ac07a6cf7b0c0cbf44
1bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// found in the LICENSE file. 4bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 5bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "chrome/browser/prefs/pref_metrics_service.h" 6bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 7bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "base/metrics/histogram.h" 8bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "base/prefs/pref_service.h" 9fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch#include "chrome/browser/prefs/session_startup_pref.h" 10bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "chrome/browser/profiles/incognito_helpers.h" 11bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "chrome/browser/profiles/profile.h" 12bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "chrome/common/pref_names.h" 13bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "components/browser_context_keyed_service/browser_context_dependency_manager.h" 14bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 15bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::PrefMetricsService(Profile* profile) 16bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch : profile_(profile) { 17bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RecordLaunchPrefs(); 18bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 19bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 20bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::~PrefMetricsService() { 21bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 22bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 23bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochvoid PrefMetricsService::RecordLaunchPrefs() { 243240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch PrefService* prefs = profile_->GetPrefs(); 253240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch bool show_home_button = prefs->GetBoolean(prefs::kShowHomeButton); 263240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch bool home_page_is_ntp = prefs->GetBoolean(prefs::kHomePageIsNewTabPage); 273240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch UMA_HISTOGRAM_BOOLEAN("Settings.ShowHomeButton", show_home_button); 283240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch if (show_home_button) { 293240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch UMA_HISTOGRAM_BOOLEAN("Settings.GivenShowHomeButton_HomePageIsNewTabPage", 303240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch home_page_is_ntp); 313240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch } 323240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch int restore_on_startup = prefs->GetInteger(prefs::kRestoreOnStartup); 33fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch UMA_HISTOGRAM_ENUMERATION("Settings.StartupPageLoadSettings", 34fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch restore_on_startup, SessionStartupPref::kPrefValueMax); 35fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch if (restore_on_startup == SessionStartupPref::kPrefValueURLs) { 363240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch const int url_list_size = prefs->GetList( 37fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch prefs::kURLsToRestoreOnStartup)->GetSize(); 38fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch UMA_HISTOGRAM_CUSTOM_COUNTS( 39fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch "Settings.StartupPageLoadURLs", url_list_size, 1, 50, 20); 40fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch } 41bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 42bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 43bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// static 44bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::Factory* PrefMetricsService::Factory::GetInstance() { 45bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return Singleton<PrefMetricsService::Factory>::get(); 46bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 47bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 48bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// static 49bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService* PrefMetricsService::Factory::GetForProfile( 50bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch Profile* profile) { 51bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return static_cast<PrefMetricsService*>( 52bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch GetInstance()->GetServiceForBrowserContext(profile, true)); 53bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 54bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 55bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::Factory::Factory() 56bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch : BrowserContextKeyedServiceFactory( 57bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch "PrefMetricsService", 58bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch BrowserContextDependencyManager::GetInstance()) { 59bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 60bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 61bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::Factory::~Factory() { 62bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 63bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 64bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochBrowserContextKeyedService* 65bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::Factory::BuildServiceInstanceFor( 66bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch content::BrowserContext* profile) const { 67bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return new PrefMetricsService(static_cast<Profile*>(profile)); 68bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 69bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 70bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochbool PrefMetricsService::Factory::ServiceIsCreatedWithBrowserContext() const { 71bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return true; 72bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 73bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 74bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochbool PrefMetricsService::Factory::ServiceIsNULLWhileTesting() const { 75bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return false; 76bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 77bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 78bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochcontent::BrowserContext* PrefMetricsService::Factory::GetBrowserContextToUse( 79bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch content::BrowserContext* context) const { 80bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return chrome::GetBrowserContextRedirectedInIncognito(context); 81bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 82