// This function finds the destination when following a given nsIRDFResource // If the resource has a URL attribute, we use that. If not, just use // the uri. // // Do NOT try to get the destination of a uri in any other way void nsHTTPIndex::GetDestination(nsIRDFResource* r, nsXPIDLCString& dest) { // First try the URL attribute nsCOMPtr<nsIRDFNode> node; GetTarget(r, kNC_URL, true, getter_AddRefs(node)); nsCOMPtr<nsIRDFLiteral> url; if (node) url = do_QueryInterface(node); if (!url) { const char* temp; r->GetValueConst(&temp); dest.Adopt(temp ? strdup(temp) : 0); } else { const char16_t* uri; url->GetValueConst(&uri); dest.Adopt(ToNewUTF8String(nsDependentString(uri))); } }