| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * Copyright (C) 2003, 2008, 2010 Apple Inc. All rights reserved. | 4 * Copyright (C) 2003, 2008, 2010 Apple Inc. All rights reserved. |
| 5 * Copyright (C) 2011 Google Inc. All rights reserved. | 5 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 // types might better be handled by a separate class, but dynamically | 54 // types might better be handled by a separate class, but dynamically |
| 55 // changing @rel makes it harder to move such a design so we are | 55 // changing @rel makes it harder to move such a design so we are |
| 56 // sticking current way so far. | 56 // sticking current way so far. |
| 57 // | 57 // |
| 58 class LinkStyle final : public LinkResource, ResourceOwner<StyleSheetResource> { | 58 class LinkStyle final : public LinkResource, ResourceOwner<StyleSheetResource> { |
| 59 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(LinkStyle); | 59 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(LinkStyle); |
| 60 public: | 60 public: |
| 61 static PassOwnPtrWillBeRawPtr<LinkStyle> create(HTMLLinkElement* owner); | 61 static PassOwnPtrWillBeRawPtr<LinkStyle> create(HTMLLinkElement* owner); |
| 62 | 62 |
| 63 explicit LinkStyle(HTMLLinkElement* owner); | 63 explicit LinkStyle(HTMLLinkElement* owner); |
| 64 virtual ~LinkStyle(); | 64 ~LinkStyle() override; |
| 65 | 65 |
| 66 virtual Type type() const override { return Style; } | 66 Type type() const override { return Style; } |
| 67 virtual void process() override; | 67 void process() override; |
| 68 virtual void ownerRemoved() override; | 68 void ownerRemoved() override; |
| 69 virtual bool hasLoaded() const override { return m_loadedSheet; } | 69 bool hasLoaded() const override { return m_loadedSheet; } |
| 70 DECLARE_VIRTUAL_TRACE(); | 70 DECLARE_VIRTUAL_TRACE(); |
| 71 | 71 |
| 72 void startLoadingDynamicSheet(); | 72 void startLoadingDynamicSheet(); |
| 73 void notifyLoadedSheetAndAllCriticalSubresources(Node::LoadedSheetErrorStatu
s); | 73 void notifyLoadedSheetAndAllCriticalSubresources(Node::LoadedSheetErrorStatu
s); |
| 74 bool sheetLoaded(); | 74 bool sheetLoaded(); |
| 75 | 75 |
| 76 void setDisabledState(bool); | 76 void setDisabledState(bool); |
| 77 void setSheetTitle(const String&); | 77 void setSheetTitle(const String&); |
| 78 | 78 |
| 79 bool styleSheetIsLoading() const; | 79 bool styleSheetIsLoading() const; |
| 80 bool hasSheet() const { return m_sheet; } | 80 bool hasSheet() const { return m_sheet; } |
| 81 bool isDisabled() const { return m_disabledState == Disabled; } | 81 bool isDisabled() const { return m_disabledState == Disabled; } |
| 82 bool isEnabledViaScript() const { return m_disabledState == EnabledViaScript
; } | 82 bool isEnabledViaScript() const { return m_disabledState == EnabledViaScript
; } |
| 83 bool isUnset() const { return m_disabledState == Unset; } | 83 bool isUnset() const { return m_disabledState == Unset; } |
| 84 | 84 |
| 85 CSSStyleSheet* sheet() const { return m_sheet.get(); } | 85 CSSStyleSheet* sheet() const { return m_sheet.get(); } |
| 86 | 86 |
| 87 private: | 87 private: |
| 88 // From StyleSheetResourceClient | 88 // From StyleSheetResourceClient |
| 89 virtual void setCSSStyleSheet(const String& href, const KURL& baseURL, const
String& charset, const CSSStyleSheetResource*) override; | 89 void setCSSStyleSheet(const String& href, const KURL& baseURL, const String&
charset, const CSSStyleSheetResource*) override; |
| 90 | 90 |
| 91 enum DisabledState { | 91 enum DisabledState { |
| 92 Unset, | 92 Unset, |
| 93 EnabledViaScript, | 93 EnabledViaScript, |
| 94 Disabled | 94 Disabled |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 enum PendingSheetType { | 97 enum PendingSheetType { |
| 98 None, | 98 None, |
| 99 NonBlocking, | 99 NonBlocking, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 119 bool m_firedLoad; | 119 bool m_firedLoad; |
| 120 bool m_loadedSheet; | 120 bool m_loadedSheet; |
| 121 bool m_fetchFollowingCORS; | 121 bool m_fetchFollowingCORS; |
| 122 }; | 122 }; |
| 123 | 123 |
| 124 | 124 |
| 125 class CORE_EXPORT HTMLLinkElement final : public HTMLElement, public LinkLoaderC
lient { | 125 class CORE_EXPORT HTMLLinkElement final : public HTMLElement, public LinkLoaderC
lient { |
| 126 DEFINE_WRAPPERTYPEINFO(); | 126 DEFINE_WRAPPERTYPEINFO(); |
| 127 public: | 127 public: |
| 128 static PassRefPtrWillBeRawPtr<HTMLLinkElement> create(Document&, bool create
dByParser); | 128 static PassRefPtrWillBeRawPtr<HTMLLinkElement> create(Document&, bool create
dByParser); |
| 129 virtual ~HTMLLinkElement(); | 129 ~HTMLLinkElement() override; |
| 130 | 130 |
| 131 KURL href() const; | 131 KURL href() const; |
| 132 const AtomicString& rel() const; | 132 const AtomicString& rel() const; |
| 133 String media() const { return m_media; } | 133 String media() const { return m_media; } |
| 134 String typeValue() const { return m_type; } | 134 String typeValue() const { return m_type; } |
| 135 String asValue() const { return m_as; } | 135 String asValue() const { return m_as; } |
| 136 const LinkRelAttribute& relAttribute() const { return m_relAttribute; } | 136 const LinkRelAttribute& relAttribute() const { return m_relAttribute; } |
| 137 | 137 |
| 138 const AtomicString& type() const; | 138 const AtomicString& type() const; |
| 139 | 139 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 154 bool isEnabledViaScript() const { return linkStyle() && linkStyle()->isEnabl
edViaScript(); } | 154 bool isEnabledViaScript() const { return linkStyle() && linkStyle()->isEnabl
edViaScript(); } |
| 155 | 155 |
| 156 DOMSettableTokenList* sizes() const; | 156 DOMSettableTokenList* sizes() const; |
| 157 | 157 |
| 158 void dispatchPendingEvent(LinkEventSender*); | 158 void dispatchPendingEvent(LinkEventSender*); |
| 159 void scheduleEvent(); | 159 void scheduleEvent(); |
| 160 void dispatchEventImmediately(); | 160 void dispatchEventImmediately(); |
| 161 static void dispatchPendingLoadEvents(); | 161 static void dispatchPendingLoadEvents(); |
| 162 | 162 |
| 163 // From LinkLoaderClient | 163 // From LinkLoaderClient |
| 164 virtual bool shouldLoadLink() override; | 164 bool shouldLoadLink() override; |
| 165 | 165 |
| 166 // For LinkStyle | 166 // For LinkStyle |
| 167 bool loadLink(const String& type, const String& as, const KURL&); | 167 bool loadLink(const String& type, const String& as, const KURL&); |
| 168 bool isAlternate() const { return linkStyle()->isUnset() && m_relAttribute.i
sAlternate(); } | 168 bool isAlternate() const { return linkStyle()->isUnset() && m_relAttribute.i
sAlternate(); } |
| 169 bool shouldProcessStyle() { return linkResourceToProcess() && linkStyle(); } | 169 bool shouldProcessStyle() { return linkResourceToProcess() && linkStyle(); } |
| 170 bool isCreatedByParser() const { return m_createdByParser; } | 170 bool isCreatedByParser() const { return m_createdByParser; } |
| 171 | 171 |
| 172 // Parse the icon size attribute into |iconSizes|, make this method public | 172 // Parse the icon size attribute into |iconSizes|, make this method public |
| 173 // visible for testing purpose. | 173 // visible for testing purpose. |
| 174 static void parseSizesAttribute(const AtomicString& value, Vector<IntSize>&
iconSizes); | 174 static void parseSizesAttribute(const AtomicString& value, Vector<IntSize>&
iconSizes); |
| 175 | 175 |
| 176 DECLARE_VIRTUAL_TRACE(); | 176 DECLARE_VIRTUAL_TRACE(); |
| 177 | 177 |
| 178 private: | 178 private: |
| 179 virtual void attributeWillChange(const QualifiedName&, const AtomicString& o
ldValue, const AtomicString& newValue) override; | 179 void attributeWillChange(const QualifiedName&, const AtomicString& oldValue,
const AtomicString& newValue) override; |
| 180 virtual void parseAttribute(const QualifiedName&, const AtomicString&) overr
ide; | 180 void parseAttribute(const QualifiedName&, const AtomicString&) override; |
| 181 | 181 |
| 182 LinkStyle* linkStyle() const; | 182 LinkStyle* linkStyle() const; |
| 183 LinkImport* linkImport() const; | 183 LinkImport* linkImport() const; |
| 184 LinkResource* linkResourceToProcess(); | 184 LinkResource* linkResourceToProcess(); |
| 185 | 185 |
| 186 void process(); | 186 void process(); |
| 187 static void processCallback(Node*); | 187 static void processCallback(Node*); |
| 188 | 188 |
| 189 // From Node and subclassses | 189 // From Node and subclassses |
| 190 virtual InsertionNotificationRequest insertedInto(ContainerNode*) override; | 190 InsertionNotificationRequest insertedInto(ContainerNode*) override; |
| 191 virtual void removedFrom(ContainerNode*) override; | 191 void removedFrom(ContainerNode*) override; |
| 192 virtual bool isURLAttribute(const Attribute&) const override; | 192 bool isURLAttribute(const Attribute&) const override; |
| 193 virtual bool hasLegalLinkAttribute(const QualifiedName&) const override; | 193 bool hasLegalLinkAttribute(const QualifiedName&) const override; |
| 194 virtual const QualifiedName& subResourceAttributeName() const override; | 194 const QualifiedName& subResourceAttributeName() const override; |
| 195 virtual bool sheetLoaded() override; | 195 bool sheetLoaded() override; |
| 196 virtual void notifyLoadedSheetAndAllCriticalSubresources(LoadedSheetErrorSta
tus) override; | 196 void notifyLoadedSheetAndAllCriticalSubresources(LoadedSheetErrorStatus) ove
rride; |
| 197 virtual void startLoadingDynamicSheet() override; | 197 void startLoadingDynamicSheet() override; |
| 198 virtual void finishParsingChildren() override; | 198 void finishParsingChildren() override; |
| 199 | 199 |
| 200 // From LinkLoaderClient | 200 // From LinkLoaderClient |
| 201 virtual void linkLoaded() override; | 201 void linkLoaded() override; |
| 202 virtual void linkLoadingErrored() override; | 202 void linkLoadingErrored() override; |
| 203 virtual void didStartLinkPrerender() override; | 203 void didStartLinkPrerender() override; |
| 204 virtual void didStopLinkPrerender() override; | 204 void didStopLinkPrerender() override; |
| 205 virtual void didSendLoadForLinkPrerender() override; | 205 void didSendLoadForLinkPrerender() override; |
| 206 virtual void didSendDOMContentLoadedForLinkPrerender() override; | 206 void didSendDOMContentLoadedForLinkPrerender() override; |
| 207 | 207 |
| 208 private: | 208 private: |
| 209 HTMLLinkElement(Document&, bool createdByParser); | 209 HTMLLinkElement(Document&, bool createdByParser); |
| 210 | 210 |
| 211 OwnPtrWillBeMember<LinkResource> m_link; | 211 OwnPtrWillBeMember<LinkResource> m_link; |
| 212 LinkLoader m_linkLoader; | 212 LinkLoader m_linkLoader; |
| 213 | 213 |
| 214 String m_type; | 214 String m_type; |
| 215 String m_as; | 215 String m_as; |
| 216 String m_media; | 216 String m_media; |
| 217 RefPtrWillBeMember<DOMSettableTokenList> m_sizes; | 217 RefPtrWillBeMember<DOMSettableTokenList> m_sizes; |
| 218 Vector<IntSize> m_iconSizes; | 218 Vector<IntSize> m_iconSizes; |
| 219 LinkRelAttribute m_relAttribute; | 219 LinkRelAttribute m_relAttribute; |
| 220 | 220 |
| 221 bool m_createdByParser; | 221 bool m_createdByParser; |
| 222 bool m_isInShadowTree; | 222 bool m_isInShadowTree; |
| 223 }; | 223 }; |
| 224 | 224 |
| 225 } // namespace blink | 225 } // namespace blink |
| 226 | 226 |
| 227 #endif // HTMLLinkElement_h | 227 #endif // HTMLLinkElement_h |
| OLD | NEW |