From e36563208245fb2082b66b1e4d7853a445a22d4c Mon Sep 17 00:00:00 2001 From: "andreas.otte%primus-online.de" Date: Fri, 5 May 2000 23:39:25 +0000 Subject: [PATCH] first round of checkins to fix bug 37616, Retire SetRelativePath, r=warren@netscape.com --- chrome/src/nsChromeProtocolHandler.cpp | 14 ++++---- modules/libjar/nsJARProtocolHandler.cpp | 20 ++++++----- .../about/src/nsAboutProtocolHandler.cpp | 21 ++++-------- .../file/src/nsFileProtocolHandler.cpp | 30 +++++++++-------- .../protocol/ftp/src/nsFtpProtocolHandler.cpp | 32 +++++++++--------- netwerk/protocol/http/src/nsHTTPHandler.cpp | 33 +++++++++---------- .../protocol/jar/src/nsJARProtocolHandler.cpp | 20 ++++++----- netwerk/protocol/res/src/nsResChannel.cpp | 9 +++-- .../protocol/res/src/nsResProtocolHandler.cpp | 18 +++++----- rdf/chrome/src/nsChromeProtocolHandler.cpp | 14 ++++---- 10 files changed, 112 insertions(+), 99 deletions(-) diff --git a/chrome/src/nsChromeProtocolHandler.cpp b/chrome/src/nsChromeProtocolHandler.cpp index 77b5f7574c56..df598e3d264e 100644 --- a/chrome/src/nsChromeProtocolHandler.cpp +++ b/chrome/src/nsChromeProtocolHandler.cpp @@ -622,16 +622,18 @@ nsChromeProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, // URLs, so there is no "outer" given to CreateInstance nsIURI* url; + rv = nsComponentManager::CreateInstance(kStandardURLCID, nsnull, + NS_GET_IID(nsIURI), + (void**)&url); + if (NS_FAILED(rv)) return rv; + if (aBaseURI) { - rv = aBaseURI->Clone(&url); + nsXPIDLCString aResolvedURI; + rv = aBaseURI->Resolve(aSpec, getter_Copies(aResolvedURI)); if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); + rv = url->SetSpec(aResolvedURI); } else { - rv = nsComponentManager::CreateInstance(kStandardURLCID, nsnull, - NS_GET_IID(nsIURI), - (void**)&url); - if (NS_FAILED(rv)) return rv; rv = url->SetSpec((char*)aSpec); } diff --git a/modules/libjar/nsJARProtocolHandler.cpp b/modules/libjar/nsJARProtocolHandler.cpp index b24306654f8d..b84c62981e32 100644 --- a/modules/libjar/nsJARProtocolHandler.cpp +++ b/modules/libjar/nsJARProtocolHandler.cpp @@ -28,6 +28,7 @@ #include "nsJARURI.h" #include "nsIURL.h" #include "nsJARChannel.h" +#include "nsXPIDLString.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); static NS_DEFINE_CID(kJARUriCID, NS_JARURI_CID); @@ -94,16 +95,19 @@ NS_IMETHODIMP nsJARProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIURI **result) { - nsresult rv; + nsresult rv = NS_OK; nsIURI* url; - if (aBaseURI) { - rv = aBaseURI->Clone(&url); - if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); - } - else { - rv = nsJARURI::Create(nsnull, NS_GET_IID(nsIJARURI), (void**)&url); + + rv = nsJARURI::Create(nsnull, NS_GET_IID(nsIJARURI), (void**)&url); + if (NS_FAILED(rv)) return rv; + + if (aBaseURI) + { + nsXPIDLCString aResolvedURI; + rv = aBaseURI->Resolve(aSpec, getter_Copies(aResolvedURI)); if (NS_FAILED(rv)) return rv; + rv = url->SetSpec(aResolvedURI); + } else { rv = url->SetSpec((char*)aSpec); } diff --git a/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp b/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp index 27c32f7cda9b..eb9fd02da909 100644 --- a/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp +++ b/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp @@ -95,22 +95,15 @@ nsAboutProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, { nsresult rv; - // about: URIs are implemented by the "Simple URI" implementation + // no concept of a relative about url + NS_ASSERTION(!aBaseURI, "base url passed into about protocol handler"); nsIURI* url; - if (aBaseURI) { - rv = aBaseURI->Clone(&url); - if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); - } - else { - rv = nsComponentManager::CreateInstance(kSimpleURICID, nsnull, - NS_GET_IID(nsIURI), - (void**)&url); - if (NS_FAILED(rv)) return rv; - rv = url->SetSpec((char*)aSpec); - - } + rv = nsComponentManager::CreateInstance(kSimpleURICID, nsnull, + NS_GET_IID(nsIURI), + (void**)&url); + if (NS_FAILED(rv)) return rv; + rv = url->SetSpec((char*)aSpec); if (NS_FAILED(rv)) { NS_RELEASE(url); return rv; diff --git a/netwerk/protocol/file/src/nsFileProtocolHandler.cpp b/netwerk/protocol/file/src/nsFileProtocolHandler.cpp index 99c036952dd3..71533f971b68 100644 --- a/netwerk/protocol/file/src/nsFileProtocolHandler.cpp +++ b/netwerk/protocol/file/src/nsFileProtocolHandler.cpp @@ -34,6 +34,7 @@ #include "nsISupportsArray.h" #include "nsFileSpec.h" #include "nsAutoLock.h" +#include "nsXPIDLString.h" static NS_DEFINE_CID(kStandardURLCID, NS_STANDARDURL_CID); static NS_DEFINE_CID(kNoAuthUrlParserCID, NS_NOAUTHORITYURLPARSER_CID); @@ -105,26 +106,27 @@ nsFileProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, nsCOMPtr url; nsCOMPtr urlparser; - if (aBaseURI) { - rv = aBaseURI->Clone(getter_AddRefs(url)); - if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); - } - else { - rv = nsComponentManager::CreateInstance(kNoAuthUrlParserCID, + + rv = nsComponentManager::CreateInstance(kNoAuthUrlParserCID, nsnull, NS_GET_IID(nsIURLParser), getter_AddRefs(urlparser)); - if (NS_FAILED(rv)) return rv; - rv = nsComponentManager::CreateInstance(kStandardURLCID, - nsnull, NS_GET_IID(nsIURI), - getter_AddRefs(url)); - if (NS_FAILED(rv)) return rv; + if (NS_FAILED(rv)) return rv; + rv = nsComponentManager::CreateInstance(kStandardURLCID, + nsnull, NS_GET_IID(nsIURI), + getter_AddRefs(url)); + if (NS_FAILED(rv)) return rv; + rv = url->SetURLParser(urlparser); + if (NS_FAILED(rv)) return rv; - rv = url->SetURLParser(urlparser); + if (aBaseURI) + { + nsXPIDLCString aResolvedURI; + rv = aBaseURI->Resolve(aSpec, getter_Copies(aResolvedURI)); if (NS_FAILED(rv)) return rv; + rv = url->SetSpec(aResolvedURI); + } else { rv = url->SetSpec((char*)aSpec); } - if (NS_FAILED(rv)) return rv; *result = url.get(); diff --git a/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp b/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp index c9c09ecca64e..2bc257a8d326 100644 --- a/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp +++ b/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp @@ -144,24 +144,24 @@ nsFtpProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, nsresult rv = NS_OK; nsCOMPtr url; nsCOMPtr urlparser; - if (aBaseURI) { - rv = aBaseURI->Clone(getter_AddRefs(url)); - if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); - } - else { - rv = nsComponentManager::CreateInstance(kAuthUrlParserCID, - nsnull, NS_GET_IID(nsIURLParser), - getter_AddRefs(urlparser)); - if (NS_FAILED(rv)) return rv; - rv = nsComponentManager::CreateInstance(kStandardURLCID, - nsnull, NS_GET_IID(nsIURI), - getter_AddRefs(url)); - if (NS_FAILED(rv)) return rv; + rv = nsComponentManager::CreateInstance(kAuthUrlParserCID, + nsnull, NS_GET_IID(nsIURLParser), + getter_AddRefs(urlparser)); + if (NS_FAILED(rv)) return rv; + rv = nsComponentManager::CreateInstance(kStandardURLCID, + nsnull, NS_GET_IID(nsIURI), + getter_AddRefs(url)); + if (NS_FAILED(rv)) return rv; + rv = url->SetURLParser(urlparser); + if (NS_FAILED(rv)) return rv; - rv = url->SetURLParser(urlparser); + if (aBaseURI) + { + nsXPIDLCString aResolvedURI; + rv = aBaseURI->Resolve(aSpec, getter_Copies(aResolvedURI)); if (NS_FAILED(rv)) return rv; - + rv = url->SetSpec(aResolvedURI); + } else { rv = url->SetSpec((char*)aSpec); } if (NS_FAILED(rv)) return rv; diff --git a/netwerk/protocol/http/src/nsHTTPHandler.cpp b/netwerk/protocol/http/src/nsHTTPHandler.cpp index 4d1017a22555..931a66c47895 100644 --- a/netwerk/protocol/http/src/nsHTTPHandler.cpp +++ b/netwerk/protocol/http/src/nsHTTPHandler.cpp @@ -181,31 +181,30 @@ nsHTTPHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIURI **result) { nsresult rv = NS_OK; - nsCOMPtr url; nsCOMPtr urlparser; + rv = nsComponentManager::CreateInstance(kAuthUrlParserCID, + nsnull, NS_GET_IID(nsIURLParser), + getter_AddRefs(urlparser)); + if (NS_FAILED(rv)) return rv; + rv = nsComponentManager::CreateInstance(kStandardUrlCID, + nsnull, NS_GET_IID(nsIURI), + getter_AddRefs(url)); + if (NS_FAILED(rv)) return rv; + rv = url->SetURLParser(urlparser); + if (NS_FAILED(rv)) return rv; + if (aBaseURI) { - rv = aBaseURI->Clone(getter_AddRefs(url)); - if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); - } - else - { - rv = nsComponentManager::CreateInstance(kAuthUrlParserCID, - nsnull, NS_GET_IID(nsIURLParser), - getter_AddRefs(urlparser)); - if (NS_FAILED(rv)) return rv; - rv = nsComponentManager::CreateInstance(kStandardUrlCID, - nsnull, NS_GET_IID(nsIURI), - getter_AddRefs(url)); - if (NS_FAILED(rv)) return rv; - - rv = url->SetURLParser(urlparser); + nsXPIDLCString aResolvedURI; + rv = aBaseURI->Resolve(aSpec, getter_Copies(aResolvedURI)); if (NS_FAILED(rv)) return rv; + rv = url->SetSpec(aResolvedURI); + } else { rv = url->SetSpec((char*)aSpec); } if (NS_FAILED(rv)) return rv; + *result = url.get(); NS_ADDREF(*result); return rv; diff --git a/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp b/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp index b24306654f8d..b84c62981e32 100644 --- a/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp +++ b/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp @@ -28,6 +28,7 @@ #include "nsJARURI.h" #include "nsIURL.h" #include "nsJARChannel.h" +#include "nsXPIDLString.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); static NS_DEFINE_CID(kJARUriCID, NS_JARURI_CID); @@ -94,16 +95,19 @@ NS_IMETHODIMP nsJARProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIURI **result) { - nsresult rv; + nsresult rv = NS_OK; nsIURI* url; - if (aBaseURI) { - rv = aBaseURI->Clone(&url); - if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); - } - else { - rv = nsJARURI::Create(nsnull, NS_GET_IID(nsIJARURI), (void**)&url); + + rv = nsJARURI::Create(nsnull, NS_GET_IID(nsIJARURI), (void**)&url); + if (NS_FAILED(rv)) return rv; + + if (aBaseURI) + { + nsXPIDLCString aResolvedURI; + rv = aBaseURI->Resolve(aSpec, getter_Copies(aResolvedURI)); if (NS_FAILED(rv)) return rv; + rv = url->SetSpec(aResolvedURI); + } else { rv = url->SetSpec((char*)aSpec); } diff --git a/netwerk/protocol/res/src/nsResChannel.cpp b/netwerk/protocol/res/src/nsResChannel.cpp index 25e36562b30f..e7c02ba2a8e0 100644 --- a/netwerk/protocol/res/src/nsResChannel.cpp +++ b/netwerk/protocol/res/src/nsResChannel.cpp @@ -151,16 +151,21 @@ nsResChannel::Substitutions::Next(nsIURI* *result) PRBool ok = mSubstitutions->RemoveCStringAt(0); if (!ok) return NS_ERROR_FAILURE; - char* path; + char* path = nsnull; rv = channel->mResourceURI->GetPath(&path); if (NS_FAILED(rv)) return rv; // XXX this path[0] check is a hack -- it seems to me that GetPath // shouldn't include the leading slash: - rv = resolvedURI->SetRelativePath(path[0] == '/' ? path+1 : path); + nsXPIDLCString aResolvedURI; + rv = resolvedURI->Resolve(path[0] == '/' ? path+1 : path, + getter_Copies(aResolvedURI)); nsCRT::free(path); if (NS_FAILED(rv)) return rv; + rv = resolvedURI->SetSpec(aResolvedURI); + if (NS_FAILED(rv)) return rv; + *result = resolvedURI; NS_IF_ADDREF(*result); return NS_OK; diff --git a/netwerk/protocol/res/src/nsResProtocolHandler.cpp b/netwerk/protocol/res/src/nsResProtocolHandler.cpp index c53f0015988d..436f7a3b0fbb 100644 --- a/netwerk/protocol/res/src/nsResProtocolHandler.cpp +++ b/netwerk/protocol/res/src/nsResProtocolHandler.cpp @@ -42,6 +42,7 @@ #include "prenv.h" #include "prmem.h" #include "prprf.h" +#include "nsXPIDLString.h" static NS_DEFINE_CID(kStandardURLCID, NS_STANDARDURL_CID); @@ -232,16 +233,17 @@ nsResProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, // URLs, so there is no "outer" given to CreateInstance nsIURI* url; + rv = nsComponentManager::CreateInstance(kStandardURLCID, nsnull, + NS_GET_IID(nsIURI), + (void**)&url); + if (NS_FAILED(rv)) return rv; + if (aBaseURI) { - rv = aBaseURI->Clone(&url); - if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); - } - else { - rv = nsComponentManager::CreateInstance(kStandardURLCID, nsnull, - NS_GET_IID(nsIURI), - (void**)&url); + nsXPIDLCString aResolvedURI; + rv = aBaseURI->Resolve(aSpec, getter_Copies(aResolvedURI)); if (NS_FAILED(rv)) return rv; + rv = url->SetSpec(aResolvedURI); + } else { rv = url->SetSpec((char*)aSpec); } diff --git a/rdf/chrome/src/nsChromeProtocolHandler.cpp b/rdf/chrome/src/nsChromeProtocolHandler.cpp index 77b5f7574c56..df598e3d264e 100644 --- a/rdf/chrome/src/nsChromeProtocolHandler.cpp +++ b/rdf/chrome/src/nsChromeProtocolHandler.cpp @@ -622,16 +622,18 @@ nsChromeProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, // URLs, so there is no "outer" given to CreateInstance nsIURI* url; + rv = nsComponentManager::CreateInstance(kStandardURLCID, nsnull, + NS_GET_IID(nsIURI), + (void**)&url); + if (NS_FAILED(rv)) return rv; + if (aBaseURI) { - rv = aBaseURI->Clone(&url); + nsXPIDLCString aResolvedURI; + rv = aBaseURI->Resolve(aSpec, getter_Copies(aResolvedURI)); if (NS_FAILED(rv)) return rv; - rv = url->SetRelativePath(aSpec); + rv = url->SetSpec(aResolvedURI); } else { - rv = nsComponentManager::CreateInstance(kStandardURLCID, nsnull, - NS_GET_IID(nsIURI), - (void**)&url); - if (NS_FAILED(rv)) return rv; rv = url->SetSpec((char*)aSpec); }