зеркало из https://github.com/mozilla/gecko-dev.git
use xpcom;s nsVoidPtrHashKey, r=aaronlev, sr=neil
This commit is contained in:
Родитель
14c5b93122
Коммит
1c3394d768
|
@ -87,7 +87,7 @@ nsIDOMNode *nsAccessNode::gLastFocusedNode = 0;
|
|||
PRBool nsAccessNode::gIsAccessibilityActive = PR_FALSE;
|
||||
PRBool nsAccessNode::gIsCacheDisabled = PR_FALSE;
|
||||
PRBool nsAccessNode::gIsFormFillEnabled = PR_FALSE;
|
||||
nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode> nsAccessNode::gGlobalDocAccessibleCache;
|
||||
nsAccessNodeHashtable nsAccessNode::gGlobalDocAccessibleCache;
|
||||
|
||||
nsApplicationAccessibleWrap *nsAccessNode::gApplicationAccessible = nsnull;
|
||||
|
||||
|
@ -762,9 +762,10 @@ nsAccessNode::GetDOMNodeForContainer(nsISupports *aContainer)
|
|||
return node;
|
||||
}
|
||||
|
||||
void nsAccessNode::PutCacheEntry(nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode> &aCache,
|
||||
void* aUniqueID,
|
||||
nsIAccessNode *aAccessNode)
|
||||
void
|
||||
nsAccessNode::PutCacheEntry(nsAccessNodeHashtable& aCache,
|
||||
void* aUniqueID,
|
||||
nsIAccessNode *aAccessNode)
|
||||
{
|
||||
#ifdef DEBUG_A11Y
|
||||
nsCOMPtr<nsIAccessNode> oldAccessNode;
|
||||
|
@ -774,9 +775,10 @@ void nsAccessNode::PutCacheEntry(nsInterfaceHashtable<nsVoidHashKey, nsIAccessNo
|
|||
aCache.Put(aUniqueID, aAccessNode);
|
||||
}
|
||||
|
||||
void nsAccessNode::GetCacheEntry(nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode> &aCache,
|
||||
void* aUniqueID,
|
||||
nsIAccessNode **aAccessNode)
|
||||
void
|
||||
nsAccessNode::GetCacheEntry(nsAccessNodeHashtable& aCache,
|
||||
void* aUniqueID,
|
||||
nsIAccessNode **aAccessNode)
|
||||
{
|
||||
aCache.Get(aUniqueID, aAccessNode); // AddRefs for us
|
||||
}
|
||||
|
@ -789,7 +791,8 @@ PLDHashOperator nsAccessNode::ClearCacheEntry(const void* aKey, nsCOMPtr<nsIAcce
|
|||
return PL_DHASH_REMOVE;
|
||||
}
|
||||
|
||||
void nsAccessNode::ClearCache(nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode> &aCache)
|
||||
void
|
||||
nsAccessNode::ClearCache(nsAccessNodeHashtable& aCache)
|
||||
{
|
||||
aCache.Enumerate(ClearCacheEntry, nsnull);
|
||||
}
|
||||
|
|
|
@ -69,30 +69,8 @@ class nsApplicationAccessibleWrap;
|
|||
#define ACCESSIBLE_BUNDLE_URL "chrome://global-platform/locale/accessible.properties"
|
||||
#define PLATFORM_KEYS_BUNDLE_URL "chrome://global-platform/locale/platformKeys.properties"
|
||||
|
||||
/* hashkey wrapper using void* KeyType
|
||||
*
|
||||
* @see nsTHashtable::EntryType for specification
|
||||
*/
|
||||
class nsVoidHashKey : public PLDHashEntryHdr
|
||||
{
|
||||
public:
|
||||
typedef const void* KeyType;
|
||||
typedef const void* KeyTypePointer;
|
||||
|
||||
nsVoidHashKey(KeyTypePointer aKey) : mValue(aKey) { }
|
||||
nsVoidHashKey(const nsVoidHashKey& toCopy) : mValue(toCopy.mValue) { }
|
||||
~nsVoidHashKey() { }
|
||||
|
||||
KeyType GetKey() const { return mValue; }
|
||||
PRBool KeyEquals(KeyTypePointer aKey) const { return aKey == mValue; }
|
||||
|
||||
static KeyTypePointer KeyToPointer(KeyType aKey) { return aKey; }
|
||||
static PLDHashNumber HashKey(KeyTypePointer aKey) { return NS_PTR_TO_INT32(aKey) >> 2; }
|
||||
enum { ALLOW_MEMMOVE = PR_TRUE };
|
||||
|
||||
private:
|
||||
const void* mValue;
|
||||
};
|
||||
typedef nsInterfaceHashtable<nsVoidPtrHashKey, nsIAccessNode>
|
||||
nsAccessNodeHashtable;
|
||||
|
||||
class nsAccessNode: public nsIAccessNode, public nsPIAccessNode
|
||||
{
|
||||
|
@ -113,11 +91,11 @@ class nsAccessNode: public nsIAccessNode, public nsPIAccessNode
|
|||
static already_AddRefed<nsApplicationAccessibleWrap> GetApplicationAccessible();
|
||||
|
||||
// Static methods for handling per-document cache
|
||||
static void PutCacheEntry(nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode>& aCache,
|
||||
static void PutCacheEntry(nsAccessNodeHashtable& aCache,
|
||||
void* aUniqueID, nsIAccessNode *aAccessNode);
|
||||
static void GetCacheEntry(nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode>& aCache, void* aUniqueID,
|
||||
nsIAccessNode **aAccessNode);
|
||||
static void ClearCache(nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode>& aCache);
|
||||
static void GetCacheEntry(nsAccessNodeHashtable& aCache,
|
||||
void* aUniqueID, nsIAccessNode **aAccessNode);
|
||||
static void ClearCache(nsAccessNodeHashtable& aCache);
|
||||
|
||||
static PLDHashOperator PR_CALLBACK ClearCacheEntry(const void* aKey, nsCOMPtr<nsIAccessNode>& aAccessNode, void* aUserArg);
|
||||
|
||||
|
@ -184,7 +162,7 @@ protected:
|
|||
static PRBool gIsCacheDisabled;
|
||||
static PRBool gIsFormFillEnabled;
|
||||
|
||||
static nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode> gGlobalDocAccessibleCache;
|
||||
static nsAccessNodeHashtable gGlobalDocAccessibleCache;
|
||||
|
||||
private:
|
||||
static nsIAccessibilityService *sAccService;
|
||||
|
|
|
@ -135,7 +135,7 @@ class nsDocAccessible : public nsHyperTextAccessibleWrap,
|
|||
*/
|
||||
void ARIAAttributeChanged(nsIContent* aContent, nsIAtom* aAttribute);
|
||||
|
||||
nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode> mAccessNodeCache;
|
||||
nsAccessNodeHashtable mAccessNodeCache;
|
||||
void *mWnd;
|
||||
nsCOMPtr<nsIDocument> mDocument;
|
||||
nsCOMPtr<nsITimer> mScrollWatchTimer;
|
||||
|
|
|
@ -132,7 +132,7 @@ mAccessNodeCache(nsnull)
|
|||
if (mTree)
|
||||
mTree->GetView(getter_AddRefs(mTreeView));
|
||||
NS_ASSERTION(mTree && mTreeView, "Can't get mTree or mTreeView!\n");
|
||||
mAccessNodeCache = new nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode>;
|
||||
mAccessNodeCache = new nsAccessNodeHashtable;
|
||||
mAccessNodeCache->Init(kDefaultTreeCacheSize);
|
||||
}
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ public:
|
|||
protected:
|
||||
nsCOMPtr<nsITreeBoxObject> mTree;
|
||||
nsCOMPtr<nsITreeView> mTreeView;
|
||||
nsInterfaceHashtable<nsVoidHashKey, nsIAccessNode> *mAccessNodeCache;
|
||||
nsAccessNodeHashtable *mAccessNodeCache;
|
||||
|
||||
NS_IMETHOD ChangeSelection(PRInt32 aIndex, PRUint8 aMethod, PRBool *aSelState);
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче