From 489f3fc875b3f8bb02b286fc2e01bf478bdd0441 Mon Sep 17 00:00:00 2001 From: "pollmann%netscape.com" Date: Wed, 13 Oct 1999 01:37:30 +0000 Subject: [PATCH] Bug 15423: Check for a base href when forming the URL for an image map; r=harishd git-svn-id: svn://10.0.0.236/trunk@50541 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/generic/nsImageMap.cpp | 28 ++++++++++++--------- mozilla/layout/html/base/src/nsImageMap.cpp | 28 ++++++++++++--------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/mozilla/layout/generic/nsImageMap.cpp b/mozilla/layout/generic/nsImageMap.cpp index 8ca6247b9ba..5f1c16ac31f 100644 --- a/mozilla/layout/generic/nsImageMap.cpp +++ b/mozilla/layout/generic/nsImageMap.cpp @@ -877,19 +877,23 @@ nsImageMap::IsInside(nscoord aX, nscoord aY, nsresult rv; NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); if (NS_FAILED(rv)) return PR_FALSE; - - nsIURI *baseUri = nsnull; - - if ((area->mBase).Length() > 0) { - // use the area->base as the base uri - char *uriStr = (area->mBase).ToNewCString(); - if (!uriStr) { - return PR_FALSE; + // Set the image loader's source URL and base URL + nsIURI* baseUri = nsnull; + nsIHTMLContent* htmlContent; + if (mMap) { + rv = mMap->QueryInterface(kIHTMLContentIID, (void**)&htmlContent); + if (NS_SUCCEEDED(rv)) { + htmlContent->GetBaseURL(baseUri); + NS_RELEASE(htmlContent); + } + else { + nsIDocument* doc; + rv = mMap->GetDocument(doc); + if (NS_SUCCEEDED(rv)) { + doc->GetBaseURL(baseUri); // Could just use mDocument here... + NS_RELEASE(doc); + } } - rv = service->NewURI(uriStr, nsnull, &baseUri); - delete [] uriStr; - } else { - rv = aDocURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); } if (NS_FAILED(rv)) return PR_FALSE; diff --git a/mozilla/layout/html/base/src/nsImageMap.cpp b/mozilla/layout/html/base/src/nsImageMap.cpp index 8ca6247b9ba..5f1c16ac31f 100644 --- a/mozilla/layout/html/base/src/nsImageMap.cpp +++ b/mozilla/layout/html/base/src/nsImageMap.cpp @@ -877,19 +877,23 @@ nsImageMap::IsInside(nscoord aX, nscoord aY, nsresult rv; NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); if (NS_FAILED(rv)) return PR_FALSE; - - nsIURI *baseUri = nsnull; - - if ((area->mBase).Length() > 0) { - // use the area->base as the base uri - char *uriStr = (area->mBase).ToNewCString(); - if (!uriStr) { - return PR_FALSE; + // Set the image loader's source URL and base URL + nsIURI* baseUri = nsnull; + nsIHTMLContent* htmlContent; + if (mMap) { + rv = mMap->QueryInterface(kIHTMLContentIID, (void**)&htmlContent); + if (NS_SUCCEEDED(rv)) { + htmlContent->GetBaseURL(baseUri); + NS_RELEASE(htmlContent); + } + else { + nsIDocument* doc; + rv = mMap->GetDocument(doc); + if (NS_SUCCEEDED(rv)) { + doc->GetBaseURL(baseUri); // Could just use mDocument here... + NS_RELEASE(doc); + } } - rv = service->NewURI(uriStr, nsnull, &baseUri); - delete [] uriStr; - } else { - rv = aDocURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); } if (NS_FAILED(rv)) return PR_FALSE;