| Index: chrome/browser/gpu_blacklist_unittest.cc
 | 
| ===================================================================
 | 
| --- chrome/browser/gpu_blacklist_unittest.cc	(revision 155054)
 | 
| +++ chrome/browser/gpu_blacklist_unittest.cc	(working copy)
 | 
| @@ -1,985 +0,0 @@
 | 
| -// Copyright (c) 2012 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_path.h"
 | 
| -#include "base/file_util.h"
 | 
| -#include "base/memory/scoped_ptr.h"
 | 
| -#include "base/path_service.h"
 | 
| -#include "base/version.h"
 | 
| -#include "chrome/browser/gpu_blacklist.h"
 | 
| -#include "content/public/browser/gpu_data_manager.h"
 | 
| -#include "content/public/common/gpu_info.h"
 | 
| -#include "testing/gtest/include/gtest/gtest.h"
 | 
| -
 | 
| -using content::GpuFeatureType;
 | 
| -
 | 
| -class GpuBlacklistTest : public testing::Test {
 | 
| - public:
 | 
| -  GpuBlacklistTest() { }
 | 
| -
 | 
| -  virtual ~GpuBlacklistTest() { }
 | 
| -
 | 
| -  const content::GPUInfo& gpu_info() const {
 | 
| -    return gpu_info_;
 | 
| -  }
 | 
| -
 | 
| -  GpuBlacklist* Create() {
 | 
| -    return new GpuBlacklist();
 | 
| -  }
 | 
| -
 | 
| - protected:
 | 
| -  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_.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;
 | 
| -  }
 | 
| -
 | 
| -  void TearDown() {
 | 
| -  }
 | 
| -
 | 
| - private:
 | 
| -  content::GPUInfo gpu_info_;
 | 
| -};
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, CurrentBlacklistValidation) {
 | 
| -  FilePath data_file;
 | 
| -  ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &data_file));
 | 
| -  data_file =
 | 
| -      data_file.Append(FILE_PATH_LITERAL("chrome"))
 | 
| -               .Append(FILE_PATH_LITERAL("browser"))
 | 
| -               .Append(FILE_PATH_LITERAL("resources"))
 | 
| -               .Append(FILE_PATH_LITERAL("software_rendering_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(file_util::ReadFile(data_file, data.get(), data_file_size),
 | 
| -            data_file_size);
 | 
| -  std::string json_string(data.get(), data_file_size);
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      json_string, GpuBlacklist::kAllOs));
 | 
| -  EXPECT_FALSE(blacklist->contains_unknown_fields());
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, DefaultBlacklistSettings) {
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  // Default blacklist settings: all feature are allowed.
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, EmptyBlacklist) {
 | 
| -  // Empty list: all features are allowed.
 | 
| -  const std::string empty_list_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"2.5\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      empty_list_json, GpuBlacklist::kAllOs));
 | 
| -  EXPECT_EQ(blacklist->GetVersion(), std::string("2.5"));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, DetailedEntryAndInvalidJson) {
 | 
| -  // Blacklist accelerated_compositing with exact setting.
 | 
| -  const std::string exact_list_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 5,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"macosx\",\n"
 | 
| -      "        \"version\": {\n"
 | 
| -      "          \"op\": \"=\",\n"
 | 
| -      "          \"number\": \"10.6.4\"\n"
 | 
| -      "        }\n"
 | 
| -      "      },\n"
 | 
| -      "      \"vendor_id\": \"0x10de\",\n"
 | 
| -      "      \"device_id\": [\"0x0640\"],\n"
 | 
| -      "      \"driver_version\": {\n"
 | 
| -      "        \"op\": \"=\",\n"
 | 
| -      "        \"number\": \"1.6.18\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_compositing\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      exact_list_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING);
 | 
| -
 | 
| -  // Invalid json input should not change the current blacklist settings.
 | 
| -  const std::string invalid_json = "invalid";
 | 
| -
 | 
| -  EXPECT_FALSE(blacklist->LoadGpuBlacklist(
 | 
| -      invalid_json, GpuBlacklist::kAllOs));
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING);
 | 
