diff --git a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp
index 9587cfc167b..e0f85e440b4 100644
--- a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp
+++ b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp
@@ -44,11 +44,10 @@
#include "nsISupportsArray.h"
#include "nsIURL.h"
#ifdef NECKO
-#include "nsIIOService.h"
-#include "nsIURL.h"
-static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
-#endif // NECKO
+#include "nsNeckoUtil.h"
+#else
#include "nsIURLGroup.h"
+#endif // NECKO
#include "nsStyleConsts.h"
#include "nsXIFConverter.h"
#include "nsFrame.h"
@@ -995,29 +994,20 @@ nsGenericHTMLElement::GetBaseURL(nsIHTMLAttributes* aAttributes,
value.GetStringValue(baseHref);
nsIURI* url = nsnull;
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
docBaseURL->GetURLGroup(&urlGroup);
if (urlGroup) {
result = urlGroup->CreateURL(&url, docBaseURL, baseHref, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
result = NS_NewURL(&url, baseHref, docBaseURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
- result = docBaseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(result)) return result;
-
- const char *uriStr = baseHref.GetBuffer();
- result = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&url);
+ result = NS_NewURI(&url, baseHref, docBaseURL);
#endif // NECKO
}
*aBaseURL = url;
@@ -1962,19 +1952,7 @@ nsGenericHTMLElement::MapBackgroundAttributesInto(nsIHTMLAttributes* aAttributes
#ifndef NECKO
rv = NS_MakeAbsoluteURL(docURL, "", spec, absURLSpec);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv);
- if (NS_FAILED(rv)) return;
-
- nsIURI *baseUri = nsnull;
- rv = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(rv)) return;
-
- char *absUrlStr = nsnull;
- const char *urlSpec = spec.GetBuffer();
- rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr);
- NS_RELEASE(baseUri);
- absURLSpec = absUrlStr;
- delete [] absUrlStr;
+ rv = NS_MakeAbsoluteURI(spec, docURL, absURLSpec);
#endif // NECKO
if (NS_SUCCEEDED(rv)) {
nsStyleColor* color = (nsStyleColor*)
diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
index 9f45508dfef..83e473cb25f 100644
--- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
@@ -21,18 +21,17 @@
#include "nsICSSStyleSheet.h"
#include "nsICSSLoader.h"
#include "nsIUnicharInputStream.h"
-#include "nsIUnicharStreamLoader.h"
#include "nsIHTMLContent.h"
#include "nsIHTMLContentContainer.h"
#include "nsIURL.h"
#ifdef NECKO
-#include "nsIIOService.h"
-#include "nsIURL.h"
-#include "nsIServiceManager.h"
-static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
-#endif // NECKO
+#include "nsNeckoUtil.h"
+class nsIUnicharStreamLoader : public nsISupports {}; // XXX what?
+#else
+#include "nsIUnicharStreamLoader.h"
#include "nsIURLGroup.h"
#include "nsIHttpURL.h"
+#endif // NECKO
#include "nsIPresShell.h"
#include "nsIPresContext.h"
#include "nsIViewManager.h"
@@ -90,7 +89,9 @@ static NS_DEFINE_IID(kIDOMHTMLTextAreaElementIID, NS_IDOMHTMLTEXTAREAELEMENT_IID
static NS_DEFINE_IID(kIDOMHTMLOptionElementIID, NS_IDOMHTMLOPTIONELEMENT_IID);
static NS_DEFINE_IID(kIFormControlIID, NS_IFORMCONTROL_IID);
static NS_DEFINE_IID(kIHTMLContentSinkIID, NS_IHTML_CONTENT_SINK_IID);
+#ifndef NECKO
static NS_DEFINE_IID(kIHTTPURLIID, NS_IHTTPURL_IID);
+#endif
static NS_DEFINE_IID(kIScrollableViewIID, NS_ISCROLLABLEVIEW_IID);
static NS_DEFINE_IID(kIHTMLDocumentIID, NS_IHTMLDOCUMENT_IID);
static NS_DEFINE_IID(kIHTMLContentContainerIID, NS_IHTMLCONTENTCONTAINER_IID);
@@ -1503,12 +1504,18 @@ HTMLContentSink::Init(nsIDocument* aDoc,
mCurrentContext->Begin(eHTMLTag_html, mRoot);
mContextStack.AppendElement(mCurrentContext);
+#ifdef NECKO
+ char* spec;
+#else
const char* spec;
+#endif
(void)aURL->GetSpec(&spec);
SINK_TRACE(SINK_TRACE_CALLS,
("HTMLContentSink::Init: this=%p url='%s'",
this, spec));
-
+#ifdef NECKO
+ nsCRT::free(spec);
+#endif
return NS_OK;
}
@@ -2032,10 +2039,23 @@ HTMLContentSink::StartLayout()
// If the document we are loading has a reference or it is a
// frameset document, disable the scroll bars on the views.
+#ifdef NECKO
+ char* ref;
+ nsIURL* url;
+ nsresult rv = mDocumentURL->QueryInterface(nsIURL::GetIID(), (void**)&url);
+ if (NS_SUCCEEDED(rv)) {
+ rv = url->GetRef(&ref);
+ NS_RELEASE(url);
+ }
+#else
const char* ref;
nsresult rv = mDocumentURL->GetRef(&ref);
+#endif
if (rv == NS_OK) {
mRef = new nsString(ref);
+#ifdef NECKO
+ nsCRT::free(ref);
+#endif
}
if ((nsnull != ref) || mFrameset) {
@@ -2469,31 +2489,20 @@ HTMLContentSink::ProcessStyleLink(nsIHTMLContent* aElement,
if ((0 == mimeType.Length()) || mimeType.EqualsIgnoreCase("text/css")) {
nsIURI* url = nsnull;
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
mDocumentBaseURL->GetURLGroup(&urlGroup);
if (urlGroup) {
result = urlGroup->CreateURL(&url, mDocumentBaseURL, aHref, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
result = NS_NewURL(&url, aHref, mDocumentBaseURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
-
- result = mDocumentBaseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(result)) return result;
-
- const char *uriStr = aHref.GetBuffer();
- result = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&url);
- NS_RELEASE(uri);
+ result = NS_NewURI(&url, aHref, mDocumentBaseURL);
#endif // NECKO
}
if (NS_OK != result) {
@@ -2658,10 +2667,12 @@ HTMLContentSink::ProcessMETATag(const nsIParserNode& aNode)
}
mHead->AppendChildTo(it, PR_FALSE);
+#ifndef NECKO
// If we are processing an HTTP url, handle meta http-equiv cases
nsIHttpURL* httpUrl = nsnull;
rv = mDocumentURL->QueryInterface(kIHTTPURLIID, (void **)&httpUrl);
-
+#endif
+
// set any HTTP-EQUIV data into document's header data as well as url
nsAutoString header;
it->GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::httpEquiv, header);
@@ -2669,6 +2680,9 @@ HTMLContentSink::ProcessMETATag(const nsIParserNode& aNode)
nsAutoString result;
it->GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::content, result);
if (result.Length() > 0) {
+#ifdef NECKO
+ NS_ASSERTION(0, "how does necko add mime headers?");
+#else
if (nsnull != httpUrl) {
char* value = result.ToNewCString(), *csHeader;
if (!value) {
@@ -2685,6 +2699,7 @@ HTMLContentSink::ProcessMETATag(const nsIParserNode& aNode)
delete[] csHeader;
delete[] value;
}
+#endif
header.ToLowerCase();
nsIAtom* fieldAtom = NS_NewAtom(header);
@@ -2706,7 +2721,9 @@ HTMLContentSink::ProcessMETATag(const nsIParserNode& aNode)
NS_IF_RELEASE(fieldAtom);
}
}
+#ifndef NECKO
NS_IF_RELEASE(httpUrl);
+#endif
NS_RELEASE(it);
}
@@ -2822,7 +2839,11 @@ HTMLContentSink::EvaluateScript(nsString& aScript,
nsAutoString ret;
nsIURI* docURL = mDocument->GetDocumentURL();
+#ifdef NECKO
+ char* url;
+#else
const char* url;
+#endif
if (docURL) {
(void)docURL->GetSpec(&url);
}
@@ -2911,31 +2932,20 @@ HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode)
if (src.Length() > 0) {
// Use the SRC attribute value to load the URL
nsIURI* url = nsnull;
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
mDocumentBaseURL->GetURLGroup(&urlGroup);
if (urlGroup) {
rv = urlGroup->CreateURL(&url, mDocumentBaseURL, src, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
rv = NS_NewURL(&url, src, mDocumentBaseURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv);
- if (NS_FAILED(rv)) return rv;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
-
- rv = mDocumentBaseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(rv)) return rv;
-
- const char *uriStr = src.GetBuffer();
- rv = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(rv)) return rv;
-
- rv = uri->QueryInterface(nsIURI::GetIID(), (void**)&url);
- NS_RELEASE(uri);
+ rv = NS_NewURI(&url, src, mDocumentBaseURL);
#endif // NECKO
}
if (NS_OK != rv) {
@@ -2946,11 +2956,15 @@ HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode)
// onto it as opaque data.
NS_ADDREF(this);
+#ifdef NECKO
+ NS_ASSERTION(0, "fix me");
+#else
nsIUnicharStreamLoader* loader;
rv = NS_NewUnicharStreamLoader(&loader,
url,
(nsStreamCompleteFunc)nsDoneLoadingScript,
(void *)this);
+#endif
NS_RELEASE(url);
if (NS_OK == rv) {
rv = NS_ERROR_HTMLPARSER_BLOCK;
@@ -3079,31 +3093,20 @@ HTMLContentSink::ProcessSTYLETag(const nsIParserNode& aNode)
// XXX what does nav do?
// Use the SRC attribute value to load the URL
nsIURI* url = nsnull;
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
mDocumentBaseURL->GetURLGroup(&urlGroup);
if (urlGroup) {
rv = urlGroup->CreateURL(&url, mDocumentBaseURL, src, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
rv = NS_NewURL(&url, src, mDocumentBaseURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv);
- if (NS_FAILED(rv)) return rv;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
-
- rv = mDocumentBaseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(rv)) return rv;
-
- const char *uriStr = src.GetBuffer();
- rv = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(rv)) return rv;
-
- rv = uri->QueryInterface(nsIURI::GetIID(), (void**)&url);
- NS_RELEASE(uri);
+ rv = NS_NewURI(&url, src, mDocumentBaseURL);
#endif // NECKO
}
if (NS_OK != rv) {
diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp
index 4955c09c0f8..947a1e601f2 100644
--- a/mozilla/content/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp
@@ -34,14 +34,15 @@
#include "nsIDOMComment.h"
#include "nsIDOMWindow.h"
#include "nsIDOMHTMLFormElement.h"
-#include "nsIPostToServer.h"
#include "nsIStreamListener.h"
#include "nsIURL.h"
#ifdef NECKO
#include "nsIIOService.h"
#include "nsIURL.h"
-#endif // NECKO
+#else
+#include "nsIPostToServer.h"
#include "nsIURLGroup.h"
+#endif // NECKO
#include "nsIContentViewerContainer.h"
#include "nsIWebShell.h"
#include "nsIDocumentLoader.h"
@@ -570,31 +571,20 @@ nsHTMLDocument:: SetBaseURL(const nsString& aURLSpec)
NS_IF_RELEASE(mBaseURL);
if (0 < aURLSpec.Length()) {
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
(void)mDocumentURL->GetURLGroup(&urlGroup);
if (urlGroup) {
result = urlGroup->CreateURL(&mBaseURL, mDocumentURL, aURLSpec, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
result = NS_NewURL(&mBaseURL, aURLSpec, mDocumentURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
-
- result = mDocumentURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(result)) return result;
-
- const char *uriStr = aURLSpec.GetBuffer();
- result = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&mBaseURL);
- NS_RELEASE(uri);
+ result = NS_NewURI(&mBaseURL, aURLSpec, mDocumentURL);
#endif // NECKO
}
}
@@ -1202,8 +1192,8 @@ nsHTMLDocument::GetCookie(nsString& aCookie)
#ifndef NECKO
nsINetService *service;
nsresult res = nsServiceManager::GetService(kNetServiceCID,
- kINetServiceIID,
- (nsISupports **)&service);
+ kINetServiceIID,
+ (nsISupports **)&service);
if ((NS_OK == res) && (nsnull != service) && (nsnull != mDocumentURL)) {
res = service->GetCookieString(mDocumentURL, aCookie);
@@ -1274,16 +1264,7 @@ nsHTMLDocument::GetSourceDocumentURL(JSContext* cx,
#ifndef NECKO
result = NS_NewURL(sourceURL, url);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull;
- const char *uriStr = url.GetBuffer();
- result = service->NewURI(uriStr, nsnull, &uri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)sourceURL);
- NS_RELEASE(uri);
+ result = NS_NewURI(sourceURL, url);
#endif // NECKO
}
}
@@ -1359,15 +1340,7 @@ nsHTMLDocument::Open()
#ifndef NECKO
result = NS_NewURL(&sourceURL, "about:blank");
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull;
- result = service->NewURI("about:blank", nsnull, &uri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&sourceURL);
- NS_RELEASE(uri);
+ result = NS_NewURL(&sourceURL, "about:blank");
#endif // NECKO
if (NS_SUCCEEDED(result)) {
@@ -1392,15 +1365,7 @@ nsHTMLDocument::Open(JSContext *cx, jsval *argv, PRUint32 argc)
#ifndef NECKO
result = NS_NewURL(&sourceURL, "about:blank");
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull;
- result = service->NewURI("about:blank", nsnull, &uri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&sourceURL);
- NS_RELEASE(uri);
+ result = NS_NewURI(&sourceURL, "about:blank");
#endif // NECKO
}
diff --git a/mozilla/dom/src/jsurl/jsurl.cpp b/mozilla/dom/src/jsurl/jsurl.cpp
index 56d6467cd68..66b7875c8c6 100644
--- a/mozilla/dom/src/jsurl/jsurl.cpp
+++ b/mozilla/dom/src/jsurl/jsurl.cpp
@@ -21,10 +21,12 @@
#include "xp.h"
#include "plstr.h"
#include "prmem.h"
+#ifndef NECKO
#include "netutils.h"
#include "mkselect.h"
#include "mktcp.h"
#include "mkgeturl.h"
+#endif
#include
#include
@@ -32,7 +34,9 @@
#include "net.h"
#include "jsurl.h"
#include "nsIURL.h"
+#ifndef NECKO
#include "nsIConnectionInfo.h"
+#endif
#include "nsIStreamListener.h"
#include "nsIScriptContextOwner.h"
#include "nsIScriptContext.h"
@@ -434,7 +438,7 @@ PR_IMPLEMENT(void)
NET_InitJavaScriptProtocol(void)
{
#ifdef NECKO
- NS_WARNING(0, "Brendan said he would implement the javascript: protocol.");
+ NS_WARNING("Brendan said he would implement the javascript: protocol.");
#else
static NET_ProtoImpl mocha_proto_impl;
diff --git a/mozilla/layout/generic/nsObjectFrame.cpp b/mozilla/layout/generic/nsObjectFrame.cpp
index de4dd074833..05de45a486f 100644
--- a/mozilla/layout/generic/nsObjectFrame.cpp
+++ b/mozilla/layout/generic/nsObjectFrame.cpp
@@ -111,7 +111,7 @@ public:
NS_IMETHOD GetParameter(const char* name, const char* *result);
- NS_IMETHOD GetDocumentBase(const char* *result);
+ NS_IMETHOD GetDocumentBase(char* *result);
NS_IMETHOD GetDocumentEncoding(const char* *result);
@@ -225,11 +225,7 @@ protected:
nsHTMLReflowMetrics& aDesiredSize);
-#ifdef NECKO
nsresult SetFullURL(nsIURI* aURL);
-#else
- nsresult SetFullURL(nsIURI* aURL);
-#endif
nsresult InstantiateWidget(nsIPresContext& aPresContext,
nsHTMLReflowMetrics& aMetrics,
@@ -241,12 +237,7 @@ protected:
const nsHTMLReflowState& aReflowState,
nsIPluginHost* aPluginHost,
const char* aMimetype,
-#ifdef NECKO
- nsIURI* aURL
-#else
- nsIURI* aURL
-#endif
- );
+ nsIURI* aURL);
nsresult HandleImage(nsIPresContext& aPresContext,
nsHTMLReflowMetrics& aMetrics,
@@ -254,19 +245,11 @@ protected:
nsReflowStatus& aStatus,
nsIFrame* child);
-#ifdef NECKO
nsresult GetBaseURL(nsIURI* &aURL);
-#else
- nsresult GetBaseURL(nsIURI* &aURL);
-#endif
private:
nsPluginInstanceOwner *mInstanceOwner;
-#ifdef NECKO
nsIURI *mFullURL;
-#else
- nsIURI *mFullURL;
-#endif
nsIFrame *mFirstChild;
nsIWidget *mWidget;
};
@@ -585,13 +568,8 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
nsISupports *container = nsnull;
nsIPluginHost *pluginHost = nsnull;
nsIContentViewerContainer *cv = nsnull;
-#ifdef NECKO
nsIURI* baseURL = nsnull;
nsIURI* fullURL = nsnull;
-#else
- nsIURI* baseURL = nsnull;
- nsIURI* fullURL = nsnull;
-#endif
nsAutoString classid;
PRInt32 nameSpaceID;
@@ -625,14 +603,10 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
if(NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::codebase, codeBase) &&
classid != JAVA_CLASS_ID)
{
+ nsIURI* codeBaseURL = nsnull;
#ifdef NECKO
- nsIURI* codeBaseURL = nsnull;
- char* codeBaseStr = codeBase.ToNewCString();
- NS_ASSERTION(codeBaseStr, "out of memory");
- rv = NS_NewURI(&codeBaseURL, codeBaseStr, baseURL);
- nsCRT::free(codeBaseStr);
+ rv = NS_NewURI(&codeBaseURL, codeBase, baseURL);
#else
- nsIURI* codeBaseURL = nsnull;
rv = NS_NewURL(&codeBaseURL, codeBase, baseURL, nsnull, group);
#endif
if(rv == NS_OK)
@@ -652,10 +626,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
// Create an absolute URL
if(classid != JAVA_CLASS_ID) {
#ifdef NECKO
- char* classidStr = classid.ToNewCString();
- NS_ASSERTION(classidStr, "out of memory");
- rv = NS_NewURI(&fullURL, classidStr, baseURL);
- nsCRT::free(classidStr);
+ rv = NS_NewURI(&fullURL, classid, baseURL);
#else
rv = NS_NewURL(&fullURL, classid, baseURL, nsnull, group);
#endif
@@ -715,10 +686,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
{
nsIURI* codeBaseURL = nsnull;
#ifdef NECKO
- char* codeBaseStr = codeBase.ToNewCString();
- NS_ASSERTION(codeBaseStr, "out of memory");
- rv = NS_NewURI(&fullURL, codeBaseStr, baseURL);
- nsCRT::free(codeBaseStr);
+ rv = NS_NewURI(&fullURL, codeBase, baseURL);
#else
rv = NS_NewURL(&fullURL, codeBase, baseURL, nsnull, group);
#endif
@@ -826,14 +794,10 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
nsAutoString codeBase;
if (NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::codebase, codeBase))
{
+ nsIURI* codeBaseURL = nsnull;
#ifdef NECKO
- nsIURI* codeBaseURL = nsnull;
- char* codeBaseStr = codeBase.ToNewCString();
- NS_ASSERTION(codeBasestr, "out of memory");
- rv = NS_NewURI(&codeBaseURL, codeBaseStr, baseURL);
- nsCRT::free(codeBaseStr);
+ rv = NS_NewURI(&codeBaseURL, codeBase, baseURL);
#else
- nsIURI* codeBaseURL = nsnull;
rv = NS_NewURL(&codeBaseURL, codeBase, baseURL, nsnull, group);
#endif
if(rv == NS_OK)
@@ -845,10 +809,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
// Create an absolute URL
#ifdef NECKO
- char* srcStr = src.ToNewCString();
- NS_ASSERTION(srcStr, "out of memory");
- rv = NS_NewURI(&fullURL, srcStr, baseURL);
- nsCRT::free(srcStr);
+ rv = NS_NewURI(&fullURL, src, baseURL);
#else
rv = NS_NewURL(&fullURL, src, baseURL, nsnull, group);
NS_IF_RELEASE(group);
@@ -875,10 +836,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
{
#ifdef NECKO
// Create an absolute URL
- char* srcStr = src.ToNewCString();
- NS_ASSERTION(srcStr, "out of memory");
- rv = NS_NewURL(&fullURL, srcStr, baseURL);
- nsCRT::free(srcStr);
+ rv = NS_NewURI(&fullURL, src, baseURL);
#else
nsIURLGroup* group = nsnull;
if (nsnull != baseURL)
@@ -893,10 +851,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
{
#ifdef NECKO
// Create an absolute URL
- char* srcStr = src.ToNewCString();
- NS_ASSERTION(srcStr, "out of memory");
- rv = NS_NewURI(&fullURL, srcStr, baseURL);
- nsCRT::free(srcStr);
+ rv = NS_NewURI(&fullURL, src, baseURL);
#else
nsIURLGroup* group = nsnull;
if (nsnull != baseURL)
@@ -992,12 +947,7 @@ nsObjectFrame::InstantiatePlugin(nsIPresContext& aPresContext,
const nsHTMLReflowState& aReflowState,
nsIPluginHost* aPluginHost,
const char* aMimetype,
-#ifdef NECKO
- nsIURI* aURL
-#else
- nsIURI* aURL
-#endif
- )
+ nsIURI* aURL)
{
nsIView *parentWithView;
nsPoint origin;
@@ -1109,20 +1059,12 @@ nsObjectFrame::HandleImage(nsIPresContext& aPresContext,
nsresult
-#ifdef NECKO
nsObjectFrame::GetBaseURL(nsIURI* &aURL)
-#else
-nsObjectFrame::GetBaseURL(nsIURI* &aURL)
-#endif
{
nsIHTMLContent* htmlContent;
if (NS_SUCCEEDED(mContent->QueryInterface(kIHTMLContentIID, (void**)&htmlContent)))
{
-#ifdef NECKO
- htmlContent->GetBaseURI(aURL);
-#else
htmlContent->GetBaseURL(aURL);
-#endif
NS_RELEASE(htmlContent);
}
else
@@ -1367,11 +1309,7 @@ nsObjectFrame::Scrolled(nsIView *aView)
}
nsresult
-#ifdef NECKO
nsObjectFrame::SetFullURL(nsIURI* aURL)
-#else
-nsObjectFrame::SetFullURL(nsIURI* aURL)
-#endif
{
NS_IF_RELEASE(mFullURL);
mFullURL = aURL;
@@ -1746,19 +1684,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarge
#ifndef NECKO
rv = NS_MakeAbsoluteURL(baseURL, nsString(), uniurl, fullurl);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv);
- if (NS_FAILED(rv)) return rv;
-
- nsIURI *baseUri = nsnull;
- rv = baseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(rv)) return rv;
-
- char *absUrlStr = nsnull;
- const char *urlSpec = uniurl.GetBuffer();
- rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr);
- NS_RELEASE(baseUri);
- fullurl = absUrlStr;
- delete [] absUrlStr;
+ rv = NS_MakeAbsoluteURI(uniurl, baseURL, fullurl);
#endif // NECKO
NS_IF_RELEASE(baseURL);
@@ -2053,7 +1979,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetParameter(const char* name, const char*
return NS_OK;
}
-NS_IMETHODIMP nsPluginInstanceOwner::GetDocumentBase(const char* *result)
+NS_IMETHODIMP nsPluginInstanceOwner::GetDocumentBase(char* *result)
{
if (nsnull != mContext)
{
@@ -2065,7 +1991,16 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetDocumentBase(const char* *result)
nsCOMPtr docURL( dont_AddRef(doc->GetDocumentURL()) );
+#ifdef NECKO
nsresult rv = docURL->GetSpec(result);
+#else
+ const char* spec;
+ nsresult rv = docURL->GetSpec(&spec);
+ if (NS_FAILED(rv)) return rv;
+ *result = nsCRT::strdup(spec);
+ if (*result == nsnull)
+ return NS_ERROR_OUT_OF_MEMORY;
+#endif
return rv;
}
diff --git a/mozilla/layout/html/base/src/nsFrameTraversal.cpp b/mozilla/layout/html/base/src/nsFrameTraversal.cpp
new file mode 100644
index 00000000000..ce9e3af871b
--- /dev/null
+++ b/mozilla/layout/html/base/src/nsFrameTraversal.cpp
@@ -0,0 +1,287 @@
+#include "nsFrameTraversal.h"
+#include "nsFrameList.h"
+
+
+static NS_DEFINE_IID(kIEnumeratorIID, NS_IENUMERATOR_IID);
+static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
+
+
+class nsFrameIterator: public nsIEnumerator
+{
+public:
+ NS_DECL_ISUPPORTS
+
+ NS_IMETHOD First();
+
+ NS_IMETHOD Last();
+
+ NS_IMETHOD Next()=0;
+
+ NS_IMETHOD Prev()=0;
+
+ NS_IMETHOD CurrentItem(nsISupports **aItem);
+
+ NS_IMETHOD IsDone();//what does this mean??off edge? yes
+
+ nsFrameIterator();
+protected:
+ void setCurrent(nsIFrame *aFrame){mCurrent = aFrame;}
+ nsIFrame *getCurrent(){return mCurrent;}
+ void setStart(nsIFrame *aFrame){mStart = aFrame;}
+ nsIFrame *getStart(){return mStart;}
+ nsIFrame *getLast(){return mLast;}
+ void setLast(nsIFrame *aFrame){mLast = aFrame;}
+ PRInt8 getOffEdge(){return mOffEdge;}
+ void setOffEdge(PRInt8 aOffEdge){mOffEdge = aOffEdge;}
+private:
+ nsIFrame *mStart;
+ nsIFrame *mCurrent;
+ nsIFrame *mLast; //the last one that was in current;
+ PRInt8 mOffEdge; //0= no -1 to far prev, 1 to far next;
+};
+
+
+/*
+class nsFastFrameIterator: public nsFrameIterator
+{
+ nsFastFrameIterator(nsIFrame *start);
+private :
+
+ NS_IMETHOD Next();
+
+ NS_IMETHOD Prev();
+
+}
+*/
+
+class nsLeafIterator: public nsFrameIterator
+{
+public:
+ nsLeafIterator(nsIFrame *start);
+private :
+
+ NS_IMETHOD Next();
+
+ NS_IMETHOD Prev();
+
+};
+
+/************IMPLEMENTATIONS**************/
+
+nsresult
+NS_NewFrameTraversal(nsIEnumerator **aEnumerator, nsTraversalType aType, nsIFrame *aStart)
+{
+ if (!aEnumerator || !aStart)
+ return NS_ERROR_NULL_POINTER;
+ switch(aType)
+ {
+ case LEAF: {
+ nsLeafIterator *trav = new nsLeafIterator(aStart);
+ if (!trav)
+ return NS_ERROR_OUT_OF_MEMORY;
+ *aEnumerator = (nsIEnumerator *)trav;
+ NS_ADDREF(trav);
+ }
+ break;
+#if 0
+ case EXTENSIVE:{
+ nsExtensiveTraversal *trav = new nsExtensiveTraversal(aStart);
+ if (!trav)
+ return NS_ERROR_NOMEMORY;
+ *aEnumerator = (nsIEnumerator *)trav;
+ NS_ADDREF(trav);
+ }
+ break;
+ case FASTEST:{
+ nsFastestTraversal *trav = new nsFastestTraversal(aStart);
+ if (!trav)
+ return NS_ERROR_NOMEMORY;
+ *aEnumerator = (nsIEnumerator *)trav;
+ NS_ADDREF(trav);
+ }
+#endif
+ default:
+ return NS_ERROR_NOT_IMPLEMENTED;
+ break;
+ }
+ return NS_OK;
+}
+
+
+
+/*********nsFrameIterator************/
+NS_IMPL_ADDREF(nsFrameIterator)
+
+NS_IMPL_RELEASE(nsFrameIterator)
+
+
+
+nsFrameIterator::nsFrameIterator()
+{
+ mOffEdge = 0;
+ mLast = nsnull;
+ mCurrent = nsnull;
+ mStart = nsnull;
+ NS_INIT_REFCNT();
+}
+
+
+
+nsresult
+nsFrameIterator::QueryInterface(REFNSIID aIID, void** aInstancePtr)
+{
+ if (NULL == aInstancePtr) {
+ return NS_ERROR_NULL_POINTER;
+ }
+ if (aIID.Equals(kISupportsIID)) {
+ *aInstancePtr = (void *)(nsISupports *)this;
+ NS_ADDREF_THIS();
+ return NS_OK;
+ }
+ if (aIID.Equals(kIEnumeratorIID)) {
+ *aInstancePtr = (void*)(nsIEnumerator*)this;
+ NS_ADDREF_THIS();
+ return NS_OK;
+ }
+ return NS_NOINTERFACE;
+}
+
+
+
+nsresult
+nsFrameIterator::CurrentItem(nsISupports **aItem)
+{
+ if (!aItem)
+ return NS_ERROR_NULL_POINTER;
+ *aItem = mCurrent;
+ return NS_OK;
+}
+
+
+
+nsresult
+nsFrameIterator::IsDone()//what does this mean??off edge? yes
+{
+ if (mOffEdge != 0)
+ return NS_OK;
+ return NS_COMFALSE;
+}
+
+
+
+nsresult
+nsFrameIterator::First()
+{
+ mCurrent = mStart;
+ return NS_OK;
+}
+
+
+
+nsresult
+nsFrameIterator::Last()
+{
+ return NS_ERROR_FAILURE;
+}
+
+
+
+/*********LEAFITERATOR**********/
+
+
+nsLeafIterator::nsLeafIterator(nsIFrame *aStart)
+{
+ setStart(aStart);
+ setCurrent(aStart);
+ setLast(aStart);
+}
+
+
+
+nsresult
+nsLeafIterator::Next()
+{
+//recursive-oid method to get next frame
+ nsIFrame *result;
+ nsIFrame *parent = getCurrent();
+ if (!parent)
+ parent = getLast();
+ while(NS_SUCCEEDED(parent->FirstChild(nsnull,&result)) && result)
+ {
+ parent = result;
+ }
+ if (parent != getCurrent())
+ {
+ result = parent;
+ }
+ else {
+ while(parent){
+ if (NS_SUCCEEDED(parent->GetNextSibling(&result)) && result){
+ parent = result;
+ while(NS_SUCCEEDED(parent->FirstChild(nsnull,&result)) && result)
+ {
+ parent = result;
+ }
+ result = parent;
+ break;
+ }
+ else
+ if (NS_FAILED(parent->GetParent(&result)) || !result){
+ result = nsnull;
+ break;
+ }
+ else
+ parent = result;
+ }
+ }
+ setCurrent(result);
+ if (!result)
+ setOffEdge(1);
+ return nsnull;
+}
+
+
+
+
+nsresult
+nsLeafIterator::Prev()
+{
+//recursive-oid method to get prev frame
+ nsIFrame *result;
+ nsIFrame *parent = getCurrent();
+ if (!parent)
+ return NS_ERROR_FAILURE;
+
+ parent = getLast();
+ while(parent){
+ nsIFrame *grandParent;
+ if (NS_SUCCEEDED(parent->GetParent(&grandParent)) && grandParent){
+ nsIFrame * grandFchild;
+ if (NS_SUCCEEDED(grandParent->FirstChild(nsnull,&grandFchild)) && grandFchild){
+ nsFrameList list(grandFchild);
+ if (result = list.GetPrevSiblingFor(parent) ){
+ parent = result;
+ while(NS_SUCCEEDED(parent->FirstChild(nsnull,&result)) && result){
+ parent = result;
+ while(NS_SUCCEEDED(parent->GetNextSibling(&result)) && result){
+ parent = result;
+ }
+ }
+ result = parent;
+ break;
+ }
+ else
+ if (NS_FAILED(parent->GetParent(&result)) || !result){
+ result = nsnull;
+ break;
+ }
+ else
+ parent = result;
+ }
+ }
+ }
+ setCurrent(result);
+ if (!result)
+ setOffEdge(-1);
+ return nsnull;
+}
diff --git a/mozilla/layout/html/base/src/nsObjectFrame.cpp b/mozilla/layout/html/base/src/nsObjectFrame.cpp
index de4dd074833..05de45a486f 100644
--- a/mozilla/layout/html/base/src/nsObjectFrame.cpp
+++ b/mozilla/layout/html/base/src/nsObjectFrame.cpp
@@ -111,7 +111,7 @@ public:
NS_IMETHOD GetParameter(const char* name, const char* *result);
- NS_IMETHOD GetDocumentBase(const char* *result);
+ NS_IMETHOD GetDocumentBase(char* *result);
NS_IMETHOD GetDocumentEncoding(const char* *result);
@@ -225,11 +225,7 @@ protected:
nsHTMLReflowMetrics& aDesiredSize);
-#ifdef NECKO
nsresult SetFullURL(nsIURI* aURL);
-#else
- nsresult SetFullURL(nsIURI* aURL);
-#endif
nsresult InstantiateWidget(nsIPresContext& aPresContext,
nsHTMLReflowMetrics& aMetrics,
@@ -241,12 +237,7 @@ protected:
const nsHTMLReflowState& aReflowState,
nsIPluginHost* aPluginHost,
const char* aMimetype,
-#ifdef NECKO
- nsIURI* aURL
-#else
- nsIURI* aURL
-#endif
- );
+ nsIURI* aURL);
nsresult HandleImage(nsIPresContext& aPresContext,
nsHTMLReflowMetrics& aMetrics,
@@ -254,19 +245,11 @@ protected:
nsReflowStatus& aStatus,
nsIFrame* child);
-#ifdef NECKO
nsresult GetBaseURL(nsIURI* &aURL);
-#else
- nsresult GetBaseURL(nsIURI* &aURL);
-#endif
private:
nsPluginInstanceOwner *mInstanceOwner;
-#ifdef NECKO
nsIURI *mFullURL;
-#else
- nsIURI *mFullURL;
-#endif
nsIFrame *mFirstChild;
nsIWidget *mWidget;
};
@@ -585,13 +568,8 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
nsISupports *container = nsnull;
nsIPluginHost *pluginHost = nsnull;
nsIContentViewerContainer *cv = nsnull;
-#ifdef NECKO
nsIURI* baseURL = nsnull;
nsIURI* fullURL = nsnull;
-#else
- nsIURI* baseURL = nsnull;
- nsIURI* fullURL = nsnull;
-#endif
nsAutoString classid;
PRInt32 nameSpaceID;
@@ -625,14 +603,10 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
if(NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::codebase, codeBase) &&
classid != JAVA_CLASS_ID)
{
+ nsIURI* codeBaseURL = nsnull;
#ifdef NECKO
- nsIURI* codeBaseURL = nsnull;
- char* codeBaseStr = codeBase.ToNewCString();
- NS_ASSERTION(codeBaseStr, "out of memory");
- rv = NS_NewURI(&codeBaseURL, codeBaseStr, baseURL);
- nsCRT::free(codeBaseStr);
+ rv = NS_NewURI(&codeBaseURL, codeBase, baseURL);
#else
- nsIURI* codeBaseURL = nsnull;
rv = NS_NewURL(&codeBaseURL, codeBase, baseURL, nsnull, group);
#endif
if(rv == NS_OK)
@@ -652,10 +626,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
// Create an absolute URL
if(classid != JAVA_CLASS_ID) {
#ifdef NECKO
- char* classidStr = classid.ToNewCString();
- NS_ASSERTION(classidStr, "out of memory");
- rv = NS_NewURI(&fullURL, classidStr, baseURL);
- nsCRT::free(classidStr);
+ rv = NS_NewURI(&fullURL, classid, baseURL);
#else
rv = NS_NewURL(&fullURL, classid, baseURL, nsnull, group);
#endif
@@ -715,10 +686,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
{
nsIURI* codeBaseURL = nsnull;
#ifdef NECKO
- char* codeBaseStr = codeBase.ToNewCString();
- NS_ASSERTION(codeBaseStr, "out of memory");
- rv = NS_NewURI(&fullURL, codeBaseStr, baseURL);
- nsCRT::free(codeBaseStr);
+ rv = NS_NewURI(&fullURL, codeBase, baseURL);
#else
rv = NS_NewURL(&fullURL, codeBase, baseURL, nsnull, group);
#endif
@@ -826,14 +794,10 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
nsAutoString codeBase;
if (NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::codebase, codeBase))
{
+ nsIURI* codeBaseURL = nsnull;
#ifdef NECKO
- nsIURI* codeBaseURL = nsnull;
- char* codeBaseStr = codeBase.ToNewCString();
- NS_ASSERTION(codeBasestr, "out of memory");
- rv = NS_NewURI(&codeBaseURL, codeBaseStr, baseURL);
- nsCRT::free(codeBaseStr);
+ rv = NS_NewURI(&codeBaseURL, codeBase, baseURL);
#else
- nsIURI* codeBaseURL = nsnull;
rv = NS_NewURL(&codeBaseURL, codeBase, baseURL, nsnull, group);
#endif
if(rv == NS_OK)
@@ -845,10 +809,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
// Create an absolute URL
#ifdef NECKO
- char* srcStr = src.ToNewCString();
- NS_ASSERTION(srcStr, "out of memory");
- rv = NS_NewURI(&fullURL, srcStr, baseURL);
- nsCRT::free(srcStr);
+ rv = NS_NewURI(&fullURL, src, baseURL);
#else
rv = NS_NewURL(&fullURL, src, baseURL, nsnull, group);
NS_IF_RELEASE(group);
@@ -875,10 +836,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
{
#ifdef NECKO
// Create an absolute URL
- char* srcStr = src.ToNewCString();
- NS_ASSERTION(srcStr, "out of memory");
- rv = NS_NewURL(&fullURL, srcStr, baseURL);
- nsCRT::free(srcStr);
+ rv = NS_NewURI(&fullURL, src, baseURL);
#else
nsIURLGroup* group = nsnull;
if (nsnull != baseURL)
@@ -893,10 +851,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
{
#ifdef NECKO
// Create an absolute URL
- char* srcStr = src.ToNewCString();
- NS_ASSERTION(srcStr, "out of memory");
- rv = NS_NewURI(&fullURL, srcStr, baseURL);
- nsCRT::free(srcStr);
+ rv = NS_NewURI(&fullURL, src, baseURL);
#else
nsIURLGroup* group = nsnull;
if (nsnull != baseURL)
@@ -992,12 +947,7 @@ nsObjectFrame::InstantiatePlugin(nsIPresContext& aPresContext,
const nsHTMLReflowState& aReflowState,
nsIPluginHost* aPluginHost,
const char* aMimetype,
-#ifdef NECKO
- nsIURI* aURL
-#else
- nsIURI* aURL
-#endif
- )
+ nsIURI* aURL)
{
nsIView *parentWithView;
nsPoint origin;
@@ -1109,20 +1059,12 @@ nsObjectFrame::HandleImage(nsIPresContext& aPresContext,
nsresult
-#ifdef NECKO
nsObjectFrame::GetBaseURL(nsIURI* &aURL)
-#else
-nsObjectFrame::GetBaseURL(nsIURI* &aURL)
-#endif
{
nsIHTMLContent* htmlContent;
if (NS_SUCCEEDED(mContent->QueryInterface(kIHTMLContentIID, (void**)&htmlContent)))
{
-#ifdef NECKO
- htmlContent->GetBaseURI(aURL);
-#else
htmlContent->GetBaseURL(aURL);
-#endif
NS_RELEASE(htmlContent);
}
else
@@ -1367,11 +1309,7 @@ nsObjectFrame::Scrolled(nsIView *aView)
}
nsresult
-#ifdef NECKO
nsObjectFrame::SetFullURL(nsIURI* aURL)
-#else
-nsObjectFrame::SetFullURL(nsIURI* aURL)
-#endif
{
NS_IF_RELEASE(mFullURL);
mFullURL = aURL;
@@ -1746,19 +1684,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarge
#ifndef NECKO
rv = NS_MakeAbsoluteURL(baseURL, nsString(), uniurl, fullurl);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv);
- if (NS_FAILED(rv)) return rv;
-
- nsIURI *baseUri = nsnull;
- rv = baseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(rv)) return rv;
-
- char *absUrlStr = nsnull;
- const char *urlSpec = uniurl.GetBuffer();
- rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr);
- NS_RELEASE(baseUri);
- fullurl = absUrlStr;
- delete [] absUrlStr;
+ rv = NS_MakeAbsoluteURI(uniurl, baseURL, fullurl);
#endif // NECKO
NS_IF_RELEASE(baseURL);
@@ -2053,7 +1979,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetParameter(const char* name, const char*
return NS_OK;
}
-NS_IMETHODIMP nsPluginInstanceOwner::GetDocumentBase(const char* *result)
+NS_IMETHODIMP nsPluginInstanceOwner::GetDocumentBase(char* *result)
{
if (nsnull != mContext)
{
@@ -2065,7 +1991,16 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetDocumentBase(const char* *result)
nsCOMPtr docURL( dont_AddRef(doc->GetDocumentURL()) );
+#ifdef NECKO
nsresult rv = docURL->GetSpec(result);
+#else
+ const char* spec;
+ nsresult rv = docURL->GetSpec(&spec);
+ if (NS_FAILED(rv)) return rv;
+ *result = nsCRT::strdup(spec);
+ if (*result == nsnull)
+ return NS_ERROR_OUT_OF_MEMORY;
+#endif
return rv;
}
diff --git a/mozilla/layout/html/content/src/nsGenericHTMLElement.cpp b/mozilla/layout/html/content/src/nsGenericHTMLElement.cpp
index 9587cfc167b..e0f85e440b4 100644
--- a/mozilla/layout/html/content/src/nsGenericHTMLElement.cpp
+++ b/mozilla/layout/html/content/src/nsGenericHTMLElement.cpp
@@ -44,11 +44,10 @@
#include "nsISupportsArray.h"
#include "nsIURL.h"
#ifdef NECKO
-#include "nsIIOService.h"
-#include "nsIURL.h"
-static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
-#endif // NECKO
+#include "nsNeckoUtil.h"
+#else
#include "nsIURLGroup.h"
+#endif // NECKO
#include "nsStyleConsts.h"
#include "nsXIFConverter.h"
#include "nsFrame.h"
@@ -995,29 +994,20 @@ nsGenericHTMLElement::GetBaseURL(nsIHTMLAttributes* aAttributes,
value.GetStringValue(baseHref);
nsIURI* url = nsnull;
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
docBaseURL->GetURLGroup(&urlGroup);
if (urlGroup) {
result = urlGroup->CreateURL(&url, docBaseURL, baseHref, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
result = NS_NewURL(&url, baseHref, docBaseURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
- result = docBaseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(result)) return result;
-
- const char *uriStr = baseHref.GetBuffer();
- result = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&url);
+ result = NS_NewURI(&url, baseHref, docBaseURL);
#endif // NECKO
}
*aBaseURL = url;
@@ -1962,19 +1952,7 @@ nsGenericHTMLElement::MapBackgroundAttributesInto(nsIHTMLAttributes* aAttributes
#ifndef NECKO
rv = NS_MakeAbsoluteURL(docURL, "", spec, absURLSpec);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv);
- if (NS_FAILED(rv)) return;
-
- nsIURI *baseUri = nsnull;
- rv = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(rv)) return;
-
- char *absUrlStr = nsnull;
- const char *urlSpec = spec.GetBuffer();
- rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr);
- NS_RELEASE(baseUri);
- absURLSpec = absUrlStr;
- delete [] absUrlStr;
+ rv = NS_MakeAbsoluteURI(spec, docURL, absURLSpec);
#endif // NECKO
if (NS_SUCCEEDED(rv)) {
nsStyleColor* color = (nsStyleColor*)
diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
index 9f45508dfef..83e473cb25f 100644
--- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
@@ -21,18 +21,17 @@
#include "nsICSSStyleSheet.h"
#include "nsICSSLoader.h"
#include "nsIUnicharInputStream.h"
-#include "nsIUnicharStreamLoader.h"
#include "nsIHTMLContent.h"
#include "nsIHTMLContentContainer.h"
#include "nsIURL.h"
#ifdef NECKO
-#include "nsIIOService.h"
-#include "nsIURL.h"
-#include "nsIServiceManager.h"
-static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
-#endif // NECKO
+#include "nsNeckoUtil.h"
+class nsIUnicharStreamLoader : public nsISupports {}; // XXX what?
+#else
+#include "nsIUnicharStreamLoader.h"
#include "nsIURLGroup.h"
#include "nsIHttpURL.h"
+#endif // NECKO
#include "nsIPresShell.h"
#include "nsIPresContext.h"
#include "nsIViewManager.h"
@@ -90,7 +89,9 @@ static NS_DEFINE_IID(kIDOMHTMLTextAreaElementIID, NS_IDOMHTMLTEXTAREAELEMENT_IID
static NS_DEFINE_IID(kIDOMHTMLOptionElementIID, NS_IDOMHTMLOPTIONELEMENT_IID);
static NS_DEFINE_IID(kIFormControlIID, NS_IFORMCONTROL_IID);
static NS_DEFINE_IID(kIHTMLContentSinkIID, NS_IHTML_CONTENT_SINK_IID);
+#ifndef NECKO
static NS_DEFINE_IID(kIHTTPURLIID, NS_IHTTPURL_IID);
+#endif
static NS_DEFINE_IID(kIScrollableViewIID, NS_ISCROLLABLEVIEW_IID);
static NS_DEFINE_IID(kIHTMLDocumentIID, NS_IHTMLDOCUMENT_IID);
static NS_DEFINE_IID(kIHTMLContentContainerIID, NS_IHTMLCONTENTCONTAINER_IID);
@@ -1503,12 +1504,18 @@ HTMLContentSink::Init(nsIDocument* aDoc,
mCurrentContext->Begin(eHTMLTag_html, mRoot);
mContextStack.AppendElement(mCurrentContext);
+#ifdef NECKO
+ char* spec;
+#else
const char* spec;
+#endif
(void)aURL->GetSpec(&spec);
SINK_TRACE(SINK_TRACE_CALLS,
("HTMLContentSink::Init: this=%p url='%s'",
this, spec));
-
+#ifdef NECKO
+ nsCRT::free(spec);
+#endif
return NS_OK;
}
@@ -2032,10 +2039,23 @@ HTMLContentSink::StartLayout()
// If the document we are loading has a reference or it is a
// frameset document, disable the scroll bars on the views.
+#ifdef NECKO
+ char* ref;
+ nsIURL* url;
+ nsresult rv = mDocumentURL->QueryInterface(nsIURL::GetIID(), (void**)&url);
+ if (NS_SUCCEEDED(rv)) {
+ rv = url->GetRef(&ref);
+ NS_RELEASE(url);
+ }
+#else
const char* ref;
nsresult rv = mDocumentURL->GetRef(&ref);
+#endif
if (rv == NS_OK) {
mRef = new nsString(ref);
+#ifdef NECKO
+ nsCRT::free(ref);
+#endif
}
if ((nsnull != ref) || mFrameset) {
@@ -2469,31 +2489,20 @@ HTMLContentSink::ProcessStyleLink(nsIHTMLContent* aElement,
if ((0 == mimeType.Length()) || mimeType.EqualsIgnoreCase("text/css")) {
nsIURI* url = nsnull;
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
mDocumentBaseURL->GetURLGroup(&urlGroup);
if (urlGroup) {
result = urlGroup->CreateURL(&url, mDocumentBaseURL, aHref, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
result = NS_NewURL(&url, aHref, mDocumentBaseURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
-
- result = mDocumentBaseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(result)) return result;
-
- const char *uriStr = aHref.GetBuffer();
- result = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&url);
- NS_RELEASE(uri);
+ result = NS_NewURI(&url, aHref, mDocumentBaseURL);
#endif // NECKO
}
if (NS_OK != result) {
@@ -2658,10 +2667,12 @@ HTMLContentSink::ProcessMETATag(const nsIParserNode& aNode)
}
mHead->AppendChildTo(it, PR_FALSE);
+#ifndef NECKO
// If we are processing an HTTP url, handle meta http-equiv cases
nsIHttpURL* httpUrl = nsnull;
rv = mDocumentURL->QueryInterface(kIHTTPURLIID, (void **)&httpUrl);
-
+#endif
+
// set any HTTP-EQUIV data into document's header data as well as url
nsAutoString header;
it->GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::httpEquiv, header);
@@ -2669,6 +2680,9 @@ HTMLContentSink::ProcessMETATag(const nsIParserNode& aNode)
nsAutoString result;
it->GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::content, result);
if (result.Length() > 0) {
+#ifdef NECKO
+ NS_ASSERTION(0, "how does necko add mime headers?");
+#else
if (nsnull != httpUrl) {
char* value = result.ToNewCString(), *csHeader;
if (!value) {
@@ -2685,6 +2699,7 @@ HTMLContentSink::ProcessMETATag(const nsIParserNode& aNode)
delete[] csHeader;
delete[] value;
}
+#endif
header.ToLowerCase();
nsIAtom* fieldAtom = NS_NewAtom(header);
@@ -2706,7 +2721,9 @@ HTMLContentSink::ProcessMETATag(const nsIParserNode& aNode)
NS_IF_RELEASE(fieldAtom);
}
}
+#ifndef NECKO
NS_IF_RELEASE(httpUrl);
+#endif
NS_RELEASE(it);
}
@@ -2822,7 +2839,11 @@ HTMLContentSink::EvaluateScript(nsString& aScript,
nsAutoString ret;
nsIURI* docURL = mDocument->GetDocumentURL();
+#ifdef NECKO
+ char* url;
+#else
const char* url;
+#endif
if (docURL) {
(void)docURL->GetSpec(&url);
}
@@ -2911,31 +2932,20 @@ HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode)
if (src.Length() > 0) {
// Use the SRC attribute value to load the URL
nsIURI* url = nsnull;
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
mDocumentBaseURL->GetURLGroup(&urlGroup);
if (urlGroup) {
rv = urlGroup->CreateURL(&url, mDocumentBaseURL, src, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
rv = NS_NewURL(&url, src, mDocumentBaseURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv);
- if (NS_FAILED(rv)) return rv;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
-
- rv = mDocumentBaseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(rv)) return rv;
-
- const char *uriStr = src.GetBuffer();
- rv = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(rv)) return rv;
-
- rv = uri->QueryInterface(nsIURI::GetIID(), (void**)&url);
- NS_RELEASE(uri);
+ rv = NS_NewURI(&url, src, mDocumentBaseURL);
#endif // NECKO
}
if (NS_OK != rv) {
@@ -2946,11 +2956,15 @@ HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode)
// onto it as opaque data.
NS_ADDREF(this);
+#ifdef NECKO
+ NS_ASSERTION(0, "fix me");
+#else
nsIUnicharStreamLoader* loader;
rv = NS_NewUnicharStreamLoader(&loader,
url,
(nsStreamCompleteFunc)nsDoneLoadingScript,
(void *)this);
+#endif
NS_RELEASE(url);
if (NS_OK == rv) {
rv = NS_ERROR_HTMLPARSER_BLOCK;
@@ -3079,31 +3093,20 @@ HTMLContentSink::ProcessSTYLETag(const nsIParserNode& aNode)
// XXX what does nav do?
// Use the SRC attribute value to load the URL
nsIURI* url = nsnull;
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
mDocumentBaseURL->GetURLGroup(&urlGroup);
if (urlGroup) {
rv = urlGroup->CreateURL(&url, mDocumentBaseURL, src, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
rv = NS_NewURL(&url, src, mDocumentBaseURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv);
- if (NS_FAILED(rv)) return rv;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
-
- rv = mDocumentBaseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(rv)) return rv;
-
- const char *uriStr = src.GetBuffer();
- rv = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(rv)) return rv;
-
- rv = uri->QueryInterface(nsIURI::GetIID(), (void**)&url);
- NS_RELEASE(uri);
+ rv = NS_NewURI(&url, src, mDocumentBaseURL);
#endif // NECKO
}
if (NS_OK != rv) {
diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.cpp b/mozilla/layout/html/document/src/nsHTMLDocument.cpp
index 4955c09c0f8..947a1e601f2 100644
--- a/mozilla/layout/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/layout/html/document/src/nsHTMLDocument.cpp
@@ -34,14 +34,15 @@
#include "nsIDOMComment.h"
#include "nsIDOMWindow.h"
#include "nsIDOMHTMLFormElement.h"
-#include "nsIPostToServer.h"
#include "nsIStreamListener.h"
#include "nsIURL.h"
#ifdef NECKO
#include "nsIIOService.h"
#include "nsIURL.h"
-#endif // NECKO
+#else
+#include "nsIPostToServer.h"
#include "nsIURLGroup.h"
+#endif // NECKO
#include "nsIContentViewerContainer.h"
#include "nsIWebShell.h"
#include "nsIDocumentLoader.h"
@@ -570,31 +571,20 @@ nsHTMLDocument:: SetBaseURL(const nsString& aURLSpec)
NS_IF_RELEASE(mBaseURL);
if (0 < aURLSpec.Length()) {
+#ifndef NECKO
nsIURLGroup* urlGroup = nsnull;
(void)mDocumentURL->GetURLGroup(&urlGroup);
if (urlGroup) {
result = urlGroup->CreateURL(&mBaseURL, mDocumentURL, aURLSpec, nsnull);
NS_RELEASE(urlGroup);
}
- else {
+ else
+#endif
+ {
#ifndef NECKO
result = NS_NewURL(&mBaseURL, aURLSpec, mDocumentURL);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull, *baseUri = nsnull;
-
- result = mDocumentURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri);
- if (NS_FAILED(result)) return result;
-
- const char *uriStr = aURLSpec.GetBuffer();
- result = service->NewURI(uriStr, baseUri, &uri);
- NS_RELEASE(baseUri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&mBaseURL);
- NS_RELEASE(uri);
+ result = NS_NewURI(&mBaseURL, aURLSpec, mDocumentURL);
#endif // NECKO
}
}
@@ -1202,8 +1192,8 @@ nsHTMLDocument::GetCookie(nsString& aCookie)
#ifndef NECKO
nsINetService *service;
nsresult res = nsServiceManager::GetService(kNetServiceCID,
- kINetServiceIID,
- (nsISupports **)&service);
+ kINetServiceIID,
+ (nsISupports **)&service);
if ((NS_OK == res) && (nsnull != service) && (nsnull != mDocumentURL)) {
res = service->GetCookieString(mDocumentURL, aCookie);
@@ -1274,16 +1264,7 @@ nsHTMLDocument::GetSourceDocumentURL(JSContext* cx,
#ifndef NECKO
result = NS_NewURL(sourceURL, url);
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull;
- const char *uriStr = url.GetBuffer();
- result = service->NewURI(uriStr, nsnull, &uri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)sourceURL);
- NS_RELEASE(uri);
+ result = NS_NewURI(sourceURL, url);
#endif // NECKO
}
}
@@ -1359,15 +1340,7 @@ nsHTMLDocument::Open()
#ifndef NECKO
result = NS_NewURL(&sourceURL, "about:blank");
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull;
- result = service->NewURI("about:blank", nsnull, &uri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&sourceURL);
- NS_RELEASE(uri);
+ result = NS_NewURL(&sourceURL, "about:blank");
#endif // NECKO
if (NS_SUCCEEDED(result)) {
@@ -1392,15 +1365,7 @@ nsHTMLDocument::Open(JSContext *cx, jsval *argv, PRUint32 argc)
#ifndef NECKO
result = NS_NewURL(&sourceURL, "about:blank");
#else
- NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result);
- if (NS_FAILED(result)) return result;
-
- nsIURI *uri = nsnull;
- result = service->NewURI("about:blank", nsnull, &uri);
- if (NS_FAILED(result)) return result;
-
- result = uri->QueryInterface(nsIURI::GetIID(), (void**)&sourceURL);
- NS_RELEASE(uri);
+ result = NS_NewURI(&sourceURL, "about:blank");
#endif // NECKO
}
diff --git a/mozilla/modules/oji/src/nsJVMPluginTagInfo.cpp b/mozilla/modules/oji/src/nsJVMPluginTagInfo.cpp
index 7ad3ab7618b..5cadca3de33 100644
--- a/mozilla/modules/oji/src/nsJVMPluginTagInfo.cpp
+++ b/mozilla/modules/oji/src/nsJVMPluginTagInfo.cpp
@@ -19,6 +19,7 @@
#include "nsJVMPluginTagInfo.h"
#include "nsIPluginTagInfo2.h"
#include "plstr.h"
+#include "nsCRT.h" // mixing metaphors with plstr.h!
#ifdef XP_UNIX
#undef Bool
#endif
@@ -130,7 +131,7 @@ nsJVMPluginTagInfo::GetCodeBase(const char* *result)
}
// Okay, we'll need to simulate it from the layout tag's base URL.
- const char* docBase;
+ char* docBase;
err = fPluginTagInfo->GetDocumentBase(&docBase);
if (err != NS_OK) return err;
PA_LOCK(codebase, const char*, docBase);
@@ -145,6 +146,7 @@ nsJVMPluginTagInfo::GetCodeBase(const char* *result)
}
PA_UNLOCK(docBase);
+ nsCRT::free(docBase);
*result = fSimulatedCodebase;
return NS_OK;
}
diff --git a/mozilla/modules/plugin/base/public/nsIPluginTagInfo2.h b/mozilla/modules/plugin/base/public/nsIPluginTagInfo2.h
index a9324ffd32d..0e0cdbba7f3 100644
--- a/mozilla/modules/plugin/base/public/nsIPluginTagInfo2.h
+++ b/mozilla/modules/plugin/base/public/nsIPluginTagInfo2.h
@@ -87,7 +87,7 @@ public:
GetParameter(const char* name, const char* *result) = 0;
NS_IMETHOD
- GetDocumentBase(const char* *result) = 0;
+ GetDocumentBase(char* *result) = 0;
// Return an encoding whose name is specified in:
// http://java.sun.com/products/jdk/1.1/docs/guide/intl/intl.doc.html#25303
diff --git a/mozilla/modules/plugin/base/src/nsPluginInstancePeer.cpp b/mozilla/modules/plugin/base/src/nsPluginInstancePeer.cpp
index 10d08448089..c894d5aac94 100644
--- a/mozilla/modules/plugin/base/src/nsPluginInstancePeer.cpp
+++ b/mozilla/modules/plugin/base/src/nsPluginInstancePeer.cpp
@@ -452,7 +452,7 @@ NS_IMETHODIMP nsPluginInstancePeerImpl::GetParameter(const char* name, const cha
}
}
-NS_IMETHODIMP nsPluginInstancePeerImpl::GetDocumentBase(const char* *result)
+NS_IMETHODIMP nsPluginInstancePeerImpl::GetDocumentBase(char* *result)
{
if (nsnull != mOwner)
{
diff --git a/mozilla/modules/plugin/base/src/nsPluginInstancePeer.h b/mozilla/modules/plugin/base/src/nsPluginInstancePeer.h
index 31852d3eacf..6fef6df9e30 100644
--- a/mozilla/modules/plugin/base/src/nsPluginInstancePeer.h
+++ b/mozilla/modules/plugin/base/src/nsPluginInstancePeer.h
@@ -109,7 +109,7 @@ public:
GetParameter(const char* name, const char* *result);
NS_IMETHOD
- GetDocumentBase(const char* *result);
+ GetDocumentBase(char* *result);
NS_IMETHOD
GetDocumentEncoding(const char* *result);
diff --git a/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.cpp b/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.cpp
index 10d08448089..c894d5aac94 100644
--- a/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.cpp
+++ b/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.cpp
@@ -452,7 +452,7 @@ NS_IMETHODIMP nsPluginInstancePeerImpl::GetParameter(const char* name, const cha
}
}
-NS_IMETHODIMP nsPluginInstancePeerImpl::GetDocumentBase(const char* *result)
+NS_IMETHODIMP nsPluginInstancePeerImpl::GetDocumentBase(char* *result)
{
if (nsnull != mOwner)
{
diff --git a/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.h b/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.h
index 31852d3eacf..6fef6df9e30 100644
--- a/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.h
+++ b/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.h
@@ -109,7 +109,7 @@ public:
GetParameter(const char* name, const char* *result);
NS_IMETHOD
- GetDocumentBase(const char* *result);
+ GetDocumentBase(char* *result);
NS_IMETHOD
GetDocumentEncoding(const char* *result);
diff --git a/mozilla/modules/plugin/public/nsIPluginTagInfo2.h b/mozilla/modules/plugin/public/nsIPluginTagInfo2.h
index a9324ffd32d..0e0cdbba7f3 100644
--- a/mozilla/modules/plugin/public/nsIPluginTagInfo2.h
+++ b/mozilla/modules/plugin/public/nsIPluginTagInfo2.h
@@ -87,7 +87,7 @@ public:
GetParameter(const char* name, const char* *result) = 0;
NS_IMETHOD
- GetDocumentBase(const char* *result) = 0;
+ GetDocumentBase(char* *result) = 0;
// Return an encoding whose name is specified in:
// http://java.sun.com/products/jdk/1.1/docs/guide/intl/intl.doc.html#25303
diff --git a/mozilla/modules/plugin/src/npglue.h b/mozilla/modules/plugin/src/npglue.h
index f65a001b63c..49ad83303eb 100644
--- a/mozilla/modules/plugin/src/npglue.h
+++ b/mozilla/modules/plugin/src/npglue.h
@@ -602,7 +602,7 @@ public:
GetParameter(const char* name, const char* *result);
NS_IMETHOD
- GetDocumentBase(const char* *result);
+ GetDocumentBase(char* *result);
// Return an encoding whose name is specified in:
// http://java.sun.com/products/jdk/1.1/docs/guide/intl/intl.doc.html#25303
diff --git a/mozilla/modules/plugin/src/nsPluginTagInfo.cpp b/mozilla/modules/plugin/src/nsPluginTagInfo.cpp
index a9db4cef5c0..8666f34a48c 100644
--- a/mozilla/modules/plugin/src/nsPluginTagInfo.cpp
+++ b/mozilla/modules/plugin/src/nsPluginTagInfo.cpp
@@ -232,10 +232,10 @@ nsPluginTagInfo::GetParameter(const char* name, const char* *result)
}
NS_METHOD
-nsPluginTagInfo::GetDocumentBase(const char* *result)
+nsPluginTagInfo::GetDocumentBase(char* *result)
{
- *result = (const char*)GetLayoutElement()->base_url;
- return NS_OK;
+ *result = nsCRT::strdup(GetLayoutElement()->base_url);
+ return *result ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
}
NS_METHOD
diff --git a/mozilla/modules/plugin/src/nsPluginTagInfo.h b/mozilla/modules/plugin/src/nsPluginTagInfo.h
index 906696a263c..56aa5fae158 100644
--- a/mozilla/modules/plugin/src/nsPluginTagInfo.h
+++ b/mozilla/modules/plugin/src/nsPluginTagInfo.h
@@ -68,7 +68,7 @@ public:
GetParameter(const char* name, const char* *result);
NS_IMETHOD
- GetDocumentBase(const char* *result);
+ GetDocumentBase(char* *result);
// Return an encoding whose name is specified in:
// http://java.sun.com/products/jdk/1.1/docs/guide/intl/intl.doc.html#25303
diff --git a/mozilla/modules/plugin/src/nsplugin.cpp b/mozilla/modules/plugin/src/nsplugin.cpp
index 4d195ae77b6..1246877f982 100644
--- a/mozilla/modules/plugin/src/nsplugin.cpp
+++ b/mozilla/modules/plugin/src/nsplugin.cpp
@@ -1503,10 +1503,10 @@ nsPluginTagInfo::GetParameter(const char* name, const char* *result)
}
NS_METHOD
-nsPluginTagInfo::GetDocumentBase(const char* *result)
+nsPluginTagInfo::GetDocumentBase(char* *result)
{
- *result = (const char*)GetLayoutElement()->base_url;
- return NS_OK;
+ *result = nsCRT::strdup(GetLayoutElement()->base_url);
+ return *result ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
}
NS_METHOD
diff --git a/mozilla/rdf/datasource/src/nsMailDataSource.h b/mozilla/rdf/datasource/src/nsMailDataSource.h
new file mode 100644
index 00000000000..7a1a1d82a05
--- /dev/null
+++ b/mozilla/rdf/datasource/src/nsMailDataSource.h
@@ -0,0 +1,363 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * The contents of this file are subject to the Netscape Public License
+ * Version 1.0 (the "NPL"); you may not use this file except in
+ * compliance with the NPL. You may obtain a copy of the NPL at
+ * http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the NPL is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
+ * for the specific language governing rights and limitations under the
+ * NPL.
+ *
+ * The Initial Developer of this code under the NPL is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All Rights
+ * Reserved.
+ */
+
+
+/*
+
+ Class declarations for mail data source resource types.
+
+ XXX Should these be factored out into their own implementation files, etc.?
+
+*/
+
+#ifndef nsMailDataSource_h__
+#define nsMailDataSource_h__
+
+////////////////////////////////////////////////////////////////////////
+// NS_DECL_IRDFRESOURCE, NS_IMPL_IRDFRESOURCE
+//
+// Convenience macros for implementing the RDF resource interface.
+//
+// XXX It might make sense to move these macros to nsIRDFResource.h?
+
+#define NS_DECL_IRDFRESOURCE \
+ NS_IMETHOD EqualsNode(nsIRDFNode* node, PRBool* result) const;\
+ NS_IMETHOD GetValue(const char* *uri) const;\
+ NS_IMETHOD EqualsResource(const nsIRDFResource* resource, PRBool* result) const;\
+ NS_IMETHOD EqualsString(const char* uri, PRBool* result) const;
+
+
+#define NS_IMPL_IRDFRESOURCE(__class) \
+NS_IMETHODIMP \
+__class::EqualsNode(nsIRDFNode* node, PRBool* result) const {\
+ nsresult rv;\
+ nsIRDFResource* resource;\
+ if (NS_SUCCEEDED(node->QueryInterface(kIRDFResourceIID, (void**) &resource))) {\
+ rv = EqualsResource(resource, result);\
+ NS_RELEASE(resource);\
+ }\
+ else {\
+ *result = PR_FALSE;\
+ rv = NS_OK;\
+ }\
+ return rv;\
+}\
+NS_IMETHODIMP \
+__class::GetValue(const char* *uri) const{\
+ if (!uri)\
+ return NS_ERROR_NULL_POINTER;\
+ *uri = mURI;\
+ return NS_OK;\
+}\
+NS_IMETHODIMP \
+__class::EqualsResource(const nsIRDFResource* resource, PRBool* result) const {\
+ if (!resource || !result) return NS_ERROR_NULL_POINTER;\
+ *result = (resource == (nsIRDFResource*) this);\
+ return NS_OK;\
+}\
+NS_IMETHODIMP \
+__class::EqualsString(const char* uri, PRBool* result) const {\
+ if (!uri || !result) return NS_ERROR_NULL_POINTER;\
+ *result = (PL_strcmp(uri, mURI) == 0);\
+ return NS_OK;\
+}
+
+////////////////////////////////////////////////////////////////////////
+
+/**
+ * The mail data source.
+ */
+class MailDataSource : public nsIRDFMailDataSource
+{
+private:
+ char* mURI;
+ nsVoidArray* mObservers;
+
+ // internal methods
+ nsresult InitAccountList (void);
+ nsresult AddColumns (void);
+
+public:
+
+ NS_DECL_ISUPPORTS
+
+ MailDataSource(void);
+ virtual ~MailDataSource (void);
+
+ // nsIRDFMailDataSource methods
+ NS_IMETHOD AddAccount (nsIRDFMailAccount* folder);
+ NS_IMETHOD RemoveAccount (nsIRDFMailAccount* folder);
+
+ // nsIRDFDataSource methods
+ NS_IMETHOD Init(const char* uri);
+
+ NS_IMETHOD GetURI(const char* *uri) const;
+
+ NS_IMETHOD GetSource(nsIRDFResource* property,
+ nsIRDFNode* target,
+ PRBool tv,
+ nsIRDFResource** source /* out */);
+
+ NS_IMETHOD GetTarget(nsIRDFResource* source,
+ nsIRDFResource* property,
+ PRBool tv,
+ nsIRDFNode** target);
+
+ NS_IMETHOD GetSources(nsIRDFResource* property,
+ nsIRDFNode* target,
+ PRBool tv,
+ nsIRDFAssertionCursor** sources);
+
+ NS_IMETHOD GetTargets(nsIRDFResource* source,
+ nsIRDFResource* property,
+ PRBool tv,
+ nsIRDFAssertionCursor** targets);
+
+ NS_IMETHOD Assert(nsIRDFResource* source,
+ nsIRDFResource* property,
+ nsIRDFNode* target,
+ PRBool tv);
+
+ NS_IMETHOD Unassert(nsIRDFResource* source,
+ nsIRDFResource* property,
+ nsIRDFNode* target);
+
+ NS_IMETHOD HasAssertion(nsIRDFResource* source,
+ nsIRDFResource* property,
+ nsIRDFNode* target,
+ PRBool tv,
+ PRBool* hasAssertion);
+
+ NS_IMETHOD AddObserver(nsIRDFObserver* n);
+
+ NS_IMETHOD RemoveObserver(nsIRDFObserver* n);
+
+ NS_IMETHOD ArcLabelsIn(nsIRDFNode* node,
+ nsIRDFArcsInCursor** labels);
+
+ NS_IMETHOD ArcLabelsOut(nsIRDFResource* source,
+ nsIRDFArcsOutCursor** labels);
+
+ NS_IMETHOD GetAllResources(nsIRDFResourceCursor** aCursor);
+
+ NS_IMETHOD Flush();
+
+ NS_IMETHOD IsCommandEnabled(const char* aCommand,
+ nsIRDFResource* aCommandTarget,
+ PRBool* aResult);
+
+ NS_IMETHOD DoCommand(const char* aCommand,
+ nsIRDFResource* aCommandTarget);
+
+ // caching frequently used resources
+ static nsIRDFResource* kNC_Child;
+ static nsIRDFResource* kNC_Folder;
+ static nsIRDFResource* kNC_From;
+ static nsIRDFResource* kNC_subject;
+ static nsIRDFResource* kNC_date;
+ static nsIRDFResource* kNC_user;
+ static nsIRDFResource* kNC_host;
+ static nsIRDFResource* kNC_account;
+ static nsIRDFResource* kNC_Name;
+ static nsIRDFResource* kNC_Columns;
+ static nsIRDFResource* kNC_MailRoot;
+
+ nsIRDFDataSource* mMiscMailData;
+};
+
+////////////////////////////////////////////////////////////////////////
+
+class MailAccount : public nsIRDFMailAccount
+{
+private:
+ char* mURI;
+ nsresult InitMailAccount (const char* uri);
+
+public:
+ MailAccount (const char* uri);
+ MailAccount (char* uri, nsIRDFLiteral* user, nsIRDFLiteral* host);
+ virtual ~MailAccount (void);
+
+ NS_DECL_ISUPPORTS
+ NS_DECL_IRDFRESOURCE
+
+ NS_IMETHOD GetUser(nsIRDFLiteral** result) const;
+ NS_IMETHOD GetName(nsIRDFLiteral** result) const;
+ NS_IMETHOD GetHost(nsIRDFLiteral** result) const;
+ NS_IMETHOD AddFolder (nsIRDFMailFolder* folder);
+ NS_IMETHOD RemoveFolder (nsIRDFMailFolder* folder);
+};
+
+////////////////////////////////////////////////////////////////////////
+
+class MailFolder : public nsIRDFMailFolder
+{
+private:
+ enum MailFolderStatus {
+ eMailFolder_Uninitialized,
+ eMailFolder_InitInProgress,
+ eMailFolder_WriteInProgress,
+ eMailFolder_OK
+ };
+
+ nsVoidArray mMessages;
+ FILE* mSummaryFile;
+ MailFolderStatus mStatus;
+ char* mURI;
+
+public:
+ MailFolder (const char* uri);
+ virtual ~MailFolder (void);
+
+ NS_DECL_ISUPPORTS
+ NS_DECL_IRDFRESOURCE
+
+ NS_IMETHOD GetAccount(nsIRDFMailAccount** account);
+ NS_IMETHOD GetName(nsIRDFLiteral** result) const;
+ NS_IMETHOD GetMessageList (nsVoidArray** result);
+ NS_IMETHOD AddMessage (nsIRDFMailMessage* msg);
+ NS_IMETHOD RemoveMessage (nsIRDFMailMessage* msg);
+
+ nsresult AddMessage(PRUnichar* uri,
+ MailFolder* folder,
+ nsIRDFResource* from,
+ nsIRDFLiteral* subject,
+ nsIRDFLiteral* date,
+ int summaryFileOffset,
+ int mailFileOffset,
+ char* flags,
+ nsIRDFLiteral* messageID);
+
+ nsresult AddMessage(PRUnichar* uri,
+ MailFolder* folder,
+ nsIRDFResource* from,
+ nsIRDFLiteral* subject,
+ nsIRDFLiteral* date,
+ int mailFileOffset,
+ char* flags,
+ nsIRDFLiteral* messageID);
+
+ nsresult ReadSummaryFile(char* uri);
+};
+
+////////////////////////////////////////////////////////////////////////
+
+class MailMessage : public nsIRDFMailMessage
+{
+private:
+ MailFolder* mFolder;
+ nsIRDFResource* mFrom;
+ nsIRDFLiteral* mSubject;
+ int mSummaryFileOffset;
+ int mMailFileOffset;
+ nsIRDFLiteral* mDate;
+ nsIRDFLiteral* mMessageID;
+ char mFlags[4];
+ char* mURI;
+
+public:
+ MailMessage (const char* uri);
+ virtual ~MailMessage (void);
+
+ NS_DECL_ISUPPORTS
+ NS_DECL_IRDFRESOURCE
+
+ NS_IMETHOD GetFolder(nsIRDFMailFolder** result);
+ NS_IMETHOD GetSubject(nsIRDFLiteral** result);
+ NS_IMETHOD GetSender(nsIRDFResource** result);
+ NS_IMETHOD GetDate(nsIRDFLiteral** result);
+ NS_IMETHOD GetContent(const char* result);
+ NS_IMETHOD GetMessageID(nsIRDFLiteral** id);
+ NS_IMETHOD GetFlags(char** result);
+ NS_IMETHOD SetFlags(const char* result);
+
+ nsresult SetupMessage (MailFolder* folder,
+ nsIRDFResource* from,
+ nsIRDFLiteral* subject,
+ nsIRDFLiteral* date,
+ int summaryFileOffset,
+ int mailFileOffset,
+ char* flags,
+ nsIRDFLiteral* messageID);
+};
+
+////////////////////////////////////////////////////////////////////////
+
+class SingletonMailCursor : public nsIRDFAssertionCursor
+{
+private:
+ nsIRDFNode* mValue;
+ nsIRDFResource* mSource;
+ nsIRDFResource* mProperty;
+ nsIRDFNode* mTarget;
+ PRBool mValueReturnedp;
+ PRBool mInversep;
+
+public:
+ SingletonMailCursor(nsIRDFNode* u,
+ nsIRDFResource* s,
+ PRBool inversep);
+ virtual ~SingletonMailCursor(void);
+
+ // nsISupports interface
+ NS_DECL_ISUPPORTS
+
+ // nsIRDFCursor interface
+ NS_IMETHOD Advance(void);
+ NS_IMETHOD GetValue(nsIRDFNode** aValue);
+
+ // nsIRDFAssertionCursor interface
+ NS_IMETHOD GetDataSource(nsIRDFDataSource** aDataSource);
+ NS_IMETHOD GetSubject(nsIRDFResource** aResource);
+ NS_IMETHOD GetPredicate(nsIRDFResource** aPredicate);
+ NS_IMETHOD GetObject(nsIRDFNode** aObject);
+ NS_IMETHOD GetTruthValue(PRBool* aTruthValue);
+};
+
+////////////////////////////////////////////////////////////////////////
+
+class ArrayMailCursor : public nsIRDFAssertionCursor ,
+ public nsIRDFArcsOutCursor
+{
+private:
+ nsIRDFNode* mValue;
+ nsIRDFResource* mSource;
+ nsIRDFResource* mProperty;
+ nsIRDFNode* mTarget;
+ PRUint32 mCount;
+ nsVoidArray* mArray;
+
+public:
+ ArrayMailCursor(nsIRDFResource* u, nsIRDFResource* s, nsVoidArray* array);
+ virtual ~ArrayMailCursor(void);
+ // nsISupports interface
+ NS_DECL_ISUPPORTS
+
+ // nsIRDFCursor interface
+ NS_IMETHOD Advance(void);
+ NS_IMETHOD GetValue(nsIRDFNode** aValue);
+ // nsIRDFAssertionCursor interface
+ NS_IMETHOD GetDataSource(nsIRDFDataSource** aDataSource);
+ NS_IMETHOD GetSubject(nsIRDFResource** aResource);
+ NS_IMETHOD GetPredicate(nsIRDFResource** aPredicate);
+ NS_IMETHOD GetObject(nsIRDFNode** aObject);
+ NS_IMETHOD GetTruthValue(PRBool* aTruthValue);
+};
+
+
+#endif // nsMailDataSource_h__