Fixing bug 124412. Making nsXULDocument inherit nsXMLDocument to avoid the need to duplicate a large amount of code in nsXULDocument. Also removing nsMarkupDocument and nsIDOMEventCapturer that are no longer needed. Changing the inheritance of nsIDOMXULDocument to avoid ~60 or so forwarding methods, and doing a *lot* of code cleanup. r=bugmail@sicking.cc, sr=peterv@netscape.com

This commit is contained in:
jst%netscape.com 2003-03-26 07:41:30 +00:00
Родитель aa317c4d6b
Коммит 14882c9d0c
66 изменённых файлов: 2506 добавлений и 13715 удалений

Просмотреть файл

@ -89,7 +89,7 @@
#include "nsIDOMNodeList.h"
#include "nsIDOMXULButtonElement.h"
#include "nsIDOMXULCheckboxElement.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDOMXULElement.h"
#include "nsIDOMXULLabelElement.h"
#include "nsIDOMXULSelectCntrlEl.h"

Просмотреть файл

@ -926,9 +926,7 @@ NS_IMETHODIMP nsDocAccessibleMixin::GetURL(nsAString& aURL)
NS_IMETHODIMP nsDocAccessibleMixin::GetTitle(nsAString& aTitle)
{
// This doesn't leak - we don't own the const pointer that's returned
aTitle = *(mDocument->GetDocumentTitle());
return NS_OK;
return mDocument->GetDocumentTitle(aTitle);
}
NS_IMETHODIMP nsDocAccessibleMixin::GetMimeType(nsAString& aMimeType)

Просмотреть файл

@ -41,7 +41,6 @@
#include "nsISupports.h"
#include "nsEvent.h"
#include "nsAString.h"
#include "nsString.h"
#include "nsChangeHint.h"
#include "nsCOMArray.h"
@ -78,7 +77,6 @@ class nsIBindingManager;
class nsIObserver;
class nsISupportsArray;
class nsIScriptLoader;
class nsString;
class nsIContentSink;
class nsIScriptEventManager;
@ -118,7 +116,7 @@ public:
/**
* Return the title of the document. May return null.
*/
virtual const nsString* GetDocumentTitle() const = 0;
NS_IMETHOD GetDocumentTitle(nsAString& aTitle) const = 0;
/**
* Return the URL for the document. May return null.
@ -143,7 +141,8 @@ public:
NS_IMETHOD GetDocumentLoadGroup(nsILoadGroup** aGroup) const = 0;
/**
* Return the base URL for relative URLs in the document. May return null (or the document URL).
* Return the base URL for relative URLs in the document. May return
* null (or the document URL).
*/
NS_IMETHOD GetBaseURL(nsIURI*& aURL) const = 0;
NS_IMETHOD SetBaseURL(nsIURI* aURL) = 0;
@ -155,8 +154,9 @@ public:
NS_IMETHOD SetBaseTarget(const nsAString &aBaseTarget)=0;
/**
* Return a standard name for the document's character set. This will
* trigger a startDocumentLoad if necessary to answer the question.
* Return a standard name for the document's character set. This
* will trigger a startDocumentLoad if necessary to answer the
* question.
*/
NS_IMETHOD GetDocumentCharacterSet(nsAString& oCharSetID) = 0;
NS_IMETHOD SetDocumentCharacterSet(const nsAString& aCharSetID) = 0;
@ -188,8 +188,8 @@ public:
*/
NS_IMETHOD GetContentLanguage(nsAString& aContentLanguage) const = 0;
// The state BidiEnabled should persist across multiple views (screen, print)
// of the same document.
// The state BidiEnabled should persist across multiple views
// (screen, print) of the same document.
/**
* Check if the document contains bidi data.
@ -214,15 +214,15 @@ public:
NS_IMETHOD SetWordBreaker(nsIWordBreaker* aWordBreaker) = 0;
/**
* Access HTTP header data (this may also get set from other sources, like
* HTML META tags).
* Access HTTP header data (this may also get set from other
* sources, like HTML META tags).
*/
NS_IMETHOD GetHeaderData(nsIAtom* aHeaderField, nsAString& aData) const = 0;
NS_IMETHOD SetHeaderData(nsIAtom* aheaderField, const nsAString& aData) = 0;
/**
* Create a new presentation shell that will use aContext for
* it's presentation context (presentation context's <b>must not</b> be
* Create a new presentation shell that will use aContext for it's
* presentation context (presentation context's <b>must not</b> be
* shared among multiple presentation shell's).
*/
NS_IMETHOD CreateShell(nsIPresContext* aContext,
@ -431,8 +431,6 @@ public:
PRUint32 aFlags,
nsEventStatus* aEventStatus) = 0;
NS_IMETHOD_(PRBool) EventCaptureRegistration(PRInt32 aCapturerIncrement) = 0;
NS_IMETHOD FlushPendingNotifications(PRBool aFlushReflows=PR_TRUE,
PRBool aUpdateViews=PR_FALSE) = 0;

Просмотреть файл