| -  std::vector<uint32> entries;
 | 
| -  bool disabled = false;
 | 
| -  blacklist->GetGpuFeatureTypeEntries(
 | 
| -      content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING, entries, disabled);
 | 
| -  EXPECT_EQ(entries.size(), 1u);
 | 
| -  EXPECT_EQ(entries[0], 5u);
 | 
| -  blacklist->GetGpuFeatureTypeEntries(
 | 
| -      content::GPU_FEATURE_TYPE_ALL, entries, disabled);
 | 
| -  EXPECT_EQ(entries.size(), 1u);
 | 
| -  EXPECT_EQ(entries[0], 5u);
 | 
| -  EXPECT_EQ(blacklist->max_entry_id(), 5u);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, VendorOnAllOsEntry) {
 | 
| -  // Blacklist a vendor on all OS.
 | 
| -  const std::string vendor_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"vendor_id\": \"0x10de\",\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  // Blacklist entries won't be filtered to the current OS only upon loading.
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      vendor_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || \
 | 
| -    defined(OS_OPENBSD)
 | 
| -  // Blacklist entries will be filtered to the current OS only upon loading.
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      vendor_json, GpuBlacklist::kCurrentOsOnly));
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -#endif
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, VendorOnLinuxEntry) {
 | 
| -  // Blacklist a vendor on Linux only.
 | 
| -  const std::string vendor_linux_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"linux\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"vendor_id\": \"0x10de\",\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_2d_canvas\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      vendor_linux_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, AllExceptNVidiaOnLinuxEntry) {
 | 
| -  // Blacklist all cards in Linux except NVIDIA.
 | 
| -  const std::string linux_except_nvidia_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"linux\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"exceptions\": [\n"
 | 
| -      "        {\n"
 | 
| -      "          \"vendor_id\": \"0x10de\"\n"
 | 
| -      "        }\n"
 | 
| -      "      ],\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_2d_canvas\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      linux_except_nvidia_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, AllExceptIntelOnLinuxEntry) {
 | 
| -  // Blacklist all cards in Linux except Intel.
 | 
| -  const std::string linux_except_intel_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"linux\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"exceptions\": [\n"
 | 
| -      "        {\n"
 | 
| -      "          \"vendor_id\": \"0x8086\"\n"
 | 
| -      "        }\n"
 | 
| -      "      ],\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_2d_canvas\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      linux_except_intel_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, DateOnWindowsEntry) {
 | 
| -  // Blacklist all drivers earlier than 2010-01 in Windows.
 | 
| -  const std::string date_windows_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"win\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"driver_date\": {\n"
 | 
| -      "        \"op\": \"<\",\n"
 | 
| -      "        \"number\": \"2010.1\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_2d_canvas\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      date_windows_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, MultipleDevicesEntry) {
 | 
| -  const std::string devices_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"vendor_id\": \"0x10de\",\n"
 | 
| -      "      \"device_id\": [\"0x1023\", \"0x0640\"],\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"multisampling\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      devices_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, ChromeOSEntry) {
 | 
| -  const std::string devices_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"chromeos\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      devices_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsChromeOS, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, ChromeVersionEntry) {
 | 
| -  const std::string browser_version_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"browser_version\": {\n"
 | 
| -      "        \"op\": \">=\",\n"
 | 
| -      "        \"number\": \"10\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist9(Create());
 | 
| -  EXPECT_TRUE(blacklist9->LoadGpuBlacklist(
 | 
| -      "9.0", browser_version_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist9->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist10(Create());
 | 
| -  EXPECT_TRUE(blacklist10->LoadGpuBlacklist(
 | 
| -      "10.0", browser_version_json, GpuBlacklist::kAllOs));
 | 
| -  type = blacklist10->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, MalformedVendor) {
 | 
| -  // vendor_id is defined as list instead of string.
 | 
| -  const std::string malformed_vendor_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"vendor_id\": \"[0x10de]\",\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_2d_canvas\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_FALSE(blacklist->LoadGpuBlacklist(
 | 
| -      malformed_vendor_json, GpuBlacklist::kAllOs));
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, UnknownField) {
 | 
| -  const std::string unknown_field_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"unknown_field\": 0,\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_2d_canvas\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    },\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 2,\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      unknown_field_json, GpuBlacklist::kAllOs));
 | 
| -  EXPECT_EQ(1u, blacklist->num_entries());
 | 
| -  EXPECT_TRUE(blacklist->contains_unknown_fields());
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, UnknownExceptionField) {
 | 
| -  const std::string unknown_exception_field_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"unknown_field\": 0,\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_compositing\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    },\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 2,\n"
 | 
| -      "      \"exceptions\": [\n"
 | 
| -      "        {\n"
 | 
| -      "          \"unknown_field\": 0\n"
 | 
| -      "        }\n"
 | 
| -      "      ],\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_2d_canvas\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    },\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 3,\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      unknown_exception_field_json, GpuBlacklist::kAllOs));
 | 
| -  EXPECT_EQ(1u, blacklist->num_entries());
 | 
| -  EXPECT_TRUE(blacklist->contains_unknown_fields());
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, UnknownFeature) {
 | 
| -  const std::string unknown_feature_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_something\",\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      unknown_feature_json, GpuBlacklist::kAllOs));
 | 
| -  EXPECT_EQ(1u, blacklist->num_entries());
 | 
| -  EXPECT_TRUE(blacklist->contains_unknown_fields());
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, GlVendor) {
 | 
| -  const std::string gl_vendor_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"gl_vendor\": {\n"
 | 
| -      "        \"op\": \"beginwith\",\n"
 | 
| -      "        \"value\": \"NVIDIA\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      gl_vendor_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, GlRenderer) {
 | 
| -  const std::string gl_renderer_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"gl_renderer\": {\n"
 | 
| -      "        \"op\": \"contains\",\n"
 | 
| -      "        \"value\": \"GeForce\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      gl_renderer_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, PerfGraphics) {
 | 
| -  const std::string json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"perf_graphics\": {\n"
 | 
| -      "        \"op\": \"<\",\n"
 | 
| -      "        \"value\": \"6.0\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, PerfGaming) {
 | 
| -  const std::string json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"perf_gaming\": {\n"
 | 
| -      "        \"op\": \"<=\",\n"
 | 
| -      "        \"value\": \"4.0\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, PerfOverall) {
 | 
| -  const std::string json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"perf_overall\": {\n"
 | 
| -      "        \"op\": \"between\",\n"
 | 
| -      "        \"value\": \"1.0\",\n"
 | 
| -      "        \"value2\": \"9.0\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, DisabledEntry) {
 | 
| -  const std::string disabled_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"disabled\": true,\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      disabled_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsWin, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -  std::vector<uint32> flag_entries;
 | 
| -  bool disabled = false;
 | 
| -  blacklist->GetGpuFeatureTypeEntries(
 | 
| -      content::GPU_FEATURE_TYPE_ALL, flag_entries, disabled);
 | 
| -  EXPECT_EQ(flag_entries.size(), 0u);
 | 
| -  disabled = true;
 | 
| -  blacklist->GetGpuFeatureTypeEntries(
 | 
| -      content::GPU_FEATURE_TYPE_ALL, flag_entries, disabled);
 | 
| -  EXPECT_EQ(flag_entries.size(), 1u);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, Optimus) {
 | 
| -  const std::string optimus_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"linux\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"multi_gpu_style\": \"optimus\",\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  content::GPUInfo gpu_info;
 | 
| -  gpu_info.optimus = true;
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      optimus_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, AMDSwitchable) {
 | 
| -  const std::string amd_switchable_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"macosx\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"multi_gpu_style\": \"amd_switchable\",\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  content::GPUInfo gpu_info;
 | 
| -  gpu_info.amd_switchable = true;
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      amd_switchable_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, LexicalDriverVersion) {
 | 
| -  const std::string lexical_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"linux\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"vendor_id\": \"0x1002\",\n"
 | 
| -      "      \"driver_version\": {\n"
 | 
| -      "        \"op\": \"<\",\n"
 | 
| -      "        \"style\": \"lexical\",\n"
 | 
| -      "        \"number\": \"8.201\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  content::GPUInfo gpu_info;
 | 
| -  gpu_info.gpu.vendor_id = 0x1002;
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      lexical_json, GpuBlacklist::kAllOs));
 | 
