Moves GPUMetricsProvider to //components/metrics.

R=asvitkine@chromium.org,isherman@chromium.org
BUG=404791

Review URL: https://codereview.chromium.org/523273003

Cr-Commit-Position: refs/heads/master@{#294935}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index a10558bc..d5f7f467 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -59,6 +59,7 @@
     "//components/history/core/common",
     "//components/infobars/core",
     "//components/invalidation",
+    "//components/metrics:gpu",
     "//components/metrics:net",
     "//components/metrics/proto:proto",
     "//components/navigation_metrics",
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index b08564f..920363d2 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -22,7 +22,6 @@
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/google/google_brand.h"
 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h"
-#include "chrome/browser/metrics/gpu_metrics_provider.h"
 #include "chrome/browser/metrics/omnibox_metrics_provider.h"
 #include "chrome/browser/metrics/profiler_metrics_provider.h"
 #include "chrome/browser/metrics/tracking_synchronizer.h"
@@ -33,6 +32,7 @@
 #include "chrome/common/crash_keys.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/render_messages.h"
+#include "components/metrics/gpu/gpu_metrics_provider.h"
 #include "components/metrics/metrics_service.h"
 #include "components/metrics/net/net_metrics_log_uploader.h"
 #include "components/metrics/net/network_metrics_provider.h"
@@ -307,7 +307,7 @@
   metrics_service_->RegisterMetricsProvider(
       scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider));
   metrics_service_->RegisterMetricsProvider(
-      scoped_ptr<metrics::MetricsProvider>(new GPUMetricsProvider()));
+      scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider()));
   profiler_metrics_provider_ = new ProfilerMetricsProvider;
   metrics_service_->RegisterMetricsProvider(
       scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_));
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 92d0dc6..3f2e426 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -678,8 +678,6 @@
       'browser/metrics/field_trial_synchronizer.h',
       'browser/metrics/google_update_metrics_provider_win.cc',
       'browser/metrics/google_update_metrics_provider_win.h',
-      'browser/metrics/gpu_metrics_provider.cc',
-      'browser/metrics/gpu_metrics_provider.h',
       'browser/metrics/metric_event_duration_details.h',
       'browser/metrics/metrics_reporting_state.cc',
       'browser/metrics/metrics_reporting_state.h',
@@ -2796,6 +2794,7 @@
         '../components/components.gyp:infobars_core',
         '../components/components.gyp:invalidation',
         '../components/components.gyp:metrics',
+        '../components/components.gyp:metrics_gpu',
         '../components/components.gyp:metrics_net',
         '../components/components.gyp:navigation_metrics',
         '../components/components.gyp:network_time',
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 9922379f..c2da63f 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -529,7 +529,6 @@
       'browser/metrics/chrome_metrics_service_accessor_unittest.cc',
       'browser/metrics/cloned_install_detector_unittest.cc',
       'browser/metrics/extensions_metrics_provider_unittest.cc',
-      'browser/metrics/gpu_metrics_provider_unittest.cc',
       'browser/metrics/plugin_metrics_provider_unittest.cc',
       'browser/metrics/profiler_metrics_provider_unittest.cc',
       'browser/metrics/signin_status_metrics_provider_unittest.cc',
diff --git a/components/components_tests.gyp b/components/components_tests.gyp
index b3f9ed3..837921e 100644
--- a/components/components_tests.gyp
+++ b/components/components_tests.gyp
@@ -366,6 +366,7 @@
 
             # Dependencies of metrics
             'components.gyp:metrics',
+            'components.gyp:metrics_gpu',
             'components.gyp:metrics_net',
             'components.gyp:metrics_test_support',
 
