ioService->ExtractScheme(url, 0, 0, getter_Copies(otherScheme));
ioService->ExtractScheme(url.get(), 0, 0, getter_Copies(otherScheme));
nsBindingManager::LoadBindingDocument(nsIDocument* aBoundDoc, const nsAReadableString& aURL,                                      nsIDocument** aResult){  nsCAutoString url; url.AssignWithConversion(PromiseFlatString(aURL).get());    nsXPIDLCString otherScheme;  nsCOMPtr<nsIIOService> ioService = do_GetService(NS_IOSERVICE_CONTRACTID);  if (!ioService) return NS_ERROR_FAILURE;  ioService->ExtractScheme(url, 0, 0, getter_Copies(otherScheme));  nsCOMPtr<nsIURI> docURL;  aBoundDoc->GetDocumentURL(getter_AddRefs(docURL));  nsXPIDLCString scheme;  docURL->GetScheme(getter_Copies(scheme));  // First we need to load our binding.  *aResult = nsnull;  nsresult rv;  nsCOMPtr<nsIXBLService> xblService =            do_GetService("@mozilla.org/xbl;1", &rv);  if (!xblService)    return rv;  // Load the binding doc.  nsCOMPtr<nsIXBLDocumentInfo> info;  xblService->LoadBindingDocumentInfo(nsnull, aBoundDoc, url, nsCAutoString(), PR_TRUE, getter_AddRefs(info));  if (!info)    return NS_ERROR_FAILURE;  if (!PL_strcmp(scheme, otherScheme))    info->GetDocument(aResult); // Addref happens here.      return NS_OK;}