xref: /aosp_15_r20/external/cronet/components/metrics/ui/screen_info_metrics_provider.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2015 The Chromium Authors
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 COMPONENTS_METRICS_UI_SCREEN_INFO_METRICS_PROVIDER_H_
6 #define COMPONENTS_METRICS_UI_SCREEN_INFO_METRICS_PROVIDER_H_
7 
8 #include <optional>
9 
10 #include "components/metrics/metrics_provider.h"
11 #include "ui/gfx/geometry/size.h"
12 
13 namespace metrics {
14 
15 // ScreenInfoMetricsProvider provides metrics related to screen info.
16 class ScreenInfoMetricsProvider : public MetricsProvider {
17  public:
18   ScreenInfoMetricsProvider();
19 
20   ScreenInfoMetricsProvider(const ScreenInfoMetricsProvider&) = delete;
21   ScreenInfoMetricsProvider& operator=(const ScreenInfoMetricsProvider&) =
22       delete;
23 
24   ~ScreenInfoMetricsProvider() override;
25 
26   // MetricsProvider:
27   void ProvideSystemProfileMetrics(
28       SystemProfileProto* system_profile_proto) override;
29 
30  protected:
31   // Exposed for the sake of mocking in test code.
32 
33   // Returns the screen size for the primary monitor if available.
34   virtual std::optional<gfx::Size> GetScreenSize() const;
35 
36   // Returns the device scale factor for the primary monitor.
37   virtual float GetScreenDeviceScaleFactor() const;
38 
39   // Returns the number of monitors the user is using.
40   virtual int GetScreenCount() const;
41 };
42 
43 }  // namespace metrics
44 
45 #endif  // COMPONENTS_METRICS_UI_SCREEN_INFO_METRICS_PROVIDER_H_
46