15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2007, 2008, 2011 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef CSSFontFaceSource_h 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CSSFontFaceSource_h 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "platform/heap/Handle.h" 30e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "wtf/HashMap.h" 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 343c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdochclass FontResource; 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class CSSFontFace; 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class FontDescription; 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class SimpleFontData; 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)class CSSFontFaceSource : public NoBaseWillBeGarbageCollectedFinalized<CSSFontFaceSource> { 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ~CSSFontFaceSource(); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual bool isLocal() const { return false; } 44d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual bool isLoading() const { return false; } 45d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual bool isLoaded() const { return true; } 46d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual bool isValid() const { return true; } 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual FontResource* resource() { return 0; } 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFontFace(CSSFontFace* face) { m_face = face; } 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) PassRefPtr<SimpleFontData> getFontData(const FontDescription&); 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual bool isLocalFontAvailable(const FontDescription&) { return false; } 54d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) virtual void beginLoadIfNeeded() { } 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // For UMA reporting 57d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual bool hadBlankText() { return false; } 58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 59d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) virtual void trace(Visitor*); 60d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 61d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)protected: 62d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) CSSFontFaceSource(); 63d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual PassRefPtr<SimpleFontData> createFontData(const FontDescription&) = 0; 649bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) 65d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) typedef HashMap<unsigned, RefPtr<SimpleFontData> > FontDataTable; // The hash key is composed of size synthetic styles. 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) RawPtrWillBeMember<CSSFontFace> m_face; // Our owning font face. 689bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) FontDataTable m_fontDataTable; 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 74