Part 3 of fix for bug 560273 (Stop using DOM tearoffs from quickstubs) - add nsINode::Get/SetUserData. r=jst.

This commit is contained in:
Peter Van der Beken
2010-04-19 17:40:15 +02:00
parent 1742ce8a3a
commit fbe91bdee1
6 changed files with 57 additions and 66 deletions

View File

@@ -617,11 +617,9 @@ SetUserDataProperty(PRUint16 aCategory, nsINode *aNode, nsIAtom *aKey,
return NS_OK;
}
/* static */
nsresult
nsNodeUtils::SetUserData(nsINode *aNode, const nsAString &aKey,
nsIVariant *aData, nsIDOMUserDataHandler *aHandler,
nsIVariant **aResult)
nsINode::SetUserData(const nsAString &aKey, nsIVariant *aData,
nsIDOMUserDataHandler *aHandler, nsIVariant **aResult)
{
*aResult = nsnull;
@@ -633,11 +631,11 @@ nsNodeUtils::SetUserData(nsINode *aNode, const nsAString &aKey,
nsresult rv;
void *data;
if (aData) {
rv = SetUserDataProperty(DOM_USER_DATA, aNode, key, aData, &data);
rv = SetUserDataProperty(DOM_USER_DATA, this, key, aData, &data);
NS_ENSURE_SUCCESS(rv, rv);
}
else {
data = aNode->UnsetProperty(DOM_USER_DATA, key);
data = UnsetProperty(DOM_USER_DATA, key);
}
// Take over ownership of the old data from the property table.
@@ -645,17 +643,17 @@ nsNodeUtils::SetUserData(nsINode *aNode, const nsAString &aKey,
if (aData && aHandler) {
nsCOMPtr<nsIDOMUserDataHandler> oldHandler;
rv = SetUserDataProperty(DOM_USER_DATA_HANDLER, aNode, key, aHandler,
rv = SetUserDataProperty(DOM_USER_DATA_HANDLER, this, key, aHandler,
getter_AddRefs(oldHandler));
if (NS_FAILED(rv)) {
// We failed to set the handler, remove the data.
aNode->DeleteProperty(DOM_USER_DATA, key);
DeleteProperty(DOM_USER_DATA, key);
return rv;
}
}
else {
aNode->DeleteProperty(DOM_USER_DATA_HANDLER, key);
DeleteProperty(DOM_USER_DATA_HANDLER, key);
}
oldData.swap(*aResult);
@@ -1191,14 +1189,16 @@ nsNode3Tearoff::SetUserData(const nsAString& aKey,
nsIDOMUserDataHandler* aHandler,
nsIVariant** aResult)
{
return nsNodeUtils::SetUserData(mContent, aKey, aData, aHandler, aResult);
return mContent->SetUserData(aKey, aData, aHandler, aResult);
}
NS_IMETHODIMP
nsNode3Tearoff::GetUserData(const nsAString& aKey,
nsIVariant** aResult)
{
return nsNodeUtils::GetUserData(mContent, aKey, aResult);
NS_IF_ADDREF(*aResult = mContent->GetUserData(aKey));
return NS_OK;
}
NS_IMETHODIMP