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 #include "components/metrics/ui/screen_info_metrics_provider.h" 6 7 #include "testing/gtest/include/gtest/gtest.h" 8 #include "third_party/metrics_proto/chrome_user_metrics_extension.pb.h" 9 #include "ui/gfx/geometry/size.h" 10 11 namespace metrics { 12 13 namespace { 14 15 const int kScreenWidth = 1024; 16 const int kScreenHeight = 768; 17 const int kScreenCount = 3; 18 const float kScreenScaleFactor = 2; 19 20 class TestScreenInfoMetricsProvider : public ScreenInfoMetricsProvider { 21 public: TestScreenInfoMetricsProvider()22 TestScreenInfoMetricsProvider() {} 23 24 TestScreenInfoMetricsProvider(const TestScreenInfoMetricsProvider&) = delete; 25 TestScreenInfoMetricsProvider& operator=( 26 const TestScreenInfoMetricsProvider&) = delete; 27 ~TestScreenInfoMetricsProvider()28 ~TestScreenInfoMetricsProvider() override {} 29 30 private: GetScreenSize() const31 std::optional<gfx::Size> GetScreenSize() const override { 32 return std::make_optional(gfx::Size(kScreenWidth, kScreenHeight)); 33 } 34 GetScreenDeviceScaleFactor() const35 float GetScreenDeviceScaleFactor() const override { 36 return kScreenScaleFactor; 37 } 38 GetScreenCount() const39 int GetScreenCount() const override { return kScreenCount; } 40 }; 41 42 } // namespace 43 44 class ScreenInfoMetricsProviderTest : public testing::Test { 45 public: ScreenInfoMetricsProviderTest()46 ScreenInfoMetricsProviderTest() {} 47 48 ScreenInfoMetricsProviderTest(const ScreenInfoMetricsProviderTest&) = delete; 49 ScreenInfoMetricsProviderTest& operator=( 50 const ScreenInfoMetricsProviderTest&) = delete; 51 ~ScreenInfoMetricsProviderTest()52 ~ScreenInfoMetricsProviderTest() override {} 53 }; 54 TEST_F(ScreenInfoMetricsProviderTest,ProvideSystemProfileMetrics)55TEST_F(ScreenInfoMetricsProviderTest, ProvideSystemProfileMetrics) { 56 TestScreenInfoMetricsProvider provider; 57 ChromeUserMetricsExtension uma_proto; 58 59 provider.ProvideSystemProfileMetrics(uma_proto.mutable_system_profile()); 60 61 // Check that the system profile has the correct values set. 62 const SystemProfileProto::Hardware& hardware = 63 uma_proto.system_profile().hardware(); 64 EXPECT_EQ(kScreenWidth, hardware.primary_screen_width()); 65 EXPECT_EQ(kScreenHeight, hardware.primary_screen_height()); 66 EXPECT_EQ(kScreenScaleFactor, hardware.primary_screen_scale_factor()); 67 EXPECT_EQ(kScreenCount, hardware.screen_count()); 68 } 69 70 } // namespace metrics 71