171460 - add parsetype attribute. r=hyatt sr=hewitt

This commit is contained in:
blakeross%telocity.com 2002-09-29 21:08:27 +00:00
parent 5ca62716f3
commit 693921e302
2 changed files with 22 additions and 5 deletions

View File

@ -317,3 +317,4 @@ XUL_ATOM(screenX, "screenX")
XUL_ATOM(screenY, "screenY")
XUL_ATOM(hidechrome, "hidechrome")
XUL_ATOM(popupset, "popupset")
XUL_ATOM(parsetype, "parsetype")

View File

@ -2185,6 +2185,8 @@ nsXULTemplateBuilder::CompileSimpleRule(nsIContent* aRuleElement,
// never compare against {}:id attribute
else if ((attr.get() == nsXULAtoms::id) && (attrNameSpaceID == kNameSpaceID_None))
continue;
else if ((attr.get() == nsXULAtoms::parsetype) && (attrNameSpaceID == kNameSpaceID_None))
continue;
nsAutoString value;
rv = aRuleElement->GetAttr(attrNameSpaceID, attr, value);
@ -2261,12 +2263,26 @@ nsXULTemplateBuilder::CompileSimpleRule(nsIContent* aRuleElement,
target = do_QueryInterface(resource);
}
else {
nsCOMPtr<nsIRDFLiteral> literal;
rv = gRDFService->GetLiteral(value.get(), getter_AddRefs(literal));
if (NS_FAILED(rv)) return rv;
else {
if (aRuleElement->HasAttr(kNameSpaceID_None, nsXULAtoms::parsetype)) {
nsAutoString parseType;
aRuleElement->GetAttr(kNameSpaceID_None, nsXULAtoms::parsetype, parseType);
if (parseType.Equals(NS_LITERAL_STRING("Integer"))) {
nsCOMPtr<nsIRDFInt> intLiteral;
PRInt32 errorCode = nsnull;
rv = gRDFService->GetIntLiteral(value.ToInteger(&errorCode), getter_AddRefs(intLiteral));
if (NS_FAILED(rv)) return rv;
target = do_QueryInterface(intLiteral);
}
}
else {
nsCOMPtr<nsIRDFLiteral> literal;
rv = gRDFService->GetLiteral(value.get(), getter_AddRefs(literal));
if (NS_FAILED(rv)) return rv;
target = do_QueryInterface(literal);
target = do_QueryInterface(literal);
}
}
testnode = new nsRDFPropertyTestNode(aParentNode, mConflictSet, mDB, mMemberVar, property, target);