Add modern API for overriding the page's specified viewport configuration
[WebKit-https.git] / Source / WebCore / css / CSSImageValue.h
index 347ed39..59bb71c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * (C) 1999-2003 Lars Knoll (knoll@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2008, 2012 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef CSSImageValue_h
-#define CSSImageValue_h
+#pragma once
 
-#include "CSSPrimitiveValue.h"
-#include <wtf/RefPtr.h>
+#include "CSSValue.h"
+#include "CachedResourceHandle.h"
+#include "ResourceLoaderOptions.h"
+#include <wtf/Function.h>
+#include <wtf/Ref.h>
 
 namespace WebCore {
 
+class CachedImage;
 class CachedResourceLoader;
-class StyleCachedImage;
-class StyleImage;
+class DeprecatedCSSOMValue;
+class CSSStyleDeclaration;
+class RenderElement;
 
-class CSSImageValue : public CSSPrimitiveValue {
-    WTF_MAKE_FAST_ALLOCATED;
+class CSSImageValue final : public CSSValue {
 public:
-    static PassRefPtr<CSSImageValue> create() { return adoptRef(new CSSImageValue); }
-    static PassRefPtr<CSSImageValue> create(const String& url) { return adoptRef(new CSSImageValue(url)); }
-    virtual ~CSSImageValue();
+    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();
 
-    virtual 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(); }
 
-protected:
-    CSSImageValue(const String& url);
+    const URL& url() const { return m_url; }
 
-    StyleCachedImage* cachedImage(CachedResourceLoader*, const String& url);
-    String cachedImageURL();
-    void clearCachedImage();
+    String customCSSText() const;
+
+    Ref<DeprecatedCSSOMValue> createDeprecatedCSSOMWrapper(CSSStyleDeclaration&) const;
+
+    bool traverseSubresources(const WTF::Function<bool (const CachedResource&)>& handler) const;
+
+    bool equals(const CSSImageValue&) const;
+
+    bool knownToBeOpaque(const RenderElement&) const;
+
+    void setInitiator(const AtomicString& name) { m_initiatorName = name; }
 
 private:
-    CSSImageValue();
-    virtual bool isImageValue() const { return true; }
+    CSSImageValue(URL&&, LoadedFromOpaqueSource);
+    explicit CSSImageValue(CachedImage&);
 
-    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())