| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * Copyright (C) 2014, Google Inc. All rights reserved. |    2  * Copyright (C) 2014, Google Inc. All rights reserved. | 
|    3  * |    3  * | 
|    4  * Redistribution and use in source and binary forms, with or without |    4  * Redistribution and use in source and binary forms, with or without | 
|    5  * modification, are permitted provided that the following conditions |    5  * modification, are permitted provided that the following conditions | 
|    6  * are met: |    6  * are met: | 
|    7  * |    7  * | 
|    8  * 1.  Redistributions of source code must retain the above copyright |    8  * 1.  Redistributions of source code must retain the above copyright | 
|    9  *     notice, this list of conditions and the following disclaimer. |    9  *     notice, this list of conditions and the following disclaimer. | 
|   10  * 2.  Redistributions in binary form must reproduce the above copyright |   10  * 2.  Redistributions in binary form must reproduce the above copyright | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   45 class FrameView; |   45 class FrameView; | 
|   46 class Widget; |   46 class Widget; | 
|   47  |   47  | 
|   48 struct TextMarkerData { |   48 struct TextMarkerData { | 
|   49     AXID axID; |   49     AXID axID; | 
|   50     Node* node; |   50     Node* node; | 
|   51     int offset; |   51     int offset; | 
|   52     EAffinity affinity; |   52     EAffinity affinity; | 
|   53 }; |   53 }; | 
|   54  |   54  | 
|   55 class AXComputedObjectAttributeCache { |  | 
|   56 public: |  | 
|   57     static PassOwnPtr<AXComputedObjectAttributeCache> create() { return adoptPtr
     (new AXComputedObjectAttributeCache()); } |  | 
|   58  |  | 
|   59     AXObjectInclusion getIgnored(AXID) const; |  | 
|   60     void setIgnored(AXID, AXObjectInclusion); |  | 
|   61  |  | 
|   62     void clear(); |  | 
|   63  |  | 
|   64 private: |  | 
|   65     AXComputedObjectAttributeCache() { } |  | 
|   66  |  | 
|   67     struct CachedAXObjectAttributes { |  | 
|   68         CachedAXObjectAttributes() : ignored(DefaultBehavior) { } |  | 
|   69  |  | 
|   70         AXObjectInclusion ignored; |  | 
|   71     }; |  | 
|   72  |  | 
|   73     HashMap<AXID, CachedAXObjectAttributes> m_idMapping; |  | 
|   74 }; |  | 
|   75  |  | 
|   76 enum PostType { PostSynchronously, PostAsynchronously }; |   55 enum PostType { PostSynchronously, PostAsynchronously }; | 
|   77  |   56  | 
|   78 // This class should only be used from inside the accessibility directory. |   57 // This class should only be used from inside the accessibility directory. | 
|   79 class AXObjectCacheImpl : public AXObjectCache { |   58 class AXObjectCacheImpl : public AXObjectCache { | 
|   80     WTF_MAKE_NONCOPYABLE(AXObjectCacheImpl); WTF_MAKE_FAST_ALLOCATED; |   59     WTF_MAKE_NONCOPYABLE(AXObjectCacheImpl); WTF_MAKE_FAST_ALLOCATED; | 
|   81 public: |   60 public: | 
|   82     explicit AXObjectCacheImpl(Document&); |   61     explicit AXObjectCacheImpl(Document&); | 
|   83     ~AXObjectCacheImpl(); |   62     ~AXObjectCacheImpl(); | 
|   84  |   63  | 
|   85     static AXObject* focusedUIElementForPage(const Page*); |   64     static AXObject* focusedUIElementForPage(const Page*); | 
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  167     bool accessibilityEnabled(); |  146     bool accessibilityEnabled(); | 
|  168     bool inlineTextBoxAccessibilityEnabled(); |  147     bool inlineTextBoxAccessibilityEnabled(); | 
|  169  |  148  | 
|  170     void removeAXID(AXObject*); |  149     void removeAXID(AXObject*); | 
|  171     bool isIDinUse(AXID id) const { return m_idsInUse.contains(id); } |  150     bool isIDinUse(AXID id) const { return m_idsInUse.contains(id); } | 
|  172  |  151  | 
|  173     AXID platformGenerateAXID() const; |  152     AXID platformGenerateAXID() const; | 
|  174  |  153  | 
|  175     bool nodeHasRole(Node*, const AtomicString& role); |  154     bool nodeHasRole(Node*, const AtomicString& role); | 
|  176  |  155  | 
|  177     AXComputedObjectAttributeCache* computedObjectAttributeCache() { return m_co
     mputedObjectAttributeCache.get(); } |  156     // Counts the number of times the document has been modified. Some attribute
      values are cached | 
 |  157     // as long as the modification count hasn't changed. | 
 |  158     int modificationCount() const { return m_modificationCount; } | 
|  178  |  159  | 
|  179     void postNotification(RenderObject*, AXNotification, bool postToElement, Pos
     tType = PostAsynchronously); |  160     void postNotification(RenderObject*, AXNotification, bool postToElement, Pos
     tType = PostAsynchronously); | 
|  180     void postNotification(Node*, AXNotification, bool postToElement, PostType = 
     PostAsynchronously); |  161     void postNotification(Node*, AXNotification, bool postToElement, PostType = 
     PostAsynchronously); | 
|  181     void postNotification(AXObject*, Document*, AXNotification, bool postToEleme
     nt, PostType = PostAsynchronously); |  162     void postNotification(AXObject*, Document*, AXNotification, bool postToEleme
     nt, PostType = PostAsynchronously); | 
|  182  |  163  | 
|  183 protected: |  164 protected: | 
|  184     void postPlatformNotification(AXObject*, AXNotification); |  165     void postPlatformNotification(AXObject*, AXNotification); | 
|  185     void textChanged(AXObject*); |  166     void textChanged(AXObject*); | 
|  186     void labelChanged(Element*); |  167     void labelChanged(Element*); | 
|  187  |  168  | 
|  188     // This is a weak reference cache for knowing if Nodes used by TextMarkers a
     re valid. |  169     // This is a weak reference cache for knowing if Nodes used by TextMarkers a
     re valid. | 
|  189     void setNodeInUse(Node* n) { m_textMarkerNodes.add(n); } |  170     void setNodeInUse(Node* n) { m_textMarkerNodes.add(n); } | 
|  190     void removeNodeForUse(Node* n) { m_textMarkerNodes.remove(n); } |  171     void removeNodeForUse(Node* n) { m_textMarkerNodes.remove(n); } | 
|  191     bool isNodeInUse(Node* n) { return m_textMarkerNodes.contains(n); } |  172     bool isNodeInUse(Node* n) { return m_textMarkerNodes.contains(n); } | 
|  192  |  173  | 
|  193 private: |  174 private: | 
|  194     Document& m_document; |  175     Document& m_document; | 
|  195     HashMap<AXID, RefPtr<AXObject> > m_objects; |  176     HashMap<AXID, RefPtr<AXObject> > m_objects; | 
|  196     HashMap<RenderObject*, AXID> m_renderObjectMapping; |  177     HashMap<RenderObject*, AXID> m_renderObjectMapping; | 
|  197     HashMap<Widget*, AXID> m_widgetObjectMapping; |  178     HashMap<Widget*, AXID> m_widgetObjectMapping; | 
|  198     HashMap<Node*, AXID> m_nodeObjectMapping; |  179     HashMap<Node*, AXID> m_nodeObjectMapping; | 
|  199     HashMap<AbstractInlineTextBox*, AXID> m_inlineTextBoxObjectMapping; |  180     HashMap<AbstractInlineTextBox*, AXID> m_inlineTextBoxObjectMapping; | 
|  200     HashSet<Node*> m_textMarkerNodes; |  181     HashSet<Node*> m_textMarkerNodes; | 
|  201     OwnPtr<AXComputedObjectAttributeCache> m_computedObjectAttributeCache; |  182     int m_modificationCount; | 
|  202  |  183  | 
|  203     HashSet<AXID> m_idsInUse; |  184     HashSet<AXID> m_idsInUse; | 
|  204  |  185  | 
|  205     Timer<AXObjectCacheImpl> m_notificationPostTimer; |  186     Timer<AXObjectCacheImpl> m_notificationPostTimer; | 
|  206     Vector<pair<RefPtr<AXObject>, AXNotification> > m_notificationsToPost; |  187     Vector<pair<RefPtr<AXObject>, AXNotification> > m_notificationsToPost; | 
|  207     void notificationPostTimerFired(Timer<AXObjectCacheImpl>*); |  188     void notificationPostTimerFired(Timer<AXObjectCacheImpl>*); | 
|  208  |  189  | 
|  209     static AXObject* focusedImageMapUIElement(HTMLAreaElement*); |  190     static AXObject* focusedImageMapUIElement(HTMLAreaElement*); | 
|  210  |  191  | 
|  211     AXID getAXID(AXObject*); |  192     AXID getAXID(AXObject*); | 
|  212  |  193  | 
|  213     Settings* settings(); |  194     Settings* settings(); | 
|  214 }; |  195 }; | 
|  215  |  196  | 
|  216 // This is the only subclass of AXObjectCache. |  197 // This is the only subclass of AXObjectCache. | 
|  217 DEFINE_TYPE_CASTS(AXObjectCacheImpl, AXObjectCache, cache, true, true); |  198 DEFINE_TYPE_CASTS(AXObjectCacheImpl, AXObjectCache, cache, true, true); | 
|  218  |  199  | 
|  219 bool nodeHasRole(Node*, const String& role); |  200 bool nodeHasRole(Node*, const String& role); | 
|  220 // This will let you know if aria-hidden was explicitly set to false. |  201 // This will let you know if aria-hidden was explicitly set to false. | 
|  221 bool isNodeAriaVisible(Node*); |  202 bool isNodeAriaVisible(Node*); | 
|  222  |  203  | 
|  223 } |  204 } | 
|  224  |  205  | 
|  225 #endif |  206 #endif | 
| OLD | NEW |