1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef mozilla_a11y_DocAccessibleWrap_h__ 8 #define mozilla_a11y_DocAccessibleWrap_h__ 9 10 #include "DocAccessible.h" 11 12 namespace mozilla { 13 14 class PresShell; 15 16 namespace a11y { 17 18 class DocAccessibleWrap : public DocAccessible { 19 public: 20 DocAccessibleWrap(dom::Document* aDocument, PresShell* aPresShell); 21 virtual ~DocAccessibleWrap(); 22 23 DECL_IUNKNOWN_INHERITED 24 25 // IAccessible 26 27 // Override get_accParent for e10s 28 virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_accParent( 29 /* [retval][out] */ IDispatch __RPC_FAR* __RPC_FAR* ppdispParent) 30 override; 31 32 // Override get_accValue to provide URL when no other value is available 33 virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_accValue( 34 /* [optional][in] */ VARIANT varChild, 35 /* [retval][out] */ BSTR __RPC_FAR* pszValue) override; 36 37 // Accessible 38 virtual void Shutdown(); 39 40 // DocAccessible 41 virtual void* GetNativeWindow() const; 42 43 /** 44 * Manage the mapping from id to Accessible. 45 */ AddID(uint32_t aID,AccessibleWrap * aAcc)46 void AddID(uint32_t aID, AccessibleWrap* aAcc) { 47 mIDToAccessibleMap.Put(aID, aAcc); 48 } RemoveID(uint32_t aID)49 void RemoveID(uint32_t aID) { mIDToAccessibleMap.Remove(aID); } GetAccessibleByID(uint32_t aID)50 AccessibleWrap* GetAccessibleByID(uint32_t aID) const { 51 return mIDToAccessibleMap.Get(aID); 52 } 53 54 protected: 55 // DocAccessible 56 virtual void DoInitialUpdate(); 57 58 protected: 59 void* mHWND; 60 61 /* 62 * This provides a mapping from 32 bit id to accessible objects. 63 */ 64 nsDataHashtable<nsUint32HashKey, AccessibleWrap*> mIDToAccessibleMap; 65 }; 66 67 } // namespace a11y 68 } // namespace mozilla 69 70 #endif 71