Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: third_party/WebKit/Source/core/css/FontFaceSet.h

Issue 1409433003: CSS Font Loading: make FontFaceSet Setlike (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: oilpan type fix Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met: 5 * modification, are permitted provided that the following conditions are met:
6 * 6 *
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE 16 * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
23 * DAMAGE. 23 * DAMAGE.
24 */ 24 */
25 25
26 #ifndef FontFaceSet_h 26 #ifndef FontFaceSet_h
27 #define FontFaceSet_h 27 #define FontFaceSet_h
28 28
29 #include "bindings/core/v8/Iterable.h"
29 #include "bindings/core/v8/ScriptPromise.h" 30 #include "bindings/core/v8/ScriptPromise.h"
30 #include "core/css/FontFace.h" 31 #include "core/css/FontFace.h"
31 #include "core/css/FontFaceSetForEachCallback.h" 32 #include "core/css/FontFaceSetForEachCallback.h"
32 #include "core/dom/ActiveDOMObject.h" 33 #include "core/dom/ActiveDOMObject.h"
33 #include "core/events/EventListener.h" 34 #include "core/events/EventListener.h"
34 #include "core/events/EventTarget.h" 35 #include "core/events/EventTarget.h"
35 #include "platform/AsyncMethodRunner.h" 36 #include "platform/AsyncMethodRunner.h"
36 #include "platform/RefCountedSupplement.h" 37 #include "platform/RefCountedSupplement.h"
37 #include "wtf/Allocator.h" 38 #include "wtf/Allocator.h"
38 #include "wtf/PassRefPtr.h" 39 #include "wtf/PassRefPtr.h"
(...skipping 12 matching lines...) Expand all
51 class CSSFontSelector; 52 class CSSFontSelector;
52 class Dictionary; 53 class Dictionary;
53 class Document; 54 class Document;
54 class ExceptionState; 55 class ExceptionState;
55 class Font; 56 class Font;
56 class FontFaceCache; 57 class FontFaceCache;
57 class FontResource; 58 class FontResource;
58 class ExecutionContext; 59 class ExecutionContext;
59 60
60 #if ENABLE(OILPAN) 61 #if ENABLE(OILPAN)
61 class FontFaceSet final : public EventTargetWithInlineData, public HeapSupplemen t<Document>, public ActiveDOMObject { 62 class FontFaceSet final : public EventTargetWithInlineData, public HeapSupplemen t<Document>, public ActiveDOMObject, public ValueIterable<RefPtrWillBeMember<Fon tFace>> {
62 USING_GARBAGE_COLLECTED_MIXIN(FontFaceSet); 63 USING_GARBAGE_COLLECTED_MIXIN(FontFaceSet);
63 using SupplementType = HeapSupplement<Document>; 64 using SupplementType = HeapSupplement<Document>;
64 #else 65 #else
65 class FontFaceSet final : public EventTargetWithInlineData, public RefCountedSup plement<Document, FontFaceSet>, public ActiveDOMObject { 66 class FontFaceSet final : public EventTargetWithInlineData, public RefCountedSup plement<Document, FontFaceSet>, public ActiveDOMObject, public ValueIterable<Ref PtrWillBeMember<FontFace>> {
66 REFCOUNTED_EVENT_TARGET(FontFaceSet); 67 REFCOUNTED_EVENT_TARGET(FontFaceSet);
67 using SupplementType = RefCountedSupplement<Document, FontFaceSet>; 68 using SupplementType = RefCountedSupplement<Document, FontFaceSet>;
68 #endif 69 #endif
69 DEFINE_WRAPPERTYPEINFO(); 70 DEFINE_WRAPPERTYPEINFO();
70 public: 71 public:
71 ~FontFaceSet() override; 72 ~FontFaceSet() override;
72 73
73 DEFINE_ATTRIBUTE_EVENT_LISTENER(loading); 74 DEFINE_ATTRIBUTE_EVENT_LISTENER(loading);
74 DEFINE_ATTRIBUTE_EVENT_LISTENER(loadingdone); 75 DEFINE_ATTRIBUTE_EVENT_LISTENER(loadingdone);
75 DEFINE_ATTRIBUTE_EVENT_LISTENER(loadingerror); 76 DEFINE_ATTRIBUTE_EVENT_LISTENER(loadingerror);
76 77
77 bool check(const String& font, const String& text, ExceptionState&); 78 bool check(const String& font, const String& text, ExceptionState&);
78 ScriptPromise load(ScriptState*, const String& font, const String& text); 79 ScriptPromise load(ScriptState*, const String& font, const String& text);
79 ScriptPromise ready(ScriptState*); 80 ScriptPromise ready(ScriptState*);
80 81
81 void add(FontFace*, ExceptionState&); 82 void add(FontFace*, ExceptionState&);
82 void clear(); 83 void clear();
83 bool remove(FontFace*, ExceptionState&); 84 bool remove(FontFace*, ExceptionState&);
84 void forEach(FontFaceSetForEachCallback*, const ScriptValue& thisArg) const; 85 bool hasForBinding(ScriptState*, const PassRefPtrWillBeRawPtr<FontFace>&, Ex ceptionState&) const;
Takashi Toyoshima 2015/10/16 06:36:34 I noticed the type was wrong here. The last patch
85 void forEach(FontFaceSetForEachCallback*) const;
86 bool has(FontFace*, ExceptionState&) const;
87 86
88 unsigned long size() const; 87 size_t size() const;
89 AtomicString status() const; 88 AtomicString status() const;
90 89
91 ExecutionContext* executionContext() const override; 90 ExecutionContext* executionContext() const override;
92 const AtomicString& interfaceName() const override; 91 const AtomicString& interfaceName() const override;
93 92
94 Document* document() const; 93 Document* document() const;
95 94
96 void didLayout(); 95 void didLayout();
97 void beginFontLoading(FontFace*); 96 void beginFontLoading(FontFace*);
98 void fontLoaded(FontFace*); 97 void fontLoaded(FontFace*);
(...skipping 10 matching lines...) Expand all
109 void addFontFacesToFontFaceCache(FontFaceCache*, CSSFontSelector*); 108 void addFontFacesToFontFaceCache(FontFaceCache*, CSSFontSelector*);
110 109
111 DECLARE_VIRTUAL_TRACE(); 110 DECLARE_VIRTUAL_TRACE();
112 111
113 private: 112 private:
114 static PassRefPtrWillBeRawPtr<FontFaceSet> create(Document& document) 113 static PassRefPtrWillBeRawPtr<FontFaceSet> create(Document& document)
115 { 114 {
116 return adoptRefWillBeNoop(new FontFaceSet(document)); 115 return adoptRefWillBeNoop(new FontFaceSet(document));
117 } 116 }
118 117
118 ValueIterable<RefPtrWillBeMember<FontFace>>::IterationSource* startIteration (ScriptState*, ExceptionState&) override;
119
120 class IterationSource final : public ValueIterable<RefPtrWillBeMember<FontFa ce>>::IterationSource {
121 public:
122 IterationSource(const WillBeHeapVector<RefPtrWillBeMember<FontFace>> fon tFaces)
123 : m_index(0)
124 , m_fontFaces(fontFaces) { }
125 bool next(ScriptState*, RefPtrWillBeMember<FontFace>&, ExceptionState&) override;
126 private:
127 size_t m_index;
128 WillBeHeapVector<RefPtrWillBeMember<FontFace>> m_fontFaces;
129 };
130
119 class FontLoadHistogram { 131 class FontLoadHistogram {
120 DISALLOW_ALLOCATION(); 132 DISALLOW_ALLOCATION();
121 public: 133 public:
122 enum Status { NoWebFonts, HadBlankText, DidNotHaveBlankText, Reported }; 134 enum Status { NoWebFonts, HadBlankText, DidNotHaveBlankText, Reported };
123 FontLoadHistogram() : m_status(NoWebFonts), m_count(0), m_recorded(false ) { } 135 FontLoadHistogram() : m_status(NoWebFonts), m_count(0), m_recorded(false ) { }
124 void incrementCount() { m_count++; } 136 void incrementCount() { m_count++; }
125 void updateStatus(FontFace*); 137 void updateStatus(FontFace*);
126 void record(); 138 void record();
127 139
128 private: 140 private:
(...skipping 28 matching lines...) Expand all
157 WillBeHeapListHashSet<RefPtrWillBeMember<FontFace>> m_nonCSSConnectedFaces; 169 WillBeHeapListHashSet<RefPtrWillBeMember<FontFace>> m_nonCSSConnectedFaces;
158 170
159 AsyncMethodRunner<FontFaceSet> m_asyncRunner; 171 AsyncMethodRunner<FontFaceSet> m_asyncRunner;
160 172
161 FontLoadHistogram m_histogram; 173 FontLoadHistogram m_histogram;
162 }; 174 };
163 175
164 } // namespace blink 176 } // namespace blink
165 177
166 #endif // FontFaceSet_h 178 #endif // FontFaceSet_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/bindings/core/v8/Iterable.h ('k') | third_party/WebKit/Source/core/css/FontFaceSet.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698