@@ -449,6 +450,7 @@
               'sources': [
                 'autofill/content/renderer/renderer_save_password_progress_logger_unittest.cc',
                 'dom_distiller/content/dom_distiller_viewer_source_unittest.cc',
+                'metrics/gpu/gpu_metrics_provider_unittest.cc',
                 'power/origin_power_map_unittest.cc',
               ],
               'dependencies': [
diff --git a/components/metrics.gypi b/components/metrics.gypi
index 29e52b2..dafeb0e 100644
--- a/components/metrics.gypi
+++ b/components/metrics.gypi
@@ -68,6 +68,22 @@
       ],
     },
     {
+      # GN version: //components/metrics:gpu
+      'target_name': 'metrics_gpu',
+      'type': 'static_library',
+      'include_dirs': [
+        '..',
+      ],
+      'dependencies': [
+        'component_metrics_proto',
+        'metrics',
+      ],
+      'sources': [
+        'metrics/gpu/gpu_metrics_provider.cc',
+        'metrics/gpu/gpu_metrics_provider.h',
+      ],
+    },
+    {
       # GN version: //components/metrics:net
       'target_name': 'metrics_net',
       'type': 'static_library',
diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn
index d91a4fa..8179e2746 100644
--- a/components/metrics/BUILD.gn
+++ b/components/metrics/BUILD.gn
@@ -52,6 +52,21 @@
   forward_dependent_configs_from = [ "//components/metrics/proto" ]
 }
 
