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