Home | History | Annotate | Download | only in dom
      1 /*
      2  * Copyright (C) 1999 Lars Knoll (knoll (at) kde.org)
      3  *           (C) 2004-2005 Allan Sandfeld Jensen (kde (at) carewolf.com)
      4  * Copyright (C) 2006, 2007 Nicholas Shanks (webkit (at) nickshanks.com)
      5  * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
      6  * Copyright (C) 2007 Alexey Proskuryakov <ap (at) webkit.org>
      7  * Copyright (C) 2007, 2008 Eric Seidel <eric (at) webkit.org>
      8  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
      9  * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
     10  * Copyright (C) Research In Motion Limited 2011. All rights reserved.
     11  * Copyright (C) 2012 Google Inc. All rights reserved.
     12  *
     13  * This library is free software; you can redistribute it and/or
     14  * modify it under the terms of the GNU Library General Public
     15  * License as published by the Free Software Foundation; either
     16  * version 2 of the License, or (at your option) any later version.
     17  *
     18  * This library is distributed in the hope that it will be useful,
     19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     21  * Library General Public License for more details.
     22  *
     23  * You should have received a copy of the GNU Library General Public License
     24  * along with this library; see the file COPYING.LIB.  If not, write to
     25  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     26  * Boston, MA 02110-1301, USA.
     27  */
     28 
     29 #ifndef VisitedLinkState_h
     30 #define VisitedLinkState_h
     31 
     32 #include "core/dom/Element.h"
     33 #include "core/rendering/style/RenderStyleConstants.h"
     34 #include "platform/LinkHash.h"
     35 #include "wtf/HashSet.h"
     36 
     37 namespace WebCore {
     38 
     39 class Document;
     40 
     41 class VisitedLinkState {
     42     WTF_MAKE_FAST_ALLOCATED;
     43 public:
     44     static PassOwnPtr<VisitedLinkState> create(const Document& document)
     45     {
     46         return adoptPtr(new VisitedLinkState(document));
     47     }
     48 
     49     void invalidateStyleForAllLinks();
     50     void invalidateStyleForLink(LinkHash);
     51 
     52     EInsideLink determineLinkState(const Element& element)
     53     {
     54         if (element.isLink())
     55             return determineLinkStateSlowCase(element);
     56         return NotInsideLink;
     57     }
     58 
     59 private:
     60     explicit VisitedLinkState(const Document&);
     61 
     62     EInsideLink determineLinkStateSlowCase(const Element&);
     63 
     64     const Document& m_document;
     65     HashSet<LinkHash, LinkHashHash> m_linksCheckedForVisitedState;
     66 };
     67 
     68 }
     69 
     70 #endif
     71 
     72