+# GYP version: components/metrics.gypi:metrics_gpu
+source_set("gpu") {
+  sources = [
+    "gpu/gpu_metrics_provider.cc",
+    "gpu/gpu_metrics_provider.h",
+  ]
+
+  deps = [
+    ":metrics",
+    "//gpu/config",
+  ]
+
+  forward_dependent_configs_from = [ ":metrics" ]
+}
+
 # GYP version: components/metrics.gypi:metrics_net
 static_library("net") {
   sources = [
diff --git a/components/metrics/gpu/DEPS b/components/metrics/gpu/DEPS
new file mode 100644
index 0000000..537521e
--- /dev/null
+++ b/components/metrics/gpu/DEPS
@@ -0,0 +1,5 @@
+include_rules = [
+  "+content/public/browser",
+  "+gpu/config",
+  "+ui/gfx",
+]
diff --git a/chrome/browser/metrics/gpu_metrics_provider.cc b/components/metrics/gpu/gpu_metrics_provider.cc
similarity index 89%
rename from chrome/browser/metrics/gpu_metrics_provider.cc
rename to components/metrics/gpu/gpu_metrics_provider.cc
index 34b8a39..ba81e7b 100644
--- a/chrome/browser/metrics/gpu_metrics_provider.cc
+++ b/components/metrics/gpu/gpu_metrics_provider.cc
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/metrics/gpu_metrics_provider.h"
+#include "components/metrics/gpu/gpu_metrics_provider.h"
 
 #include "components/metrics/proto/system_profile.pb.h"
 #include "content/public/browser/gpu_data_manager.h"
 #include "gpu/config/gpu_info.h"
 #include "ui/gfx/screen.h"
 
+namespace metrics {
+
 #if defined(OS_WIN)
 
 #include <windows.h>
@@ -37,8 +39,7 @@
   return TRUE;
 }
 
-void WriteScreenDPIInformationProto(
-    metrics::SystemProfileProto::Hardware* hardware) {
+void WriteScreenDPIInformationProto(SystemProfileProto::Hardware* hardware) {
   HDC desktop_dc = GetDC(NULL);
   if (desktop_dc) {
     ScreenDPIInformation si = {0, 0};
@@ -62,19 +63,19 @@
 }
 
 void GPUMetricsProvider::ProvideSystemProfileMetrics(
-    metrics::SystemProfileProto* system_profile_proto) {
-  metrics::SystemProfileProto::Hardware* hardware =
+    SystemProfileProto* system_profile_proto) {
+  SystemProfileProto::Hardware* hardware =
       system_profile_proto->mutable_hardware();
 
   const gpu::GPUInfo& gpu_info =
       content::GpuDataManager::GetInstance()->GetGPUInfo();
-  metrics::SystemProfileProto::Hardware::Graphics* gpu =
+  SystemProfileProto::Hardware::Graphics* gpu =
       hardware->mutable_gpu();
   gpu->set_vendor_id(gpu_info.gpu.vendor_id);
   gpu->set_device_id(gpu_info.gpu.device_id);
   gpu->set_driver_version(gpu_info.driver_version);
   gpu->set_driver_date(gpu_info.driver_date);
-  metrics::SystemProfileProto::Hardware::Graphics::PerformanceStatistics*
+  SystemProfileProto::Hardware::Graphics::PerformanceStatistics*
       gpu_performance = gpu->mutable_performance_statistics();
   gpu_performance->set_graphics_score(gpu_info.performance_stats.graphics);
   gpu_performance->set_gaming_score(gpu_info.performance_stats.gaming);
@@ -106,3 +107,5 @@
   // TODO(scottmg): NativeScreen maybe wrong. http://crbug.com/133312
   return gfx::Screen::GetNativeScreen()->GetNumDisplays();
 }
+
+}  // namespace metrics
diff --git a/chrome/browser/metrics/gpu_metrics_provider.h b/components/metrics/gpu/gpu_metrics_provider.h
similarity index 71%
rename from chrome/browser/metrics/gpu_metrics_provider.h
rename to components/metrics/gpu/gpu_metrics_provider.h
index 2c3a3f0..d10db56 100644
--- a/chrome/browser/metrics/gpu_metrics_provider.h
+++ b/components/metrics/gpu/gpu_metrics_provider.h
@@ -2,22 +2,24 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_METRICS_GPU_METRICS_PROVIDER_H_
-#define CHROME_BROWSER_METRICS_GPU_METRICS_PROVIDER_H_
+#ifndef COMPONENTS_METRICS_GPU_GPU_METRICS_PROVIDER_H_
+#define COMPONENTS_METRICS_GPU_GPU_METRICS_PROVIDER_H_
 
 #include "base/basictypes.h"
 #include "components/metrics/metrics_provider.h"
 #include "ui/gfx/size.h"
 
+namespace metrics {
+
 // GPUMetricsProvider provides GPU-related metrics.
-class GPUMetricsProvider : public metrics::MetricsProvider {
+class GPUMetricsProvider : public MetricsProvider {
  public:
   GPUMetricsProvider();
   virtual ~GPUMetricsProvider();
 
-  // metrics::MetricsProvider:
+  // MetricsProvider:
   virtual void ProvideSystemProfileMetrics(
-      metrics::SystemProfileProto* system_profile_proto) OVERRIDE;
+      SystemProfileProto* system_profile_proto) OVERRIDE;
 
  protected:
   // Exposed for the sake of mocking in test code.
@@ -35,4 +37,6 @@
   DISALLOW_COPY_AND_ASSIGN(GPUMetricsProvider);
 };
 
-#endif  // CHROME_BROWSER_METRICS_GPU_METRICS_PROVIDER_H_
+}  // namespace metrics
+
+#endif  // COMPONENTS_METRICS_GPU_GPU_METRICS_PROVIDER_H_
diff --git a/chrome/browser/metrics/gpu_metrics_provider_unittest.cc b/components/metrics/gpu/gpu_metrics_provider_unittest.cc
similarity index 94%
rename from chrome/browser/metrics/gpu_metrics_provider_unittest.cc
rename to components/metrics/gpu/gpu_metrics_provider_unittest.cc
index 6c753ba..1aea17a 100644
--- a/chrome/browser/metrics/gpu_metrics_provider_unittest.cc
+++ b/components/metrics/gpu/gpu_metrics_provider_unittest.cc
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/metrics/gpu_metrics_provider.h"
+#include "components/metrics/gpu/gpu_metrics_provider.h"
 
 #include "base/basictypes.h"
 #include "components/metrics/proto/chrome_user_metrics_extension.pb.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/size.h"
 
+namespace metrics {
+
 namespace {
 
 const int kScreenWidth = 1024;
@@ -62,3 +64,5 @@
   EXPECT_EQ(kScreenScaleFactor, hardware.primary_screen_scale_factor());
   EXPECT_EQ(kScreenCount, hardware.screen_count());
 }
+
+}  // namespace metrics