summaryrefslogtreecommitdiff
path: root/chromium/content/browser/gpu/gpu_info_browsertest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/gpu/gpu_info_browsertest.cc')
-rw-r--r--chromium/content/browser/gpu/gpu_info_browsertest.cc110
1 files changed, 110 insertions, 0 deletions
diff --git a/chromium/content/browser/gpu/gpu_info_browsertest.cc b/chromium/content/browser/gpu/gpu_info_browsertest.cc
new file mode 100644
index 00000000000..d555d1d05f0
--- /dev/null
+++ b/chromium/content/browser/gpu/gpu_info_browsertest.cc
@@ -0,0 +1,110 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/command_line.h"
+#include "base/logging.h"
+#include "base/message_loop/message_loop.h"
+#include "base/strings/stringprintf.h"
+#include "base/sys_info.h"
+#include "content/browser/gpu/gpu_data_manager_impl.h"
+#include "content/public/browser/gpu_data_manager_observer.h"
+#include "content/public/common/content_switches.h"
+#include "content/test/content_browser_test.h"
+
+namespace content {
+
+namespace {
+
+class TestObserver : public GpuDataManagerObserver {
+ public:
+ explicit TestObserver(base::MessageLoop* message_loop)
+ : message_loop_(message_loop) {
+ }
+
+ virtual ~TestObserver() { }
+
+ virtual void OnGpuInfoUpdate() OVERRIDE {
+ // Display GPU/Driver information.
+ gpu::GPUInfo gpu_info =
+ GpuDataManagerImpl::GetInstance()->GetGPUInfo();
+ std::string vendor_id = base::StringPrintf(
+ "0x%04x", gpu_info.gpu.vendor_id);
+ std::string device_id = base::StringPrintf(
+ "0x%04x", gpu_info.gpu.device_id);
+ LOG(INFO) << "GPU[0]: vendor_id = " << vendor_id
+ << ", device_id = " << device_id;
+ for (size_t i = 0; i < gpu_info.secondary_gpus.size(); ++i) {
+ gpu::GPUInfo::GPUDevice gpu = gpu_info.secondary_gpus[i];
+ vendor_id = base::StringPrintf("0x%04x", gpu.vendor_id);
+ device_id = base::StringPrintf("0x%04x", gpu.device_id);
+ LOG(INFO) << "GPU[" << (i + 1)
+ << "]: vendor_id = " << vendor_id
+ << ", device_od = " << device_id;
+ }
+ LOG(INFO) << "GPU Driver: vendor = " << gpu_info.driver_vendor
+ << ", version = " << gpu_info.driver_version
+ << ", date = " << gpu_info.driver_date;
+
+ // Display GL information.
+ LOG(INFO) << "GL: vendor = " << gpu_info.gl_vendor
+ << ", renderer = " << gpu_info.gl_renderer;
+
+ // Display GL window system binding information.
+ LOG(INFO) << "GL Window System: vendor = " << gpu_info.gl_ws_vendor
+ << ", version = " << gpu_info.gl_ws_version;
+
+ // Display OS information.
+ LOG(INFO) << "OS = " << base::SysInfo::OperatingSystemName()
+ << " " << base::SysInfo::OperatingSystemVersion();
+
+ message_loop_->Quit();
+ }
+
+ private:
+ base::MessageLoop* message_loop_;
+};
+
+} // namespace anonymous
+
+class GpuInfoBrowserTest : public ContentBrowserTest {
+ public:
+ GpuInfoBrowserTest()
+ : message_loop_(base::MessageLoop::TYPE_UI) {
+ }
+
+ virtual void SetUp() {
+ // We expect real pixel output for these tests.
+ UseRealGLContexts();
+
+ ContentBrowserTest::SetUp();
+ }
+
+ base::MessageLoop* GetMessageLoop() { return &message_loop_; }
+
+ private:
+ base::MessageLoop message_loop_;
+
+ DISALLOW_COPY_AND_ASSIGN(GpuInfoBrowserTest);
+};
+
+IN_PROC_BROWSER_TEST_F(GpuInfoBrowserTest, MANUAL_DisplayGpuInfo) {
+ // crbug.com/262287
+#if defined(OS_MACOSX)
+ // TODO(zmo): crashing on Mac, and also we don't have the full info
+ // collected.
+ return;
+#endif
+#if defined(OS_LINUX) && !defined(NDEBUG)
+ // TODO(zmo): crashing on Linux Debug.
+ return;
+#endif
+ TestObserver observer(GetMessageLoop());
+ GpuDataManagerImpl::GetInstance()->AddObserver(&observer);
+ GpuDataManagerImpl::GetInstance()->RequestCompleteGpuInfoIfNeeded();
+
+ GetMessageLoop()->Run();
+}
+
+} // namespace content
+