| Index: ui/gfx/font_render_params_linux_unittest.cc
|
| diff --git a/ui/gfx/font_render_params_linux_unittest.cc b/ui/gfx/font_render_params_linux_unittest.cc
|
| index 6d28119206e450446c3931a9fb1e412f397e21c6..6fe55bc86035da133e55622c933af4d29968004f 100644
|
| --- a/ui/gfx/font_render_params_linux_unittest.cc
|
| +++ b/ui/gfx/font_render_params_linux_unittest.cc
|
| @@ -10,12 +10,42 @@
|
| #include "base/macros.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/gfx/font.h"
|
| +#include "ui/gfx/linux_font_delegate.h"
|
| +#include "ui/gfx/pango_util.h"
|
| #include "ui/gfx/test/fontconfig_util_linux.h"
|
|
|
| namespace gfx {
|
|
|
| namespace {
|
|
|
| +// Implementation of LinuxFontDelegate that returns a canned FontRenderParams
|
| +// struct. This is used to isolate tests from the system's local configuration.
|
| +class TestFontDelegate : public LinuxFontDelegate {
|
| + public:
|
| + TestFontDelegate() {}
|
| + virtual ~TestFontDelegate() {}
|
| +
|
| + void set_params(const FontRenderParams& params) { params_ = params; }
|
| +
|
| + virtual FontRenderParams GetDefaultFontRenderParams() const OVERRIDE {
|
| + return params_;
|
| + }
|
| + virtual scoped_ptr<ScopedPangoFontDescription>
|
| + GetDefaultPangoFontDescription() const OVERRIDE {
|
| + NOTIMPLEMENTED();
|
| + return scoped_ptr<ScopedPangoFontDescription>();
|
| + }
|
| + virtual double GetFontDPI() const OVERRIDE {
|
| + NOTIMPLEMENTED();
|
| + return 96.0;
|
| + }
|
| +
|
| + private:
|
| + FontRenderParams params_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestFontDelegate);
|
| +};
|
| +
|
| // Loads the first system font defined by fontconfig_util_linux.h with a base
|
| // filename of |basename|. Case is ignored.
|
| bool LoadSystemFont(const std::string& basename) {
|
| @@ -35,14 +65,20 @@ class FontRenderParamsTest : public testing::Test {
|
| FontRenderParamsTest() {
|
| SetUpFontconfig();
|
| CHECK(temp_dir_.CreateUniqueTempDir());
|
| + original_font_delegate_ = LinuxFontDelegate::instance();
|
| + LinuxFontDelegate::SetInstance(&test_font_delegate_);
|
| }
|
|
|
| virtual ~FontRenderParamsTest() {
|
| + LinuxFontDelegate::SetInstance(
|
| + const_cast<LinuxFontDelegate*>(original_font_delegate_));
|
| TearDownFontconfig();
|
| }
|
|
|
| protected:
|
| base::ScopedTempDir temp_dir_;
|
| + const LinuxFontDelegate* original_font_delegate_;
|
| + TestFontDelegate test_font_delegate_;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(FontRenderParamsTest);
|
| @@ -210,4 +246,27 @@ TEST_F(FontRenderParamsTest, UseBitmaps) {
|
| EXPECT_TRUE(params.use_bitmaps);
|
| }
|
|
|
| +TEST_F(FontRenderParamsTest, OnlySetConfiguredValues) {
|
| + // Configure the LinuxFontDelegate (which queries GtkSettings on desktop
|
| + // Linux) to request subpixel rendering.
|
| + FontRenderParams system_params;
|
| + system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB;
|
| + test_font_delegate_.set_params(system_params);
|
| +
|
| + // Load a Fontconfig config that enables antialiasing but doesn't say anything
|
| + // about subpixel rendering.
|
| + ASSERT_TRUE(LoadSystemFont("arial.ttf"));
|
| + ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
|
| + std::string(kFontconfigFileHeader) +
|
| + kFontconfigMatchHeader +
|
| + CreateFontconfigEditStanza("antialias", "bool", "true") +
|
| + kFontconfigMatchFooter +
|
| + kFontconfigFileFooter));
|
| +
|
| + // The subpixel rendering setting from the delegate should make it through.
|
| + FontRenderParams params = GetCustomFontRenderParams(
|
| + false, NULL, NULL, NULL, NULL, NULL);
|
| + EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering);
|
| +}
|
| +
|
| } // namespace gfx
|
|
|