NS_IF_ADDREF(mURL); aURL = mURL; return NS_OK;
nsresult  rv;  if (nsnull != mViewer) { nsIContentViewerContainer *cont;  rv = mViewer->GetContainer(cont);  if (NS_OK == rv) { nsILinkHandler  *lh;  rv = cont->QueryInterface(kILinkHandlerIID, (void **)&lh);  if (NS_OK == rv) { #ifdef NECKO nsIURI  *uri; rv = mViewer->GetURI(&uri); #else nsIURI  *url; rv = mViewer->GetURL(url); #endif  if (NS_OK == rv) {  #ifdef NECKO char* absURIStr; rv = NS_MakeAbsoluteURI(aURL, uri, &absURIStr); NS_RELEASE(uri); nsAutoString fullurl(absURIStr); nsCRT::free(absURIStr); #else nsAutoString  uniurl = nsAutoString(aURL); const char* spec; (void)url->GetSpec(&spec); nsAutoString  base = nsAutoString(spec); nsAutoString  fullurl; rv = NS_MakeAbsoluteURL(url, base, uniurl, fullurl); NS_RELEASE(url); #endif  if (NS_OK == rv) { nsAutoString  unitarget = nsAutoString(aTarget); rv = lh->OnLinkClick(nsnull, eLinkVerb_Replace, fullurl.GetUnicode(), unitarget.GetUnicode(), nsnull); } }  NS_RELEASE(lh); }  NS_RELEASE(cont); } } else rv = NS_ERROR_FAILURE;  return rv;
nsresult PluginViewerImpl::GetURL(nsIURI *&aURL){  NS_IF_ADDREF(mURL);  aURL = mURL;  return NS_OK;}