15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 1999 Antti Koivisto (koivisto@kde.org)
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2003, 2008, 2010 Apple Inc. All rights reserved.
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Google Inc. All rights reserved.
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef HTMLLinkElement_h
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define HTMLLinkElement_h
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/css/CSSStyleSheet.h"
288abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "core/dom/DOMSettableTokenList.h"
2953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/IconURL.h"
3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/fetch/ResourceOwner.h"
3109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/fetch/StyleSheetResource.h"
32e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)#include "core/fetch/StyleSheetResourceClient.h"
3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/HTMLElement.h"
3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/LinkRelAttribute.h"
355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "core/html/LinkResource.h"
3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/loader/LinkLoader.h"
3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/loader/LinkLoaderClient.h"
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
415267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class DocumentFragment;
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLLinkElement;
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class KURL;
445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class LinkImport;
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)template<typename T> class EventSender;
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef EventSender<HTMLLinkElement> LinkEventSender;
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
495267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)//
505267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// LinkStyle handles dynaically change-able link resources, which is
515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// typically @rel="stylesheet".
525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)//
535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// It could be @rel="shortcut icon" or soething else though. Each of
545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// types might better be handled by a separate class, but dynamically
555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// changing @rel makes it harder to move such a design so we are
565267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// sticking current way so far.
575267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)//
5809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class LinkStyle FINAL : public LinkResource, ResourceOwner<StyleSheetResource> {
59323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
6093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)public:
61323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    static PassOwnPtrWillBeRawPtr<LinkStyle> create(HTMLLinkElement* owner);
625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
6393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    explicit LinkStyle(HTMLLinkElement* owner);
645267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual ~LinkStyle();
655267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual Type type() const OVERRIDE { return Style; }
675267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void process() OVERRIDE;
685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void ownerRemoved() OVERRIDE;
693c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch    virtual bool hasLoaded() const OVERRIDE { return m_loadedSheet; }
70323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    virtual void trace(Visitor*) OVERRIDE;
7193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
7293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    void startLoadingDynamicSheet();
7393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    void notifyLoadedSheetAndAllCriticalSubresources(bool errorOccurred);
7493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool sheetLoaded();
7593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
7693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    void setDisabledState(bool);
7793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    void setSheetTitle(const String&);
7893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
7993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool styleSheetIsLoading() const;
8093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool hasSheet() const { return m_sheet; }
8193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool isDisabled() const { return m_disabledState == Disabled; }
8293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool isEnabledViaScript() const { return m_disabledState == EnabledViaScript; }
8393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool isUnset() const { return m_disabledState == Unset; }
8493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
8593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    CSSStyleSheet* sheet() const { return m_sheet.get(); }
8693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
8793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)private:
8809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    // From StyleSheetResourceClient
8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setCSSStyleSheet(const String& href, const KURL& baseURL, const String& charset, const CSSStyleSheetResource*) OVERRIDE;
9093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
9193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    enum DisabledState {
9293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)        Unset,
9393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)        EnabledViaScript,
9493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)        Disabled
9593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    };
9693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
9793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    enum PendingSheetType {
9893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)        None,
9993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)        NonBlocking,
10093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)        Blocking
10193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    };
10293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
10393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    void clearSheet();
10493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    void addPendingSheet(PendingSheetType);
105d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    void removePendingSheet();
1068abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    Document& document();
10793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
108323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    RefPtrWillBeMember<CSSStyleSheet> m_sheet;
10993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    DisabledState m_disabledState;
11093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    PendingSheetType m_pendingSheetType;
11193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool m_loading;
11293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool m_firedLoad;
11393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    bool m_loadedSheet;
11493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)};
11593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
11693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
11793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)class HTMLLinkElement FINAL : public HTMLElement, public LinkLoaderClient {
1187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DEFINE_WRAPPERTYPEINFO();
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
120323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    static PassRefPtrWillBeRawPtr<HTMLLinkElement> create(Document&, bool createdByParser);
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual ~HTMLLinkElement();
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    KURL href() const;
124a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    const AtomicString& rel() const;
12593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    String media() const { return m_media; }
12693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    String typeValue() const { return m_type; }
12793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    const LinkRelAttribute& relAttribute() const { return m_relAttribute; }
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
129a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    const AtomicString& type() const;
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    IconType iconType() const;
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13343e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    // the icon sizes as parsed from the HTML attribute
13443e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    const Vector<IntSize>& iconSizes() const;
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
136d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    bool async() const;
137d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
1385267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    CSSStyleSheet* sheet() const { return linkStyle() ? linkStyle()->sheet() : 0; }
139521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)    Document* import() const;
1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool styleSheetIsLoading() const;
1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    bool isImport() const { return linkImport(); }
1445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isDisabled() const { return linkStyle() && linkStyle()->isDisabled(); }
1455267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isEnabledViaScript() const { return linkStyle() && linkStyle()->isEnabledViaScript(); }
146d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    void enableIfExitTransitionStyle();
147d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DOMSettableTokenList* sizes() const;
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void dispatchPendingEvent(LinkEventSender*);
1513c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch    void scheduleEvent();
15209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    void dispatchEventImmediately();
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static void dispatchPendingLoadEvents();
1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    // From LinkLoaderClient
15693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    virtual bool shouldLoadLink() OVERRIDE;
15793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
15893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    // For LinkStyle
15909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    bool loadLink(const String& type, const KURL&);
1605267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isAlternate() const { return linkStyle()->isUnset() && m_relAttribute.isAlternate(); }
1615267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool shouldProcessStyle() { return linkResourceToProcess() && linkStyle(); }
16209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    bool isCreatedByParser() const { return m_createdByParser; }
16393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
16443e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    // Parse the icon size attribute into |iconSizes|, make this method public
16543e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    // visible for testing purpose.
16643e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    static void parseSizesAttribute(const AtomicString& value, Vector<IntSize>& iconSizes);
16743e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)
168323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    virtual void trace(Visitor*) OVERRIDE;
169323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
171197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void attributeWillChange(const QualifiedName&, const AtomicString& oldValue, const AtomicString& newValue) OVERRIDE;
172926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1745267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    LinkStyle* linkStyle() const;
1755267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    LinkImport* linkImport() const;
1765267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    LinkResource* linkResourceToProcess();
17793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void process();
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static void processCallback(Node*);
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    // From Node and subclassses
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE;
1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void removedFrom(ContainerNode*) OVERRIDE;
18493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    virtual bool isURLAttribute(const Attribute&) const OVERRIDE;
18543e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    virtual bool hasLegalLinkAttribute(const QualifiedName&) const OVERRIDE;
18643e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    virtual const QualifiedName& subResourceAttributeName() const OVERRIDE;
18793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    virtual bool sheetLoaded() OVERRIDE;
18893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    virtual void notifyLoadedSheetAndAllCriticalSubresources(bool errorOccurred) OVERRIDE;
18993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    virtual void startLoadingDynamicSheet() OVERRIDE;
19009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void finishParsingChildren() OVERRIDE;
1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    // From LinkLoaderClient
193926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void linkLoaded() OVERRIDE;
194926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void linkLoadingErrored() OVERRIDE;
195926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void didStartLinkPrerender() OVERRIDE;
196926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void didStopLinkPrerender() OVERRIDE;
197926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void didSendLoadForLinkPrerender() OVERRIDE;
198926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void didSendDOMContentLoadedForLinkPrerender() OVERRIDE;
1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
20151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    HTMLLinkElement(Document&, bool createdByParser);
2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
203323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    OwnPtrWillBeMember<LinkResource> m_link;
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LinkLoader m_linkLoader;
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String m_type;
2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String m_media;
208323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    RefPtrWillBeMember<DOMSettableTokenList> m_sizes;
20943e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    Vector<IntSize> m_iconSizes;
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LinkRelAttribute m_relAttribute;
21193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_createdByParser;
2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_isInShadowTree;
2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink
2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // HTMLLinkElement_h
219