| -
 | 
| -  gpu_info.driver_version = "8.109";
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -
 | 
| -  gpu_info.driver_version = "8.2";
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -
 | 
| -  gpu_info.driver_version = "8.21";
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -
 | 
| -  gpu_info.driver_version = "8.2010";
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsLinux, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, MultipleGPUsAny) {
 | 
| -  const std::string multi_gpu_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"macosx\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"vendor_id\": \"0x8086\",\n"
 | 
| -      "      \"device_id\": [\"0x0166\"],\n"
 | 
| -      "      \"multi_gpu_category\": \"any\",\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  content::GPUInfo gpu_info;
 | 
| -  gpu_info.gpu.vendor_id = 0x10de;
 | 
| -  gpu_info.gpu.device_id = 0x0fd5;
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      multi_gpu_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -
 | 
| -  content::GPUInfo::GPUDevice gpu_device;
 | 
| -  gpu_device.vendor_id = 0x8086;
 | 
| -  gpu_device.device_id = 0x0166;
 | 
| -  gpu_info.secondary_gpus.push_back(gpu_device);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, MultipleGPUsSecondary) {
 | 
| -  const std::string multi_gpu_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"macosx\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"vendor_id\": \"0x8086\",\n"
 | 
| -      "      \"device_id\": [\"0x0166\"],\n"
 | 
| -      "      \"multi_gpu_category\": \"secondary\",\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"webgl\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  content::GPUInfo gpu_info;
 | 
| -  gpu_info.gpu.vendor_id = 0x10de;
 | 
| -  gpu_info.gpu.device_id = 0x0fd5;
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      multi_gpu_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, 0);
 | 
