[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 1 | // Copyright 2013 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be | ||||
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #ifndef CHROME_BROWSER_PREFS_PREF_METRICS_SERVICE_H_ | ||||
6 | #define CHROME_BROWSER_PREFS_PREF_METRICS_SERVICE_H_ | ||||
7 | |||||
Keishi Hattori | 0e45c02 | 2021-11-27 09:25:52 | [diff] [blame] | 8 | #include "base/memory/raw_ptr.h" |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 9 | #include "base/memory/singleton.h" |
[email protected] | 8456bec | 2013-09-09 04:06:23 | [diff] [blame] | 10 | #include "base/memory/weak_ptr.h" |
[email protected] | 540380fc | 2014-03-14 10:10:34 | [diff] [blame] | 11 | #include "components/keyed_service/content/browser_context_keyed_service_factory.h" |
12 | #include "components/keyed_service/core/keyed_service.h" | ||||
Mark Pearson | efb5f4f | 2018-08-15 19:55:40 | [diff] [blame] | 13 | #include "url/gurl.h" |
14 | |||||
Sylvain Defresne | cd9430a | 2019-02-18 14:06:55 | [diff] [blame] | 15 | class PrefService; |
Mark Pearson | efb5f4f | 2018-08-15 19:55:40 | [diff] [blame] | 16 | class Profile; |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 17 | |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 18 | // PrefMetricsService is responsible for recording prefs-related UMA stats. |
[email protected] | 540380fc | 2014-03-14 10:10:34 | [diff] [blame] | 19 | class PrefMetricsService : public KeyedService { |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 20 | public: |
21 | explicit PrefMetricsService(Profile* profile); | ||||
Peter Boström | 53c6c595 | 2021-09-17 09:41:26 | [diff] [blame] | 22 | |
23 | PrefMetricsService(const PrefMetricsService&) = delete; | ||||
24 | PrefMetricsService& operator=(const PrefMetricsService&) = delete; | ||||
25 | |||||
dcheng | 8f4b862 | 2014-10-23 16:37:48 | [diff] [blame] | 26 | ~PrefMetricsService() override; |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 27 | |
tedchoc | 42da7e24 | 2016-06-01 03:56:49 | [diff] [blame] | 28 | // Records metrics about the state of the homepage on launch. |
29 | static void RecordHomePageLaunchMetrics(bool show_home_button, | ||||
30 | bool homepage_is_ntp, | ||||
31 | const GURL& homepage_url); | ||||
32 | |||||
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 33 | class Factory : public BrowserContextKeyedServiceFactory { |
34 | public: | ||||
35 | static Factory* GetInstance(); | ||||
36 | static PrefMetricsService* GetForProfile(Profile* profile); | ||||
37 | private: | ||||
olli.raula | 36aa8be | 2015-09-10 11:14:22 | [diff] [blame] | 38 | friend struct base::DefaultSingletonTraits<Factory>; |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 39 | |
40 | Factory(); | ||||
dcheng | 8f4b862 | 2014-10-23 16:37:48 | [diff] [blame] | 41 | ~Factory() override; |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 42 | |
43 | // BrowserContextKeyedServiceFactory implementation | ||||
dcheng | 8f4b862 | 2014-10-23 16:37:48 | [diff] [blame] | 44 | KeyedService* BuildServiceInstanceFor( |
mostynb | 2b52d1db | 2014-10-07 02:47:17 | [diff] [blame] | 45 | content::BrowserContext* profile) const override; |
dcheng | 8f4b862 | 2014-10-23 16:37:48 | [diff] [blame] | 46 | bool ServiceIsCreatedWithBrowserContext() const override; |
dcheng | 8f4b862 | 2014-10-23 16:37:48 | [diff] [blame] | 47 | content::BrowserContext* GetBrowserContextToUse( |
mostynb | 2b52d1db | 2014-10-07 02:47:17 | [diff] [blame] | 48 | content::BrowserContext* context) const override; |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 49 | }; |
[email protected] | 0ebc403 | 2013-08-10 07:07:11 | [diff] [blame] | 50 | |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 51 | private: |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 52 | // Record prefs state on browser context creation. |
53 | void RecordLaunchPrefs(); | ||||
54 | |||||
Keishi Hattori | 0e45c02 | 2021-11-27 09:25:52 | [diff] [blame] | 55 | raw_ptr<Profile> profile_; |
56 | raw_ptr<PrefService> prefs_; | ||||
[email protected] | 8456bec | 2013-09-09 04:06:23 | [diff] [blame] | 57 | |
Jeremy Roman | 495db68 | 2019-07-12 16:03:24 | [diff] [blame] | 58 | base::WeakPtrFactory<PrefMetricsService> weak_factory_{this}; |
[email protected] | b544c1ae | 2013-07-24 18:34:13 | [diff] [blame] | 59 | }; |
60 | |||||
61 | #endif // CHROME_BROWSER_PREFS_PREF_METRICS_SERVICE_H_ |