// Copyright 2016 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 "platform/testing/FontTestHelpers.h" #include "platform/fonts/Font.h" #include "platform/fonts/FontCustomPlatformData.h" #include "platform/fonts/FontDescription.h" #include "platform/fonts/FontSelector.h" #include "platform/testing/UnitTestHelpers.h" #include "wtf/OwnPtr.h" #include "wtf/PassRefPtr.h" #include "wtf/RefPtr.h" namespace blink { namespace testing { namespace { class TestFontSelector : public FontSelector { public: static PassRefPtrWillBeRawPtr create(const String& path) { RefPtr fontBuffer = testing::readFromFile(path); String otsParseMessage; return adoptRefWillBeNoop(new TestFontSelector(FontCustomPlatformData::create( fontBuffer.get(), otsParseMessage))); } ~TestFontSelector() override { } PassRefPtr getFontData(const FontDescription& fontDescription, const AtomicString& familyName) override { FontPlatformData platformData = m_customPlatformData->fontPlatformData( fontDescription.effectiveFontSize(), fontDescription.isSyntheticBold(), fontDescription.isSyntheticItalic(), fontDescription.orientation()); return SimpleFontData::create(platformData, CustomFontData::create()); } void willUseFontData(const FontDescription&, const AtomicString& familyName, UChar32) override { } void willUseRange(const FontDescription&, const AtomicString& familyName, const FontDataRange&) override { }; unsigned version() const override { return 0; } void fontCacheInvalidated() override { } private: TestFontSelector(PassOwnPtr customPlatformData) : m_customPlatformData(customPlatformData) { } OwnPtr m_customPlatformData; }; } // namespace Font createTestFont(const AtomicString& familyName, const String& fontPath, float size) { FontFamily family; family.setFamily(familyName); FontDescription fontDescription; fontDescription.setFamily(family); fontDescription.setSpecifiedSize(size); fontDescription.setComputedSize(size); Font font(fontDescription); font.update(TestFontSelector::create(fontPath)); return font; } } // namespace testing } // namespace blink