Index: ash/display/display_manager_unittest.cc |
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc |
index 2d3fc3e185920c9ce9196ec2f3398dbc1d5b649f..ff260761e6cb713d73dd0d58019adf7bc271775f 100644 |
--- a/ash/display/display_manager_unittest.cc |
+++ b/ash/display/display_manager_unittest.cc |
@@ -4,6 +4,7 @@ |
#include "ash/display/display_manager.h" |
+#include "ash/ash_switches.h" |
#include "ash/display/display_controller.h" |
#include "ash/display/display_layout_store.h" |
#include "ash/screen_util.h" |
@@ -11,6 +12,7 @@ |
#include "ash/test/ash_test_base.h" |
#include "ash/test/display_manager_test_api.h" |
#include "ash/test/mirror_window_test_api.h" |
+#include "base/command_line.h" |
#include "base/format_macros.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/stringprintf.h" |
@@ -20,6 +22,7 @@ |
#include "ui/events/test/event_generator.h" |
#include "ui/gfx/display.h" |
#include "ui/gfx/display_observer.h" |
+#include "ui/gfx/font_render_params.h" |
#include "ui/gfx/screen.h" |
#include "ui/gfx/screen_type_delegate.h" |
@@ -1381,4 +1384,96 @@ TEST_F(ScreenShutdownTest, ScreenAfterShutdown) { |
UpdateDisplay("500x300,800x400"); |
} |
+ |
+#if defined(OS_CHROMEOS) |
+namespace { |
+ |
+// A helper class that sets the display configuration and starts ash. |
+// This is to make sure the font configuration happens during ash |
+// initialization process. |
+class FontTestHelper : public test::AshTestBase { |
+ public: |
+ enum DisplayType { |
+ INTERNAL, |
+ EXTERNAL |
+ }; |
+ |
+ FontTestHelper(float scale, DisplayType display_type) { |
+ gfx::ClearFontRenderParamsCacheForTest(); |
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
+ if (display_type == INTERNAL) |
+ command_line->AppendSwitch(switches::kAshUseFirstDisplayAsInternal); |
+ command_line->AppendSwitchASCII(switches::kAshHostWindowBounds, |
+ StringPrintf("1000x800*%f", scale)); |
+ SetUp(); |
+ } |
+ |
+ virtual ~FontTestHelper() { |
+ TearDown(); |
+ } |
+ |
+ // test::AshTestBase: |
+ virtual void TestBody() OVERRIDE { |
+ NOTREACHED(); |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(FontTestHelper); |
+}; |
+ |
+ |
+bool IsTextSubpixelPositioningEnabled() { |
+ gfx::FontRenderParams params = |
+ gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(false), NULL); |
+ return params.subpixel_positioning; |
+} |
+ |
+} // namespace |
+ |
+typedef testing::Test DisplayManagerFontTest; |
+ |
+TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf100Internal) { |
+ FontTestHelper helper(1.0f, FontTestHelper::INTERNAL); |
+ ASSERT_DOUBLE_EQ( |
+ 1.0f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
+ EXPECT_FALSE(IsTextSubpixelPositioningEnabled()); |
+} |
+ |
+TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf125Internal) { |
+ FontTestHelper helper(1.25f, FontTestHelper::INTERNAL); |
+ ASSERT_DOUBLE_EQ( |
+ 1.25f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
+ EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); |
+} |
+ |
+TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf200Internal) { |
+ FontTestHelper helper(2.0f, FontTestHelper::INTERNAL); |
+ ASSERT_DOUBLE_EQ( |
+ 2.0f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
+ EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); |
+} |
+ |
+TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf100External) { |
+ FontTestHelper helper(1.0f, FontTestHelper::EXTERNAL); |
+ ASSERT_DOUBLE_EQ( |
+ 1.0f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
+ EXPECT_FALSE(IsTextSubpixelPositioningEnabled()); |
+} |
+ |
+TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf125External) { |
+ FontTestHelper helper(1.25f, FontTestHelper::EXTERNAL); |
+ ASSERT_DOUBLE_EQ( |
+ 1.25f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
+ EXPECT_FALSE(IsTextSubpixelPositioningEnabled()); |
+} |
+ |
+TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf200External) { |
+ FontTestHelper helper(2.0f, FontTestHelper::EXTERNAL); |
+ ASSERT_DOUBLE_EQ( |
+ 2.0f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
+ EXPECT_FALSE(IsTextSubpixelPositioningEnabled()); |
+} |
+ |
+#endif // OS_CHROMEOS |
+ |
} // namespace ash |