Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Unified Diff: content/browser/gpu/gpu_switching_list_unittest.cc

Issue 12976004: Generalzie GpuBlacklist to GpuControlList. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/gpu/gpu_switching_list_unittest.cc
===================================================================
--- content/browser/gpu/gpu_switching_list_unittest.cc (revision 0)
+++ content/browser/gpu/gpu_switching_list_unittest.cc (revision 0)
@@ -0,0 +1,124 @@
+// 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 <vector>
+
+#include "base/base_paths.h"
+#include "base/file_util.h"
+#include "base/files/file_path.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/path_service.h"
+#include "content/browser/gpu/gpu_switching_list.h"
+#include "content/public/common/gpu_info.h"
+#include "content/public/common/gpu_switching_option.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+const char kOsVersion[] = "10.6.4";
+
+namespace content {
+
+class GpuSwitchingListTest : public testing::Test {
+ public:
+ GpuSwitchingListTest() { }
+
+ virtual ~GpuSwitchingListTest() { }
+
+ const GPUInfo& gpu_info() const {
+ return gpu_info_;
+ }
+
+ protected:
+ virtual void SetUp() {
+ gpu_info_.gpu.vendor_id = 0x10de;
+ gpu_info_.gpu.device_id = 0x0640;
+ gpu_info_.driver_vendor = "NVIDIA";
+ gpu_info_.driver_version = "1.6.18";
+ gpu_info_.driver_date = "7-14-2009";
+ gpu_info_.machine_model = "MacBookPro 7.1";
+ gpu_info_.gl_vendor = "NVIDIA Corporation";
+ gpu_info_.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine";
+ gpu_info_.performance_stats.graphics = 5.0;
+ gpu_info_.performance_stats.gaming = 5.0;
+ gpu_info_.performance_stats.overall = 5.0;
+ }
+
+ virtual void TearDown() {
+ }
+
+ private:
+ GPUInfo gpu_info_;
+};
+
+TEST_F(GpuSwitchingListTest, CurrentSwitchingListValidation) {
+ base::FilePath data_file;
+ ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &data_file));
+ data_file =
+ data_file.Append(FILE_PATH_LITERAL("content"))
+ .Append(FILE_PATH_LITERAL("browser"))
+ .Append(FILE_PATH_LITERAL("gpu"))
+ .Append(FILE_PATH_LITERAL("gpu_switching_list.json"));
+ ASSERT_TRUE(file_util::PathExists(data_file));
+ int64 data_file_size64 = 0;
+ ASSERT_TRUE(file_util::GetFileSize(data_file, &data_file_size64));
+ int data_file_size = static_cast<int>(data_file_size64);
+ scoped_array<char> data(new char[data_file_size]);
+ ASSERT_EQ(data_file_size,
+ file_util::ReadFile(data_file, data.get(), data_file_size));
+ std::string json_string(data.get(), data_file_size);
+ scoped_ptr<GpuSwitchingList> switching_list(GpuSwitchingList::Create());
+ EXPECT_TRUE(switching_list->LoadList(json_string, GpuControlList::kAllOs));
+ EXPECT_FALSE(switching_list->contains_unknown_fields());
+}
+
+TEST_F(GpuSwitchingListTest, GpuSwitching) {
+ const std::string json =
greggman 2013/03/22 00:30:51 Just FYI, I believe you can do this #define L
Zhenyao Mo 2013/03/22 20:00:10 Wow, this is really awesome! Why I haven't heard o
+ "{\n"
+ " \"name\": \"gpu switching list\",\n"
+ " \"version\": \"0.1\",\n"
+ " \"entries\": [\n"
+ " {\n"
+ " \"id\": 1,\n"
+ " \"os\": {\n"
+ " \"type\": \"macosx\"\n"
+ " },\n"
+ " \"features\": [\n"
+ " \"force_discrete\"\n"
+ " ]\n"
+ " },\n"
+ " {\n"
+ " \"id\": 2,\n"
+ " \"os\": {\n"
+ " \"type\": \"win\"\n"
+ " },\n"
+ " \"features\": [\n"
+ " \"force_integrated\"\n"
+ " ]\n"
+ " }\n"
+ " ]\n"
+ "}";
+
+ scoped_ptr<GpuSwitchingList> switching_list(GpuSwitchingList::Create());
+ EXPECT_TRUE(switching_list->LoadList(json, GpuControlList::kAllOs));
+ int switching = switching_list->MakeDecision(
+ GpuControlList::kOsMacosx, kOsVersion, gpu_info());
+ EXPECT_EQ(GPU_SWITCHING_OPTION_FORCE_DISCRETE,
+ static_cast<GpuSwitchingOption>(switching));
+ std::vector<uint32> entries;
+ switching_list->GetDecisionEntries(&entries, false);
+ ASSERT_EQ(1u, entries.size());
+ EXPECT_EQ(1u, entries[0]);
+
+ switching_list.reset(GpuSwitchingList::Create());
+ EXPECT_TRUE(switching_list->LoadList(json, GpuControlList::kAllOs));
+ switching = switching_list->MakeDecision(
+ GpuControlList::kOsWin, kOsVersion, gpu_info());
+ EXPECT_EQ(GPU_SWITCHING_OPTION_FORCE_INTEGRATED,
+ static_cast<GpuSwitchingOption>(switching));
+ switching_list->GetDecisionEntries(&entries, false);
+ ASSERT_EQ(1u, entries.size());
+ EXPECT_EQ(2u, entries[0]);
+}
+
+} // namespace content
+
Property changes on: content/browser/gpu/gpu_switching_list_unittest.cc
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698