1d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// found in the LICENSE file. 4d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 5d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#ifndef FontLoader_h 6d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#define FontLoader_h 7d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 8d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "core/fetch/ResourceLoader.h" 9d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "core/fetch/ResourcePtr.h" 10d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "platform/Timer.h" 11d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "platform/heap/Handle.h" 12d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "wtf/Vector.h" 13d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 14c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 15d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 1676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)class CSSFontSelector; 17d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)class FontResource; 18d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 19d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)class FontLoader : public RefCountedWillBeGarbageCollectedFinalized<FontLoader> { 20d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)public: 2176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) static PassRefPtrWillBeRawPtr<FontLoader> create(CSSFontSelector* fontSelector, ResourceFetcher* fetcher) 22d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { 2376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) return adoptRefWillBeNoop(new FontLoader(fontSelector, fetcher)); 24d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) } 25d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) ~FontLoader(); 26d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 27d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) void addFontToBeginLoading(FontResource*); 28d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) void loadPendingFonts(); 2976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) void fontFaceInvalidated(); 30d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 31d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#if !ENABLE(OILPAN) 3276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) void clearResourceFetcherAndFontSelector(); 33d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#endif 34d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 35d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) void trace(Visitor*); 36d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 37d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)private: 3876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) FontLoader(CSSFontSelector*, ResourceFetcher*); 39d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) void beginLoadTimerFired(Timer<FontLoader>*); 40e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) void clearPendingFonts(); 41d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 42d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) Timer<FontLoader> m_beginLoadingTimer; 43d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 44d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) typedef Vector<std::pair<ResourcePtr<FontResource>, ResourceLoader::RequestCountTracker> > FontsToLoadVector; 45d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) FontsToLoadVector m_fontsToBeginLoading; 4676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) RawPtrWillBeMember<CSSFontSelector> m_fontSelector; 47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch RawPtrWillBeWeakMember<ResourceFetcher> m_resourceFetcher; 48d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}; 49d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 50c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 51d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 52d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#endif // FontLoader_h 53