@ -510,6 +510,7 @@ nsContentUtils::CheckSameOrigin(nsIDOMNode *aTrustedNode,
#endif
nsCOMPtr<nsIDOMDocument> domDoc;
aTrustedNode->GetOwnerDocument(getter_AddRefs(domDoc));
if (!domDoc) {
// In theory this should never happen. But since theory and reality are
// different for XUL elements we'll try to get the principal from the
@ -530,8 +531,7 @@ nsContentUtils::CheckSameOrigin(nsIDOMNode *aTrustedNode,
return NS_ERROR_UNEXPECTED;
}
}
else {
} else {
trustedDoc = do_QueryInterface(domDoc);
NS_ASSERTION(trustedDoc, "QI to nsIDocument failed");
}
@ -560,13 +560,16 @@ nsContentUtils::CheckSameOrigin(nsIDOMNode *aTrustedNode,
*/
// If they are in the same document then everything is just fine
if (trustedDoc == unTrustedDoc && trustedDoc)
if (trustedDoc == unTrustedDoc && trustedDoc) {
return NS_OK;
}
if (!trustedPrincipal) {
trustedDoc->GetPrincipal(getter_AddRefs(trustedPrincipal));
if (!trustedPrincipal) {
// If the trusted node doesn't have a principal we can't check security against it
// If the trusted node doesn't have a principal we can't check
// security against it
return NS_ERROR_DOM_SECURITY_ERR;
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -38,9 +38,13 @@
#ifndef nsDocument_h___
#define nsDocument_h___
#include "nsCOMPtr.h"
#include "nsAutoPtr.h"
#include "nsCRT.h"
#include "nsIDocument.h"
#include "nsWeakReference.h"
#include "nsWeakPtr.h"
#include "nsIArena.h"
#include "nsVoidArray.h"
#include "nsIDOMXMLDocument.h"
#include "nsIDOMDocumentView.h"
@ -56,6 +60,7 @@
#include "nsIScriptGlobalObject.h"
#include "nsIDOMEventTarget.h"
#include "nsIContent.h"
#include "nsIEventListenerManager.h"
#include "nsGenericDOMNodeList.h"
#include "nsIPrincipal.h"
#include "nsIBindingManager.h"
@ -84,49 +89,23 @@ class nsIDTD;
class nsXPathDocumentTearoff;
class nsIRadioVisitor;
class nsIFormControl;
struct nsRadioGroupStruct;
#if 0
class nsPostData : public nsIPostData {
public:
nsPostData(PRBool aIsFile, char* aData);
NS_DECL_ISUPPORTS
virtual PRBool IsFile();
virtual const char* GetData();
virtual PRInt32 GetDataLength();
protected:
virtual ~nsPostData();
PRBool mIsFile;
char* mData;
PRInt32 mDataLen;
};
#endif
class nsDocHeaderData
{
public:
nsDocHeaderData(nsIAtom* aField, const nsAString& aData)
: mField(aField), mData(aData), mNext(nsnull)
{
mField = aField;
NS_IF_ADDREF(mField);
mData.Assign(aData);
mNext = nsnull;
}
~nsDocHeaderData(void)
{
NS_IF_RELEASE(mField);
if (nsnull != mNext) {
delete mNext;
mNext = nsnull;
}
}
nsIAtom* mField;
~nsDocHeaderData(void)
{
delete mNext;
}
nsCOMPtr<nsIAtom> mField;
nsString mData;
nsDocHeaderData* mNext;
};
@ -145,6 +124,8 @@ public:
void DropReference();
protected:
nsDocumentChildNodes(); // Not implemented
nsIDocument* mDocument;
};
@ -224,28 +205,6 @@ protected:
};
// Helper structs for the content->subdoc map
class SubDocMapEntry : public PLDHashEntryHdr
{
public:
// Both of these are strong references
nsIContent *mKey; // must be first, to look like PLDHashEntryStub
nsIDocument *mSubDocument;
};
struct FindContentData
{
FindContentData(nsIDocument *aSubDoc)
: mSubDocument(aSubDoc), mResult(nsnull)
{
}
nsISupports *mSubDocument;
nsIContent *mResult;
};
// Base class for our document implementations.
//
// Note that this class *implements* nsIDOMXMLDocument, but it's not
@ -275,6 +234,8 @@ class nsDocument : public nsIDocument,
public:
NS_DECL_ISUPPORTS
NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW
NS_IMETHOD GetArena(nsIArena** aArena);
NS_IMETHOD Reset(nsIChannel* aChannel, nsILoadGroup* aLoadGroup);
@ -293,7 +254,7 @@ public:
/**
* Return the title of the document. May return null.
*/
virtual const nsString* GetDocumentTitle() const;
NS_IMETHOD GetDocumentTitle(nsAString& aTitle) const;
/**
* Return the URL for the document. May return null.
@ -396,13 +357,10 @@ public:
* it's presentation context (presentation context's <b>must not</b> be
* shared among multiple presentation shell's).
*/
#if 0
// XXX Temp hack: moved to nsMarkupDocument
NS_IMETHOD CreateShell(nsIPresContext* aContext,
nsIViewManager* aViewManager,
nsIStyleSet* aStyleSet,
nsIPresShell** aInstancePtrResult);
#endif
virtual PRBool DeleteShell(nsIPresShell* aShell);
virtual PRInt32 GetNumberOfShells();
NS_IMETHOD GetShellAt(PRInt32 aIndex, nsIPresShell** aShell);
@ -599,15 +557,10 @@ public:
// nsIDOM3EventTarget
NS_DECL_NSIDOM3EVENTTARGET
NS_IMETHOD HandleDOMEvent(nsIPresContext* aPresContext,
nsEvent* aEvent,
nsIDOMEvent** aDOMEvent,
PRUint32 aFlags,
NS_IMETHOD HandleDOMEvent(nsIPresContext* aPresContext, nsEvent* aEvent,
nsIDOMEvent** aDOMEvent, PRUint32 aFlags,
nsEventStatus* aEventStatus);
NS_IMETHOD_(PRBool) EventCaptureRegistration(PRInt32 aCapturerIncrement);
NS_IMETHOD SetDocumentURL(nsIURI* aURI);
virtual nsresult Init();
@ -621,16 +574,22 @@ protected:
virtual already_AddRefed<nsIStyleSheet> InternalGetStyleSheetAt(PRInt32 aIndex);
virtual PRInt32 InternalGetNumberOfStyleSheets();
nsresult doCreateShell(nsIPresContext* aContext,
nsIViewManager* aViewManager, nsIStyleSet* aStyleSet,
nsCompatibility aCompatMode,
nsIPresShell** aInstancePtrResult);
nsDocument();
virtual ~nsDocument();
nsIArena* mArena;
nsCOMPtr<nsIArena> mArena;
nsString mDocumentTitle;
nsIURI* mDocumentURL;
nsCOMPtr<nsIURI> mDocumentURL;
nsCOMPtr<nsIURI> mDocumentBaseURL;
nsCOMPtr<nsIPrincipal> mPrincipal;
PRUint32 mLoadFlags; // load flags of the document's channel
nsWeakPtr mDocumentLoadGroup;
nsWeakPtr mDocumentContainer;
nsString mCharacterSet;
@ -641,36 +600,48 @@ protected:
PLDHashTable *mSubDocuments;
nsVoidArray mPresShells;
nsCOMArray<nsIContent> mChildren; // contains owning references
nsIContent* mRootContent; // a weak reference to the only element in
// mChildren, or null if no such element exists.
nsSmallVoidArray mPresShells;
// Array of owning references to all children
nsCOMArray<nsIContent> mChildren;
// A weak reference to the only element in mChildren, or null if no
// such element exists.
nsIContent* mRootContent;
nsCOMArray<nsIStyleSheet> mStyleSheets;
nsAutoVoidArray mObservers; // basically always has at least 1 entry
// Basically always has at least 1 entry
nsAutoVoidArray mObservers;
nsCOMPtr<nsIScriptGlobalObject> mScriptGlobalObject;
nsIEventListenerManager* mListenerManager;
PRBool mInDestructor;
nsCOMPtr<nsIEventListenerManager> mListenerManager;
nsCOMPtr<nsIDOMStyleSheetList> mDOMStyleSheets;
nsCOMPtr<nsIScriptLoader> mScriptLoader;
nsDocHeaderData* mHeaderData;
nsCOMPtr<nsILineBreaker> mLineBreaker;
nsCOMPtr<nsIWordBreaker> mWordBreaker;
nsDocumentChildNodes* mChildNodes;
// A content ID counter used to give a monotonically increasing ID to the content
// objects in the document's content model
nsRefPtr<nsDocumentChildNodes> mChildNodes;
// A content ID counter used to give a monotonically increasing ID
// to the content objects in the document's content model
PRInt32 mNextContentID;
nsHashtable mRadioGroups;
PRBool mBidiEnabled;
nsCOMPtr<nsIBindingManager> mBindingManager;
nsCOMPtr<nsINodeInfoManager> mNodeInfoManager;
PRBool mIsGoingAway; // True if the document is being destroyed.
// True if the document is being destroyed.
PRPackedBool mIsGoingAway;
// True if BIDI is enabled.
PRPackedBool mBidiEnabled;
// True if the document is being destroyed.
PRPackedBool mInDestructor;
nsSupportsHashtable* mBoxObjectTable;
PRInt32 mNumCapturers; //Number of capturing event handlers in doc. Used to optimize event delivery.
nsSupportsHashtable mContentWrapperHash;

Просмотреть файл

@ -1166,7 +1166,7 @@ NS_IMETHODIMP
DocumentViewerImpl::GetDOMDocument(nsIDOMDocument **aResult)
{
NS_ENSURE_TRUE(mDocument, NS_ERROR_NOT_AVAILABLE);
return CallQueryInterface(mDocument.get(), aResult);
return CallQueryInterface(mDocument, aResult);
}
NS_IMETHODIMP

Просмотреть файл

@ -1873,9 +1873,10 @@ nsPrintEngine::GetWebShellTitleAndURL(nsIWebShell* aWebShell,
*aTitle = nsnull;
*aURLStr = nsnull;
const nsString* docTitle = aDoc->GetDocumentTitle();
if (docTitle && !docTitle->IsEmpty()) {
*aTitle = ToNewUnicode(*docTitle);
nsAutoString docTitle;
aDoc->GetDocumentTitle(docTitle);
if (!docTitle.IsEmpty()) {
*aTitle = ToNewUnicode(docTitle);
}
nsCOMPtr<nsIURI> url;

Просмотреть файл

@ -444,7 +444,6 @@ nsXMLContentSerializer::AppendElementStart(nsIDOMElement *aElement,
*getter_AddRefs(attrPrefix));
if (namespaceID == kNameSpaceID_XMLNS) {
PRBool hasPrefix = attrPrefix ? PR_TRUE : PR_FALSE;
content->GetAttr(namespaceID, attrName, uriStr);
if (!attrPrefix) {

Просмотреть файл

@ -1529,9 +1529,9 @@ const char* nsDOMEvent::GetEventName(PRUint32 aEventType)
return nsnull;
}
nsresult NS_NewDOMUIEvent(nsIDOMEvent** aInstancePtrResult,
nsIPresContext* aPresContext,
const nsAString& aEventType,
nsresult
NS_NewDOMUIEvent(nsIDOMEvent** aInstancePtrResult,
nsIPresContext* aPresContext, const nsAString& aEventType,
nsEvent *aEvent)
{
nsDOMEvent* it = new nsDOMEvent(aPresContext, aEvent, aEventType);
@ -1543,7 +1543,9 @@ nsresult NS_NewDOMUIEvent(nsIDOMEvent** aInstancePtrResult,
return CallQueryInterface(it, aInstancePtrResult);
}
nsresult NS_NewDOMEvent(nsIDOMEvent** aInstancePtrResult, nsIPresContext* aPresContext, nsEvent *aEvent)
nsresult
NS_NewDOMEvent(nsIDOMEvent** aInstancePtrResult, nsIPresContext* aPresContext,
nsEvent *aEvent)
{
return NS_ERROR_FAILURE;
}

Просмотреть файл

@ -493,19 +493,6 @@ nsEventListenerManager::AddEventListener(nsIDOMEventListener *aListener,
listeners->AppendElement((void*)ls);
NS_ADDREF(aListener);
}
if (aFlags & NS_EVENT_FLAG_CAPTURE) {
//If a capturer is set up on a content object it must register that with its doc
nsCOMPtr<nsIDocument> document;
nsCOMPtr<nsIContent> content(do_QueryInterface(mTarget));
if (content) {
content->GetDocument(*getter_AddRefs(document));
if (document) {
//Increment capturers by 1
document->EventCaptureRegistration(1);
}
}
}
}
return NS_OK;
@ -561,19 +548,6 @@ nsEventListenerManager::RemoveEventListener(nsIDOMEventListener *aListener,
}
}
if (listenerRemoved && aFlags & NS_EVENT_FLAG_CAPTURE) {
//If a capturer is set up on a content object it must register that with its doc
nsCOMPtr<nsIDocument> document;
nsCOMPtr<nsIContent> content(do_QueryInterface(mTarget));
if (content) {
content->GetDocument(*getter_AddRefs(document));
if (document) {
//Decrement capturers by 1
document->EventCaptureRegistration(-1);
}
}
}
return NS_OK;
}

Просмотреть файл

@ -90,7 +90,7 @@
#include "nsXULAtoms.h"
#include "nsIDOMXULElement.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDOMKeyEvent.h"
#include "nsIObserverService.h"
#include "nsIDocShell.h"
@ -641,7 +641,6 @@ nsEventStateManager::PreHandleEvent(nsIPresContext* aPresContext,
nsCOMPtr<nsIFocusController> focusController;
nsCOMPtr<nsIDOMElement> focusedElement;
nsCOMPtr<nsIDOMWindowInternal> focusedWindow;
nsCOMPtr<nsIDOMXULDocument> xulDoc = do_QueryInterface(mDocument);
nsCOMPtr<nsIScriptGlobalObject> globalObj;
mDocument->GetScriptGlobalObject(getter_AddRefs(globalObj));
@ -4479,7 +4478,7 @@ nsEventStateManager::DispatchNewEvent(nsISupports* aTarget, nsIDOMEvent* aEvent,
}
}
*aPreventDefault = status == nsEventStatus_eConsumeNoDefault ? PR_FALSE : PR_TRUE;
*aPreventDefault = status != nsEventStatus_eConsumeNoDefault;
}
}

Просмотреть файл

@ -68,7 +68,6 @@ CPPSRCS = \
nsMediaDocument.cpp \
nsPluginDocument.cpp \
nsImageDocument.cpp \
nsMarkupDocument.cpp \
nsWyciwygChannel.cpp \
nsWyciwygProtocolHandler.cpp \
$(NULL)

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -39,12 +39,14 @@
#define nsHTMLDocument_h___
#include "nsDocument.h"
#include "nsMarkupDocument.h"
#include "nsIHTMLDocument.h"
#include "nsIDOMHTMLDocument.h"
#include "nsIDOMNSHTMLDocument.h"
#include "nsIDOMHTMLBodyElement.h"
#include "nsIDOMHTMLMapElement.h"
#include "nsIDOMHTMLCollection.h"
#include "nsIHTMLContentContainer.h"
#include "nsIParser.h"
#include "jsapi.h"
#include "rdf.h"
#include "nsRDFCID.h"
@ -61,8 +63,6 @@
#include "nsICommandManager.h"
class nsBaseContentList;
class nsContentList;
class nsIParser;
class nsICSSLoader;
class nsIURI;
@ -70,7 +70,7 @@ class nsIMarkupDocumentViewer;
class nsIDocumentCharsetInfo;
class nsICacheEntryDescriptor;
class nsHTMLDocument : public nsMarkupDocument,
class nsHTMLDocument : public nsDocument,
public nsIHTMLDocument,
public nsIDOMHTMLDocument,
public nsIDOMNSHTMLDocument,
@ -86,6 +86,7 @@ public:
NS_IMETHOD_(nsrefcnt) AddRef(void);
NS_IMETHOD_(nsrefcnt) Release(void);
NS_IMETHOD Reset(nsIChannel* aChannel, nsILoadGroup* aLoadGroup);
NS_IMETHOD ResetToURI(nsIURI* aURI, nsILoadGroup* aLoadGroup);
NS_IMETHOD CreateShell(nsIPresContext* aContext,
@ -116,7 +117,6 @@ public:
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aStyleSheet);
NS_IMETHOD GetCSSLoader(nsICSSLoader*& aLoader);
NS_IMETHOD GetBaseURL(nsIURI*& aURL) const;
NS_IMETHOD GetBaseTarget(nsAString& aTarget);
NS_IMETHOD SetBaseTarget(const nsAString& aTarget);
@ -236,9 +236,9 @@ protected:
static void DocumentWriteTerminationFunc(nsISupports *aRef);
PRBool GetBodyContent();
NS_IMETHOD GetBodyElement(nsIDOMHTMLBodyElement** aBody);
void GetBodyElement(nsIDOMHTMLBodyElement** aBody);
NS_IMETHOD GetDomainURI(nsIURI **uri);
void GetDomainURI(nsIURI **uri);
nsresult WriteCommon(const nsAString& aText,
PRBool aNewlineTerminate);
@ -254,28 +254,30 @@ protected:
nsCOMPtr<nsIHTMLStyleSheet> mAttrStyleSheet;
nsCOMPtr<nsIHTMLCSSStyleSheet> mStyleAttrStyleSheet;
nsIURI* mBaseURL;
nsString* mBaseTarget;
nsString* mLastModified;
nsString* mReferrer;
nsString mBaseTarget;
nsString mLastModified;
nsString mReferrer;
nsCOMPtr<nsIHttpChannel> mHttpChannel;
nsCompatibility mCompatMode;
nsCOMPtr<nsISupportsArray> mImageMaps;
nsContentList *mImages;
nsContentList *mApplets;
nsContentList *mEmbeds;
nsContentList *mLinks;
nsContentList *mAnchors;
nsContentList *mForms;
nsContentList *mLayers;
nsCOMArray<nsIDOMHTMLMapElement> mImageMaps;
nsIParser *mParser;
nsCOMPtr<nsIDOMHTMLCollection> mImages;
nsCOMPtr<nsIDOMHTMLCollection> mApplets;
nsCOMPtr<nsIDOMHTMLCollection> mEmbeds;
nsCOMPtr<nsIDOMHTMLCollection> mLinks;
nsCOMPtr<nsIDOMHTMLCollection> mAnchors;
nsCOMPtr<nsIDOMHTMLCollection> mForms;
nsCOMPtr<nsIParser> mParser;
/** # of forms in the document, synchronously set */
PRInt32 mNumForms;
//ahmed 12-2
// ahmed 12-2
PRInt32 mTexttype;
static nsrefcnt gRefCntRDFService;
@ -295,8 +297,7 @@ protected:
PRInt32& aCharsetSource,
nsAString& aCharset);
static PRBool TryParentCharset(nsIDocumentCharsetInfo* aDocInfo,
PRInt32& charsetSource,
nsAString& aCharset);
PRInt32& charsetSource, nsAString& aCharset);
static PRBool UseWeakDocTypeDefault(PRInt32& aCharsetSource,
nsAString& aCharset);
static PRBool TryChannelCharset(nsIChannel *aChannel,
@ -306,21 +307,22 @@ protected:
PRInt32& aCharsetSource,
nsAString& aCharset);
void StartAutodetection(nsIDocShell *aDocShell,
nsAString& aCharset,
void StartAutodetection(nsIDocShell *aDocShell, nsAString& aCharset,
const char* aCommand);
PRUint32 mIsWriting : 1;
PRUint32 mWriteLevel : 31;
PRUint32 mWyciwygSessionCnt;
// Load flags of the document's channel
PRUint32 mLoadFlags;
nsCOMPtr<nsIDOMNode> mBodyContent;
/*
* Bug 13871: Frameset spoofing - find out if document.domain was set
*/
PRPackedBool mDomainWasSet;
PRPackedBool mIdAndNameHashIsLive;
PLDHashTable mIdAndNameHashTable;

Просмотреть файл

@ -832,7 +832,7 @@ nsHTMLFragmentContentSink::AddTextToContent(nsIHTMLContent* aContent,const nsStr
if (NS_SUCCEEDED(result)) {
text->SetText(aText, PR_TRUE);
result=aContent->AppendChildTo(text, PR_FALSE, PR_FALSE);
result = aContent->AppendChildTo(text, PR_FALSE, PR_FALSE);
}
}
}

Просмотреть файл

@ -107,8 +107,6 @@ public:
*/
NS_IMETHOD GetNumFormsSynchronous(PRInt32* aNumForms) = 0;
NS_IMETHOD GetBodyElement(nsIDOMHTMLBodyElement** aBody) = 0;
NS_IMETHOD_(PRBool) IsWriting() = 0;
};

Просмотреть файл

