Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/base_paths.h" | 7 #include "base/base_paths.h" |
| 8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/path_service.h" | 11 #include "base/path_service.h" |
| 12 #include "base/version.h" | 12 #include "base/version.h" |
| 13 #include "content/browser/gpu/gpu_blacklist.h" | 13 #include "content/browser/gpu/gpu_blacklist.h" |
| 14 #include "content/public/common/gpu_info.h" | 14 #include "content/public/common/gpu_info.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 16 | 16 |
| 17 using content::GpuFeatureType; | 17 using content::GpuFeatureType; |
| 18 using content::GpuSwitchingOption; | |
| 18 | 19 |
| 19 class GpuBlacklistTest : public testing::Test { | 20 class GpuBlacklistTest : public testing::Test { |
| 20 public: | 21 public: |
| 21 GpuBlacklistTest() { } | 22 GpuBlacklistTest() { } |
| 22 | 23 |
| 23 virtual ~GpuBlacklistTest() { } | 24 virtual ~GpuBlacklistTest() { } |
| 24 | 25 |
| 25 const content::GPUInfo& gpu_info() const { | 26 const content::GPUInfo& gpu_info() const { |
| 26 return gpu_info_; | 27 return gpu_info_; |
| 27 } | 28 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 70 scoped_ptr<GpuBlacklist> blacklist(Create()); | 71 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 71 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 72 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 72 json_string, GpuBlacklist::kAllOs)); | 73 json_string, GpuBlacklist::kAllOs)); |
| 73 EXPECT_FALSE(blacklist->contains_unknown_fields()); | 74 EXPECT_FALSE(blacklist->contains_unknown_fields()); |
| 74 } | 75 } |
| 75 | 76 |
| 76 TEST_F(GpuBlacklistTest, DefaultBlacklistSettings) { | 77 TEST_F(GpuBlacklistTest, DefaultBlacklistSettings) { |
| 77 Version os_version("10.6.4"); | 78 Version os_version("10.6.4"); |
| 78 scoped_ptr<GpuBlacklist> blacklist(Create()); | 79 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 79 // Default blacklist settings: all feature are allowed. | 80 // Default blacklist settings: all feature are allowed. |
| 80 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 81 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 81 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 82 GpuBlacklist::kOsMacosx, &os_version, |
| 83 gpu_info()).blacklisted_features; | |
| 82 EXPECT_EQ(type, 0); | 84 EXPECT_EQ(type, 0); |
| 83 } | 85 } |
| 84 | 86 |
| 85 TEST_F(GpuBlacklistTest, EmptyBlacklist) { | 87 TEST_F(GpuBlacklistTest, EmptyBlacklist) { |
| 86 // Empty list: all features are allowed. | 88 // Empty list: all features are allowed. |
| 87 const std::string empty_list_json = | 89 const std::string empty_list_json = |
| 88 "{\n" | 90 "{\n" |
| 89 " \"name\": \"gpu blacklist\",\n" | 91 " \"name\": \"gpu blacklist\",\n" |
| 90 " \"version\": \"2.5\",\n" | 92 " \"version\": \"2.5\",\n" |
| 91 " \"entries\": [\n" | 93 " \"entries\": [\n" |
| 92 " ]\n" | 94 " ]\n" |
| 93 "}"; | 95 "}"; |
| 94 Version os_version("10.6.4"); | 96 Version os_version("10.6.4"); |
| 95 scoped_ptr<GpuBlacklist> blacklist(Create()); | 97 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 96 | 98 |
| 97 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 99 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 98 empty_list_json, GpuBlacklist::kAllOs)); | 100 empty_list_json, GpuBlacklist::kAllOs)); |
| 99 EXPECT_EQ(blacklist->GetVersion(), std::string("2.5")); | 101 EXPECT_EQ(blacklist->GetVersion(), std::string("2.5")); |
| 100 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 102 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 101 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 103 GpuBlacklist::kOsMacosx, &os_version, |
| 104 gpu_info()).blacklisted_features; | |
| 102 EXPECT_EQ(type, 0); | 105 EXPECT_EQ(type, 0); |
| 103 } | 106 } |
| 104 | 107 |
| 105 TEST_F(GpuBlacklistTest, DetailedEntryAndInvalidJson) { | 108 TEST_F(GpuBlacklistTest, DetailedEntryAndInvalidJson) { |
| 106 // Blacklist accelerated_compositing with exact setting. | 109 // Blacklist accelerated_compositing with exact setting. |
| 107 const std::string exact_list_json = | 110 const std::string exact_list_json = |
| 108 "{\n" | 111 "{\n" |
| 109 " \"name\": \"gpu blacklist\",\n" | 112 " \"name\": \"gpu blacklist\",\n" |
| 110 " \"version\": \"0.1\",\n" | 113 " \"version\": \"0.1\",\n" |
| 111 " \"entries\": [\n" | 114 " \"entries\": [\n" |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 128 " \"accelerated_compositing\"\n" | 131 " \"accelerated_compositing\"\n" |
| 129 " ]\n" | 132 " ]\n" |
| 130 " }\n" | 133 " }\n" |
| 131 " ]\n" | 134 " ]\n" |
| 132 "}"; | 135 "}"; |
| 133 Version os_version("10.6.4"); | 136 Version os_version("10.6.4"); |
| 134 scoped_ptr<GpuBlacklist> blacklist(Create()); | 137 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 135 | 138 |
| 136 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 139 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 137 exact_list_json, GpuBlacklist::kAllOs)); | 140 exact_list_json, GpuBlacklist::kAllOs)); |
| 138 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 141 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 139 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 142 GpuBlacklist::kOsMacosx, &os_version, |
| 143 gpu_info()).blacklisted_features; | |
| 140 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING); | 144 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING); |
| 141 | 145 |
| 142 // Invalid json input should not change the current blacklist settings. | 146 // Invalid json input should not change the current blacklist settings. |
| 143 const std::string invalid_json = "invalid"; | 147 const std::string invalid_json = "invalid"; |
| 144 | 148 |
| 145 EXPECT_FALSE(blacklist->LoadGpuBlacklist( | 149 EXPECT_FALSE(blacklist->LoadGpuBlacklist( |
| 146 invalid_json, GpuBlacklist::kAllOs)); | 150 invalid_json, GpuBlacklist::kAllOs)); |
| 147 type = blacklist->DetermineGpuFeatureType( | 151 type = blacklist->MakeBlacklistDecision( |
| 148 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 152 GpuBlacklist::kOsMacosx, &os_version, |
| 153 gpu_info()).blacklisted_features; | |
| 149 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING); | 154 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING); |
| 150 std::vector<uint32> entries; | 155 std::vector<uint32> entries; |
| 151 bool disabled = false; | 156 bool disabled = false; |
| 152 blacklist->GetGpuFeatureTypeEntries( | 157 blacklist->GetDecisionEntries(entries, disabled); |
| 153 content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING, entries, disabled); | |
| 154 EXPECT_EQ(entries.size(), 1u); | |
| 155 EXPECT_EQ(entries[0], 5u); | |
| 156 blacklist->GetGpuFeatureTypeEntries( | |
| 157 content::GPU_FEATURE_TYPE_ALL, entries, disabled); | |
| 158 EXPECT_EQ(entries.size(), 1u); | 158 EXPECT_EQ(entries.size(), 1u); |
| 159 EXPECT_EQ(entries[0], 5u); | 159 EXPECT_EQ(entries[0], 5u); |
| 160 EXPECT_EQ(blacklist->max_entry_id(), 5u); | 160 EXPECT_EQ(blacklist->max_entry_id(), 5u); |
| 161 } | 161 } |
| 162 | 162 |
| 163 TEST_F(GpuBlacklistTest, VendorOnAllOsEntry) { | 163 TEST_F(GpuBlacklistTest, VendorOnAllOsEntry) { |
| 164 // Blacklist a vendor on all OS. | 164 // Blacklist a vendor on all OS. |
| 165 const std::string vendor_json = | 165 const std::string vendor_json = |
| 166 "{\n" | 166 "{\n" |
| 167 " \"name\": \"gpu blacklist\",\n" | 167 " \"name\": \"gpu blacklist\",\n" |
| 168 " \"version\": \"0.1\",\n" | 168 " \"version\": \"0.1\",\n" |
| 169 " \"entries\": [\n" | 169 " \"entries\": [\n" |
| 170 " {\n" | 170 " {\n" |
| 171 " \"id\": 1,\n" | 171 " \"id\": 1,\n" |
| 172 " \"vendor_id\": \"0x10de\",\n" | 172 " \"vendor_id\": \"0x10de\",\n" |
| 173 " \"blacklist\": [\n" | 173 " \"blacklist\": [\n" |
| 174 " \"webgl\"\n" | 174 " \"webgl\"\n" |
| 175 " ]\n" | 175 " ]\n" |
| 176 " }\n" | 176 " }\n" |
| 177 " ]\n" | 177 " ]\n" |
| 178 "}"; | 178 "}"; |
| 179 Version os_version("10.6.4"); | 179 Version os_version("10.6.4"); |
| 180 scoped_ptr<GpuBlacklist> blacklist(Create()); | 180 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 181 | 181 |
| 182 // Blacklist entries won't be filtered to the current OS only upon loading. | 182 // Blacklist entries won't be filtered to the current OS only upon loading. |
| 183 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 183 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 184 vendor_json, GpuBlacklist::kAllOs)); | 184 vendor_json, GpuBlacklist::kAllOs)); |
| 185 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 185 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 186 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 186 GpuBlacklist::kOsMacosx, &os_version, |
| 187 gpu_info()).blacklisted_features; | |
| 187 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 188 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 188 type = blacklist->DetermineGpuFeatureType( | 189 type = blacklist->MakeBlacklistDecision( |
| 189 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 190 GpuBlacklist::kOsWin, &os_version, |
| 191 gpu_info()).blacklisted_features; | |
| 190 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 192 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 191 type = blacklist->DetermineGpuFeatureType( | 193 type = blacklist->MakeBlacklistDecision( |
| 192 GpuBlacklist::kOsLinux, &os_version, gpu_info()); | 194 GpuBlacklist::kOsLinux, &os_version, |
| 195 gpu_info()).blacklisted_features; | |
| 193 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 196 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 194 #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || \ | 197 #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || \ |
| 195 defined(OS_OPENBSD) | 198 defined(OS_OPENBSD) |
| 196 // Blacklist entries will be filtered to the current OS only upon loading. | 199 // Blacklist entries will be filtered to the current OS only upon loading. |
| 197 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 200 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 198 vendor_json, GpuBlacklist::kCurrentOsOnly)); | 201 vendor_json, GpuBlacklist::kCurrentOsOnly)); |
| 199 type = blacklist->DetermineGpuFeatureType( | 202 type = blacklist->MakeBlacklistDecision( |
| 200 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 203 GpuBlacklist::kOsMacosx, &os_version, |
| 204 gpu_info()).blacklisted_features; | |
| 201 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 205 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 202 type = blacklist->DetermineGpuFeatureType( | 206 type = blacklist->MakeBlacklistDecision( |
| 203 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 207 GpuBlacklist::kOsWin, &os_version, |
| 208 gpu_info()).blacklisted_features; | |
| 204 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 209 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 205 type = blacklist->DetermineGpuFeatureType( | 210 type = blacklist->MakeBlacklistDecision( |
| 206 GpuBlacklist::kOsLinux, &os_version, gpu_info()); | 211 GpuBlacklist::kOsLinux, &os_version, |
| 212 gpu_info()).blacklisted_features; | |
| 207 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 213 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 208 #endif | 214 #endif |
| 209 } | 215 } |
| 210 | 216 |
| 211 TEST_F(GpuBlacklistTest, VendorOnLinuxEntry) { | 217 TEST_F(GpuBlacklistTest, VendorOnLinuxEntry) { |
| 212 // Blacklist a vendor on Linux only. | 218 // Blacklist a vendor on Linux only. |
| 213 const std::string vendor_linux_json = | 219 const std::string vendor_linux_json = |
| 214 "{\n" | 220 "{\n" |
| 215 " \"name\": \"gpu blacklist\",\n" | 221 " \"name\": \"gpu blacklist\",\n" |
| 216 " \"version\": \"0.1\",\n" | 222 " \"version\": \"0.1\",\n" |
| 217 " \"entries\": [\n" | 223 " \"entries\": [\n" |
| 218 " {\n" | 224 " {\n" |
| 219 " \"id\": 1,\n" | 225 " \"id\": 1,\n" |
| 220 " \"os\": {\n" | 226 " \"os\": {\n" |
| 221 " \"type\": \"linux\"\n" | 227 " \"type\": \"linux\"\n" |
| 222 " },\n" | 228 " },\n" |
| 223 " \"vendor_id\": \"0x10de\",\n" | 229 " \"vendor_id\": \"0x10de\",\n" |
| 224 " \"blacklist\": [\n" | 230 " \"blacklist\": [\n" |
| 225 " \"accelerated_2d_canvas\"\n" | 231 " \"accelerated_2d_canvas\"\n" |
| 226 " ]\n" | 232 " ]\n" |
| 227 " }\n" | 233 " }\n" |
| 228 " ]\n" | 234 " ]\n" |
| 229 "}"; | 235 "}"; |
| 230 Version os_version("10.6.4"); | 236 Version os_version("10.6.4"); |
| 231 scoped_ptr<GpuBlacklist> blacklist(Create()); | 237 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 232 | 238 |
| 233 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 239 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 234 vendor_linux_json, GpuBlacklist::kAllOs)); | 240 vendor_linux_json, GpuBlacklist::kAllOs)); |
| 235 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 241 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 236 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 242 GpuBlacklist::kOsMacosx, &os_version, |
| 243 gpu_info()).blacklisted_features; | |
| 237 EXPECT_EQ(type, 0); | 244 EXPECT_EQ(type, 0); |
| 238 type = blacklist->DetermineGpuFeatureType( | 245 type = blacklist->MakeBlacklistDecision( |
| 239 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 246 GpuBlacklist::kOsWin, &os_version, |
| 247 gpu_info()).blacklisted_features; | |
| 240 EXPECT_EQ(type, 0); | 248 EXPECT_EQ(type, 0); |
| 241 type = blacklist->DetermineGpuFeatureType( | 249 type = blacklist->MakeBlacklistDecision( |
| 242 GpuBlacklist::kOsLinux, &os_version, gpu_info()); | 250 GpuBlacklist::kOsLinux, &os_version, |
| 251 gpu_info()).blacklisted_features; | |
| 243 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS); | 252 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS); |
| 244 } | 253 } |
| 245 | 254 |
| 246 TEST_F(GpuBlacklistTest, AllExceptNVidiaOnLinuxEntry) { | 255 TEST_F(GpuBlacklistTest, AllExceptNVidiaOnLinuxEntry) { |
| 247 // Blacklist all cards in Linux except NVIDIA. | 256 // Blacklist all cards in Linux except NVIDIA. |
| 248 const std::string linux_except_nvidia_json = | 257 const std::string linux_except_nvidia_json = |
| 249 "{\n" | 258 "{\n" |
| 250 " \"name\": \"gpu blacklist\",\n" | 259 " \"name\": \"gpu blacklist\",\n" |
| 251 " \"version\": \"0.1\",\n" | 260 " \"version\": \"0.1\",\n" |
| 252 " \"entries\": [\n" | 261 " \"entries\": [\n" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 264 " \"accelerated_2d_canvas\"\n" | 273 " \"accelerated_2d_canvas\"\n" |
| 265 " ]\n" | 274 " ]\n" |
| 266 " }\n" | 275 " }\n" |
| 267 " ]\n" | 276 " ]\n" |
| 268 "}"; | 277 "}"; |
| 269 Version os_version("10.6.4"); | 278 Version os_version("10.6.4"); |
| 270 scoped_ptr<GpuBlacklist> blacklist(Create()); | 279 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 271 | 280 |
| 272 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 281 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 273 linux_except_nvidia_json, GpuBlacklist::kAllOs)); | 282 linux_except_nvidia_json, GpuBlacklist::kAllOs)); |
| 274 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 283 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 275 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 284 GpuBlacklist::kOsMacosx, &os_version, |
| 285 gpu_info()).blacklisted_features; | |
| 276 EXPECT_EQ(type, 0); | 286 EXPECT_EQ(type, 0); |
| 277 type = blacklist->DetermineGpuFeatureType( | 287 type = blacklist->MakeBlacklistDecision( |
| 278 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 288 GpuBlacklist::kOsWin, &os_version, |
| 289 gpu_info()).blacklisted_features; | |
| 279 EXPECT_EQ(type, 0); | 290 EXPECT_EQ(type, 0); |
| 280 type = blacklist->DetermineGpuFeatureType( | 291 type = blacklist->MakeBlacklistDecision( |
| 281 GpuBlacklist::kOsLinux, &os_version, gpu_info()); | 292 GpuBlacklist::kOsLinux, &os_version, |
| 293 gpu_info()).blacklisted_features; | |
| 282 EXPECT_EQ(type, 0); | 294 EXPECT_EQ(type, 0); |
| 283 } | 295 } |
| 284 | 296 |
| 285 TEST_F(GpuBlacklistTest, AllExceptIntelOnLinuxEntry) { | 297 TEST_F(GpuBlacklistTest, AllExceptIntelOnLinuxEntry) { |
| 286 // Blacklist all cards in Linux except Intel. | 298 // Blacklist all cards in Linux except Intel. |
| 287 const std::string linux_except_intel_json = | 299 const std::string linux_except_intel_json = |
| 288 "{\n" | 300 "{\n" |
| 289 " \"name\": \"gpu blacklist\",\n" | 301 " \"name\": \"gpu blacklist\",\n" |
| 290 " \"version\": \"0.1\",\n" | 302 " \"version\": \"0.1\",\n" |
| 291 " \"entries\": [\n" | 303 " \"entries\": [\n" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 303 " \"accelerated_2d_canvas\"\n" | 315 " \"accelerated_2d_canvas\"\n" |
| 304 " ]\n" | 316 " ]\n" |
| 305 " }\n" | 317 " }\n" |
| 306 " ]\n" | 318 " ]\n" |
| 307 "}"; | 319 "}"; |
| 308 Version os_version("10.6.4"); | 320 Version os_version("10.6.4"); |
| 309 scoped_ptr<GpuBlacklist> blacklist(Create()); | 321 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 310 | 322 |
| 311 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 323 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 312 linux_except_intel_json, GpuBlacklist::kAllOs)); | 324 linux_except_intel_json, GpuBlacklist::kAllOs)); |
| 313 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 325 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 314 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 326 GpuBlacklist::kOsMacosx, &os_version, |
| 327 gpu_info()).blacklisted_features; | |
| 315 EXPECT_EQ(type, 0); | 328 EXPECT_EQ(type, 0); |
| 316 type = blacklist->DetermineGpuFeatureType( | 329 type = blacklist->MakeBlacklistDecision( |
| 317 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 330 GpuBlacklist::kOsWin, &os_version, |
| 331 gpu_info()).blacklisted_features; | |
| 318 EXPECT_EQ(type, 0); | 332 EXPECT_EQ(type, 0); |
| 319 type = blacklist->DetermineGpuFeatureType( | 333 type = blacklist->MakeBlacklistDecision( |
| 320 GpuBlacklist::kOsLinux, &os_version, gpu_info()); | 334 GpuBlacklist::kOsLinux, &os_version, |
| 335 gpu_info()).blacklisted_features; | |
| 321 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS); | 336 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS); |
| 322 } | 337 } |
| 323 | 338 |
| 324 TEST_F(GpuBlacklistTest, DateOnWindowsEntry) { | 339 TEST_F(GpuBlacklistTest, DateOnWindowsEntry) { |
| 325 // Blacklist all drivers earlier than 2010-01 in Windows. | 340 // Blacklist all drivers earlier than 2010-01 in Windows. |
| 326 const std::string date_windows_json = | 341 const std::string date_windows_json = |
| 327 "{\n" | 342 "{\n" |
| 328 " \"name\": \"gpu blacklist\",\n" | 343 " \"name\": \"gpu blacklist\",\n" |
| 329 " \"version\": \"0.1\",\n" | 344 " \"version\": \"0.1\",\n" |
| 330 " \"entries\": [\n" | 345 " \"entries\": [\n" |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 341 " \"accelerated_2d_canvas\"\n" | 356 " \"accelerated_2d_canvas\"\n" |
| 342 " ]\n" | 357 " ]\n" |
| 343 " }\n" | 358 " }\n" |
| 344 " ]\n" | 359 " ]\n" |
| 345 "}"; | 360 "}"; |
| 346 Version os_version("10.6.4"); | 361 Version os_version("10.6.4"); |
| 347 scoped_ptr<GpuBlacklist> blacklist(Create()); | 362 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 348 | 363 |
| 349 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 364 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 350 date_windows_json, GpuBlacklist::kAllOs)); | 365 date_windows_json, GpuBlacklist::kAllOs)); |
| 351 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 366 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 352 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 367 GpuBlacklist::kOsMacosx, &os_version, |
| 368 gpu_info()).blacklisted_features; | |
| 353 EXPECT_EQ(type, 0); | 369 EXPECT_EQ(type, 0); |
| 354 type = blacklist->DetermineGpuFeatureType( | 370 type = blacklist->MakeBlacklistDecision( |
| 355 GpuBlacklist::kOsLinux, &os_version, gpu_info()); | 371 GpuBlacklist::kOsLinux, &os_version, |
| 372 gpu_info()).blacklisted_features; | |
| 356 EXPECT_EQ(type, 0); | 373 EXPECT_EQ(type, 0); |
| 357 type = blacklist->DetermineGpuFeatureType( | 374 type = blacklist->MakeBlacklistDecision( |
| 358 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 375 GpuBlacklist::kOsWin, &os_version, |
| 376 gpu_info()).blacklisted_features; | |
| 359 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS); | 377 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS); |
| 360 } | 378 } |
| 361 | 379 |
| 362 TEST_F(GpuBlacklistTest, MultipleDevicesEntry) { | 380 TEST_F(GpuBlacklistTest, MultipleDevicesEntry) { |
| 363 const std::string devices_json = | 381 const std::string devices_json = |
| 364 "{\n" | 382 "{\n" |
| 365 " \"name\": \"gpu blacklist\",\n" | 383 " \"name\": \"gpu blacklist\",\n" |
| 366 " \"version\": \"0.1\",\n" | 384 " \"version\": \"0.1\",\n" |
| 367 " \"entries\": [\n" | 385 " \"entries\": [\n" |
| 368 " {\n" | 386 " {\n" |
| 369 " \"id\": 1,\n" | 387 " \"id\": 1,\n" |
| 370 " \"vendor_id\": \"0x10de\",\n" | 388 " \"vendor_id\": \"0x10de\",\n" |
| 371 " \"device_id\": [\"0x1023\", \"0x0640\"],\n" | 389 " \"device_id\": [\"0x1023\", \"0x0640\"],\n" |
| 372 " \"blacklist\": [\n" | 390 " \"blacklist\": [\n" |
| 373 " \"multisampling\"\n" | 391 " \"multisampling\"\n" |
| 374 " ]\n" | 392 " ]\n" |
| 375 " }\n" | 393 " }\n" |
| 376 " ]\n" | 394 " ]\n" |
| 377 "}"; | 395 "}"; |
| 378 Version os_version("10.6.4"); | 396 Version os_version("10.6.4"); |
| 379 scoped_ptr<GpuBlacklist> blacklist(Create()); | 397 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 380 | 398 |
| 381 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 399 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 382 devices_json, GpuBlacklist::kAllOs)); | 400 devices_json, GpuBlacklist::kAllOs)); |
| 383 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 401 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 384 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 402 GpuBlacklist::kOsMacosx, &os_version, |
| 403 gpu_info()).blacklisted_features; | |
| 385 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING); | 404 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING); |
| 386 type = blacklist->DetermineGpuFeatureType( | 405 type = blacklist->MakeBlacklistDecision( |
| 387 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 406 GpuBlacklist::kOsWin, &os_version, |
| 407 gpu_info()).blacklisted_features; | |
| 388 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING); | 408 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING); |
| 389 type = blacklist->DetermineGpuFeatureType( | 409 type = blacklist->MakeBlacklistDecision( |
| 390 GpuBlacklist::kOsLinux, &os_version, gpu_info()); | 410 GpuBlacklist::kOsLinux, &os_version, |
| 411 gpu_info()).blacklisted_features; | |
| 391 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING); | 412 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_MULTISAMPLING); |
| 392 } | 413 } |
| 393 | 414 |
| 394 TEST_F(GpuBlacklistTest, ChromeOSEntry) { | 415 TEST_F(GpuBlacklistTest, ChromeOSEntry) { |
| 395 const std::string devices_json = | 416 const std::string devices_json = |
| 396 "{\n" | 417 "{\n" |
| 397 " \"name\": \"gpu blacklist\",\n" | 418 " \"name\": \"gpu blacklist\",\n" |
| 398 " \"version\": \"0.1\",\n" | 419 " \"version\": \"0.1\",\n" |
| 399 " \"entries\": [\n" | 420 " \"entries\": [\n" |
| 400 " {\n" | 421 " {\n" |
| 401 " \"id\": 1,\n" | 422 " \"id\": 1,\n" |
| 402 " \"os\": {\n" | 423 " \"os\": {\n" |
| 403 " \"type\": \"chromeos\"\n" | 424 " \"type\": \"chromeos\"\n" |
| 404 " },\n" | 425 " },\n" |
| 405 " \"blacklist\": [\n" | 426 " \"blacklist\": [\n" |
| 406 " \"webgl\"\n" | 427 " \"webgl\"\n" |
| 407 " ]\n" | 428 " ]\n" |
| 408 " }\n" | 429 " }\n" |
| 409 " ]\n" | 430 " ]\n" |
| 410 "}"; | 431 "}"; |
| 411 Version os_version("10.6.4"); | 432 Version os_version("10.6.4"); |
| 412 scoped_ptr<GpuBlacklist> blacklist(Create()); | 433 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 413 | 434 |
| 414 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 435 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 415 devices_json, GpuBlacklist::kAllOs)); | 436 devices_json, GpuBlacklist::kAllOs)); |
| 416 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 437 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 417 GpuBlacklist::kOsChromeOS, &os_version, gpu_info()); | 438 GpuBlacklist::kOsChromeOS, &os_version, |
| 439 gpu_info()).blacklisted_features; | |
| 418 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 440 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 419 type = blacklist->DetermineGpuFeatureType( | 441 type = blacklist->MakeBlacklistDecision( |
| 420 GpuBlacklist::kOsLinux, &os_version, gpu_info()); | 442 GpuBlacklist::kOsLinux, &os_version, |
| 443 gpu_info()).blacklisted_features; | |
| 421 EXPECT_EQ(type, 0); | 444 EXPECT_EQ(type, 0); |
| 422 } | 445 } |
| 423 | 446 |
| 424 TEST_F(GpuBlacklistTest, ChromeVersionEntry) { | 447 TEST_F(GpuBlacklistTest, ChromeVersionEntry) { |
| 425 const std::string browser_version_json = | 448 const std::string browser_version_json = |
| 426 "{\n" | 449 "{\n" |
| 427 " \"name\": \"gpu blacklist\",\n" | 450 " \"name\": \"gpu blacklist\",\n" |
| 428 " \"version\": \"0.1\",\n" | 451 " \"version\": \"0.1\",\n" |
| 429 " \"entries\": [\n" | 452 " \"entries\": [\n" |
| 430 " {\n" | 453 " {\n" |
| 431 " \"id\": 1,\n" | 454 " \"id\": 1,\n" |
| 432 " \"browser_version\": {\n" | 455 " \"browser_version\": {\n" |
| 433 " \"op\": \">=\",\n" | 456 " \"op\": \">=\",\n" |
| 434 " \"number\": \"10\"\n" | 457 " \"number\": \"10\"\n" |
| 435 " },\n" | 458 " },\n" |
| 436 " \"blacklist\": [\n" | 459 " \"blacklist\": [\n" |
| 437 " \"webgl\"\n" | 460 " \"webgl\"\n" |
| 438 " ]\n" | 461 " ]\n" |
| 439 " }\n" | 462 " }\n" |
| 440 " ]\n" | 463 " ]\n" |
| 441 "}"; | 464 "}"; |
| 442 Version os_version("10.6.4"); | 465 Version os_version("10.6.4"); |
| 443 | 466 |
| 444 scoped_ptr<GpuBlacklist> blacklist9(Create()); | 467 scoped_ptr<GpuBlacklist> blacklist9(Create()); |
| 445 EXPECT_TRUE(blacklist9->LoadGpuBlacklist( | 468 EXPECT_TRUE(blacklist9->LoadGpuBlacklist( |
| 446 "9.0", browser_version_json, GpuBlacklist::kAllOs)); | 469 "9.0", browser_version_json, GpuBlacklist::kAllOs)); |
| 447 GpuFeatureType type = blacklist9->DetermineGpuFeatureType( | 470 GpuFeatureType type = blacklist9->MakeBlacklistDecision( |
| 448 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 471 GpuBlacklist::kOsWin, &os_version, |
| 472 gpu_info()).blacklisted_features; | |
| 449 EXPECT_EQ(type, 0); | 473 EXPECT_EQ(type, 0); |
| 450 | 474 |
| 451 scoped_ptr<GpuBlacklist> blacklist10(Create()); | 475 scoped_ptr<GpuBlacklist> blacklist10(Create()); |
| 452 EXPECT_TRUE(blacklist10->LoadGpuBlacklist( | 476 EXPECT_TRUE(blacklist10->LoadGpuBlacklist( |
| 453 "10.0", browser_version_json, GpuBlacklist::kAllOs)); | 477 "10.0", browser_version_json, GpuBlacklist::kAllOs)); |
| 454 type = blacklist10->DetermineGpuFeatureType( | 478 type = blacklist10->MakeBlacklistDecision( |
| 455 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 479 GpuBlacklist::kOsWin, &os_version, |
| 480 gpu_info()).blacklisted_features; | |
| 456 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 481 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 457 } | 482 } |
| 458 | 483 |
| 459 TEST_F(GpuBlacklistTest, MalformedVendor) { | 484 TEST_F(GpuBlacklistTest, MalformedVendor) { |
| 460 // vendor_id is defined as list instead of string. | 485 // vendor_id is defined as list instead of string. |
| 461 const std::string malformed_vendor_json = | 486 const std::string malformed_vendor_json = |
| 462 "{\n" | 487 "{\n" |
| 463 " \"name\": \"gpu blacklist\",\n" | 488 " \"name\": \"gpu blacklist\",\n" |
| 464 " \"version\": \"0.1\",\n" | 489 " \"version\": \"0.1\",\n" |
| 465 " \"entries\": [\n" | 490 " \"entries\": [\n" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 499 " }\n" | 524 " }\n" |
| 500 " ]\n" | 525 " ]\n" |
| 501 "}"; | 526 "}"; |
| 502 Version os_version("10.6.4"); | 527 Version os_version("10.6.4"); |
| 503 scoped_ptr<GpuBlacklist> blacklist(Create()); | 528 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 504 | 529 |
| 505 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 530 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 506 unknown_field_json, GpuBlacklist::kAllOs)); | 531 unknown_field_json, GpuBlacklist::kAllOs)); |
| 507 EXPECT_EQ(1u, blacklist->num_entries()); | 532 EXPECT_EQ(1u, blacklist->num_entries()); |
| 508 EXPECT_TRUE(blacklist->contains_unknown_fields()); | 533 EXPECT_TRUE(blacklist->contains_unknown_fields()); |
| 509 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 534 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 510 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 535 GpuBlacklist::kOsWin, &os_version, |
| 536 gpu_info()).blacklisted_features; | |
| 511 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 537 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 512 } | 538 } |
| 513 | 539 |
| 514 TEST_F(GpuBlacklistTest, UnknownExceptionField) { | 540 TEST_F(GpuBlacklistTest, UnknownExceptionField) { |
| 515 const std::string unknown_exception_field_json = | 541 const std::string unknown_exception_field_json = |
| 516 "{\n" | 542 "{\n" |
| 517 " \"name\": \"gpu blacklist\",\n" | 543 " \"name\": \"gpu blacklist\",\n" |
| 518 " \"version\": \"0.1\",\n" | 544 " \"version\": \"0.1\",\n" |
| 519 " \"entries\": [\n" | 545 " \"entries\": [\n" |
| 520 " {\n" | 546 " {\n" |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 543 " }\n" | 569 " }\n" |
| 544 " ]\n" | 570 " ]\n" |
| 545 "}"; | 571 "}"; |
| 546 Version os_version("10.6.4"); | 572 Version os_version("10.6.4"); |
| 547 scoped_ptr<GpuBlacklist> blacklist(Create()); | 573 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 548 | 574 |
| 549 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 575 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 550 unknown_exception_field_json, GpuBlacklist::kAllOs)); | 576 unknown_exception_field_json, GpuBlacklist::kAllOs)); |
| 551 EXPECT_EQ(1u, blacklist->num_entries()); | 577 EXPECT_EQ(1u, blacklist->num_entries()); |
| 552 EXPECT_TRUE(blacklist->contains_unknown_fields()); | 578 EXPECT_TRUE(blacklist->contains_unknown_fields()); |
| 553 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 579 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 554 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 580 GpuBlacklist::kOsWin, &os_version, |
| 581 gpu_info()).blacklisted_features; | |
| 555 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 582 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 556 } | 583 } |
| 557 | 584 |
| 558 TEST_F(GpuBlacklistTest, UnknownFeature) { | 585 TEST_F(GpuBlacklistTest, UnknownFeature) { |
| 559 const std::string unknown_feature_json = | 586 const std::string unknown_feature_json = |
| 560 "{\n" | 587 "{\n" |
| 561 " \"name\": \"gpu blacklist\",\n" | 588 " \"name\": \"gpu blacklist\",\n" |
| 562 " \"version\": \"0.1\",\n" | 589 " \"version\": \"0.1\",\n" |
| 563 " \"entries\": [\n" | 590 " \"entries\": [\n" |
| 564 " {\n" | 591 " {\n" |
| 565 " \"id\": 1,\n" | 592 " \"id\": 1,\n" |
| 566 " \"blacklist\": [\n" | 593 " \"blacklist\": [\n" |
| 567 " \"accelerated_something\",\n" | 594 " \"accelerated_something\",\n" |
| 568 " \"webgl\"\n" | 595 " \"webgl\"\n" |
| 569 " ]\n" | 596 " ]\n" |
| 570 " }\n" | 597 " }\n" |
| 571 " ]\n" | 598 " ]\n" |
| 572 "}"; | 599 "}"; |
| 573 Version os_version("10.6.4"); | 600 Version os_version("10.6.4"); |
| 574 scoped_ptr<GpuBlacklist> blacklist(Create()); | 601 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 575 | 602 |
| 576 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 603 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 577 unknown_feature_json, GpuBlacklist::kAllOs)); | 604 unknown_feature_json, GpuBlacklist::kAllOs)); |
| 578 EXPECT_EQ(1u, blacklist->num_entries()); | 605 EXPECT_EQ(1u, blacklist->num_entries()); |
| 579 EXPECT_TRUE(blacklist->contains_unknown_fields()); | 606 EXPECT_TRUE(blacklist->contains_unknown_fields()); |
| 580 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 607 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 581 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 608 GpuBlacklist::kOsWin, &os_version, |
| 609 gpu_info()).blacklisted_features; | |
| 582 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 610 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 583 } | 611 } |
| 584 | 612 |
| 585 TEST_F(GpuBlacklistTest, GlVendor) { | 613 TEST_F(GpuBlacklistTest, GlVendor) { |
| 586 const std::string gl_vendor_json = | 614 const std::string gl_vendor_json = |
| 587 "{\n" | 615 "{\n" |
| 588 " \"name\": \"gpu blacklist\",\n" | 616 " \"name\": \"gpu blacklist\",\n" |
| 589 " \"version\": \"0.1\",\n" | 617 " \"version\": \"0.1\",\n" |
| 590 " \"entries\": [\n" | 618 " \"entries\": [\n" |
| 591 " {\n" | 619 " {\n" |
| 592 " \"id\": 1,\n" | 620 " \"id\": 1,\n" |
| 593 " \"gl_vendor\": {\n" | 621 " \"gl_vendor\": {\n" |
| 594 " \"op\": \"beginwith\",\n" | 622 " \"op\": \"beginwith\",\n" |
| 595 " \"value\": \"NVIDIA\"\n" | 623 " \"value\": \"NVIDIA\"\n" |
| 596 " },\n" | 624 " },\n" |
| 597 " \"blacklist\": [\n" | 625 " \"blacklist\": [\n" |
| 598 " \"webgl\"\n" | 626 " \"webgl\"\n" |
| 599 " ]\n" | 627 " ]\n" |
| 600 " }\n" | 628 " }\n" |
| 601 " ]\n" | 629 " ]\n" |
| 602 "}"; | 630 "}"; |
| 603 Version os_version("10.6.4"); | 631 Version os_version("10.6.4"); |
| 604 | 632 |
| 605 scoped_ptr<GpuBlacklist> blacklist(Create()); | 633 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 606 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 634 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 607 gl_vendor_json, GpuBlacklist::kAllOs)); | 635 gl_vendor_json, GpuBlacklist::kAllOs)); |
| 608 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 636 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 609 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 637 GpuBlacklist::kOsWin, &os_version, |
| 638 gpu_info()).blacklisted_features; | |
| 610 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 639 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 611 } | 640 } |
| 612 | 641 |
| 613 TEST_F(GpuBlacklistTest, GlRenderer) { | 642 TEST_F(GpuBlacklistTest, GlRenderer) { |
| 614 const std::string gl_renderer_json = | 643 const std::string gl_renderer_json = |
| 615 "{\n" | 644 "{\n" |
| 616 " \"name\": \"gpu blacklist\",\n" | 645 " \"name\": \"gpu blacklist\",\n" |
| 617 " \"version\": \"0.1\",\n" | 646 " \"version\": \"0.1\",\n" |
| 618 " \"entries\": [\n" | 647 " \"entries\": [\n" |
| 619 " {\n" | 648 " {\n" |
| 620 " \"id\": 1,\n" | 649 " \"id\": 1,\n" |
| 621 " \"gl_renderer\": {\n" | 650 " \"gl_renderer\": {\n" |
| 622 " \"op\": \"contains\",\n" | 651 " \"op\": \"contains\",\n" |
| 623 " \"value\": \"GeForce\"\n" | 652 " \"value\": \"GeForce\"\n" |
| 624 " },\n" | 653 " },\n" |
| 625 " \"blacklist\": [\n" | 654 " \"blacklist\": [\n" |
| 626 " \"webgl\"\n" | 655 " \"webgl\"\n" |
| 627 " ]\n" | 656 " ]\n" |
| 628 " }\n" | 657 " }\n" |
| 629 " ]\n" | 658 " ]\n" |
| 630 "}"; | 659 "}"; |
| 631 Version os_version("10.6.4"); | 660 Version os_version("10.6.4"); |
| 632 | 661 |
| 633 scoped_ptr<GpuBlacklist> blacklist(Create()); | 662 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 634 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 663 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 635 gl_renderer_json, GpuBlacklist::kAllOs)); | 664 gl_renderer_json, GpuBlacklist::kAllOs)); |
| 636 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 665 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 637 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 666 GpuBlacklist::kOsWin, &os_version, |
| 667 gpu_info()).blacklisted_features; | |
| 638 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 668 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 639 } | 669 } |
| 640 | 670 |
| 641 TEST_F(GpuBlacklistTest, PerfGraphics) { | 671 TEST_F(GpuBlacklistTest, PerfGraphics) { |
| 642 const std::string json = | 672 const std::string json = |
| 643 "{\n" | 673 "{\n" |
| 644 " \"name\": \"gpu blacklist\",\n" | 674 " \"name\": \"gpu blacklist\",\n" |
| 645 " \"version\": \"0.1\",\n" | 675 " \"version\": \"0.1\",\n" |
| 646 " \"entries\": [\n" | 676 " \"entries\": [\n" |
| 647 " {\n" | 677 " {\n" |
| 648 " \"id\": 1,\n" | 678 " \"id\": 1,\n" |
| 649 " \"perf_graphics\": {\n" | 679 " \"perf_graphics\": {\n" |
| 650 " \"op\": \"<\",\n" | 680 " \"op\": \"<\",\n" |
| 651 " \"value\": \"6.0\"\n" | 681 " \"value\": \"6.0\"\n" |
| 652 " },\n" | 682 " },\n" |
| 653 " \"blacklist\": [\n" | 683 " \"blacklist\": [\n" |
| 654 " \"webgl\"\n" | 684 " \"webgl\"\n" |
| 655 " ]\n" | 685 " ]\n" |
| 656 " }\n" | 686 " }\n" |
| 657 " ]\n" | 687 " ]\n" |
| 658 "}"; | 688 "}"; |
| 659 Version os_version("10.6.4"); | 689 Version os_version("10.6.4"); |
| 660 | 690 |
| 661 scoped_ptr<GpuBlacklist> blacklist(Create()); | 691 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 662 EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs)); | 692 EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs)); |
| 663 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 693 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 664 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 694 GpuBlacklist::kOsWin, &os_version, |
| 695 gpu_info()).blacklisted_features; | |
| 665 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 696 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 666 } | 697 } |
| 667 | 698 |
| 668 TEST_F(GpuBlacklistTest, PerfGaming) { | 699 TEST_F(GpuBlacklistTest, PerfGaming) { |
| 669 const std::string json = | 700 const std::string json = |
| 670 "{\n" | 701 "{\n" |
| 671 " \"name\": \"gpu blacklist\",\n" | 702 " \"name\": \"gpu blacklist\",\n" |
| 672 " \"version\": \"0.1\",\n" | 703 " \"version\": \"0.1\",\n" |
| 673 " \"entries\": [\n" | 704 " \"entries\": [\n" |
| 674 " {\n" | 705 " {\n" |
| 675 " \"id\": 1,\n" | 706 " \"id\": 1,\n" |
| 676 " \"perf_gaming\": {\n" | 707 " \"perf_gaming\": {\n" |
| 677 " \"op\": \"<=\",\n" | 708 " \"op\": \"<=\",\n" |
| 678 " \"value\": \"4.0\"\n" | 709 " \"value\": \"4.0\"\n" |
| 679 " },\n" | 710 " },\n" |
| 680 " \"blacklist\": [\n" | 711 " \"blacklist\": [\n" |
| 681 " \"webgl\"\n" | 712 " \"webgl\"\n" |
| 682 " ]\n" | 713 " ]\n" |
| 683 " }\n" | 714 " }\n" |
| 684 " ]\n" | 715 " ]\n" |
| 685 "}"; | 716 "}"; |
| 686 Version os_version("10.6.4"); | 717 Version os_version("10.6.4"); |
| 687 | 718 |
| 688 scoped_ptr<GpuBlacklist> blacklist(Create()); | 719 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 689 EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs)); | 720 EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs)); |
| 690 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 721 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 691 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 722 GpuBlacklist::kOsWin, &os_version, |
| 723 gpu_info()).blacklisted_features; | |
| 692 EXPECT_EQ(type, 0); | 724 EXPECT_EQ(type, 0); |
| 693 } | 725 } |
| 694 | 726 |
| 695 TEST_F(GpuBlacklistTest, PerfOverall) { | 727 TEST_F(GpuBlacklistTest, PerfOverall) { |
| 696 const std::string json = | 728 const std::string json = |
| 697 "{\n" | 729 "{\n" |
| 698 " \"name\": \"gpu blacklist\",\n" | 730 " \"name\": \"gpu blacklist\",\n" |
| 699 " \"version\": \"0.1\",\n" | 731 " \"version\": \"0.1\",\n" |
| 700 " \"entries\": [\n" | 732 " \"entries\": [\n" |
| 701 " {\n" | 733 " {\n" |
| 702 " \"id\": 1,\n" | 734 " \"id\": 1,\n" |
| 703 " \"perf_overall\": {\n" | 735 " \"perf_overall\": {\n" |
| 704 " \"op\": \"between\",\n" | 736 " \"op\": \"between\",\n" |
| 705 " \"value\": \"1.0\",\n" | 737 " \"value\": \"1.0\",\n" |
| 706 " \"value2\": \"9.0\"\n" | 738 " \"value2\": \"9.0\"\n" |
| 707 " },\n" | 739 " },\n" |
| 708 " \"blacklist\": [\n" | 740 " \"blacklist\": [\n" |
| 709 " \"webgl\"\n" | 741 " \"webgl\"\n" |
| 710 " ]\n" | 742 " ]\n" |
| 711 " }\n" | 743 " }\n" |
| 712 " ]\n" | 744 " ]\n" |
| 713 "}"; | 745 "}"; |
| 714 Version os_version("10.6.4"); | 746 Version os_version("10.6.4"); |
| 715 | 747 |
| 716 scoped_ptr<GpuBlacklist> blacklist(Create()); | 748 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 717 EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs)); | 749 EXPECT_TRUE(blacklist->LoadGpuBlacklist(json, GpuBlacklist::kAllOs)); |
| 718 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 750 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 719 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 751 GpuBlacklist::kOsWin, &os_version, |
| 752 gpu_info()).blacklisted_features; | |
| 720 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 753 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 721 } | 754 } |
| 722 | 755 |
| 723 TEST_F(GpuBlacklistTest, DisabledEntry) { | 756 TEST_F(GpuBlacklistTest, DisabledEntry) { |
| 724 const std::string disabled_json = | 757 const std::string disabled_json = |
| 725 "{\n" | 758 "{\n" |
| 726 " \"name\": \"gpu blacklist\",\n" | 759 " \"name\": \"gpu blacklist\",\n" |
| 727 " \"version\": \"0.1\",\n" | 760 " \"version\": \"0.1\",\n" |
| 728 " \"entries\": [\n" | 761 " \"entries\": [\n" |
| 729 " {\n" | 762 " {\n" |
| 730 " \"id\": 1,\n" | 763 " \"id\": 1,\n" |
| 731 " \"disabled\": true,\n" | 764 " \"disabled\": true,\n" |
| 732 " \"blacklist\": [\n" | 765 " \"blacklist\": [\n" |
| 733 " \"webgl\"\n" | 766 " \"webgl\"\n" |
| 734 " ]\n" | 767 " ]\n" |
| 735 " }\n" | 768 " }\n" |
| 736 " ]\n" | 769 " ]\n" |
| 737 "}"; | 770 "}"; |
| 738 Version os_version("10.6.4"); | 771 Version os_version("10.6.4"); |
| 739 | 772 |
| 740 scoped_ptr<GpuBlacklist> blacklist(Create()); | 773 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 741 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 774 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 742 disabled_json, GpuBlacklist::kAllOs)); | 775 disabled_json, GpuBlacklist::kAllOs)); |
| 743 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 776 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 744 GpuBlacklist::kOsWin, &os_version, gpu_info()); | 777 GpuBlacklist::kOsWin, &os_version, |
| 778 gpu_info()).blacklisted_features; | |
| 745 EXPECT_EQ(type, 0); | 779 EXPECT_EQ(type, 0); |
| 746 std::vector<uint32> flag_entries; | 780 std::vector<uint32> flag_entries; |
| 747 bool disabled = false; | 781 bool disabled = false; |
| 748 blacklist->GetGpuFeatureTypeEntries( | 782 blacklist->GetDecisionEntries(flag_entries, disabled); |
| 749 content::GPU_FEATURE_TYPE_ALL, flag_entries, disabled); | |
| 750 EXPECT_EQ(flag_entries.size(), 0u); | 783 EXPECT_EQ(flag_entries.size(), 0u); |
| 751 disabled = true; | 784 disabled = true; |
| 752 blacklist->GetGpuFeatureTypeEntries( | 785 blacklist->GetDecisionEntries(flag_entries, disabled); |
| 753 content::GPU_FEATURE_TYPE_ALL, flag_entries, disabled); | |
| 754 EXPECT_EQ(flag_entries.size(), 1u); | 786 EXPECT_EQ(flag_entries.size(), 1u); |
| 755 } | 787 } |
| 756 | 788 |
| 757 TEST_F(GpuBlacklistTest, Optimus) { | 789 TEST_F(GpuBlacklistTest, Optimus) { |
| 758 const std::string optimus_json = | 790 const std::string optimus_json = |
| 759 "{\n" | 791 "{\n" |
| 760 " \"name\": \"gpu blacklist\",\n" | 792 " \"name\": \"gpu blacklist\",\n" |
| 761 " \"version\": \"0.1\",\n" | 793 " \"version\": \"0.1\",\n" |
| 762 " \"entries\": [\n" | 794 " \"entries\": [\n" |
| 763 " {\n" | 795 " {\n" |
| 764 " \"id\": 1,\n" | 796 " \"id\": 1,\n" |
| 765 " \"os\": {\n" | 797 " \"os\": {\n" |
| 766 " \"type\": \"linux\"\n" | 798 " \"type\": \"linux\"\n" |
| 767 " },\n" | 799 " },\n" |
| 768 " \"multi_gpu_style\": \"optimus\",\n" | 800 " \"multi_gpu_style\": \"optimus\",\n" |
| 769 " \"blacklist\": [\n" | 801 " \"blacklist\": [\n" |
| 770 " \"webgl\"\n" | 802 " \"webgl\"\n" |
| 771 " ]\n" | 803 " ]\n" |
| 772 " }\n" | 804 " }\n" |
| 773 " ]\n" | 805 " ]\n" |
| 774 "}"; | 806 "}"; |
| 775 Version os_version("10.6.4"); | 807 Version os_version("10.6.4"); |
| 776 | 808 |
| 777 content::GPUInfo gpu_info; | 809 content::GPUInfo gpu_info; |
| 778 gpu_info.optimus = true; | 810 gpu_info.optimus = true; |
| 779 | 811 |
| 780 scoped_ptr<GpuBlacklist> blacklist(Create()); | 812 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 781 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 813 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 782 optimus_json, GpuBlacklist::kAllOs)); | 814 optimus_json, GpuBlacklist::kAllOs)); |
| 783 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 815 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 784 GpuBlacklist::kOsLinux, &os_version, gpu_info); | 816 GpuBlacklist::kOsLinux, &os_version, |
| 817 gpu_info).blacklisted_features; | |
| 785 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 818 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 786 } | 819 } |
| 787 | 820 |
| 788 TEST_F(GpuBlacklistTest, AMDSwitchable) { | 821 TEST_F(GpuBlacklistTest, AMDSwitchable) { |
| 789 const std::string amd_switchable_json = | 822 const std::string amd_switchable_json = |
| 790 "{\n" | 823 "{\n" |
| 791 " \"name\": \"gpu blacklist\",\n" | 824 " \"name\": \"gpu blacklist\",\n" |
| 792 " \"version\": \"0.1\",\n" | 825 " \"version\": \"0.1\",\n" |
| 793 " \"entries\": [\n" | 826 " \"entries\": [\n" |
| 794 " {\n" | 827 " {\n" |
| 795 " \"id\": 1,\n" | 828 " \"id\": 1,\n" |
| 796 " \"os\": {\n" | 829 " \"os\": {\n" |
| 797 " \"type\": \"macosx\"\n" | 830 " \"type\": \"macosx\"\n" |
| 798 " },\n" | 831 " },\n" |
| 799 " \"multi_gpu_style\": \"amd_switchable\",\n" | 832 " \"multi_gpu_style\": \"amd_switchable\",\n" |
| 800 " \"blacklist\": [\n" | 833 " \"blacklist\": [\n" |
| 801 " \"webgl\"\n" | 834 " \"webgl\"\n" |
| 802 " ]\n" | 835 " ]\n" |
| 803 " }\n" | 836 " }\n" |
| 804 " ]\n" | 837 " ]\n" |
| 805 "}"; | 838 "}"; |
| 806 Version os_version("10.6.4"); | 839 Version os_version("10.6.4"); |
| 807 | 840 |
| 808 content::GPUInfo gpu_info; | 841 content::GPUInfo gpu_info; |
| 809 gpu_info.amd_switchable = true; | 842 gpu_info.amd_switchable = true; |
| 810 | 843 |
| 811 scoped_ptr<GpuBlacklist> blacklist(Create()); | 844 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 812 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 845 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 813 amd_switchable_json, GpuBlacklist::kAllOs)); | 846 amd_switchable_json, GpuBlacklist::kAllOs)); |
| 814 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 847 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 815 GpuBlacklist::kOsMacosx, &os_version, gpu_info); | 848 GpuBlacklist::kOsMacosx, &os_version, |
| 849 gpu_info).blacklisted_features; | |
| 816 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 850 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 817 } | 851 } |
| 818 | 852 |
| 819 TEST_F(GpuBlacklistTest, LexicalDriverVersion) { | 853 TEST_F(GpuBlacklistTest, LexicalDriverVersion) { |
| 820 const std::string lexical_json = | 854 const std::string lexical_json = |
| 821 "{\n" | 855 "{\n" |
| 822 " \"name\": \"gpu blacklist\",\n" | 856 " \"name\": \"gpu blacklist\",\n" |
| 823 " \"version\": \"0.1\",\n" | 857 " \"version\": \"0.1\",\n" |
| 824 " \"entries\": [\n" | 858 " \"entries\": [\n" |
| 825 " {\n" | 859 " {\n" |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 842 Version os_version("10.6.4"); | 876 Version os_version("10.6.4"); |
| 843 | 877 |
| 844 content::GPUInfo gpu_info; | 878 content::GPUInfo gpu_info; |
| 845 gpu_info.gpu.vendor_id = 0x1002; | 879 gpu_info.gpu.vendor_id = 0x1002; |
| 846 | 880 |
| 847 scoped_ptr<GpuBlacklist> blacklist(Create()); | 881 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 848 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 882 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 849 lexical_json, GpuBlacklist::kAllOs)); | 883 lexical_json, GpuBlacklist::kAllOs)); |
| 850 | 884 |
| 851 gpu_info.driver_version = "8.109"; | 885 gpu_info.driver_version = "8.109"; |
| 852 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 886 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 853 GpuBlacklist::kOsLinux, &os_version, gpu_info); | 887 GpuBlacklist::kOsLinux, &os_version, |
| 888 gpu_info).blacklisted_features; | |
| 854 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 889 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 855 | 890 |
| 856 gpu_info.driver_version = "8.2"; | 891 gpu_info.driver_version = "8.2"; |
| 857 type = blacklist->DetermineGpuFeatureType( | 892 type = blacklist->MakeBlacklistDecision( |
| 858 GpuBlacklist::kOsLinux, &os_version, gpu_info); | 893 GpuBlacklist::kOsLinux, &os_version, |
| 894 gpu_info).blacklisted_features; | |
| 859 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 895 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 860 | 896 |
| 861 gpu_info.driver_version = "8.21"; | 897 gpu_info.driver_version = "8.21"; |
| 862 type = blacklist->DetermineGpuFeatureType( | 898 type = blacklist->MakeBlacklistDecision( |
| 863 GpuBlacklist::kOsLinux, &os_version, gpu_info); | 899 GpuBlacklist::kOsLinux, &os_version, |
| 900 gpu_info).blacklisted_features; | |
| 864 EXPECT_EQ(type, 0); | 901 EXPECT_EQ(type, 0); |
| 865 | 902 |
| 866 gpu_info.driver_version = "8.2010"; | 903 gpu_info.driver_version = "8.2010"; |
| 867 type = blacklist->DetermineGpuFeatureType( | 904 type = blacklist->MakeBlacklistDecision( |
| 868 GpuBlacklist::kOsLinux, &os_version, gpu_info); | 905 GpuBlacklist::kOsLinux, &os_version, |
| 906 gpu_info).blacklisted_features; | |
| 869 EXPECT_EQ(type, 0); | 907 EXPECT_EQ(type, 0); |
| 870 } | 908 } |
| 871 | 909 |
| 872 TEST_F(GpuBlacklistTest, MultipleGPUsAny) { | 910 TEST_F(GpuBlacklistTest, MultipleGPUsAny) { |
| 873 const std::string multi_gpu_json = | 911 const std::string multi_gpu_json = |
| 874 "{\n" | 912 "{\n" |
| 875 " \"name\": \"gpu blacklist\",\n" | 913 " \"name\": \"gpu blacklist\",\n" |
| 876 " \"version\": \"0.1\",\n" | 914 " \"version\": \"0.1\",\n" |
| 877 " \"entries\": [\n" | 915 " \"entries\": [\n" |
| 878 " {\n" | 916 " {\n" |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 891 "}"; | 929 "}"; |
| 892 Version os_version("10.6.4"); | 930 Version os_version("10.6.4"); |
| 893 | 931 |
| 894 content::GPUInfo gpu_info; | 932 content::GPUInfo gpu_info; |
| 895 gpu_info.gpu.vendor_id = 0x10de; | 933 gpu_info.gpu.vendor_id = 0x10de; |
| 896 gpu_info.gpu.device_id = 0x0fd5; | 934 gpu_info.gpu.device_id = 0x0fd5; |
| 897 | 935 |
| 898 scoped_ptr<GpuBlacklist> blacklist(Create()); | 936 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 899 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 937 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 900 multi_gpu_json, GpuBlacklist::kAllOs)); | 938 multi_gpu_json, GpuBlacklist::kAllOs)); |
| 901 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 939 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 902 GpuBlacklist::kOsMacosx, &os_version, gpu_info); | 940 GpuBlacklist::kOsMacosx, &os_version, |
| 941 gpu_info).blacklisted_features; | |
| 903 EXPECT_EQ(type, 0); | 942 EXPECT_EQ(type, 0); |
| 904 | 943 |
| 905 content::GPUInfo::GPUDevice gpu_device; | 944 content::GPUInfo::GPUDevice gpu_device; |
| 906 gpu_device.vendor_id = 0x8086; | 945 gpu_device.vendor_id = 0x8086; |
| 907 gpu_device.device_id = 0x0166; | 946 gpu_device.device_id = 0x0166; |
| 908 gpu_info.secondary_gpus.push_back(gpu_device); | 947 gpu_info.secondary_gpus.push_back(gpu_device); |
| 909 type = blacklist->DetermineGpuFeatureType( | 948 type = blacklist->MakeBlacklistDecision( |
| 910 GpuBlacklist::kOsMacosx, &os_version, gpu_info); | 949 GpuBlacklist::kOsMacosx, &os_version, |
| 950 gpu_info).blacklisted_features; | |
| 911 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 951 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 912 } | 952 } |
| 913 | 953 |
| 914 TEST_F(GpuBlacklistTest, MultipleGPUsSecondary) { | 954 TEST_F(GpuBlacklistTest, MultipleGPUsSecondary) { |
| 915 const std::string multi_gpu_json = | 955 const std::string multi_gpu_json = |
| 916 "{\n" | 956 "{\n" |
| 917 " \"name\": \"gpu blacklist\",\n" | 957 " \"name\": \"gpu blacklist\",\n" |
| 918 " \"version\": \"0.1\",\n" | 958 " \"version\": \"0.1\",\n" |
| 919 " \"entries\": [\n" | 959 " \"entries\": [\n" |
| 920 " {\n" | 960 " {\n" |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 933 "}"; | 973 "}"; |
| 934 Version os_version("10.6.4"); | 974 Version os_version("10.6.4"); |
| 935 | 975 |
| 936 content::GPUInfo gpu_info; | 976 content::GPUInfo gpu_info; |
| 937 gpu_info.gpu.vendor_id = 0x10de; | 977 gpu_info.gpu.vendor_id = 0x10de; |
| 938 gpu_info.gpu.device_id = 0x0fd5; | 978 gpu_info.gpu.device_id = 0x0fd5; |
| 939 | 979 |
| 940 scoped_ptr<GpuBlacklist> blacklist(Create()); | 980 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 941 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 981 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 942 multi_gpu_json, GpuBlacklist::kAllOs)); | 982 multi_gpu_json, GpuBlacklist::kAllOs)); |
| 943 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 983 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 944 GpuBlacklist::kOsMacosx, &os_version, gpu_info); | 984 GpuBlacklist::kOsMacosx, &os_version, |
| 985 gpu_info).blacklisted_features; | |
| 945 EXPECT_EQ(type, 0); | 986 EXPECT_EQ(type, 0); |
| 946 | 987 |
| 947 content::GPUInfo::GPUDevice gpu_device; | 988 content::GPUInfo::GPUDevice gpu_device; |
| 948 gpu_device.vendor_id = 0x8086; | 989 gpu_device.vendor_id = 0x8086; |
| 949 gpu_device.device_id = 0x0166; | 990 gpu_device.device_id = 0x0166; |
| 950 gpu_info.secondary_gpus.push_back(gpu_device); | 991 gpu_info.secondary_gpus.push_back(gpu_device); |
| 951 type = blacklist->DetermineGpuFeatureType( | 992 type = blacklist->MakeBlacklistDecision( |
| 952 GpuBlacklist::kOsMacosx, &os_version, gpu_info); | 993 GpuBlacklist::kOsMacosx, &os_version, |
| 994 gpu_info).blacklisted_features; | |
| 953 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); | 995 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_WEBGL); |
| 954 } | 996 } |
| 955 | 997 |
| 998 TEST_F(GpuBlacklistTest, GpuSwitching) { | |
| 999 const std::string gpu_switching_json = | |
| 1000 "{\n" | |
| 1001 " \"name\": \"gpu blacklist\",\n" | |
| 1002 " \"version\": \"0.1\",\n" | |
| 1003 " \"entries\": [\n" | |
| 1004 " {\n" | |
| 1005 " \"id\": 5,\n" | |
| 1006 " \"os\": {\n" | |
| 1007 " \"type\": \"macosx\"\n" | |
| 1008 " },\n" | |
| 1009 " \"vendor_id\": \"0x10de\",\n" | |
| 1010 " \"device_id\": [\"0x0640\"],\n" | |
| 1011 " \"gpu_switching\": \"force_discrete\"\n" | |
| 1012 " }\n" | |
| 1013 " ]\n" | |
| 1014 "}"; | |
| 1015 Version os_version("10.6.4"); | |
| 1016 | |
| 1017 scoped_ptr<GpuBlacklist> blacklist(Create()); | |
| 1018 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | |
| 1019 gpu_switching_json, GpuBlacklist::kAllOs)); | |
| 1020 GpuSwitchingOption switching = blacklist->MakeBlacklistDecision( | |
| 1021 GpuBlacklist::kOsMacosx, &os_version, | |
| 1022 gpu_info()).gpu_switching; | |
| 1023 EXPECT_EQ(switching, content::GPU_SWITCHING_FORCE_DISCRETE); | |
|
Ken Russell (switch to Gerrit)
2012/09/12 01:59:04
Please also test the force_integrated and automati
Zhenyao Mo
2012/09/12 17:41:34
Done.
| |
| 1024 std::vector<uint32> entries; | |
| 1025 bool disabled = false; | |
| 1026 blacklist->GetDecisionEntries(entries, disabled); | |
| 1027 EXPECT_EQ(entries.size(), 1u); | |
| 1028 EXPECT_EQ(entries[0], 5u); | |
| 1029 } | |
| 1030 | |
| 956 TEST_F(GpuBlacklistTest, VideoDecode) { | 1031 TEST_F(GpuBlacklistTest, VideoDecode) { |
| 957 const std::string video_decode_json = | 1032 const std::string video_decode_json = |
| 958 "{\n" | 1033 "{\n" |
| 959 " \"name\": \"gpu blacklist\",\n" | 1034 " \"name\": \"gpu blacklist\",\n" |
| 960 " \"version\": \"0.1\",\n" | 1035 " \"version\": \"0.1\",\n" |
| 961 " \"entries\": [\n" | 1036 " \"entries\": [\n" |
| 962 " {\n" | 1037 " {\n" |
| 963 " \"id\": 1,\n" | 1038 " \"id\": 1,\n" |
| 964 " \"os\": {\n" | 1039 " \"os\": {\n" |
| 965 " \"type\": \"macosx\"\n" | 1040 " \"type\": \"macosx\"\n" |
| 966 " },\n" | 1041 " },\n" |
| 967 " \"vendor_id\": \"0x10de\",\n" | 1042 " \"vendor_id\": \"0x10de\",\n" |
| 968 " \"device_id\": [\"0x0640\"],\n" | 1043 " \"device_id\": [\"0x0640\"],\n" |
| 969 " \"blacklist\": [\n" | 1044 " \"blacklist\": [\n" |
| 970 " \"accelerated_video_decode\"\n" | 1045 " \"accelerated_video_decode\"\n" |
| 971 " ]\n" | 1046 " ]\n" |
| 972 " }\n" | 1047 " }\n" |
| 973 " ]\n" | 1048 " ]\n" |
| 974 "}"; | 1049 "}"; |
| 975 Version os_version("10.6.4"); | 1050 Version os_version("10.6.4"); |
| 976 | 1051 |
| 977 scoped_ptr<GpuBlacklist> blacklist(Create()); | 1052 scoped_ptr<GpuBlacklist> blacklist(Create()); |
| 978 EXPECT_TRUE(blacklist->LoadGpuBlacklist( | 1053 EXPECT_TRUE(blacklist->LoadGpuBlacklist( |
| 979 video_decode_json, GpuBlacklist::kAllOs)); | 1054 video_decode_json, GpuBlacklist::kAllOs)); |
| 980 GpuFeatureType type = blacklist->DetermineGpuFeatureType( | 1055 GpuFeatureType type = blacklist->MakeBlacklistDecision( |
| 981 GpuBlacklist::kOsMacosx, &os_version, gpu_info()); | 1056 GpuBlacklist::kOsMacosx, &os_version, |
| 1057 gpu_info()).blacklisted_features; | |
| 982 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE); | 1058 EXPECT_EQ(type, content::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE); |
| 983 } | 1059 } |
| 984 | |
| OLD | NEW |