gpu_metrics_provider_unittest.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/metrics/gpu/gpu_metrics_provider.h"
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/basictypes.h"
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/metrics/proto/chrome_user_metrics_extension.pb.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/gfx/size.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace metrics {
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace {
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const int kScreenWidth = 1024;
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const int kScreenHeight = 768;
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const int kScreenCount = 3;
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const float kScreenScaleFactor = 2;
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class TestGPUMetricsProvider : public GPUMetricsProvider {
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public:
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  TestGPUMetricsProvider() {}
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual ~TestGPUMetricsProvider() {}
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private:
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Size GetScreenSize() const OVERRIDE {
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return gfx::Size(kScreenWidth, kScreenHeight);
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual float GetScreenDeviceScaleFactor() const OVERRIDE {
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return kScreenScaleFactor;
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual int GetScreenCount() const OVERRIDE {
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return kScreenCount;
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TestGPUMetricsProvider);
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class GPUMetricsProviderTest : public testing::Test {
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public:
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GPUMetricsProviderTest() {}
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual ~GPUMetricsProviderTest() {}
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private:
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GPUMetricsProviderTest);
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_F(GPUMetricsProviderTest, ProvideSystemProfileMetrics) {
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  TestGPUMetricsProvider provider;
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  metrics::ChromeUserMetricsExtension uma_proto;
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  provider.ProvideSystemProfileMetrics(uma_proto.mutable_system_profile());
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Check that the system profile has the correct values set.
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  const metrics::SystemProfileProto::Hardware& hardware =
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      uma_proto.system_profile().hardware();
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(kScreenWidth, hardware.primary_screen_width());
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(kScreenHeight, hardware.primary_screen_height());
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(kScreenScaleFactor, hardware.primary_screen_scale_factor());
65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(kScreenCount, hardware.screen_count());
66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace metrics
69