nsIRDFContainer::GetIID(),
NS_GET_IID(nsIRDFContainer),
nsXPINotifierImpl::OnEndLoad(nsIRDFXMLSink *aSink){    nsresult rv;    (void) aSink->RemoveXMLSinkObserver(this);    nsCOMPtr<nsIRDFDataSource> distributorDataSource = do_QueryInterface(aSink, &rv);    if (NS_FAILED(rv)) return rv;    nsCOMPtr<nsIRDFContainer> distributorContainer;    nsCOMPtr <nsISimpleEnumerator> packageEnumerator;    PRBool moreElements;    rv = nsComponentManager::CreateInstance(kRDFContainerCID,                                            nsnull,                                            nsIRDFContainer::GetIID(),                                            getter_AddRefs(distributorContainer));    if (NS_SUCCEEDED(rv))    {        rv = distributorContainer->Init(distributorDataSource, kXPI_NotifierPackages);        if (NS_SUCCEEDED(rv))        {            rv = distributorContainer->GetElements(getter_AddRefs(packageEnumerator));            if (NS_SUCCEEDED(rv))            {                packageEnumerator->HasMoreElements(&moreElements);                while (moreElements)                 {                    nsCOMPtr<nsISupports> i;                    rv = packageEnumerator->GetNext(getter_AddRefs(i));                    if (NS_FAILED(rv)) break;                    nsCOMPtr<nsIRDFResource> aPackage(do_QueryInterface(i, &rv));                    if (NS_FAILED(rv)) break;                                            // Get the version information                    nsCOMPtr<nsIRDFNode> versionNode;                    distributorDataSource->GetTarget(aPackage,                                                      kXPI_NotifierPackage_Version,                                                      PR_TRUE,                                                      getter_AddRefs(versionNode));                    nsCOMPtr<nsIRDFLiteral> version(do_QueryInterface(versionNode, &rv));                    if (NS_FAILED(rv)) break;                    // Get the regkey information                    nsCOMPtr<nsIRDFNode> regkeyNode;                    distributorDataSource->GetTarget(aPackage,                                                      kXPI_NotifierPackage_RegKey,                                                      PR_TRUE,                                                      getter_AddRefs(regkeyNode));                    nsCOMPtr<nsIRDFLiteral> regkey(do_QueryInterface(regkeyNode, &rv));                    if (NS_FAILED(rv)) break;                    // convert them into workable nsAutoStrings                    PRUnichar* regkeyCString;                    regkey->GetValue(&regkeyCString);                    nsString regKeyString(regkeyCString);                                        PRUnichar* versionCString;                    version->GetValue(&versionCString);                    nsString versionString(versionCString);					nsAllocator::Free(versionCString);					nsAllocator::Free(regkeyCString);                    // check to see if this software title should be "flashed"                    if (IsNewerOrUninstalled(nsAutoCString(regKeyString), nsAutoCString(versionString)))                    {                        //assert into flash                                                nsCOMPtr<nsIRDFNode> urlNode;                        distributorDataSource->GetTarget(kXPI_NotifierPackages,                                                          kNC_URL,                                                          PR_TRUE,                                                          getter_AddRefs(urlNode));                        nsCOMPtr<nsIRDFLiteral> url(do_QueryInterface(urlNode, &rv));                        if (NS_FAILED(rv)) break;                        nsCOMPtr<nsIRDFNode> titleNode;                        distributorDataSource->GetTarget(kXPI_NotifierPackages,                                                          kXPI_NotifierPackage_Title,                                                          PR_TRUE,                                                          getter_AddRefs(titleNode));                        nsCOMPtr<nsIRDFLiteral> title(do_QueryInterface(titleNode, &rv));                        if (NS_FAILED(rv)) break;                        nsCOMPtr<nsIRDFDataSource> ds = do_QueryInterface(mInner);                        ds->Assert(aPackage, kNC_Name, title, PR_TRUE);                        ds->Assert(aPackage, kNC_URL, url, PR_TRUE);                        ds->Assert(kNC_NotificationRoot, kNC_Child, aPackage, PR_TRUE);                        break;                    }                }            }        }    }    return NS_OK;}