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