More necko changes. Changed nsIPluginTagInfo2::GetDocumentBase to copy string.
git-svn-id: svn://10.0.0.236/trunk@36581 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -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*)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <stddef.h>
|
||||
#include <memory.h>
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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<nsIURI> 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;
|
||||
}
|
||||
|
||||
287
mozilla/layout/html/base/src/nsFrameTraversal.cpp
Normal file
287
mozilla/layout/html/base/src/nsFrameTraversal.cpp
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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<nsIURI> 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;
|
||||
}
|
||||
|
||||
@@ -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*)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
363
mozilla/rdf/datasource/src/nsMailDataSource.h
Normal file
363
mozilla/rdf/datasource/src/nsMailDataSource.h
Normal file
@@ -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__
|
||||
Reference in New Issue
Block a user