|  | // Copyright (c) 2011 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 "content/browser/gpu/gpu_util.h" | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  | #include "ui/gl/gl_switches.h" | 
|  |  | 
|  | using content::GpuFeatureType; | 
|  |  | 
|  | TEST(GpuUtilsTest, GpuFeatureTypFromString) { | 
|  | // Test StringToGpuFeatureType. | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("accelerated_2d_canvas"), | 
|  | content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("accelerated_compositing"), | 
|  | content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("webgl"), | 
|  | content::GPU_FEATURE_TYPE_WEBGL); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("multisampling"), | 
|  | content::GPU_FEATURE_TYPE_MULTISAMPLING); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("flash_3d"), | 
|  | content::GPU_FEATURE_TYPE_FLASH3D); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("flash_stage3d"), | 
|  | content::GPU_FEATURE_TYPE_FLASH_STAGE3D); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("texture_sharing"), | 
|  | content::GPU_FEATURE_TYPE_TEXTURE_SHARING); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("accelerated_video_decode"), | 
|  | content::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("all"), | 
|  | content::GPU_FEATURE_TYPE_ALL); | 
|  | EXPECT_EQ(gpu_util::StringToGpuFeatureType("xxx"), | 
|  | content::GPU_FEATURE_TYPE_UNKNOWN); | 
|  | } | 
|  |  | 
|  | TEST(GpuUtilsTest, GpuFeatureTypeToString) { | 
|  | // Test GpuFeatureTypeToString for single-bit enums using the all enum | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING).c_str(), | 
|  | "accelerated_compositing"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS).c_str(), | 
|  | "accelerated_2d_canvas"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_WEBGL).c_str(), | 
|  | "webgl"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_MULTISAMPLING).c_str(), | 
|  | "multisampling"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_FLASH3D).c_str(), | 
|  | "flash_3d"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_FLASH_STAGE3D).c_str(), | 
|  | "flash_stage3d"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_TEXTURE_SHARING).c_str(), | 
|  | "texture_sharing"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE).c_str(), | 
|  | "accelerated_video_decode"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_ALL).c_str(), | 
|  | "all"); | 
|  | EXPECT_STREQ(gpu_util::GpuFeatureTypeToString( | 
|  | content::GPU_FEATURE_TYPE_UNKNOWN).c_str(), | 
|  | "unknown"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | static_cast<content::GpuFeatureType>( | 
|  | content::GPU_FEATURE_TYPE_WEBGL | | 
|  | content::GPU_FEATURE_TYPE_MULTISAMPLING)).c_str(), | 
|  | "webgl,multisampling"); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuFeatureTypeToString( | 
|  | static_cast<content::GpuFeatureType>( | 
|  | content::GPU_FEATURE_TYPE_WEBGL | | 
|  | content::GPU_FEATURE_TYPE_ALL)).c_str(), | 
|  | "all"); | 
|  | } | 
|  |  | 
|  | TEST(GpuUtilsTest, GpuSwitchingOptionFromString) { | 
|  | // Test StringToGpuSwitchingOption. | 
|  | EXPECT_EQ(gpu_util::StringToGpuSwitchingOption( | 
|  | switches::kGpuSwitchingOptionNameAutomatic), | 
|  | content::GPU_SWITCHING_OPTION_AUTOMATIC); | 
|  | EXPECT_EQ(gpu_util::StringToGpuSwitchingOption( | 
|  | switches::kGpuSwitchingOptionNameForceDiscrete), | 
|  | content::GPU_SWITCHING_OPTION_FORCE_DISCRETE); | 
|  | EXPECT_EQ(gpu_util::StringToGpuSwitchingOption( | 
|  | switches::kGpuSwitchingOptionNameForceIntegrated), | 
|  | content::GPU_SWITCHING_OPTION_FORCE_INTEGRATED); | 
|  | EXPECT_EQ(gpu_util::StringToGpuSwitchingOption("xxx"), | 
|  | content::GPU_SWITCHING_OPTION_UNKNOWN); | 
|  | } | 
|  |  | 
|  | TEST(GpuUtilsTest, GpuSwitchingOptionToString) { | 
|  | // Test GpuSwitchingOptionToString. | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuSwitchingOptionToString( | 
|  | content::GPU_SWITCHING_OPTION_AUTOMATIC).c_str(), | 
|  | switches::kGpuSwitchingOptionNameAutomatic); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuSwitchingOptionToString( | 
|  | content::GPU_SWITCHING_OPTION_FORCE_DISCRETE).c_str(), | 
|  | switches::kGpuSwitchingOptionNameForceDiscrete); | 
|  | EXPECT_STREQ( | 
|  | gpu_util::GpuSwitchingOptionToString( | 
|  | content::GPU_SWITCHING_OPTION_FORCE_INTEGRATED).c_str(), | 
|  | switches::kGpuSwitchingOptionNameForceIntegrated); | 
|  | } | 
|  |  |