rv = aElement->GetAttribute(kNameSpaceID_None, kTargetsAtom, targets);
rv = aElement->GetAttribute(kNameSpaceID_None, nsXULAtoms::targets, targets);
nsXULContentUtils::SetCommandUpdater(nsIDocument* aDocument, nsIContent* aElement){    // Deal with setting up a 'commandupdater'. Pulls the 'events' and    // 'targets' attributes off of aElement, and adds it to the    // document's command dispatcher.    NS_PRECONDITION(aDocument != nsnull, "null ptr");    if (! aDocument)        return NS_ERROR_NULL_POINTER;    NS_PRECONDITION(aElement != nsnull, "null ptr");    if (! aElement)        return NS_ERROR_NULL_POINTER;    nsresult rv;    nsCOMPtr<nsIDOMXULDocument> xuldoc = do_QueryInterface(aDocument);    NS_ASSERTION(xuldoc != nsnull, "not a xul document");    if (! xuldoc)        return NS_ERROR_UNEXPECTED;    nsCOMPtr<nsIDOMXULCommandDispatcher> dispatcher;    rv = xuldoc->GetCommandDispatcher(getter_AddRefs(dispatcher));    NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get dispatcher");    if (NS_FAILED(rv)) return rv;    NS_ASSERTION(dispatcher != nsnull, "no dispatcher");    if (! dispatcher)        return NS_ERROR_UNEXPECTED;    nsAutoString events;    rv = aElement->GetAttribute(kNameSpaceID_None, kEventsAtom, events);    if (rv != NS_CONTENT_ATTR_HAS_VALUE)        events.Assign(NS_LITERAL_STRING("*"));    nsAutoString targets;    rv = aElement->GetAttribute(kNameSpaceID_None, kTargetsAtom, targets);    if (rv != NS_CONTENT_ATTR_HAS_VALUE)        targets.Assign(NS_LITERAL_STRING("*"));    nsCOMPtr<nsIDOMElement> domelement = do_QueryInterface(aElement);    NS_ASSERTION(domelement != nsnull, "not a DOM element");    if (! domelement)        return NS_ERROR_UNEXPECTED;    rv = dispatcher->AddCommandUpdater(domelement, events, targets);    if (NS_FAILED(rv)) return rv;    return NS_OK;}