pref_metrics_service.cc revision fb250657ef40d7500f20882d5c9909c1013367d3
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() { 24bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch UMA_HISTOGRAM_BOOLEAN("Settings.ShowHomeButton", 25bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch profile_->GetPrefs()->GetBoolean(prefs::kShowHomeButton)); 26bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch UMA_HISTOGRAM_BOOLEAN("Settings.HomePageIsNewTabPage", 27bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch profile_->GetPrefs()->GetBoolean(prefs::kHomePageIsNewTabPage)); 28fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch 29fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch int restore_on_startup = profile_->GetPrefs()->GetInteger( 30fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch prefs::kRestoreOnStartup); 31fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch UMA_HISTOGRAM_ENUMERATION("Settings.StartupPageLoadSettings", 32fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch restore_on_startup, SessionStartupPref::kPrefValueMax); 33fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch if (restore_on_startup == SessionStartupPref::kPrefValueURLs) { 34fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch const int url_list_size = profile_->GetPrefs()->GetList( 35fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch prefs::kURLsToRestoreOnStartup)->GetSize(); 36fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch UMA_HISTOGRAM_CUSTOM_COUNTS( 37fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch "Settings.StartupPageLoadURLs", url_list_size, 1, 50, 20); 38fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch } 39bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 40bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 41bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// static 42bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::Factory* PrefMetricsService::Factory::GetInstance() { 43bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return Singleton<PrefMetricsService::Factory>::get(); 44bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 45bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 46bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// static 47bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService* PrefMetricsService::Factory::GetForProfile( 48bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch Profile* profile) { 49bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return static_cast<PrefMetricsService*>( 50bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch GetInstance()->GetServiceForBrowserContext(profile, true)); 51bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 52bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 53bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::Factory::Factory() 54bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch : BrowserContextKeyedServiceFactory( 55bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch "PrefMetricsService", 56bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch BrowserContextDependencyManager::GetInstance()) { 57bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 58bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 59bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::Factory::~Factory() { 60bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 61bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 62bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochBrowserContextKeyedService* 63bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochPrefMetricsService::Factory::BuildServiceInstanceFor( 64bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch content::BrowserContext* profile) const { 65bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return new PrefMetricsService(static_cast<Profile*>(profile)); 66bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 67bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 68bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochbool PrefMetricsService::Factory::ServiceIsCreatedWithBrowserContext() const { 69bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return true; 70bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 71bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 72bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochbool PrefMetricsService::Factory::ServiceIsNULLWhileTesting() const { 73bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return false; 74bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 75bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 76bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochcontent::BrowserContext* PrefMetricsService::Factory::GetBrowserContextToUse( 77bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch content::BrowserContext* context) const { 78bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return chrome::GetBrowserContextRedirectedInIncognito(context); 79bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 80