#include "core/css/CSSValue.h"
#include "core/fetch/ResourceFetcher.h"
+#include "platform/weborigin/Referrer.h"
#include "wtf/RefPtr.h"
-namespace WebCore {
+namespace blink {
-class Element;
+class Document;
class KURL;
class StyleFetchedImage;
class StyleImage;
class CSSImageValue : public CSSValue {
public:
- static PassRefPtrWillBeRawPtr<CSSImageValue> create(const KURL& url)
+ static PassRefPtrWillBeRawPtr<CSSImageValue> create(const KURL& url, StyleImage* image = 0)
{
- return adoptRefCountedWillBeRefCountedGarbageCollected(new CSSImageValue(url));
+ return adoptRefWillBeNoop(new CSSImageValue(url, url, image));
}
- static PassRefPtrWillBeRawPtr<CSSImageValue> create(const KURL& url, StyleImage* image)
+ static PassRefPtrWillBeRawPtr<CSSImageValue> create(const String& rawValue, const KURL& url, StyleImage* image = 0)
{
- return adoptRefCountedWillBeRefCountedGarbageCollected(new CSSImageValue(url, image));
+ return adoptRefWillBeNoop(new CSSImageValue(rawValue, url, image));
}
~CSSImageValue();
// Returns a StyleFetchedImage if the image is cached already, otherwise a StylePendingImage.
StyleImage* cachedOrPendingImage();
- const String& url() { return m_url; }
+ const String& url() { return m_absoluteURL; }
+
+ void setReferrer(const Referrer& referrer) { m_referrer = referrer; }
+ const Referrer& referrer() const { return m_referrer; }
+
+ void reResolveURL(const Document&);
String customCSSText() const;
- PassRefPtr<CSSValue> cloneForCSSOM() const;
+ PassRefPtrWillBeRawPtr<CSSValue> cloneForCSSOM() const;
bool hasFailedOrCanceledSubresources() const;
void setInitiator(const AtomicString& name) { m_initiatorName = name; }
void traceAfterDispatch(Visitor*);
+ void restoreCachedResourceIfNeeded(Document&);
private:
- explicit CSSImageValue(const KURL&);
- CSSImageValue(const KURL&, StyleImage*);
+ CSSImageValue(const String& rawValue, const KURL&, StyleImage*);
- String m_url;
+ String m_relativeURL;
+ String m_absoluteURL;
+ Referrer m_referrer;
RefPtr<StyleImage> m_image;
bool m_accessedImage;
AtomicString m_initiatorName;
DEFINE_CSS_VALUE_TYPE_CASTS(CSSImageValue, isImageValue());
-} // namespace WebCore
+} // namespace blink
#endif // CSSImageValue_h