@ -180,15 +180,16 @@ ImageListener::OnStopRequest(nsIRequest* request, nsISupports *ctxt,
return nsMediaDocumentStreamListener::OnStopRequest(request, ctxt, status);
}
// NOTE! nsDocument::operator new() zeroes out all members, so don't
// bother initializing members to 0.
nsImageDocument::nsImageDocument()
: mVisibleWidth(0),
mVisibleHeight(0),
mImageWidth(0),
mImageHeight(0),
mImageResizingEnabled(PR_FALSE),
mImageIsOverflowing(PR_FALSE),
mImageIsResized(PR_FALSE)
{
// NOTE! nsDocument::operator new() zeroes out all members, so don't
// bother initializing members to 0.
}
nsImageDocument::~nsImageDocument()
@ -198,8 +199,8 @@ nsImageDocument::~nsImageDocument()
}
}
NS_IMPL_ADDREF_INHERITED(nsImageDocument, nsHTMLDocument)
NS_IMPL_RELEASE_INHERITED(nsImageDocument, nsHTMLDocument)
NS_IMPL_ADDREF_INHERITED(nsImageDocument, nsMediaDocument)
NS_IMPL_RELEASE_INHERITED(nsImageDocument, nsMediaDocument)
NS_INTERFACE_MAP_BEGIN(nsImageDocument)
NS_INTERFACE_MAP_ENTRY(nsIImageDocument)
@ -207,7 +208,7 @@ NS_INTERFACE_MAP_BEGIN(nsImageDocument)
NS_INTERFACE_MAP_ENTRY(imgIContainerObserver)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventListener)
NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(ImageDocument)
NS_INTERFACE_MAP_END_INHERITING(nsHTMLDocument)
NS_INTERFACE_MAP_END_INHERITING(nsMediaDocument)
nsresult
@ -243,7 +244,8 @@ nsImageDocument::StartDocumentLoad(const char* aCommand,
PRBool aReset,
nsIContentSink* aSink)
{
nsresult rv = nsMediaDocument::StartDocumentLoad(aCommand, aChannel, aLoadGroup,
nsresult rv =
nsMediaDocument::StartDocumentLoad(aCommand, aChannel, aLoadGroup,
aContainer, aDocListener, aReset,
aSink);
if (NS_FAILED(rv)) {
@ -278,7 +280,8 @@ nsImageDocument::SetScriptGlobalObject(nsIScriptGlobalObject* aScriptGlobalObjec
target = do_QueryInterface(mScriptGlobalObject);
target->RemoveEventListener(NS_LITERAL_STRING("resize"), this, PR_FALSE);
target->RemoveEventListener(NS_LITERAL_STRING("keypress"), this, PR_FALSE);
target->RemoveEventListener(NS_LITERAL_STRING("keypress"), this,
PR_FALSE);
}
}
@ -512,8 +515,9 @@ nsImageDocument::CreateSyntheticDocument()
if (mStringBundle) {
const PRUnichar* formatString[1] = { srcString.get() };
nsXPIDLString errorMsg;
rv = mStringBundle->FormatStringFromName(NS_LITERAL_STRING("InvalidImage").get(),
formatString, 1, getter_Copies(errorMsg));
NS_NAMED_LITERAL_STRING(str, "InvalidImage");
mStringBundle->FormatStringFromName(str.get(), formatString, 1,
getter_Copies(errorMsg));
image->SetAttr(kNameSpaceID_None, nsHTMLAtoms::alt, errorMsg, PR_FALSE);
}
@ -539,7 +543,8 @@ nsImageDocument::CheckOverflowing()
context->GetVisibleArea(visibleArea);
nsCOMPtr<nsIContent> content = do_QueryInterface(mBodyContent);
nsRefPtr<nsStyleContext> styleContext = context->ResolveStyleContextFor(content, nsnull);
nsRefPtr<nsStyleContext> styleContext =
context->ResolveStyleContextFor(content, nsnull);
const nsStyleMargin* marginData =
(const nsStyleMargin*)styleContext->GetStyleData(eStyleStruct_Margin);
@ -557,7 +562,8 @@ nsImageDocument::CheckOverflowing()
mVisibleWidth = NSTwipsToIntPixels(visibleArea.width, t2p);
mVisibleHeight = NSTwipsToIntPixels(visibleArea.height, t2p);
mImageIsOverflowing = mImageWidth > mVisibleWidth || mImageHeight > mVisibleHeight;
mImageIsOverflowing =
mImageWidth > mVisibleWidth || mImageHeight > mVisibleHeight;
if (mImageIsOverflowing) {
ShrinkToFit();
@ -569,8 +575,8 @@ nsImageDocument::CheckOverflowing()
return NS_OK;
}
nsresult nsImageDocument::UpdateTitle()
nsresult
nsImageDocument::UpdateTitle()
{
if (mStringBundle) {
nsXPIDLString fileStr;
@ -584,7 +590,8 @@ nsresult nsImageDocument::UpdateTitle()
nsresult rv;
nsCAutoString fileName;
url->GetFileName(fileName);
nsCOMPtr<nsITextToSubURI> textToSubURI = do_GetService(NS_ITEXTTOSUBURI_CONTRACTID, &rv);
nsCOMPtr<nsITextToSubURI> textToSubURI =
do_GetService(NS_ITEXTTOSUBURI_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv))
{
nsCAutoString originCharset;
@ -607,7 +614,8 @@ nsresult nsImageDocument::UpdateTitle()
mimeType.BeginReading(start);
mimeType.EndReading(end);
nsXPIDLCString::const_iterator iter = end;
if (FindInReadable(NS_LITERAL_CSTRING("IMAGE/"), start, iter) && iter != end) {
if (FindInReadable(NS_LITERAL_CSTRING("IMAGE/"), start, iter) &&
iter != end) {
// strip out "X-" if any
if (*iter == 'X') {
++iter;
@ -631,20 +639,46 @@ nsresult nsImageDocument::UpdateTitle()
if (!fileStr.IsEmpty()) {
// if we got a valid size (sometimes we do not) then display it
if (mImageWidth != 0 && mImageHeight != 0){
const PRUnichar *formatStrings[4] = {fileStr.get(), typeStr.get(), widthStr.get(), heightStr.get()};
mStringBundle->FormatStringFromName(NS_LITERAL_STRING("ImageTitleWithDimensionsAndFile").get(), formatStrings, 4, getter_Copies(valUni));
const PRUnichar *formatStrings[4] =
{
fileStr.get(),
typeStr.get(),
widthStr.get(),
heightStr.get()
};
NS_NAMED_LITERAL_STRING(str, "ImageTitleWithDimensionsAndFile");
mStringBundle->FormatStringFromName(str.get(), formatStrings, 4,
getter_Copies(valUni));
} else {
const PRUnichar *formatStrings[2] = {fileStr.get(), typeStr.get()};
mStringBundle->FormatStringFromName(NS_LITERAL_STRING("ImageTitleWithoutDimensions").get(), formatStrings, 2, getter_Copies(valUni));
const PRUnichar *formatStrings[2] =
{
fileStr.get(),
typeStr.get()
};
NS_NAMED_LITERAL_STRING(str, "ImageTitleWithoutDimensions");
mStringBundle->FormatStringFromName(str.get(), formatStrings, 2,
getter_Copies(valUni));
}
} else {
// if we got a valid size (sometimes we do not) then display it
if (mImageWidth != 0 && mImageHeight != 0){
const PRUnichar *formatStrings[3] = {typeStr.get(), widthStr.get(), heightStr.get()};
mStringBundle->FormatStringFromName(NS_LITERAL_STRING("ImageTitleWithDimensions").get(), formatStrings, 3, getter_Copies(valUni));
const PRUnichar *formatStrings[3] =
{
typeStr.get(),
widthStr.get(),
heightStr.get()
};
NS_NAMED_LITERAL_STRING(str, "ImageTitleWithDimensions");
mStringBundle->FormatStringFromName(str.get(), formatStrings, 3,
getter_Copies(valUni));
} else {
const PRUnichar *formatStrings[1] = {typeStr.get()};
mStringBundle->FormatStringFromName(NS_LITERAL_STRING("ImageTitleWithNeitherDimensionsNorFile").get(), formatStrings, 1, getter_Copies(valUni));
const PRUnichar *formatStrings[1] =
{
typeStr.get()
};
NS_NAMED_LITERAL_STRING(str, "ImageTitleWithNeitherDimensionsNorFile");
mStringBundle->FormatStringFromName(str.get(), formatStrings, 1,
getter_Copies(valUni));
}
}

Просмотреть файл

Просмотреть файл

Просмотреть файл

@ -62,25 +62,34 @@ public:
nsIContentSink* aSink = nsnull);
protected:
nsresult CreateSyntheticDocument(nsACString &aMimeType);
nsresult CreateSyntheticPluginDocument(nsACString &aMimeType);
nsCOMPtr<nsIHTMLContent> mPluginContent;
nsRefPtr<nsMediaDocumentStreamListener> mStreamListener;
};
// NOTE! nsDocument::operator new() zeroes out all members, so don't
// bother initializing members to 0.
nsPluginDocument::nsPluginDocument()
{
// NOTE! nsDocument::operator new() zeroes out all members, so don't
// bother initializing members to 0.
}
nsPluginDocument::~nsPluginDocument()
{
}
NS_IMPL_ADDREF_INHERITED(nsPluginDocument, nsHTMLDocument)
NS_IMPL_RELEASE_INHERITED(nsPluginDocument, nsHTMLDocument)
NS_IMPL_ADDREF_INHERITED(nsPluginDocument, nsMediaDocument)
NS_IMPL_RELEASE_INHERITED(nsPluginDocument, nsMediaDocument)
NS_INTERFACE_MAP_BEGIN(nsPluginDocument)
NS_INTERFACE_MAP_ENTRY(nsIPluginDocument)
NS_INTERFACE_MAP_END_INHERITING(nsHTMLDocument)
NS_INTERFACE_MAP_END_INHERITING(nsMediaDocument)
NS_IMETHODIMP
@ -92,7 +101,8 @@ nsPluginDocument::StartDocumentLoad(const char* aCommand,
PRBool aReset,
nsIContentSink* aSink)
{
nsresult rv = nsMediaDocument::StartDocumentLoad(aCommand, aChannel, aLoadGroup,
nsresult rv =
nsMediaDocument::StartDocumentLoad(aCommand, aChannel, aLoadGroup,
aContainer, aDocListener, aReset,
aSink);
if (NS_FAILED(rv)) {
@ -106,7 +116,7 @@ nsPluginDocument::StartDocumentLoad(const char* aCommand,
}
// Create synthetic document
rv = CreateSyntheticDocument(mimeType);
rv = CreateSyntheticPluginDocument(mimeType);
if (NS_FAILED(rv)) {
return rv;
}
@ -120,7 +130,8 @@ nsPluginDocument::StartDocumentLoad(const char* aCommand,
return rv;
}
nsresult nsPluginDocument::CreateSyntheticDocument(nsACString &aMimeType)
nsresult
nsPluginDocument::CreateSyntheticPluginDocument(nsACString &aMimeType)
{
// do not allow message panes to host full-page plugins
// returning an error causes helper apps to take over

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -792,7 +792,7 @@ nsXBLPrototypeBinding::InitClass(const nsCString& aClassName,
nsIScriptContext * aContext,
void * aScriptObject, void ** aClassObject)
{
NS_ENSURE_ARG_POINTER (aClassObject);
NS_ENSURE_ARG_POINTER(aClassObject);
*aClassObject = nsnull;

Просмотреть файл

@ -1266,22 +1266,23 @@ nsXMLContentSink::FlushText(PRBool aCreateTextNode, PRBool* aDidFlush)
PRBool didFlush = PR_FALSE;
if (0 != mTextLength) {
if (aCreateTextNode) {
nsCOMPtr<nsITextContent> content;
rv = NS_NewTextNode(getter_AddRefs(content));
if (NS_OK == rv) {
nsCOMPtr<nsITextContent> textContent;
rv = NS_NewTextNode(getter_AddRefs(textContent));
NS_ENSURE_SUCCESS(rv, rv);
// Set the content's document
content->SetDocument(mDocument, PR_FALSE, PR_TRUE);
textContent->SetDocument(mDocument, PR_FALSE, PR_TRUE);
// Set the text in the text node
content->SetText(mText, mTextLength, PR_FALSE);
textContent->SetText(mText, mTextLength, PR_FALSE);
// Add text to its parent
AddContentAsLeaf(content);
}
AddContentAsLeaf(textContent);
}
mTextLength = 0;
didFlush = PR_TRUE;
}
if (nsnull != aDidFlush) {
*aDidFlush = didFlush;
}

Просмотреть файл

@ -183,12 +183,15 @@ NS_NewXMLDocument(nsIDocument** aInstancePtrResult)
return NS_OK;
}
// NOTE! nsDocument::operator new() zeroes out all members, so don't
// bother initializing members to 0.
nsXMLDocument::nsXMLDocument()
: mCountCatalogSheets(0), mCrossSiteAccessEnabled(PR_FALSE),
mLoadedAsData(PR_FALSE), mAsync(PR_TRUE),
mLoopingForSyncLoad(PR_FALSE), mXMLDeclarationBits(0)
: mAsync(PR_TRUE)
{
mEventQService = do_GetService(kEventQueueServiceCID);
// NOTE! nsDocument::operator new() zeroes out all members, so don't
// bother initializing members to 0.
}
nsXMLDocument::~nsXMLDocument()
@ -223,6 +226,17 @@ NS_IMPL_ADDREF_INHERITED(nsXMLDocument, nsDocument)
NS_IMPL_RELEASE_INHERITED(nsXMLDocument, nsDocument)
nsresult
nsXMLDocument::Init()
{
nsresult rv = nsDocument::Init();
NS_ENSURE_SUCCESS(rv, rv);
mEventQService = do_GetService(kEventQueueServiceCID, &rv);
return rv;
}
NS_IMETHODIMP
nsXMLDocument::Reset(nsIChannel* aChannel, nsILoadGroup* aLoadGroup)
{
@ -390,19 +404,20 @@ nsXMLDocument::Load(const nsAString& aUrl, PRBool *aReturn)
// Partial Reset, need to restore principal for security reasons and
// event listener manager so that load listeners etc. will remain.
nsCOMPtr<nsIPrincipal> principal = mPrincipal;
nsCOMPtr<nsIEventListenerManager> elm = mListenerManager;
nsCOMPtr<nsIPrincipal> principal(mPrincipal);
nsCOMPtr<nsIEventListenerManager> elm(mListenerManager);
Reset(nsnull, nsnull);
mPrincipal = principal;
mListenerManager = elm;
NS_IF_ADDREF(mListenerManager);
SetDocumentURL(uri);
SetBaseURL(uri);
// Store script context, if any, in case we encounter redirect (because we need it there)
// Store script context, if any, in case we encounter redirect
// (because we need it there)
nsCOMPtr<nsIJSContextStack> stack =
do_GetService("@mozilla.org/js/xpc/ContextStack;1");
if (stack) {
@ -415,10 +430,11 @@ nsXMLDocument::Load(const nsAString& aUrl, PRBool *aReturn)
}
}
// Find out if UniversalBrowserRead privileges are enabled - we will need this
// in case of a redirect
// Find out if UniversalBrowserRead privileges are enabled - we will
// need this in case of a redirect
PRBool crossSiteAccessEnabled;
rv = secMan->IsCapabilityEnabled("UniversalBrowserRead", &crossSiteAccessEnabled);
rv = secMan->IsCapabilityEnabled("UniversalBrowserRead",
&crossSiteAccessEnabled);
if (NS_FAILED(rv)) return rv;
mCrossSiteAccessEnabled = crossSiteAccessEnabled;
@ -428,15 +444,15 @@ nsXMLDocument::Load(const nsAString& aUrl, PRBool *aReturn)
if (NS_FAILED(rv)) return rv;
// Set a principal for this document
mPrincipal = nsnull;
nsCOMPtr<nsISupports> channelOwner;
rv = channel->GetOwner(getter_AddRefs(channelOwner));
if (NS_SUCCEEDED(rv) && channelOwner) {
mPrincipal = do_QueryInterface(channelOwner, &rv);
}
if (NS_FAILED(rv) || !channelOwner)
{
// We don't care if GetOwner() succeeded here, if it failed,
// channelOwner will be null, which is what we want in that case.
mPrincipal = do_QueryInterface(channelOwner);
if (NS_FAILED(rv) || !mPrincipal) {
rv = secMan->GetCodebasePrincipal(uri, getter_AddRefs(mPrincipal));
NS_ENSURE_TRUE(mPrincipal, rv);
}
@ -661,19 +677,20 @@ nsXMLDocument::GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aResult)
}
// subclass hook for sheet ordering
void nsXMLDocument::InternalAddStyleSheet(nsIStyleSheet* aSheet, PRUint32 aFlags)
void
nsXMLDocument::InternalAddStyleSheet(nsIStyleSheet* aSheet, PRUint32 aFlags)
{
// XXXbz this catalog stuff should be in the UA level in the cascade!
if (aFlags & NS_STYLESHEET_FROM_CATALOG) {
// always after other catalog sheets
mStyleSheets.InsertObjectAt(aSheet, mCountCatalogSheets);
++mCountCatalogSheets;
mStyleSheets.InsertObjectAt(aSheet, mCatalogSheetCount);
++mCatalogSheetCount;
}
else if (aSheet == mAttrStyleSheet) { // always after catalog sheets
NS_ASSERTION(mStyleSheets.Count() == 0 ||
mAttrStyleSheet != mStyleSheets[0],
"Adding attr sheet twice!");
mStyleSheets.InsertObjectAt(aSheet, mCountCatalogSheets);
mStyleSheets.InsertObjectAt(aSheet, mCatalogSheetCount);
}
else if (aSheet == mInlineStyleSheet) { // always last
NS_ASSERTION(mStyleSheets.Count() == 0 ||
@ -702,13 +719,13 @@ nsXMLDocument::InternalInsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex)
/* Don't count Attribute stylesheet */
- 1
/* Don't count catalog sheets */
- mCountCatalogSheets
- mCatalogSheetCount
/* No insertion allowed after StyleAttr stylesheet */
- (mInlineStyleSheet ? 1: 0)
),
"index out of bounds");
// offset w.r.t. catalog style sheets and the attr style sheet
mStyleSheets.InsertObjectAt(aSheet, aIndex + mCountCatalogSheets + 1);
mStyleSheets.InsertObjectAt(aSheet, aIndex + mCatalogSheetCount + 1);
}
already_AddRefed<nsIStyleSheet>
@ -717,7 +734,7 @@ nsXMLDocument::InternalGetStyleSheetAt(PRInt32 aIndex)
PRInt32 count = InternalGetNumberOfStyleSheets();
if (aIndex >= 0 && aIndex < count) {
nsIStyleSheet* sheet = mStyleSheets[aIndex + mCountCatalogSheets + 1];
nsIStyleSheet* sheet = mStyleSheets[aIndex + mCatalogSheetCount + 1];
NS_ADDREF(sheet);
return sheet;
} else {
@ -730,10 +747,21 @@ PRInt32
nsXMLDocument::InternalGetNumberOfStyleSheets()
{
PRInt32 count = mStyleSheets.Count();
if (count != 0 && mInlineStyleSheet == mStyleSheets[count - 1])
if (count != 0 && mInlineStyleSheet == mStyleSheets[count - 1]) {
// subtract the inline style sheet
--count;
count -= (mCountCatalogSheets + 1); // +1 for the attr sheet
NS_ASSERTION(count >= 0, "Why did we end up with a negative count?");
}
if (count != 0 && mAttrStyleSheet == mStyleSheets[mCatalogSheetCount]) {
// subtract the attr sheet
--count;
}
count -= mCatalogSheetCount;
NS_ASSERTION(count >= 0, "How did we get a negative count?");
return count;
}
@ -745,7 +773,8 @@ nsXMLDocument::GetDoctype(nsIDOMDocumentType** aDocumentType)
}
NS_IMETHODIMP
nsXMLDocument::CreateCDATASection(const nsAString& aData, nsIDOMCDATASection** aReturn)
nsXMLDocument::CreateCDATASection(const nsAString& aData,
nsIDOMCDATASection** aReturn)
{
NS_ENSURE_ARG_POINTER(aReturn);
*aReturn = nsnull;
@ -769,7 +798,8 @@ nsXMLDocument::CreateCDATASection(const nsAString& aData, nsIDOMCDATASection** a
}
NS_IMETHODIMP
nsXMLDocument::CreateEntityReference(const nsAString& aName, nsIDOMEntityReference** aReturn)
nsXMLDocument::CreateEntityReference(const nsAString& aName,
nsIDOMEntityReference** aReturn)
{
NS_ENSURE_ARG_POINTER(aReturn);
@ -1085,18 +1115,19 @@ nsXMLDocument::GetBaseTarget(nsAString &aBaseTarget)
NS_IMETHODIMP
nsXMLDocument::GetCSSLoader(nsICSSLoader*& aLoader)
{
nsresult result = NS_OK;
if (! mCSSLoader) {
result = NS_NewCSSLoader(this, getter_AddRefs(mCSSLoader));
if (mCSSLoader) {
if (!mCSSLoader) {
nsresult rv = NS_NewCSSLoader(this, getter_AddRefs(mCSSLoader));
NS_ENSURE_SUCCESS(rv, rv);
mCSSLoader->SetCaseSensitive(PR_TRUE);
// No quirks in XML
// no quirks in XML
mCSSLoader->SetCompatibilityMode(eCompatibility_FullStandards);
}
}
aLoader = mCSSLoader;
NS_IF_ADDREF(aLoader);
return result;
return NS_OK;
}
nsresult

Просмотреть файл

@ -39,7 +39,7 @@
#ifndef nsXMLDocument_h___
#define nsXMLDocument_h___
#include "nsMarkupDocument.h"
#include "nsDocument.h"
#include "nsIXMLDocument.h"
#include "nsIHTMLContentContainer.h"
#include "nsIInterfaceRequestor.h"
@ -61,7 +61,7 @@ class nsIURI;
#define XML_DECLARATION_BITS_STANDALONE_EXISTS 4
#define XML_DECLARATION_BITS_STANDALONE_YES 8
class nsXMLDocument : public nsMarkupDocument,
class nsXMLDocument : public nsDocument,
public nsIXMLDocument,
public nsIHTMLContentContainer,
public nsIInterfaceRequestor,
@ -78,8 +78,7 @@ public:
NS_IMETHOD Reset(nsIChannel* aChannel, nsILoadGroup* aLoadGroup);
NS_IMETHOD StartDocumentLoad(const char* aCommand,
nsIChannel* channel,
NS_IMETHOD StartDocumentLoad(const char* aCommand, nsIChannel* channel,
nsILoadGroup* aLoadGroup,
nsISupports* aContainer,
nsIStreamListener **aDocListener,
@ -96,13 +95,15 @@ public:
// nsIDOMDocument interface
NS_IMETHOD GetDoctype(nsIDOMDocumentType** aDocumentType);
NS_IMETHOD CreateCDATASection(const nsAString& aData, nsIDOMCDATASection** aReturn);
NS_IMETHOD CreateEntityReference(const nsAString& aName, nsIDOMEntityReference** aReturn);
NS_IMETHOD CreateProcessingInstruction(const nsAString& aTarget, const nsAString& aData, nsIDOMProcessingInstruction** aReturn);
NS_IMETHOD CreateElement(const nsAString& aTagName,
nsIDOMElement** aReturn);
NS_IMETHOD ImportNode(nsIDOMNode* aImportedNode,
PRBool aDeep,
NS_IMETHOD CreateCDATASection(const nsAString& aData,
nsIDOMCDATASection** aReturn);
NS_IMETHOD CreateEntityReference(const nsAString& aName,
nsIDOMEntityReference** aReturn);
NS_IMETHOD CreateProcessingInstruction(const nsAString& aTarget,
const nsAString& aData,
nsIDOMProcessingInstruction** aReturn);
NS_IMETHOD CreateElement(const nsAString& aTagName, nsIDOMElement** aReturn);
NS_IMETHOD ImportNode(nsIDOMNode* aImportedNode, PRBool aDeep,
nsIDOMNode** aReturn);
NS_IMETHOD CreateElementNS(const nsAString& aNamespaceURI,
const nsAString& aQualifiedName,
@ -128,7 +129,7 @@ public:
NS_IMETHOD GetCSSLoader(nsICSSLoader*& aLoader);
// nsIInterfaceRequestor
NS_IMETHOD GetInterface(const nsIID& aIID, void** aSink);
NS_DECL_NSIINTERFACEREQUESTOR
// nsIHTTPEventSink
NS_DECL_NSIHTTPEVENTSINK
@ -136,6 +137,8 @@ public:
// nsIDOMXMLDocument
NS_DECL_NSIDOMXMLDOCUMENT
virtual nsresult Init();
protected:
// subclass hooks for sheet ordering
virtual void InternalAddStyleSheet(nsIStyleSheet* aSheet, PRUint32 aFlags);
@ -152,7 +155,7 @@ protected:
// For additional catalog sheets (if any) needed to layout the XML vocabulary
// of the document. Catalog sheets are kept at the beginning of our array of
// style sheets and this counter is used as an offset to distinguish them
PRInt32 mCountCatalogSheets;
PRInt32 mCatalogSheetCount;
nsString mBaseTarget;
nsCOMPtr<nsIEventQueueService> mEventQService;

Просмотреть файл

@ -1,418 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*/
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Heikki Toivonen <heikki@netscape.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/**
* Implementation for the XPointer family of specifications, practically the
* XPointer Processor. The processor can call optional modules that implement
* some XPointer schemes that were not implemented in this file. Please note
* that implementation of the xmlns scheme is left to the optional scheme
* implementations - all the information they need will be passed in.
*
* The framework:
* http://www.w3.org/TR/xptr-framework/
* The element scheme:
* http://www.w3.org/TR/xptr-element/
*
* Additionally this module implements 'fixptr' scheme for the FIXptr
* W3C proposal:
* http://lists.w3.org/Archives/Public/www-xml-linking-comments/2001AprJun/att-0074/01-NOTE-FIXptr-20010425.htm
*/
// TODO:
// - xpointer scheme
#include "nsIDOMNode.h"
#include "nsIDOMNodeList.h"
#include "nsIDOMRange.h"
#include "nsIDOMElement.h"
#include "nsIDOMDocument.h"
#include "nsCOMPtr.h"
#include "nsXPointer.h"
#include "nsIModifyableXPointer.h"
#include "nsISupports.h"
#include "nsISupportsUtils.h"
#include "nsIXPointer.h"
#include "nsFIXptr.h"
#include "nsCOMArray.h"
#include "nsIServiceManager.h"
#include "nsContentUtils.h"
#include "nsContentCID.h"
static NS_DEFINE_IID(kRangeCID, NS_RANGE_CID);
class nsXPointerResult : public nsIModifyableXPointerResult {
public:
nsXPointerResult();
virtual ~nsXPointerResult();
NS_DECL_ISUPPORTS
NS_DECL_NSIXPOINTERRESULT
NS_DECL_NSIMODIFYABLEXPOINTERRESULT
private:
nsCOMArray<nsIDOMRange> mArray;
};
nsXPointerResult::nsXPointerResult()
{
}
nsXPointerResult::~nsXPointerResult()
{
}
NS_INTERFACE_MAP_BEGIN(nsXPointerResult)
NS_INTERFACE_MAP_ENTRY(nsIXPointerResult)
NS_INTERFACE_MAP_ENTRY(nsIModifyableXPointerResult)
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(XPointerResult)
NS_INTERFACE_MAP_END
NS_IMPL_ADDREF(nsXPointerResult)
NS_IMPL_RELEASE(nsXPointerResult)
NS_IMETHODIMP
nsXPointerResult::AppendRange(nsIDOMRange* aRange)
{
NS_ENSURE_ARG(aRange);
if (!mArray.AppendObject(aRange)) {
return NS_ERROR_OUT_OF_MEMORY;
}
return NS_OK;
}
NS_IMETHODIMP
nsXPointerResult::Item(PRUint32 aIndex, nsIDOMRange** aReturn)
{
NS_ENSURE_ARG_POINTER(aReturn);
if (aIndex >= mArray.Count()) {
return NS_ERROR_FAILURE;
}
*aReturn = mArray.ObjectAt(aIndex);
NS_IF_ADDREF(*aReturn);
return NS_OK;
}
NS_IMETHODIMP
nsXPointerResult::GetLength(PRUint32* aLength)
{
NS_ENSURE_ARG_POINTER(aLength);
*aLength = mArray.Count();
return NS_OK;
}
nsresult NS_NewXPointerResult(nsIXPointerResult **aResult)
{
NS_ENSURE_ARG_POINTER(aResult);
*aResult = new nsXPointerResult();
if (!*aResult) {
return NS_ERROR_OUT_OF_MEMORY;
}
NS_ADDREF(*aResult);
return NS_OK;
}
static nsresult NS_NewXPointerResult(nsIDOMRange *aRange,
nsIXPointerResult **aResult)
{
NS_ENSURE_ARG(aRange);
NS_ENSURE_ARG_POINTER(aResult);
nsCOMPtr<nsXPointerResult> result(new nsXPointerResult());
if (!result) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsresult rv = result->AppendRange(aRange);
if (NS_FAILED(rv)) {
return rv;
}
*aResult = result.get();
NS_ADDREF(*aResult);
return NS_OK;
}
static nsresult NS_NewXPointerResult(nsIDOMNode *aNode,
nsIXPointerResult **aResult)
{
NS_ENSURE_ARG(aNode);
NS_ENSURE_ARG_POINTER(aResult);
nsCOMPtr<nsIDOMRange> range(do_CreateInstance(kRangeCID));
if (!range) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsresult rv = range->SelectNode(aNode);
if (NS_FAILED(rv)) {
return rv;
}
return NS_NewXPointerResult(range, aResult);
}
// nsXPointerSchemeContext
class nsXPointerSchemeContext : public nsIXPointerSchemeContext
{
public:
nsXPointerSchemeContext() {};
virtual ~nsXPointerSchemeContext() {};
NS_DECL_ISUPPORTS
NS_DECL_NSIXPOINTERSCHEMECONTEXT
nsresult Append(const nsAString &aScheme, const nsAString &aData);
private:
nsStringArray mSchemes;
nsStringArray mDatas;
};
NS_IMPL_ISUPPORTS1(nsXPointerSchemeContext, nsIXPointerSchemeContext)
NS_IMETHODIMP
nsXPointerSchemeContext::GetCount(PRUint32 *aCount)
{
NS_ENSURE_ARG_POINTER(aCount);
*aCount = mSchemes.Count();
return NS_OK;
}
nsresult
nsXPointerSchemeContext::Append(const nsAString &aScheme,
const nsAString &aData)
{
if (!mSchemes.AppendString(aScheme)) {
return NS_ERROR_OUT_OF_MEMORY;
}
if (!mDatas.AppendString(aData)) {
// Keep mDatas and mSchemes in sync
mSchemes.RemoveStringAt(mSchemes.Count() - 1);
return NS_ERROR_OUT_OF_MEMORY;
}
return NS_OK;
}
NS_IMETHODIMP
nsXPointerSchemeContext::GetSchemeData(PRUint32 aIndex,
nsAString &aScheme,
nsAString &aData)
{
if (aIndex >= mSchemes.Count()) {
aScheme.Truncate();
aData.Truncate();
return NS_ERROR_FAILURE;
}
mSchemes.StringAt(aIndex, aScheme);
mDatas.StringAt(aIndex, aData);
return NS_OK;
}
// XPointer
nsXPointer::nsXPointer()
{
}
nsXPointer::~nsXPointer()
{
}
static nsresult GetNextSchemeNameAndData(nsString& aExpression,
nsString &aScheme,
nsString& aData)
{
aScheme.Truncate();
aData.Truncate();
PRInt32 lp = aExpression.FindChar('(');
if (lp < 1) {
return NS_ERROR_FAILURE; // format |scheme + '(' [ + data + ] + ')'| required
}
PRInt32 i = lp + 1, len = aExpression.Length();
if (i >= len) {
return NS_ERROR_FAILURE; // format |scheme + '(' [ + data + ] + ')'| required
}
aScheme = Substring(aExpression, 0, lp);
aScheme.CompressWhitespace(PR_TRUE, PR_FALSE);
if (aScheme.FindCharInSet(" \t\r\n") > 0) {
return NS_ERROR_FAILURE; // scheme name can't contain ws (we'd really need to check a lot more...)
}
// XXX perf: Switch to string iterators
PRBool escapeOn = PR_FALSE;
PRInt32 balance = 1;
for (; i < len; ++i) {
// Circumflex is the escape character that can precede ^, ( and ) only
if (aExpression[i] == '^') {
if (!escapeOn) {
escapeOn = PR_TRUE;
continue;
}
} else if (escapeOn) {
if ((aExpression[i] != '(') && (aExpression[i] != ')')) {
return NS_ERROR_FAILURE; // illegal use of ^
}
} else if (aExpression[i] == '(') {
++balance;
} else if (aExpression[i] == ')') {
if (--balance == 0) {
aExpression.Cut(0, i + 1);
break;
}
}
aData.Append(aExpression[i]);
escapeOn = PR_FALSE;
}
if (balance != 0) {
return NS_ERROR_FAILURE; // format |scheme + '(' [ + data + ] + ')'| required
}
return NS_OK;
}
nsresult
nsXPointer::Evaluate(nsIDOMDocument *aDocument,
const nsAString& aExpression,
nsIXPointerResult **aResult)
{
NS_ENSURE_ARG_POINTER(aDocument);
NS_ENSURE_ARG_POINTER(aResult);
*aResult = nsnull;
nsresult rv = NS_OK;
if (aExpression.FindChar('(') < 0) {
// Must be shorthand, i.e. plain id
nsCOMPtr<nsIDOMElement> element;
aDocument->GetElementById(aExpression, getter_AddRefs(element));
if (element) {
rv = NS_NewXPointerResult(element, aResult);
}
return rv;
}
nsAutoString expression(aExpression), scheme, data;
NS_NAMED_LITERAL_STRING(element, "element");
NS_NAMED_LITERAL_STRING(fixptr, "fixptr");
NS_NAMED_LITERAL_CSTRING(baseSchemeProgID, NS_XPOINTER_SCHEME_PROCESSOR_BASE);
nsCOMPtr<nsXPointerSchemeContext> contextSchemeDataArray(new nsXPointerSchemeContext());
if (!contextSchemeDataArray) {
return NS_ERROR_OUT_OF_MEMORY;
}
// Keep trying the schemes from left to right until one finds a subresource
while (!expression.IsEmpty()) {
rv = GetNextSchemeNameAndData(expression, scheme, data);
if (NS_FAILED(rv))
break;
// Built in schemes
if (scheme.Equals(element)) {
// We implement element scheme by using the FIXptr processor.
// Check there are no parenthesis (legal in FIXptr data).
if (data.FindChar('(') < 0) {
nsCOMPtr<nsIDOMRange> range;
rv = nsFIXptr::Evaluate(aDocument, data, getter_AddRefs(range));
if (NS_FAILED(rv))
break;
if (range) {
return NS_NewXPointerResult(range, aResult);
}
}
} else if (scheme.Equals(fixptr)) {
nsCOMPtr<nsIDOMRange> range;
rv = nsFIXptr::Evaluate(aDocument, data, getter_AddRefs(range));
if (NS_FAILED(rv))
break;
if (range) {
return NS_NewXPointerResult(range, aResult);
}
} else {
// Add-on schemes
nsCAutoString progid(baseSchemeProgID + NS_ConvertUCS2toUTF8(scheme));
nsCOMPtr<nsIXPointerSchemeProcessor> p(do_CreateInstance(progid.get()));
if (p) {
rv = p->Evaluate(aDocument, contextSchemeDataArray, data, aResult);
if (NS_FAILED(rv))
break;
if (*aResult)
return NS_OK;
}
}
rv = contextSchemeDataArray->Append(scheme, data);
if (NS_FAILED(rv))
break;
}
return rv;
}

Просмотреть файл

@ -57,7 +57,8 @@ CPPSRCS = \
nsXULPopupListener.cpp \
$(NULL)
# we don't want the shared lib, but we want to force the creation of a static lib.
# we don't want the shared lib, but we want to force the creation of a
# static lib.
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk
@ -67,5 +68,6 @@ LOCAL_INCLUDES = \
-I$(srcdir)/../../document/src \
-I$(srcdir)/../../../xml/content/src \
-I$(srcdir)/../../../base/src \
-I$(srcdir)/../../../xml/document/src \
$(NULL)

Просмотреть файл

@ -2850,7 +2850,7 @@ nsXULElement::UnsetAttr(PRInt32 aNameSpaceID,
if (xuldoc) {
// Do a getElementById to retrieve the broadcaster
nsCOMPtr<nsIDOMElement> broadcaster;
nsCOMPtr<nsIDOMXULDocument> domDoc = do_QueryInterface(mDocument);
nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(mDocument);
domDoc->GetElementById(oldValue, getter_AddRefs(broadcaster));
if (broadcaster) {
xuldoc->RemoveBroadcastListenerFor(broadcaster,
@ -4498,6 +4498,8 @@ nsXULElement::EnsureSlots()
return NS_OK;
NS_ASSERTION(mPrototype->mNodeInfo, "prototype has null nodeinfo!");
// XXX this is broken, we need to get a new nodeinfo from the
// document's nodeinfo manager!!!
mSlots->mNodeInfo = mPrototype->mNodeInfo;
return NS_OK;

Просмотреть файл

@ -50,6 +50,7 @@
#include "nsIDOMElement.h"
#include "nsIDOMXULElement.h"
#include "nsIDOMNodeList.h"
#include "nsIDOMDocument.h"
#include "nsIDOMDocumentXBL.h"
#include "nsIXULPopupListener.h"
#include "nsIDOMMouseListener.h"
@ -520,9 +521,9 @@ XULPopupListenerImpl::LaunchPopup(PRInt32 aClientX, PRInt32 aClientY)
return rv;
}
// Turn the document into a XUL document so we can use getElementById
nsCOMPtr<nsIDOMXULDocument> xulDocument = do_QueryInterface(document);
if (xulDocument == nsnull) {
// Turn the document into a DOM document so we can use getElementById
nsCOMPtr<nsIDOMDocument> domDocument = do_QueryInterface(document);
if (!domDocument) {
NS_ERROR("Popup attached to an element that isn't in XUL!");
return NS_ERROR_FAILURE;
}
@ -539,7 +540,7 @@ XULPopupListenerImpl::LaunchPopup(PRInt32 aClientX, PRInt32 aClientY)
if (popup)
popupContent = do_QueryInterface(popup);
else {
nsCOMPtr<nsIDOMDocumentXBL> nsDoc(do_QueryInterface(xulDocument));
nsCOMPtr<nsIDOMDocumentXBL> nsDoc(do_QueryInterface(domDocument));
nsCOMPtr<nsIDOMNodeList> list;
nsDoc->GetAnonymousNodes(mElement, getter_AddRefs(list));
if (list) {
@ -559,7 +560,8 @@ XULPopupListenerImpl::LaunchPopup(PRInt32 aClientX, PRInt32 aClientY)
}
}
}
else if (NS_FAILED(rv = xulDocument->GetElementById(identifier, getter_AddRefs(popupContent)))) {
else if (NS_FAILED(rv = domDocument->GetElementById(identifier,
getter_AddRefs(popupContent)))) {
// Use getElementById to obtain the popup content and gracefully fail if
// we didn't find any popup content in the document.
NS_ERROR("GetElementById had some kind of spasm.");

Просмотреть файл

@ -51,7 +51,7 @@
class nsIContent; // XXX nsIXMLDocument.h is bad and doesn't declare this class...
#include "nsIXMLDocument.h"
#include "nsISupports.h"
#include "nsString.h"
class nsForwardReference;
@ -65,7 +65,7 @@ class nsIXULTemplateBuilder;
class nsIURI;
// {954F0811-81DC-11d2-B52A-000000000000}
#define NS_IRDFDOCUMENT_IID \
#define NS_IXULDOCUMENT_IID \
{ 0x954f0811, 0x81dc, 0x11d2, { 0xb5, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }
/**
@ -75,10 +75,10 @@ class nsIURI;
class nsIRDFDataSource;
class nsIXULPrototypeDocument;
class nsIXULDocument : public nsIXMLDocument
class nsIXULDocument : public nsISupports
{
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IRDFDOCUMENT_IID)
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXULDOCUMENT_IID)
// The resource-to-element map is a one-to-many mapping of RDF
// resources to content elements.

Просмотреть файл

@ -66,7 +66,8 @@ CPPSRCS = \
nsXULPrototypeDocument.cpp \
$(NULL)
# we don't want the shared lib, but we want to force the creation of a static lib.
# we don't want the shared lib, but we want to force the creation of a
# static lib.
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk
@ -74,5 +75,6 @@ include $(topsrcdir)/config/rules.mk
LOCAL_INCLUDES = -I$(srcdir)/../../../base/src \
-I$(srcdir)/../../content/src \
-I$(srcdir)/../../templates/src \
-I$(srcdir)/../../../xml/document/src \
$(NULL)

Просмотреть файл

@ -66,6 +66,7 @@
#include "nsIFormControl.h"
#include "nsIHTMLContent.h"
#include "nsIHTMLContentContainer.h"
#include "nsIHTMLStyleSheet.h"
#include "nsINameSpace.h"
#include "nsINameSpaceManager.h"
#include "nsINodeInfo.h"

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -42,61 +42,22 @@
#define nsXULDocument_h__
#include "nsCOMPtr.h"
#include "nsXMLDocument.h"
#include "nsElementMap.h"
#include "nsForwardReference.h"
#include "nsIArena.h"
#include "nsICSSLoader.h"
#include "nsIContent.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsIDOMNSDocument.h"
#include "nsIDOMDocumentStyle.h"
#include "nsIDOMDocumentView.h"
#include "nsIDOMDocumentXBL.h"
#include "nsIDOMDocumentRange.h"
#include "nsIDOMDocumentTraversal.h"
#include "nsIDOMStyleSheetList.h"
#include "nsISelection.h"
#include "nsIDOMXULCommandDispatcher.h"
#include "nsIDOMXULDocument.h"
#include "nsIDocument.h"
#include "nsIEventListenerManager.h"
#include "nsIHTMLCSSStyleSheet.h"
#include "nsIHTMLContentContainer.h"
#include "nsIHTMLStyleSheet.h"
#include "nsILineBreakerFactory.h"
#include "nsIParser.h"
#include "nsIPrincipal.h"
#include "nsIRDFDataSource.h"
#include "nsIScriptGlobalObject.h"
#include "nsIScriptSecurityManager.h"
#include "nsISupportsArray.h"
#include "nsCOMArray.h"
#include "nsIURI.h"
#include "nsIWordBreakerFactory.h"
#include "nsIXULDocument.h"
#include "nsIXULPrototypeDocument.h"
#include "nsRDFDOMNodeList.h"
#include "nsTime.h"
#include "nsVoidArray.h"
#include "nsWeakPtr.h"
#include "nsWeakReference.h"
#include "nsIStreamLoader.h"
#include "nsIBindingManager.h"
#include "nsINodeInfo.h"
#include "nsIDOMDocumentEvent.h"
#include "nsIDOM3DocumentEvent.h"
#include "nsScriptLoader.h"
#include "pldhash.h"
class nsIAtom;
class nsIElementFactory;
class nsIFile;
class nsILoadGroup;
class nsIRDFResource;
class nsIRDFService;
class nsITimer;
class nsIXULContentUtils;
class nsIXULPrototypeCache;
class nsIFocusController;
#if 0 // XXXbe save me, scc (need NSCAP_FORWARD_DECL(nsXULPrototypeScript))
@ -117,35 +78,20 @@ struct PRLogModuleInfo;
/**
* The XUL document class
*/
class nsXULDocument : public nsIDocument,
class nsXULDocument : public nsXMLDocument,
public nsIXULDocument,
public nsIDOMXULDocument,
public nsIDOMDocumentEvent,
public nsIDOM3DocumentEvent,
public nsIDOMDocumentView,
public nsIDOMDocumentXBL,
public nsIDOMDocumentRange,
public nsIDOMDocumentTraversal,
public nsIDOMNSDocument,
public nsIDOM3Node,
public nsIDOMDocumentStyle,
public nsIDOMEventReceiver,
public nsIDOM3EventTarget,
public nsIHTMLContentContainer,
public nsIStreamLoaderObserver,
public nsSupportsWeakReference
public nsIStreamLoaderObserver
{
public:
nsXULDocument();
virtual ~nsXULDocument();
// nsISupports interface
NS_DECL_ISUPPORTS
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSISTREAMLOADEROBSERVER
// nsIDocument interface
NS_IMETHOD GetArena(nsIArena** aArena);
NS_IMETHOD Reset(nsIChannel* aChannel, nsILoadGroup* aLoadGroup);
NS_IMETHOD ResetToURI(nsIURI *aURI, nsILoadGroup* aLoadGroup);
@ -157,144 +103,14 @@ public:
PRBool aReset = PR_TRUE,
nsIContentSink* aSink = nsnull);
NS_IMETHOD StopDocumentLoad();
virtual const nsString* GetDocumentTitle() const;
NS_IMETHOD GetDocumentURL(nsIURI** aURI) const;
NS_IMETHOD GetPrincipal(nsIPrincipal **aPrincipal);
NS_IMETHOD AddPrincipal(nsIPrincipal *aPrincipal);
NS_IMETHOD GetDocumentLoadGroup(nsILoadGroup **aGroup) const;
NS_IMETHOD GetBaseURL(nsIURI*& aURL) const;
NS_IMETHOD SetBaseURL(nsIURI *aURI);
NS_IMETHOD GetBaseTarget(nsAString &aBaseTarget);
NS_IMETHOD SetBaseTarget(const nsAString &aBaseTarget);
NS_IMETHOD GetStyleSheets(nsIDOMStyleSheetList** aStyleSheets);
NS_IMETHOD GetDocumentCharacterSet(nsAString& oCharSetID);
NS_IMETHOD SetDocumentCharacterSet(const nsAString& aCharSetID);
NS_IMETHOD GetDocumentCharacterSetSource(PRInt32* aCharsetSource);
NS_IMETHOD SetDocumentCharacterSetSource(PRInt32 aCharsetSource);
// NS_IMETHOD GetContentType(nsAString& aContentType);
// Already declared in nsIDOMNSDocument
NS_IMETHOD SetContentType(const nsAString& aContentType);
NS_IMETHOD GetContentLanguage(nsAString& aContentLanguage) const;
/**
* Retrieve and get bidi state of the document
* (set depending on presence of bidi data).
*/
NS_IMETHOD GetBidiEnabled(PRBool* aBidiEnabled) const;
NS_IMETHOD SetBidiEnabled(PRBool aBidiEnabled);
NS_IMETHOD AddCharSetObserver(nsIObserver* aObserver);
NS_IMETHOD RemoveCharSetObserver(nsIObserver* aObserver);
NS_IMETHOD GetLineBreaker(nsILineBreaker** aResult) ;
NS_IMETHOD SetLineBreaker(nsILineBreaker* aLineBreaker) ;
NS_IMETHOD GetWordBreaker(nsIWordBreaker** aResult) ;
NS_IMETHOD SetWordBreaker(nsIWordBreaker* aWordBreaker) ;
NS_IMETHOD GetHeaderData(nsIAtom* aHeaderField,
nsAString& aData) const;
NS_IMETHOD SetHeaderData(nsIAtom* aheaderField,
const nsAString& aData);
NS_IMETHOD CreateShell(nsIPresContext* aContext,
nsIViewManager* aViewManager,
nsIStyleSet* aStyleSet,
nsIPresShell** aInstancePtrResult);
virtual PRBool DeleteShell(nsIPresShell* aShell);
virtual PRInt32 GetNumberOfShells();
NS_IMETHOD GetShellAt(PRInt32 aIndex, nsIPresShell** aShell);
NS_IMETHOD GetParentDocument(nsIDocument** aParent);
NS_IMETHOD SetParentDocument(nsIDocument* aParent);
NS_IMETHOD SetSubDocumentFor(nsIContent *aContent, nsIDocument* aSubDoc);
NS_IMETHOD GetSubDocumentFor(nsIContent *aContent, nsIDocument** aSubDoc);
NS_IMETHOD FindContentForSubDocument(nsIDocument *aDocument,
nsIContent **aContent);
NS_IMETHOD GetRootContent(nsIContent** aRoot);
NS_IMETHOD SetRootContent(nsIContent* aRoot);
NS_IMETHOD ChildAt(PRInt32 aIndex, nsIContent*& aResult) const;
NS_IMETHOD IndexOf(nsIContent* aPossibleChild, PRInt32& aIndex) const;
NS_IMETHOD GetChildCount(PRInt32& aCount);
NS_IMETHOD GetNumberOfStyleSheets(PRBool aIncludeSpecialSheets,
PRInt32* aCount);
NS_IMETHOD GetStyleSheetAt(PRInt32 aIndex, PRBool aIncludeSpecialSheets,
nsIStyleSheet** aSheet);
NS_IMETHOD GetIndexOfStyleSheet(nsIStyleSheet* aSheet, PRInt32* aIndex);
virtual void AddStyleSheet(nsIStyleSheet* aSheet, PRUint32 aFlags);
virtual void RemoveStyleSheet(nsIStyleSheet* aSheet);
NS_IMETHOD UpdateStyleSheets(nsCOMArray<nsIStyleSheet>& aOldSheets,
nsCOMArray<nsIStyleSheet>& aNewSheets);
void AddStyleSheetToStyleSets(nsIStyleSheet* aSheet);
void RemoveStyleSheetFromStyleSets(nsIStyleSheet* aSheet);
NS_IMETHOD InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex);
virtual void SetStyleSheetApplicableState(nsIStyleSheet* aSheet,
PRBool aApplicable);
NS_IMETHOD GetCSSLoader(nsICSSLoader*& aLoader);
NS_IMETHOD GetScriptGlobalObject(nsIScriptGlobalObject** aScriptGlobalObject);
NS_IMETHOD SetScriptGlobalObject(nsIScriptGlobalObject* aScriptGlobalObject);
NS_IMETHOD GetScriptLoader(nsIScriptLoader** aScriptLoader);
virtual void AddObserver(nsIDocumentObserver* aObserver);
virtual PRBool RemoveObserver(nsIDocumentObserver* aObserver);
NS_IMETHOD BeginUpdate();
NS_IMETHOD EndUpdate();
NS_IMETHOD BeginLoad();
NS_IMETHOD EndLoad();
NS_IMETHOD ContentChanged(nsIContent* aContent,
nsISupports* aSubContent);
NS_IMETHOD ContentStatesChanged(nsIContent* aContent1,
nsIContent* aContent2,
PRInt32 aStateMask);
NS_IMETHOD AttributeChanged(nsIContent* aChild,
PRInt32 aNameSpaceID,
nsIAtom* aAttribute,
PRInt32 aModType,
nsChangeHint aHint);
NS_IMETHOD ContentAppended(nsIContent* aContainer,
PRInt32 aNewIndexInContainer);
@ -310,54 +126,19 @@ public:
NS_IMETHOD ContentRemoved(nsIContent* aContainer,
nsIContent* aChild,
PRInt32 aIndexInContainer);
NS_IMETHOD AttributeWillChange(nsIContent* aChild,
PRInt32 aNameSpaceID,
nsIAtom* aAttribute);
NS_IMETHOD StyleRuleChanged(nsIStyleSheet* aStyleSheet,
nsIStyleRule* aStyleRule,
NS_IMETHOD AttributeChanged(nsIContent* aElement, PRInt32 aNameSpaceID,
nsIAtom* aAttribute, PRInt32 aModType,
nsChangeHint aHint);
NS_IMETHOD StyleRuleAdded(nsIStyleSheet* aStyleSheet,
nsIStyleRule* aStyleRule);
NS_IMETHOD StyleRuleRemoved(nsIStyleSheet* aStyleSheet,
nsIStyleRule* aStyleRule);
NS_IMETHOD GetSelection(nsISelection** aSelection);
NS_IMETHOD SelectAll();
NS_IMETHOD FindNext(const nsAString &aSearchStr, PRBool aMatchCase, PRBool aSearchDown, PRBool &aIsFound);
NS_IMETHOD FlushPendingNotifications(PRBool aFlushReflows = PR_TRUE, PRBool aUpdateViews = PR_FALSE);
NS_IMETHOD GetAndIncrementContentID(PRInt32* aID);
NS_IMETHOD GetBindingManager(nsIBindingManager** aResult);
NS_IMETHOD GetNodeInfoManager(class nsINodeInfoManager *&aNodeInfoManager);
NS_IMETHOD AddReference(void *aKey, nsISupports *aReference);
NS_IMETHOD RemoveReference(void *aKey, nsISupports **aOldReference);
NS_IMETHOD SetContainer(nsISupports *aContainer);
NS_IMETHOD GetContainer(nsISupports **aContainer);
NS_IMETHOD GetScriptEventManager(nsIScriptEventManager **aResult);
virtual void SetDisplaySelection(PRInt8 aToggle);
virtual PRInt8 GetDisplaySelection() const;
NS_IMETHOD HandleDOMEvent(nsIPresContext* aPresContext,
nsEvent* aEvent,
nsIDOMEvent** aDOMEvent,
PRUint32 aFlags,
nsEventStatus* aEventStatus);
NS_IMETHOD_(PRBool) EventCaptureRegistration(PRInt32 aCapturerIncrement);
// nsIXMLDocument interface
NS_IMETHOD SetDefaultStylesheets(nsIURI* aUrl);
NS_IMETHOD SetTitle(const PRUnichar *aTitle);
NS_IMETHOD SetXMLDeclaration(const nsAString& aVersion,
const nsAString& aEncoding,
const nsAString& Standalone);
@ -368,66 +149,37 @@ public:
// nsIXULDocument interface
NS_IMETHOD AddElementForID(const nsAString& aID, nsIContent* aElement);
NS_IMETHOD RemoveElementForID(const nsAString& aID, nsIContent* aElement);
NS_IMETHOD GetElementsForID(const nsAString& aID, nsISupportsArray* aElements);
NS_IMETHOD GetElementsForID(const nsAString& aID,
nsISupportsArray* aElements);
NS_IMETHOD AddForwardReference(nsForwardReference* aRef);
NS_IMETHOD ResolveForwardReferences();
NS_IMETHOD SetMasterPrototype(nsIXULPrototypeDocument* aDocument);
NS_IMETHOD GetMasterPrototype(nsIXULPrototypeDocument** aDocument);
NS_IMETHOD SetCurrentPrototype(nsIXULPrototypeDocument* aDocument);
NS_IMETHOD SetDocumentURL(nsIURI* anURL);
NS_IMETHOD PrepareStyleSheets(nsIURI* anURL);
NS_IMETHOD AddSubtreeToDocument(nsIContent* aElement);
NS_IMETHOD RemoveSubtreeFromDocument(nsIContent* aElement);
NS_IMETHOD SetTemplateBuilderFor(nsIContent* aContent, nsIXULTemplateBuilder* aBuilder);
NS_IMETHOD GetTemplateBuilderFor(nsIContent* aContent, nsIXULTemplateBuilder** aResult);
NS_IMETHOD SetTemplateBuilderFor(nsIContent* aContent,
nsIXULTemplateBuilder* aBuilder);
NS_IMETHOD GetTemplateBuilderFor(nsIContent* aContent,
nsIXULTemplateBuilder** aResult);
NS_IMETHOD OnPrototypeLoadDone();
NS_IMETHOD OnHide();
// nsIDOMEventReceiver interface
NS_IMETHOD AddEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID);
NS_IMETHOD RemoveEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID);
NS_IMETHOD GetListenerManager(nsIEventListenerManager** aInstancePtrResult);
NS_IMETHOD HandleEvent(nsIDOMEvent *aEvent);
NS_IMETHOD GetSystemEventGroup(nsIDOMEventGroup** aGroup);
// nsIDOMNode interface overrides
NS_IMETHOD CloneNode(PRBool deep, nsIDOMNode **_retval);
// nsIDOMEventTarget interface
NS_DECL_NSIDOMEVENTTARGET
// nsIDOM3EventTarget interface
NS_DECL_NSIDOM3EVENTTARGET
// nsIDOMDocument interface
NS_DECL_NSIDOMDOCUMENT
// nsIDOMDocumentEvent interface
NS_DECL_NSIDOMDOCUMENTEVENT
// nsIDOM3DocumentEvent interface
NS_DECL_NSIDOM3DOCUMENTEVENT
// nsIDOMDocumentView interface
NS_DECL_NSIDOMDOCUMENTVIEW
// nsIDOMDocumentXBL interface
NS_DECL_NSIDOMDOCUMENTXBL
// nsIDOMDocumentRange interface
NS_DECL_NSIDOMDOCUMENTRANGE
// nsIDOMDocumentTraversal interface
NS_DECL_NSIDOMDOCUMENTTRAVERSAL
// nsIDOMNSDocument interface
NS_DECL_NSIDOMNSDOCUMENT
// nsIDOMDocument interface overrides
NS_IMETHOD CreateElement(const nsAString & tagName,
nsIDOMElement **_retval);
NS_IMETHOD GetElementById(const nsAString & elementId,
nsIDOMElement **_retval);
// nsIDOMXULDocument interface
NS_DECL_NSIDOMXULDOCUMENT
// nsIDOMNode interface
NS_DECL_NSIDOMNODE
// nsIDOM3Node interface
NS_DECL_NSIDOM3NODE
// nsIDOMNSDocument
NS_IMETHOD GetContentType(nsAString& aContentType);
// nsIHTMLContentContainer interface
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aResult);
@ -461,10 +213,6 @@ protected:
const nsAString& aValue,
nsRDFDOMNodeList* aElements);
nsresult
ParseTagString(const nsAString& aTagName, nsIAtom*& aName,
nsIAtom*& aPrefix);
void SetIsPopup(PRBool isPopup) { mIsPopup = isPopup; };
nsresult CreateElement(nsINodeInfo *aNodeInfo, nsIContent** aResult);
@ -482,7 +230,8 @@ protected:
nsIParser** aResult);
nsresult ApplyPersistentAttributes();
nsresult ApplyPersistentAttributesToElements(nsIRDFResource* aResource, nsISupportsArray* aElements);
nsresult ApplyPersistentAttributesToElements(nsIRDFResource* aResource,
nsISupportsArray* aElements);
nsresult
AddElementToDocumentPre(nsIContent* aElement);
@ -511,12 +260,12 @@ protected:
static nsIElementFactory* gHTMLElementFactory;
static nsIElementFactory* gXMLElementFactory;
static nsIXULContentUtils* gXULUtils;
static nsIXULPrototypeCache* gXULCache;
static PRLogModuleInfo* gXULLog;
static void GetElementFactory(PRInt32 aNameSpaceID, nsIElementFactory** aResult);
static void GetElementFactory(PRInt32 aNameSpaceID,
nsIElementFactory** aResult);
nsresult
Persist(nsIContent* aElement, PRInt32 aNameSpaceID, nsIAtom* aAttribute);
@ -524,67 +273,30 @@ protected:
nsresult
DestroyForwardReferences();
// IMPORTANT: The ownership implicit in the following member variables has been
// explicitly checked and set using nsCOMPtr for owning pointers and raw COM interface
// pointers for weak (ie, non owning) references. If you add any members to this
// IMPORTANT: The ownership implicit in the following member
// variables has been explicitly checked and set using nsCOMPtr
// for owning pointers and raw COM interface pointers for weak
// (ie, non owning) references. If you add any members to this
// class, please make the ownership explicit (pinkerton, scc).
// NOTE, THIS IS STILL IN PROGRESS, TALK TO PINK OR SCC BEFORE CHANGING
// NOTE, THIS IS STILL IN PROGRESS, TALK TO PINK OR SCC BEFORE
// CHANGING
nsCOMPtr<nsIArena> mArena;
// This always has at least one observer
nsAutoVoidArray mObservers;
nsString mDocumentTitle;
nsCOMPtr<nsIURI> mDocumentURL; // [OWNER] ??? compare with loader
nsCOMPtr<nsIURI> mDocumentBaseURL;
nsWeakPtr mDocumentLoadGroup; // [WEAK] leads to loader
nsWeakPtr mDocumentContainer; // [WEAK] leads to container
nsCOMPtr<nsIPrincipal> mDocumentPrincipal; // [OWNER]
nsCOMPtr<nsIContent> mRootContent; // [OWNER]
nsIDocument* mParentDocument; // [WEAK]
nsCOMPtr<nsIDOMStyleSheetList> mDOMStyleSheets; // [OWNER]
nsIScriptGlobalObject* mScriptGlobalObject; // [WEAK]
nsXULDocument* mNextSrcLoadWaiter; // [OWNER] but not COMPtr
nsString mCharSetID;
PRInt32 mCharacterSetSource;
// This is set in nsPresContext::Init, which calls SetShell.
// Since I think this is almost always done, take the 32-byte hit for
// an nsAutoVoidArray instead of having it be a separate allocation.
nsAutoVoidArray mCharSetObservers;
nsVoidArray mStyleSheets;
nsCOMPtr<nsISelection> mSelection; // [OWNER]
PRInt8 mDisplaySelection;
// if we're attached to a DocumentViewImpl, we have a presshell
nsAutoVoidArray mPresShells;
nsCOMPtr<nsIEventListenerManager> mListenerManager; // [OWNER]
nsCOMPtr<nsIHTMLStyleSheet> mAttrStyleSheet; // [OWNER]
nsCOMPtr<nsIHTMLCSSStyleSheet> mInlineStyleSheet; // [OWNER]
nsCOMPtr<nsICSSLoader> mCSSLoader; // [OWNER]
nsCOMPtr<nsIScriptLoader> mScriptLoader; // [OWNER]
nsElementMap mElementMap;
nsCOMPtr<nsIRDFDataSource> mLocalStore;
nsCOMPtr<nsILineBreaker> mLineBreaker; // [OWNER]
nsCOMPtr<nsIWordBreaker> mWordBreaker; // [OWNER]
PLDHashTable *mSubDocuments; // [OWNER] of subelements
PRPackedBool mIsPopup;
PRPackedBool mIsFastLoad;
PRPackedBool mApplyingPersistedAttrs;
PRPackedBool mIsWritingFastLoad;
nsCOMPtr<nsIDOMXULCommandDispatcher> mCommandDispatcher; // [OWNER] of the focus tracker
nsCOMPtr<nsIBindingManager> mBindingManager; // [OWNER] of all bindings
nsSupportsHashtable* mBoxObjectTable; // Box objects for content nodes.
// Maintains the template builders that have been attached to
// content elements
nsSupportsHashtable* mTemplateBuilderTable;
nsVoidArray mForwardReferences;
nsForwardReference::Phase mResolutionPhase;
PRInt32 mNextContentID;
PRInt32 mNumCapturers; //Number of capturing event handlers in doc. Used to optimize event delivery.
PRBool mBidiEnabled;
/*
* XXX dr
@ -604,7 +316,6 @@ protected:
*/
nsCOMPtr<nsIDOMNode> mTooltipNode; // [OWNER] element triggering the tooltip
nsCOMPtr<nsINodeInfoManager> mNodeInfoManager; // [OWNER] list of names in the document
/**
* Context stack, which maintains the state of the Builder and allows
@ -722,10 +433,13 @@ protected:
PRBool mResolved;
public:
BroadcasterHookup(nsXULDocument* aDocument, nsIContent* aObservesElement) :
mDocument(aDocument),
BroadcasterHookup(nsXULDocument* aDocument,
nsIContent* aObservesElement)
: mDocument(aDocument),
mObservesElement(aObservesElement),
mResolved(PR_FALSE) {}
mResolved(PR_FALSE)
{
}
virtual ~BroadcasterHookup();
@ -797,7 +511,7 @@ protected:
* Owning references to all of the prototype documents that were
* used to construct this document.
*/
nsCOMPtr<nsISupportsArray> mPrototypes;
nsCOMArray<nsIXULPrototypeDocument> mPrototypes;
/**
* Prepare to walk the current prototype.
@ -829,7 +543,8 @@ protected:
virtual ~CachedChromeStreamListener();
public:
CachedChromeStreamListener(nsXULDocument* aDocument, PRBool aProtoLoaded);
CachedChromeStreamListener(nsXULDocument* aDocument,
PRBool aProtoLoaded);
NS_DECL_ISUPPORTS
NS_DECL_NSIREQUESTOBSERVER
@ -853,8 +568,6 @@ protected:
friend class ParserObserver;
nsSupportsHashtable mContentWrapperHash;
/**
* A map from a broadcaster element to a list of listener elements.
*/
@ -865,6 +578,4 @@ private:
};
#endif // nsXULDocument_h__

Просмотреть файл

@ -69,7 +69,7 @@
#include "nsIContent.h"
#include "nsIDOMElement.h"
#include "nsIDOMNode.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDOMXULElement.h"
#include "nsIDocument.h"
#include "nsIBindingManager.h"
@ -1408,13 +1408,13 @@ nsXULTemplateBuilder::GetTemplateRoot(nsIContent** aResult)
if (! doc)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMXULDocument> xulDoc = do_QueryInterface(doc);
NS_ASSERTION(xulDoc != nsnull, "expected a XUL document");
if (! xulDoc)
nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc);
NS_ASSERTION(domDoc, "expected a XUL document");
if (! domDoc)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMElement> domElement;
xulDoc->GetElementById(templateID, getter_AddRefs(domElement));
domDoc->GetElementById(templateID, getter_AddRefs(domElement));
if (domElement)
return CallQueryInterface(domElement, aResult);

Просмотреть файл

@ -1,22 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist:dom directory
#
nsIDOMEventCapturer.h
nsIDOMEventReceiver.h
nsIDOMFocusListener.h
nsIDOMFormListener.h
nsIDOMKeyListener.h
nsIDOMLoadListener.h
nsIDOMMouseListener.h
nsIDOMMouseMotionListener.h
nsIDOMMutationListener.h
nsIDOMDragListener.h
nsIDOMPaintListener.h
nsIDOMTextListener.h
nsIDOMCompositionListener.h
nsIDOMXULListener.h
nsIDOMScrollListener.h
nsIDOMContextMenuListener.h

Просмотреть файл

@ -29,7 +29,6 @@ include $(DEPTH)/config/autoconf.mk
MODULE = dom
EXPORTS = \
nsIDOMEventCapturer.h \
nsIDOMEventReceiver.h \
nsIDOMFocusListener.h \
nsIDOMFormListener.h \

Просмотреть файл

Просмотреть файл

@ -38,13 +38,13 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMDocument.idl"
#include "domstubs.idl"
interface nsIDOMXULCommandDispatcher;
[scriptable, uuid(17ddd8c0-c5f8-11d2-a6ae-00104bde6048)]
interface nsIDOMXULDocument : nsIDOMDocument
interface nsIDOMXULDocument : nsISupports
{
attribute nsIDOMNode popupNode;
attribute nsIDOMNode tooltipNode;

Просмотреть файл

@ -1892,6 +1892,7 @@ nsDOMClassInfo::Init()
DOM_CLASSINFO_MAP_END
DOM_CLASSINFO_MAP_BEGIN(XULDocument, nsIDOMXULDocument)
DOM_CLASSINFO_MAP_ENTRY(nsIDOMDocument)
DOM_CLASSINFO_MAP_ENTRY(nsIDOMXULDocument)
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSDocument)
DOM_CLASSINFO_MAP_ENTRY(nsIDOMDocumentEvent)

Просмотреть файл

@ -50,6 +50,7 @@
#include "nsCRT.h"
#include "nsIPrefBranchInternal.h"
#include "nsIObserverService.h"
#include "nsString.h"
static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);

Просмотреть файл

@ -38,6 +38,7 @@
#include "nsIDOMProcessingInstruction.h"
#include "nsIDOMElement.h"
#include "nsIDOMText.h"
#include "nsString.h"
// Need to determine if these are well-chosen.
#define WRAPPER_INITIAL_SIZE 256

Просмотреть файл

@ -36,6 +36,7 @@
#include "nsIDOMNode.h"
#include "nsIDOMNodeList.h"
#include "txAtoms.h"
#include "nsString.h"
MOZ_DECL_CTOR_COUNTER(Node)

Просмотреть файл

@ -52,6 +52,7 @@
#include "nsIDOMRange.h"
#include "nsIModifyableXPointer.h"
#include "nsAutoPtr.h"
#include "nsString.h"
#include "nsContentCID.h"
static NS_DEFINE_IID(kRangeCID, NS_RANGE_CID);

Просмотреть файл

@ -126,7 +126,7 @@ nsXPointerResult::Item(PRUint32 aIndex, nsIDOMRange** aReturn)
{
NS_ENSURE_ARG_POINTER(aReturn);
if (aIndex >= mArray.Count()) {
if (aIndex >= (PRUint32)mArray.Count()) {
return NS_ERROR_FAILURE;
}
@ -255,7 +255,7 @@ nsXPointerSchemeContext::GetSchemeData(PRUint32 aIndex,
nsAString &aScheme,
nsAString &aData)
{
if (aIndex >= mSchemes.Count()) {
if (aIndex >= (PRUint32)mSchemes.Count()) {
aScheme.Truncate();
aData.Truncate();

Просмотреть файл

@ -56,7 +56,7 @@ class nsILineBreakerFactory : public nsISupports
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ILINEBREAKERFACTORY_IID)
NS_IMETHOD GetBreaker(nsString& aParam, nsILineBreaker** breaker) = 0;
NS_IMETHOD GetBreaker(const nsAString& aParam, nsILineBreaker** breaker) = 0;
};

Просмотреть файл

@ -56,7 +56,7 @@ class nsIWordBreakerFactory : public nsISupports
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IWORDBREAKERFACTORY_IID)
NS_IMETHOD GetBreaker(nsString& aParam, nsIWordBreaker** breaker) = 0;
NS_IMETHOD GetBreaker(const nsAString& aParam, nsIWordBreaker** breaker) = 0;
};

Просмотреть файл

@ -60,7 +60,8 @@ NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
NS_IMPL_ADDREF ( nsLWBreakerFImp );
NS_IMPL_RELEASE ( nsLWBreakerFImp );
nsresult nsLWBreakerFImp::QueryInterface(REFNSIID aIID, void** aInstancePtr)
nsresult
nsLWBreakerFImp::QueryInterface(REFNSIID aIID, void** aInstancePtr)
{
if( NULL == aInstancePtr) {
@ -119,7 +120,8 @@ static const PRUnichar gCnNoEnd[] =
{
0xfffd // to be changed
};
nsresult nsLWBreakerFImp::GetBreaker(nsString& aParam, nsILineBreaker** oResult)
nsresult
nsLWBreakerFImp::GetBreaker(const nsAString& aParam, nsILineBreaker** oResult)
{
if( NULL == oResult) {
return NS_ERROR_NULL_POINTER;
@ -158,7 +160,8 @@ nsresult nsLWBreakerFImp::GetBreaker(nsString& aParam, nsILineBreaker** oResult)
return NS_OK;
}
nsresult nsLWBreakerFImp::GetBreaker(nsString& aParam, nsIWordBreaker** oResult)
nsresult
nsLWBreakerFImp::GetBreaker(const nsAString& aParam, nsIWordBreaker** oResult)
{
if( NULL == oResult) {
return NS_ERROR_NULL_POINTER;

Просмотреть файл

@ -58,8 +58,8 @@ public:
nsLWBreakerFImp();
virtual ~nsLWBreakerFImp();
NS_IMETHOD GetBreaker(nsString& aParam, nsILineBreaker** breaker);
NS_IMETHOD GetBreaker(nsString& aParam, nsIWordBreaker** breaker);
NS_IMETHOD GetBreaker(const nsAString& aParam, nsILineBreaker** breaker);
NS_IMETHOD GetBreaker(const nsAString& aParam, nsIWordBreaker** breaker);
};

Просмотреть файл

@ -1166,7 +1166,7 @@ NS_IMETHODIMP
DocumentViewerImpl::GetDOMDocument(nsIDOMDocument **aResult)
{
NS_ENSURE_TRUE(mDocument, NS_ERROR_NOT_AVAILABLE);
return CallQueryInterface(mDocument.get(), aResult);
return CallQueryInterface(mDocument, aResult);
}
NS_IMETHODIMP

Просмотреть файл

@ -155,7 +155,6 @@ class nsIDocumentLoaderFactory;
#ifdef MOZ_XUL
#include "nsIXULContentSink.h"
#include "nsIXULDocument.h"
#include "nsIXULPopupListener.h"
#include "nsIXULPrototypeCache.h"
@ -521,7 +520,6 @@ MAKE_CTOR(CreateComputedDOMStyle, nsIComputedDOMStyle, NS_NewCom
MAKE_CTOR(CreateXULSortService, nsIXULSortService, NS_NewXULSortService)
// NS_NewXULContentBuilder
// NS_NewXULTreeBuilder
MAKE_CTOR(CreateXULContentSink, nsIXULContentSink, NS_NewXULContentSink)
MAKE_CTOR(CreateXULDocument, nsIXULDocument, NS_NewXULDocument)
MAKE_CTOR(CreateXULPopupListener, nsIXULPopupListener, NS_NewXULPopupListener)
// NS_NewXULControllers
@ -1129,11 +1127,6 @@ static const nsModuleComponentInfo gComponents[] = {
"@mozilla.org/xul/xul-tree-builder;1",
NS_NewXULTreeBuilder },
{ "XUL Content Sink",
NS_XULCONTENTSINK_CID,
"@mozilla.org/xul/xul-content-sink;1",
CreateXULContentSink },
{ "XUL Document",
NS_XULDOCUMENT_CID,
"@mozilla.org/xul/xul-document;1",

Просмотреть файл

@ -45,7 +45,6 @@
#include "nsIDocument.h"
#include "nsISupportsArray.h"
#include "nsDocument.h"
#include "nsMarkupDocument.h"
#include "nsIURL.h"
#include "nsIDOMText.h"
#include "nsINameSpaceManager.h"
@ -188,7 +187,7 @@ void testStrings(nsIDocument* aDoc) {
printf("string tests complete\n");
}
class MyDocument : public nsMarkupDocument {
class MyDocument : public nsDocument {
public:
MyDocument();
NS_IMETHOD StartDocumentLoad(const char* aCommand,

Просмотреть файл

@ -1873,9 +1873,10 @@ nsPrintEngine::GetWebShellTitleAndURL(nsIWebShell* aWebShell,
*aTitle = nsnull;
*aURLStr = nsnull;
const nsString* docTitle = aDoc->GetDocumentTitle();
if (docTitle && !docTitle->IsEmpty()) {
*aTitle = ToNewUnicode(*docTitle);
nsAutoString docTitle;
aDoc->GetDocumentTitle(docTitle);
if (!docTitle.IsEmpty()) {
*aTitle = ToNewUnicode(docTitle);
}
nsCOMPtr<nsIURI> url;

Просмотреть файл

@ -40,7 +40,7 @@
#include "nsButtonBoxFrame.h"
#include "nsIContent.h"
#include "nsIDocument.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDOMNodeList.h"
#include "nsHTMLAtoms.h"
#include "nsINameSpaceManager.h"

Просмотреть файл

@ -60,7 +60,6 @@
#include "nsIDocument.h"
#include "nsIDOMNSDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMElement.h"
#include "nsISupportsArray.h"
#include "nsIDOMText.h"
@ -1523,13 +1522,13 @@ nsMenuFrame::BuildAcceleratorText()
nsCOMPtr<nsIDocument> document;
mContent->GetDocument(*getter_AddRefs(document));
// Turn the document into a XUL document so we can use getElementById
nsCOMPtr<nsIDOMXULDocument> xulDocument(do_QueryInterface(document));
if (!xulDocument)
// Turn the document into a DOM document so we can use getElementById
nsCOMPtr<nsIDOMDocument> domDocument(do_QueryInterface(document));
if (!domDocument)
return;
nsCOMPtr<nsIDOMElement> keyDOMElement;
xulDocument->GetElementById(keyValue, getter_AddRefs(keyDOMElement));
domDocument->GetElementById(keyValue, getter_AddRefs(keyDOMElement));
if (!keyDOMElement)
return;

Просмотреть файл

@ -39,6 +39,7 @@
#include "nsIDOMMouseEvent.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMDocument.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMXULElement.h"
#include "nsIDocument.h"
@ -579,14 +580,15 @@ nsXULTooltipListener::GetTooltipFor(nsIContent* aTarget, nsIContent** aTooltip)
} else {
if (!tooltipId.IsEmpty()) {
// tooltip must be an id, use getElementById to find it
nsCOMPtr<nsIDOMXULDocument> xulDocument = do_QueryInterface(document);
if (!xulDocument) {
NS_ERROR("tooltip attached to an element that isn't in XUL!");
nsCOMPtr<nsIDOMDocument> domDocument =
do_QueryInterface(document);
if (!domDocument) {
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIDOMElement> tooltipEl;
xulDocument->GetElementById(tooltipId, getter_AddRefs(tooltipEl));
domDocument->GetElementById(tooltipId,
getter_AddRefs(tooltipEl));
if (tooltipEl) {
mNeedTitletip = PR_FALSE;

Просмотреть файл

@ -48,7 +48,6 @@
#include "nsIDocumentViewer.h"
#include "nsIDocument.h"
#include "nsIDOMElement.h"
#include "nsIDOMXULDocument.h"
#include "nsIDocShell.h"
#include "nsIDocShellTreeItem.h"
#include "nsIChannel.h"

Просмотреть файл

@ -56,7 +56,7 @@ interface nsIDOMXULTreeElement : nsIDOMXULElement {};
interface nsIDOMXULCommandDispatcher : nsISupports {};
[scriptable, uuid(17ddd8c0-c5f8-11d2-a6ae-00104bde6048)]
interface nsIDOMXULDocument : nsIDOMDocument {};
interface nsIDOMXULDocument : nsISupports {};
%{C++
#endif

Просмотреть файл

@ -55,7 +55,7 @@
#include "nsIDocumentViewer.h"
#include "nsIDocumentObserver.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include "nsWidgetAtoms.h"
#include <Menus.h>
@ -337,10 +337,10 @@ nsMenuBarX :: CommandEventHandler ( EventHandlerCallRef inHandlerChain, EventRef
// the 'about' command is special because we don't have a nsIMenu or nsIMenuItem
// for the apple menu. Grovel for the content node with an id of "aboutName"
// and call it directly.
nsCOMPtr<nsIDOMXULDocument> xulDoc = do_QueryInterface(self->mDocument);
if ( xulDoc ) {
nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(self->mDocument);
if ( domDoc ) {
nsCOMPtr<nsIDOMElement> domElement;
xulDoc->GetElementById(NS_LITERAL_STRING("aboutName"), getter_AddRefs(domElement));
domDoc->GetElementById(NS_LITERAL_STRING("aboutName"), getter_AddRefs(domElement));
nsCOMPtr<nsIContent> aboutContent ( do_QueryInterface(domElement) );
self->ExecuteCommand(aboutContent);
}

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsCOMPtr.h"
#include "nsIDocument.h"
#include "nsIContent.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDocumentViewer.h"
#include "nsIDocumentObserver.h"
#include "nsIComponentManager.h"
@ -875,13 +875,13 @@ void nsMenuX::LoadMenuItem( nsIMenu* inParentMenu, nsIContent* inMenuItemContent
inMenuItemContent->GetDocument(*getter_AddRefs(document));
if ( !document )
return;
nsCOMPtr<nsIDOMXULDocument> xulDocument = do_QueryInterface(document);
if ( !xulDocument )
nsCOMPtr<nsIDOMDocument> domDocument = do_QueryInterface(document);
if ( !domDocument )
return;
nsCOMPtr<nsIDOMElement> keyElement;
if (!keyValue.IsEmpty())
xulDocument->GetElementById(keyValue, getter_AddRefs(keyElement));
domDocument->GetElementById(keyValue, getter_AddRefs(keyElement));
if ( keyElement ) {
nsCOMPtr<nsIContent> keyContent ( do_QueryInterface(keyElement) );
nsAutoString keyChar(NS_LITERAL_STRING(" "));

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsCOMPtr.h"
#include "nsIDocument.h"
#include "nsIContent.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDocumentViewer.h"
#include "nsIDocumentObserver.h"
#include "nsIComponentManager.h"
@ -559,9 +559,9 @@ nsEventStatus nsMenu::MenuItemSelected(const nsMenuEvent & aMenuEvent)
mMenuContent->GetDocument(*getter_AddRefs(doc));
if (!doc)
return nsEventStatus_eConsumeNoDefault;
nsCOMPtr<nsIDOMXULDocument> xulDoc = do_QueryInterface(doc);
if (!xulDoc) {
NS_ERROR("nsIDOMDocument to nsIDOMXULDocument QI failed.");
nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc);
if (!domDoc) {
NS_ERROR("nsIDocument to nsIDOMDocument QI failed.");
return nsEventStatus_eConsumeNoDefault;
}
@ -569,7 +569,8 @@ nsEventStatus nsMenu::MenuItemSelected(const nsMenuEvent & aMenuEvent)
// <menuitem/>. This is the glue code which causes any script code
// in the <menuitem/> to be executed.
nsCOMPtr<nsIDOMElement> domElement;
xulDoc->GetElementById(NS_LITERAL_STRING("aboutName"), getter_AddRefs(domElement));
domDoc->GetElementById(NS_LITERAL_STRING("aboutName"),
getter_AddRefs(domElement));
if (!domElement)
return nsEventStatus_eConsumeNoDefault;
@ -1067,13 +1068,13 @@ nsMenu::LoadMenuItem( nsIMenu* inParentMenu, nsIContent* inMenuItemContent )
inMenuItemContent->GetDocument(*getter_AddRefs(document));
if ( !document )
return;
nsCOMPtr<nsIDOMXULDocument> xulDocument = do_QueryInterface(document);
if ( !xulDocument )
nsCOMPtr<nsIDOMDocument> domDocument = do_QueryInterface(document);
if ( !domDocument )
return;
nsCOMPtr<nsIDOMElement> keyElement;
if (!keyValue.IsEmpty())
xulDocument->GetElementById(keyValue, getter_AddRefs(keyElement));
domDocument->GetElementById(keyValue, getter_AddRefs(keyElement));
if ( keyElement ) {
nsCOMPtr<nsIContent> keyContent ( do_QueryInterface(keyElement) );
nsAutoString keyChar(NS_LITERAL_STRING(" "));

Просмотреть файл

@ -57,7 +57,7 @@
#include "nsWidgetAtoms.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include <Menus.h>
#include <TextUtils.h>

Просмотреть файл

@ -56,7 +56,7 @@
#include "nsIDocumentViewer.h"
#include "nsIDocumentObserver.h"
#include "nsIDOMXULDocument.h"
#include "nsIDOMDocument.h"
#include "nsWidgetAtoms.h"
#include <Menus.h>
@ -339,13 +339,15 @@ nsMenuBarX :: CommandEventHandler ( EventHandlerCallRef inHandlerChain, EventRef
case kHICommandAbout:
{
// the 'about' command is special because we don't have a nsIMenu or nsIMenuItem
// for the apple menu. Grovel for the content node with an id of "aboutName"
// and call it directly.
nsCOMPtr<nsIDOMXULDocument> xulDoc = do_QueryInterface(self->mDocument);
if ( xulDoc ) {
// the 'about' command is special because we don't have a
// nsIMenu or nsIMenuItem for the apple menu. Grovel for the
// content node with an id of "aboutName" and call it
// directly.
nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(self->mDocument);
if ( domDoc ) {
nsCOMPtr<nsIDOMElement> domElement;
xulDoc->GetElementById(NS_LITERAL_STRING("aboutName"), getter_AddRefs(domElement));
domDoc->GetElementById(NS_LITERAL_STRING("aboutName"),
getter_AddRefs(domElement));
nsCOMPtr<nsIContent> aboutContent ( do_QueryInterface(domElement) );
self->ExecuteCommand(aboutContent);
}

Просмотреть файл

@ -197,12 +197,6 @@ nsIDOMWindow = { /* a6cf906b-15b3-11d2-932e-00805f8add32 */
0x11d2,
{0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32}
};
nsIDOMEventCapturer = { /* a6cf906c-15b3-11d2-932e-00805f8add32 */
0xa6cf906c,
0x15b3,
0x11d2,
{0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32}
};
nsIDOMLocation = { /* a6cf906d-15b3-11d2-932e-00805f8add32 */
0xa6cf906d,
0x15b3,

Просмотреть файл

@ -43,7 +43,6 @@
#include "nsIDOMElement.h"
#include "nsIDOMWindowInternal.h"
#include "nsIDOMScreen.h"
#include "nsIDOMXULDocument.h"
#include "nsIEmbeddingSiteWindow.h"
#include "nsIEmbeddingSiteWindow2.h"
#include "nsIInterfaceRequestor.h"
@ -1414,7 +1413,7 @@ NS_IMETHODIMP nsXULWindow::GetDOMElementById(char* aID, nsIDOMElement** aDOMElem
nsCOMPtr<nsIDocument> doc;
docv->GetDocument(*getter_AddRefs(doc));
nsCOMPtr<nsIDOMXULDocument> domdoc(do_QueryInterface(doc));
nsCOMPtr<nsIDOMDocument> domdoc(do_QueryInterface(doc));
if(!domdoc)
return NS_ERROR_FAILURE;