Index: third_party/WebKit/Source/core/css/FontFaceSet.h |
diff --git a/third_party/WebKit/Source/core/css/FontFaceSet.h b/third_party/WebKit/Source/core/css/FontFaceSet.h |
index fda6c9171e0ae44cbd4ed82cdf12b379849013f5..279e9a0162a6726445ced7e5a6acb14705178288 100644 |
--- a/third_party/WebKit/Source/core/css/FontFaceSet.h |
+++ b/third_party/WebKit/Source/core/css/FontFaceSet.h |
@@ -26,6 +26,7 @@ |
#ifndef FontFaceSet_h |
#define FontFaceSet_h |
+#include "bindings/core/v8/Iterable.h" |
#include "bindings/core/v8/ScriptPromise.h" |
#include "core/css/FontFace.h" |
#include "core/css/FontFaceSetForEachCallback.h" |
@@ -57,12 +58,14 @@ class FontFaceCache; |
class FontResource; |
class ExecutionContext; |
+using FontFaceSetIterable = PairIterable<RefPtrWillBeMember<FontFace>, RefPtrWillBeMember<FontFace>>; |
+ |
#if ENABLE(OILPAN) |
-class FontFaceSet final : public EventTargetWithInlineData, public HeapSupplement<Document>, public ActiveDOMObject { |
+class FontFaceSet final : public EventTargetWithInlineData, public HeapSupplement<Document>, public ActiveDOMObject, public FontFaceSetIterable { |
USING_GARBAGE_COLLECTED_MIXIN(FontFaceSet); |
using SupplementType = HeapSupplement<Document>; |
#else |
-class FontFaceSet final : public EventTargetWithInlineData, public RefCountedSupplement<Document, FontFaceSet>, public ActiveDOMObject { |
+class FontFaceSet final : public EventTargetWithInlineData, public RefCountedSupplement<Document, FontFaceSet>, public ActiveDOMObject, public FontFaceSetIterable { |
REFCOUNTED_EVENT_TARGET(FontFaceSet); |
using SupplementType = RefCountedSupplement<Document, FontFaceSet>; |
#endif |
@@ -81,11 +84,9 @@ public: |
void add(FontFace*, ExceptionState&); |
void clear(); |
bool remove(FontFace*, ExceptionState&); |
- void forEach(FontFaceSetForEachCallback*, const ScriptValue& thisArg) const; |
- void forEach(FontFaceSetForEachCallback*) const; |
- bool has(FontFace*, ExceptionState&) const; |
+ bool hasForBinding(ScriptState*, FontFace*, ExceptionState&) const; |
- unsigned long size() const; |
+ size_t size() const; |
AtomicString status() const; |
ExecutionContext* executionContext() const override; |
@@ -116,6 +117,26 @@ private: |
return adoptRefWillBeNoop(new FontFaceSet(document)); |
} |
+ FontFaceSetIterable::IterationSource* startIteration(ScriptState*, ExceptionState&) override; |
+ |
+ class IterationSource final : public FontFaceSetIterable::IterationSource { |
+ public: |
+ explicit IterationSource(const WillBeHeapVector<RefPtrWillBeMember<FontFace>>& fontFaces) |
+ : m_index(0) |
+ , m_fontFaces(fontFaces) { } |
+ bool next(ScriptState*, RefPtrWillBeMember<FontFace>&, RefPtrWillBeMember<FontFace>&, ExceptionState&) override; |
+ |
+ DEFINE_INLINE_VIRTUAL_TRACE() |
+ { |
+ visitor->trace(m_fontFaces); |
+ FontFaceSetIterable::IterationSource::trace(visitor); |
+ } |
+ |
+ private: |
+ size_t m_index; |
+ WillBeHeapVector<RefPtrWillBeMember<FontFace>> m_fontFaces; |
+ }; |
+ |
class FontLoadHistogram { |
DISALLOW_ALLOCATION(); |
public: |
@@ -134,7 +155,6 @@ private: |
FontFaceSet(Document&); |
bool inActiveDocumentContext() const; |
- void forEachInternal(FontFaceSetForEachCallback*, const ScriptValue* thisArg) const; |
void addToLoadingFonts(PassRefPtrWillBeRawPtr<FontFace>); |
void removeFromLoadingFonts(PassRefPtrWillBeRawPtr<FontFace>); |
void fireLoadingEvent(); |