summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/HTMLAnchorElement.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/html/HTMLAnchorElement.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/html/HTMLAnchorElement.h')
-rw-r--r--Source/WebCore/html/HTMLAnchorElement.h120
1 files changed, 41 insertions, 79 deletions
diff --git a/Source/WebCore/html/HTMLAnchorElement.h b/Source/WebCore/html/HTMLAnchorElement.h
index 466916325..a7bc6099e 100644
--- a/Source/WebCore/html/HTMLAnchorElement.h
+++ b/Source/WebCore/html/HTMLAnchorElement.h
@@ -2,7 +2,7 @@
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
* (C) 2000 Simon Hausmann <hausmann@kde.org>
- * Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2007-2016 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
@@ -21,142 +21,104 @@
*
*/
-#ifndef HTMLAnchorElement_h
-#define HTMLAnchorElement_h
+#pragma once
#include "HTMLElement.h"
#include "HTMLNames.h"
#include "LinkHash.h"
+#include "URLUtils.h"
+#include <wtf/OptionSet.h>
namespace WebCore {
+class DOMTokenList;
+
// Link relation bitmask values.
-// FIXME: Uncomment as the various link relations are implemented.
-enum {
-// RelationAlternate = 0x00000001,
-// RelationArchives = 0x00000002,
-// RelationAuthor = 0x00000004,
-// RelationBoomark = 0x00000008,
-// RelationExternal = 0x00000010,
-// RelationFirst = 0x00000020,
-// RelationHelp = 0x00000040,
-// RelationIndex = 0x00000080,
-// RelationLast = 0x00000100,
-// RelationLicense = 0x00000200,
-// RelationNext = 0x00000400,
-// RelationNoFolow = 0x00000800,
- RelationNoReferrer = 0x00001000,
-// RelationPrev = 0x00002000,
-// RelationSearch = 0x00004000,
-// RelationSidebar = 0x00008000,
-// RelationTag = 0x00010000,
-// RelationUp = 0x00020000,
+enum class Relation {
+ NoReferrer = 1 << 0,
+ NoOpener = 1 << 1,
};
-class HTMLAnchorElement : public HTMLElement {
+class HTMLAnchorElement : public HTMLElement, public URLUtils<HTMLAnchorElement> {
public:
- static PassRefPtr<HTMLAnchorElement> create(Document&);
- static PassRefPtr<HTMLAnchorElement> create(const QualifiedName&, Document&);
+ static Ref<HTMLAnchorElement> create(Document&);
+ static Ref<HTMLAnchorElement> create(const QualifiedName&, Document&);
virtual ~HTMLAnchorElement();
- URL href() const;
+ WEBCORE_EXPORT URL href() const;
void setHref(const AtomicString&);
const AtomicString& name() const;
- String hash() const;
- void setHash(const String&);
-
- String host() const;
- void setHost(const String&);
-
- String hostname() const;
- void setHostname(const String&);
-
- String pathname() const;
- void setPathname(const String&);
-
- String port() const;
- void setPort(const String&);
-
- String protocol() const;
- void setProtocol(const String&);
-
- String search() const;
- void setSearch(const String&);
+ WEBCORE_EXPORT String origin() const;
- String origin() const;
-
- String text();
-
- String toString() const;
+ WEBCORE_EXPORT String text();
+ void setText(const String&);
bool isLiveLink() const;
- virtual bool willRespondToMouseClickEvents() override;
+ bool willRespondToMouseClickEvents() final;
- bool hasRel(uint32_t relation) const;
- void setRel(const String&);
+ bool hasRel(Relation) const;
LinkHash visitedLinkHash() const;
void invalidateCachedVisitedLinkHash() { m_cachedVisitedLinkHash = 0; }
+ WEBCORE_EXPORT DOMTokenList& relList();
+
protected:
HTMLAnchorElement(const QualifiedName&, Document&);
- virtual void parseAttribute(const QualifiedName&, const AtomicString&) override;
+ void parseAttribute(const QualifiedName&, const AtomicString&) override;
private:
- virtual bool supportsFocus() const override;
- virtual bool isMouseFocusable() const override;
- virtual bool isKeyboardFocusable(KeyboardEvent*) const override;
- virtual void defaultEventHandler(Event*) override;
- virtual void setActive(bool active = true, bool pause = false) override final;
- virtual void accessKeyAction(bool sendMouseEvents) override;
- virtual bool isURLAttribute(const Attribute&) const override;
- virtual bool canStartSelection() const override;
- virtual String target() const override;
- virtual short tabIndex() const override final;
- virtual bool draggable() const override;
+ bool supportsFocus() const override;
+ bool isMouseFocusable() const override;
+ bool isKeyboardFocusable(KeyboardEvent&) const override;
+ void defaultEventHandler(Event&) final;
+ void setActive(bool active = true, bool pause = false) final;
+ void accessKeyAction(bool sendMouseEvents) final;
+ bool isURLAttribute(const Attribute&) const final;
+ bool canStartSelection() const final;
+ String target() const override;
+ int tabIndex() const final;
+ bool draggable() const final;
void sendPings(const URL& destinationURL);
- void handleClick(Event*);
+ void handleClick(Event&);
enum EventType {
MouseEventWithoutShiftKey,
MouseEventWithShiftKey,
NonMouseEvent,
};
- static EventType eventType(Event*);
+ static EventType eventType(Event&);
bool treatLinkAsLiveForEventType(EventType) const;
Element* rootEditableElementForSelectionOnMouseDown() const;
void setRootEditableElementForSelectionOnMouseDown(Element*);
void clearRootEditableElementForSelectionOnMouseDown();
- bool m_hasRootEditableElementForSelectionOnMouseDown : 1;
- bool m_wasShiftKeyDownOnMouseDown : 1;
- uint32_t m_linkRelations : 30;
+ bool m_hasRootEditableElementForSelectionOnMouseDown;
+ bool m_wasShiftKeyDownOnMouseDown;
+ OptionSet<Relation> m_linkRelations;
mutable LinkHash m_cachedVisitedLinkHash;
+
+ std::unique_ptr<DOMTokenList> m_relList;
};
inline LinkHash HTMLAnchorElement::visitedLinkHash() const
{
if (!m_cachedVisitedLinkHash)
- m_cachedVisitedLinkHash = WebCore::visitedLinkHash(document().baseURL(), fastGetAttribute(HTMLNames::hrefAttr));
+ m_cachedVisitedLinkHash = WebCore::visitedLinkHash(document().baseURL(), attributeWithoutSynchronization(HTMLNames::hrefAttr));
return m_cachedVisitedLinkHash;
}
// Functions shared with the other anchor elements (i.e., SVG).
-bool isEnterKeyKeydownEvent(Event*);
-bool isLinkClick(Event*);
+bool isEnterKeyKeydownEvent(Event&);
bool shouldProhibitLinks(Element*);
-NODE_TYPE_CASTS(HTMLAnchorElement)
-
} // namespace WebCore
-
-#endif // HTMLAnchorElement_h