| -
 | 
| -  content::GPUInfo::GPUDevice gpu_device;
 | 
| -  gpu_device.vendor_id = 0x8086;
 | 
| -  gpu_device.device_id = 0x0166;
 | 
| -  gpu_info.secondary_gpus.push_back(gpu_device);
 | 
| -  type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info);
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL);
 | 
| -}
 | 
| -
 | 
| -TEST_F(GpuBlacklistTest, VideoDecode) {
 | 
| -  const std::string video_decode_json =
 | 
| -      "{\n"
 | 
| -      "  \"name\": \"gpu blacklist\",\n"
 | 
| -      "  \"version\": \"0.1\",\n"
 | 
| -      "  \"entries\": [\n"
 | 
| -      "    {\n"
 | 
| -      "      \"id\": 1,\n"
 | 
| -      "      \"os\": {\n"
 | 
| -      "        \"type\": \"macosx\"\n"
 | 
| -      "      },\n"
 | 
| -      "      \"vendor_id\": \"0x10de\",\n"
 | 
| -      "      \"device_id\": [\"0x0640\"],\n"
 | 
| -      "      \"blacklist\": [\n"
 | 
| -      "        \"accelerated_video_decode\"\n"
 | 
| -      "      ]\n"
 | 
| -      "    }\n"
 | 
| -      "  ]\n"
 | 
| -      "}";
 | 
| -  Version os_version("10.6.4");
 | 
| -
 | 
| -  scoped_ptr<GpuBlacklist> blacklist(Create());
 | 
| -  EXPECT_TRUE(blacklist->LoadGpuBlacklist(
 | 
| -      video_decode_json, GpuBlacklist::kAllOs));
 | 
| -  GpuFeatureType type = blacklist->DetermineGpuFeatureType(
 | 
| -      GpuBlacklist::kOsMacosx, &os_version, gpu_info());
 | 
| -  EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE);
 | 
| -}
 | 
| -
 | 
| 
 |