Add modern API for overriding the page's specified viewport configuration
[WebKit-https.git] / Source / WebCore / css / CSSImageValue.h
index a1963f7..59bb71c 100644 (file)
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef CSSImageValue_h
-#define CSSImageValue_h
+#pragma once
 
 #include "CSSValue.h"
-#include <wtf/RefPtr.h>
+#include "CachedResourceHandle.h"
+#include "ResourceLoaderOptions.h"
+#include <wtf/Function.h>
+#include <wtf/Ref.h>
 
 namespace WebCore {
 
+class CachedImage;
 class CachedResourceLoader;
-class Element;
-class StyleCachedImage;
-class StyleImage;
-class RenderObject;
+class DeprecatedCSSOMValue;
+class CSSStyleDeclaration;
+class RenderElement;
 
-class CSSImageValue : public CSSValue {
+class CSSImageValue final : public CSSValue {
 public:
-    static PassRefPtr<CSSImageValue> create(const String& url) { return adoptRef(new CSSImageValue(url)); }
-    static PassRefPtr<CSSImageValue> create(const String& url, StyleImage* image) { return adoptRef(new CSSImageValue(url, image)); }
+    static Ref<CSSImageValue> create(URL&& url, LoadedFromOpaqueSource loadedFromOpaqueSource) { return adoptRef(*new CSSImageValue(WTFMove(url), loadedFromOpaqueSource)); }
+    static Ref<CSSImageValue> create(CachedImage& image) { return adoptRef(*new CSSImageValue(image)); }
     ~CSSImageValue();
 
-    StyleCachedImage* cachedImage(CachedResourceLoader*);
-    // Returns a StyleCachedImage if the image is cached already, otherwise a StylePendingImage.
-    StyleImage* cachedOrPendingImage();
+    bool isPending() const;
+    CachedImage* loadImage(CachedResourceLoader&, const ResourceLoaderOptions&);
+    CachedImage* cachedImage() const { return m_cachedImage.get(); }
 
-    const String& url() { return m_url; }
+    const URL& url() const { return m_url; }
 
-    String customCssText() const;
+    String customCSSText() const;
 
-    PassRefPtr<CSSValue> cloneForCSSOM() const;
+    Ref<DeprecatedCSSOMValue> createDeprecatedCSSOMWrapper(CSSStyleDeclaration&) const;
 
-    bool hasFailedOrCanceledSubresources() const;
+    bool traverseSubresources(const WTF::Function<bool (const CachedResource&)>& handler) const;
 
-    void reportDescendantMemoryUsage(MemoryObjectInfo*) const;
+    bool equals(const CSSImageValue&) const;
 
-    bool hasAlpha(const RenderObject*) const;
+    bool knownToBeOpaque(const RenderElement&) const;
 
     void setInitiator(const AtomicString& name) { m_initiatorName = name; }
 
-protected:
-    CSSImageValue(ClassType, const String& url);
-
-    StyleCachedImage* cachedImage(CachedResourceLoader*, const String& url);
-    String cachedImageURL();
-    void clearCachedImage();
-
 private:
-    explicit CSSImageValue(const String& url);
-    CSSImageValue(const String& url, StyleImage*);
+    CSSImageValue(URL&&, LoadedFromOpaqueSource);
+    explicit CSSImageValue(CachedImage&);
 
-    String m_url;
-    RefPtr<StyleImage> m_image;
+    URL m_url;
+    CachedResourceHandle<CachedImage> m_cachedImage;
     bool m_accessedImage;
     AtomicString m_initiatorName;
+    LoadedFromOpaqueSource m_loadedFromOpaqueSource { LoadedFromOpaqueSource::No };
 };
 
 } // namespace WebCore
 
-#endif // CSSImageValue_h
+SPECIALIZE_TYPE_TRAITS_CSS_VALUE(CSSImageValue, isImageValue())