REGRESSION(r244635): [GTK] Wrong background color used in non-dark mode
[WebKit-https.git] / Source / WebCore / css / FontFace.h
index ed30ddb..3d9a0ec 100644 (file)
 
 #include "CSSFontFace.h"
 #include "CSSPropertyNames.h"
-#include "JSDOMPromise.h"
+#include "DOMPromiseProxy.h"
+#include <wtf/Variant.h>
 #include <wtf/WeakPtr.h>
 
+namespace JSC {
+class ArrayBuffer;
+class ArrayBufferView;
+}
+
 namespace WebCore {
 
-class FontFace final : public RefCounted<FontFace>, private CSSFontFace::Client {
+class FontFace final : public RefCounted<FontFace>, public CanMakeWeakPtr<FontFace>, private CSSFontFace::Client {
 public:
     struct Descriptors {
         String style;
@@ -41,18 +47,22 @@ public:
         String unicodeRange;
         String variant;
         String featureSettings;
+        String display;
     };
-    static RefPtr<FontFace> create(JSC::ExecState&, Document&, const String& family, JSC::JSValue source, const Descriptors&, ExceptionCode&);
+    
+    using Source = Variant<String, RefPtr<JSC::ArrayBuffer>, RefPtr<JSC::ArrayBufferView>>;
+    static ExceptionOr<Ref<FontFace>> create(Document&, const String& family, Source&&, const Descriptors&);
     static Ref<FontFace> create(CSSFontFace&);
     virtual ~FontFace();
 
-    void setFamily(const String&, ExceptionCode&);
-    void setStyle(const String&, ExceptionCode&);
-    void setWeight(const String&, ExceptionCode&);
-    void setStretch(const String&, ExceptionCode&);
-    void setUnicodeRange(const String&, ExceptionCode&);
-    void setVariant(const String&, ExceptionCode&);
-    void setFeatureSettings(const String&, ExceptionCode&);
+    ExceptionOr<void> setFamily(const String&);
+    ExceptionOr<void> setStyle(const String&);
+    ExceptionOr<void> setWeight(const String&);
+    ExceptionOr<void> setStretch(const String&);
+    ExceptionOr<void> setUnicodeRange(const String&);
+    ExceptionOr<void> setVariant(const String&);
+    ExceptionOr<void> setFeatureSettings(const String&);
+    ExceptionOr<void> setDisplay(const String&);
 
     String family() const;
     String style() const;
@@ -61,26 +71,23 @@ public:
     String unicodeRange() const;
     String variant() const;
     String featureSettings() const;
+    String display() const;
 
     enum class LoadStatus { Unloaded, Loading, Loaded, Error };
     LoadStatus status() const;
 
-    typedef DOMPromise<FontFace&> Promise;
-    Optional<Promise>& promise() { return m_promise; }
-    void registerLoaded(Promise&&);
+    using LoadedPromise = DOMPromiseProxyWithResolveCallback<IDLInterface<FontFace>>;
+    LoadedPromise& loaded() { return m_loadedPromise; }
+    LoadedPromise& load();
 
     void adopt(CSSFontFace&);
 
-    void load();
-
     CSSFontFace& backing() { return m_backing; }
 
     static RefPtr<CSSValue> parseString(const String&, CSSPropertyID);
 
     void fontStateChanged(CSSFontFace&, CSSFontFace::Status oldState, CSSFontFace::Status newState) final;
 
-    WeakPtr<FontFace> createWeakPtr() const;
-
     void ref() final { RefCounted::ref(); }
     void deref() final { RefCounted::deref(); }
 
@@ -88,9 +95,11 @@ private:
     explicit FontFace(CSSFontSelector&);
     explicit FontFace(CSSFontFace&);
 
-    WeakPtrFactory<FontFace> m_weakPtrFactory;
+    // Callback for LoadedPromise.
+    FontFace& loadedPromiseResolve();
+
     Ref<CSSFontFace> m_backing;
-    Optional<Promise> m_promise;
+    LoadedPromise m_loadedPromise;
 };
 
 }