2007-03-22 10:30:00 -07:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* vim: set ts=2 sw=2 et tw=80: */
|
|
|
|
/* ***** 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) 1998
|
|
|
|
* the Initial Developer. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
|
|
* either of 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 ***** */
|
|
|
|
#ifndef nsHTMLDocument_h___
|
|
|
|
#define nsHTMLDocument_h___
|
|
|
|
|
|
|
|
#include "nsDocument.h"
|
|
|
|
#include "nsIHTMLDocument.h"
|
|
|
|
#include "nsIDOMHTMLDocument.h"
|
|
|
|
#include "nsIDOMNSHTMLDocument.h"
|
|
|
|
#include "nsIDOMHTMLBodyElement.h"
|
|
|
|
#include "nsIDOMHTMLCollection.h"
|
|
|
|
#include "nsIScriptElement.h"
|
|
|
|
#include "jsapi.h"
|
2009-03-20 01:15:35 -07:00
|
|
|
#include "nsTArray.h"
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
#include "pldhash.h"
|
|
|
|
#include "nsIHttpChannel.h"
|
|
|
|
#include "nsHTMLStyleSheet.h"
|
|
|
|
|
|
|
|
// Document.Write() related
|
|
|
|
#include "nsIWyciwygChannel.h"
|
|
|
|
#include "nsILoadGroup.h"
|
|
|
|
#include "nsNetUtil.h"
|
|
|
|
|
|
|
|
#include "nsICommandManager.h"
|
|
|
|
|
2007-06-27 19:48:16 -07:00
|
|
|
class nsIEditor;
|
|
|
|
class nsIEditorDocShell;
|
2007-03-22 10:30:00 -07:00
|
|
|
class nsIParser;
|
|
|
|
class nsIURI;
|
|
|
|
class nsIMarkupDocumentViewer;
|
|
|
|
class nsIDocumentCharsetInfo;
|
2010-06-23 23:55:19 -07:00
|
|
|
class nsICachingChannel;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
class nsHTMLDocument : public nsDocument,
|
|
|
|
public nsIHTMLDocument,
|
|
|
|
public nsIDOMHTMLDocument,
|
|
|
|
public nsIDOMNSHTMLDocument
|
|
|
|
{
|
|
|
|
public:
|
2011-03-26 09:06:27 -07:00
|
|
|
using nsDocument::SetDocumentURI;
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
nsHTMLDocument();
|
|
|
|
virtual nsresult Init();
|
|
|
|
|
|
|
|
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr);
|
|
|
|
|
|
|
|
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
|
|
|
NS_IMETHOD_(nsrefcnt) Release(void);
|
|
|
|
|
|
|
|
virtual void Reset(nsIChannel* aChannel, nsILoadGroup* aLoadGroup);
|
|
|
|
virtual void ResetToURI(nsIURI* aURI, nsILoadGroup* aLoadGroup,
|
|
|
|
nsIPrincipal* aPrincipal);
|
|
|
|
|
|
|
|
virtual nsresult CreateShell(nsPresContext* aContext,
|
|
|
|
nsIViewManager* aViewManager,
|
|
|
|
nsStyleSet* aStyleSet,
|
|
|
|
nsIPresShell** aInstancePtrResult);
|
|
|
|
|
|
|
|
virtual nsresult StartDocumentLoad(const char* aCommand,
|
|
|
|
nsIChannel* aChannel,
|
|
|
|
nsILoadGroup* aLoadGroup,
|
|
|
|
nsISupports* aContainer,
|
|
|
|
nsIStreamListener **aDocListener,
|
|
|
|
PRBool aReset = PR_TRUE,
|
|
|
|
nsIContentSink* aSink = nsnull);
|
|
|
|
virtual void StopDocumentLoad();
|
|
|
|
|
2010-03-12 02:29:46 -08:00
|
|
|
virtual void BeginLoad();
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
virtual void EndLoad();
|
|
|
|
|
2011-03-28 09:51:59 -07:00
|
|
|
virtual mozilla::dom::Element* GetImageMap(const nsAString& aMapName);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
virtual void SetCompatibilityMode(nsCompatibility aMode);
|
|
|
|
|
|
|
|
virtual PRBool IsWriting()
|
|
|
|
{
|
|
|
|
return mWriteLevel != PRUint32(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual PRBool GetIsFrameset() { return mIsFrameset; }
|
|
|
|
virtual void SetIsFrameset(PRBool aFrameset) { mIsFrameset = aFrameset; }
|
|
|
|
|
|
|
|
virtual NS_HIDDEN_(nsContentList*) GetForms();
|
|
|
|
|
|
|
|
virtual NS_HIDDEN_(nsContentList*) GetFormControls();
|
|
|
|
|
|
|
|
// nsIDOMDocument interface
|
|
|
|
NS_DECL_NSIDOMDOCUMENT
|
|
|
|
|
|
|
|
// nsIDOMNode interface
|
|
|
|
NS_FORWARD_NSIDOMNODE(nsDocument::)
|
|
|
|
|
|
|
|
// nsIDOMHTMLDocument interface
|
|
|
|
NS_IMETHOD GetTitle(nsAString & aTitle);
|
|
|
|
NS_IMETHOD SetTitle(const nsAString & aTitle);
|
|
|
|
NS_IMETHOD GetReferrer(nsAString & aReferrer);
|
|
|
|
NS_IMETHOD GetURL(nsAString & aURL);
|
|
|
|
NS_IMETHOD GetBody(nsIDOMHTMLElement * *aBody);
|
|
|
|
NS_IMETHOD SetBody(nsIDOMHTMLElement * aBody);
|
|
|
|
NS_IMETHOD GetImages(nsIDOMHTMLCollection * *aImages);
|
|
|
|
NS_IMETHOD GetApplets(nsIDOMHTMLCollection * *aApplets);
|
|
|
|
NS_IMETHOD GetLinks(nsIDOMHTMLCollection * *aLinks);
|
|
|
|
NS_IMETHOD GetForms(nsIDOMHTMLCollection * *aForms);
|
|
|
|
NS_IMETHOD GetAnchors(nsIDOMHTMLCollection * *aAnchors);
|
|
|
|
NS_IMETHOD GetCookie(nsAString & aCookie);
|
|
|
|
NS_IMETHOD SetCookie(const nsAString & aCookie);
|
|
|
|
NS_IMETHOD Open(void);
|
|
|
|
NS_IMETHOD Close(void);
|
|
|
|
NS_IMETHOD Write(const nsAString & text);
|
|
|
|
NS_IMETHOD Writeln(const nsAString & text);
|
|
|
|
NS_IMETHOD GetElementsByName(const nsAString & elementName,
|
|
|
|
nsIDOMNodeList **_retval);
|
2010-05-10 09:43:20 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the result of document.all[aID] which can either be a node
|
|
|
|
* or a nodelist depending on if there are multiple nodes with the same
|
|
|
|
* id.
|
|
|
|
*/
|
|
|
|
nsISupports *GetDocumentAllResult(const nsAString& aID,
|
|
|
|
nsWrapperCache **aCache,
|
|
|
|
nsresult *aResult);
|
|
|
|
|
2010-04-19 08:41:38 -07:00
|
|
|
nsIContent *GetBody(nsresult *aResult);
|
|
|
|
already_AddRefed<nsContentList> GetElementsByName(const nsAString & aName)
|
|
|
|
{
|
2010-06-08 12:58:26 -07:00
|
|
|
return NS_GetFuncStringContentList(this, MatchNameAttribute, nsnull,
|
|
|
|
UseExistingNameString, aName);
|
2010-04-19 08:41:38 -07:00
|
|
|
}
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
// nsIDOMNSHTMLDocument interface
|
|
|
|
NS_DECL_NSIDOMNSHTMLDOCUMENT
|
|
|
|
|
|
|
|
virtual nsresult ResolveName(const nsAString& aName,
|
2009-06-15 23:32:10 -07:00
|
|
|
nsIContent *aForm,
|
2010-05-10 09:43:20 -07:00
|
|
|
nsISupports **aResult,
|
|
|
|
nsWrapperCache **aCache);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
virtual void ScriptLoading(nsIScriptElement *aScript);
|
|
|
|
virtual void ScriptExecuted(nsIScriptElement *aScript);
|
|
|
|
|
|
|
|
virtual void AddedForm();
|
|
|
|
virtual void RemovedForm();
|
|
|
|
virtual PRInt32 GetNumFormsSynchronous();
|
2008-02-20 01:54:52 -08:00
|
|
|
virtual void TearingDownEditor(nsIEditor *aEditor);
|
2008-09-20 11:55:04 -07:00
|
|
|
virtual void SetIsXHTML(PRBool aXHTML) { mIsRegularHTML = !aXHTML; }
|
2009-11-05 20:27:30 -08:00
|
|
|
virtual void SetDocWriteDisabled(PRBool aDisabled)
|
|
|
|
{
|
|
|
|
mDisableDocWrite = aDisabled;
|
|
|
|
}
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2007-06-27 19:48:16 -07:00
|
|
|
nsresult ChangeContentEditableCount(nsIContent *aElement, PRInt32 aChange);
|
2010-05-12 15:21:24 -07:00
|
|
|
void DeferredContentEditableCountChange(nsIContent *aElement);
|
2007-06-27 19:48:16 -07:00
|
|
|
|
2007-08-10 06:19:13 -07:00
|
|
|
virtual EditingState GetEditingState()
|
2007-06-27 19:48:16 -07:00
|
|
|
{
|
2007-08-10 06:19:13 -07:00
|
|
|
return mEditingState;
|
2007-06-27 19:48:16 -07:00
|
|
|
}
|
|
|
|
|
2008-09-30 17:49:30 -07:00
|
|
|
virtual void DisableCookieAccess()
|
|
|
|
{
|
|
|
|
mDisableCookieAccess = PR_TRUE;
|
|
|
|
}
|
|
|
|
|
2008-02-19 10:47:34 -08:00
|
|
|
virtual nsIContent* GetBodyContentExternal();
|
2010-05-02 01:02:21 -07:00
|
|
|
|
2008-09-17 19:32:44 -07:00
|
|
|
class nsAutoEditingState {
|
|
|
|
public:
|
|
|
|
nsAutoEditingState(nsHTMLDocument* aDoc, EditingState aState)
|
|
|
|
: mDoc(aDoc), mSavedState(aDoc->mEditingState)
|
|
|
|
{
|
|
|
|
aDoc->mEditingState = aState;
|
|
|
|
}
|
|
|
|
~nsAutoEditingState() {
|
|
|
|
mDoc->mEditingState = mSavedState;
|
|
|
|
}
|
|
|
|
private:
|
|
|
|
nsHTMLDocument* mDoc;
|
|
|
|
EditingState mSavedState;
|
|
|
|
};
|
|
|
|
friend class nsAutoEditingState;
|
2008-02-19 10:47:34 -08:00
|
|
|
|
2007-10-26 03:30:44 -07:00
|
|
|
void EndUpdate(nsUpdateType aUpdateType);
|
|
|
|
|
2009-10-21 02:41:18 -07:00
|
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsHTMLDocument, nsDocument)
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2008-02-08 14:07:51 -08:00
|
|
|
virtual already_AddRefed<nsIParser> GetFragmentParser() {
|
|
|
|
return mFragmentParser.forget();
|
|
|
|
}
|
|
|
|
virtual void SetFragmentParser(nsIParser* aParser) {
|
|
|
|
mFragmentParser = aParser;
|
|
|
|
}
|
|
|
|
|
2008-04-23 14:36:17 -07:00
|
|
|
virtual nsresult SetEditingState(EditingState aState);
|
|
|
|
|
2008-09-18 04:15:47 -07:00
|
|
|
virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
|
|
|
|
|
2009-02-20 18:51:48 -08:00
|
|
|
virtual NS_HIDDEN_(void) RemovedFromDocShell();
|
|
|
|
|
2010-06-03 18:09:20 -07:00
|
|
|
virtual mozilla::dom::Element *GetElementById(const nsAString& aElementId)
|
2010-04-19 08:41:38 -07:00
|
|
|
{
|
2010-06-03 18:09:20 -07:00
|
|
|
return nsDocument::GetElementById(aElementId);
|
2010-04-19 08:41:38 -07:00
|
|
|
}
|
|
|
|
|
2010-07-23 02:49:57 -07:00
|
|
|
virtual nsXPCClassInfo* GetClassInfo();
|
2007-03-22 10:30:00 -07:00
|
|
|
protected:
|
2007-05-22 20:52:53 -07:00
|
|
|
nsresult GetBodySize(PRInt32* aWidth,
|
|
|
|
PRInt32* aHeight);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
nsIContent *MatchId(nsIContent *aContent, const nsAString& aId);
|
|
|
|
|
|
|
|
static PRBool MatchLinks(nsIContent *aContent, PRInt32 aNamespaceID,
|
|
|
|
nsIAtom* aAtom, void* aData);
|
|
|
|
static PRBool MatchAnchors(nsIContent *aContent, PRInt32 aNamespaceID,
|
|
|
|
nsIAtom* aAtom, void* aData);
|
|
|
|
static PRBool MatchNameAttribute(nsIContent* aContent, PRInt32 aNamespaceID,
|
|
|
|
nsIAtom* aAtom, void* aData);
|
2010-06-08 12:58:26 -07:00
|
|
|
static void* UseExistingNameString(nsINode* aRootNode, const nsString* aName);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
static void DocumentWriteTerminationFunc(nsISupports *aRef);
|
|
|
|
|
|
|
|
void GetDomainURI(nsIURI **uri);
|
|
|
|
|
|
|
|
nsresult WriteCommon(const nsAString& aText,
|
|
|
|
PRBool aNewlineTerminate);
|
|
|
|
nsresult OpenCommon(const nsACString& aContentType, PRBool aReplace);
|
|
|
|
|
|
|
|
nsresult CreateAndAddWyciwygChannel(void);
|
|
|
|
nsresult RemoveWyciwygChannel(void);
|
|
|
|
|
2008-10-29 13:12:24 -07:00
|
|
|
/**
|
|
|
|
* Like IsEditingOn(), but will flush as needed first.
|
|
|
|
*/
|
|
|
|
PRBool IsEditingOnAfterFlush();
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
void *GenerateParserKey(void);
|
|
|
|
|
2008-06-22 16:12:40 -07:00
|
|
|
virtual PRInt32 GetDefaultNamespaceID() const
|
2007-03-22 10:30:00 -07:00
|
|
|
{
|
2009-04-16 03:28:40 -07:00
|
|
|
return kNameSpaceID_XHTML;
|
2007-04-23 07:21:53 -07:00
|
|
|
}
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
nsCOMPtr<nsIDOMHTMLCollection> mImages;
|
|
|
|
nsCOMPtr<nsIDOMHTMLCollection> mApplets;
|
|
|
|
nsCOMPtr<nsIDOMHTMLCollection> mEmbeds;
|
|
|
|
nsCOMPtr<nsIDOMHTMLCollection> mLinks;
|
|
|
|
nsCOMPtr<nsIDOMHTMLCollection> mAnchors;
|
|
|
|
nsRefPtr<nsContentList> mForms;
|
|
|
|
nsRefPtr<nsContentList> mFormControls;
|
2010-08-06 04:08:58 -07:00
|
|
|
nsRefPtr<nsContentList> mImageMaps;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/** # of forms in the document, synchronously set */
|
|
|
|
PRInt32 mNumForms;
|
|
|
|
|
|
|
|
static PRUint32 gWyciwygSessionCnt;
|
|
|
|
|
|
|
|
static PRBool TryHintCharset(nsIMarkupDocumentViewer* aMarkupDV,
|
|
|
|
PRInt32& aCharsetSource,
|
|
|
|
nsACString& aCharset);
|
|
|
|
static PRBool TryUserForcedCharset(nsIMarkupDocumentViewer* aMarkupDV,
|
|
|
|
nsIDocumentCharsetInfo* aDocInfo,
|
|
|
|
PRInt32& aCharsetSource,
|
|
|
|
nsACString& aCharset);
|
2010-06-23 23:55:19 -07:00
|
|
|
static PRBool TryCacheCharset(nsICachingChannel* aCachingChannel,
|
2007-03-22 10:30:00 -07:00
|
|
|
PRInt32& aCharsetSource,
|
|
|
|
nsACString& aCharset);
|
|
|
|
// aParentDocument could be null.
|
|
|
|
PRBool TryParentCharset(nsIDocumentCharsetInfo* aDocInfo,
|
|
|
|
nsIDocument* aParentDocument,
|
|
|
|
PRInt32& charsetSource, nsACString& aCharset);
|
|
|
|
static PRBool UseWeakDocTypeDefault(PRInt32& aCharsetSource,
|
|
|
|
nsACString& aCharset);
|
|
|
|
static PRBool TryDefaultCharset(nsIMarkupDocumentViewer* aMarkupDV,
|
|
|
|
PRInt32& aCharsetSource,
|
|
|
|
nsACString& aCharset);
|
|
|
|
|
|
|
|
void StartAutodetection(nsIDocShell *aDocShell, nsACString& aCharset,
|
|
|
|
const char* aCommand);
|
|
|
|
|
2007-05-08 19:47:58 -07:00
|
|
|
// Override so we can munge the charset on our wyciwyg channel as needed.
|
|
|
|
virtual void SetDocumentCharacterSet(const nsACString& aCharSetID);
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
// mWriteState tracks the status of this document if the document is being
|
|
|
|
// entirely created by script. In the normal load case, mWriteState will be
|
|
|
|
// eNotWriting. Once document.open has been called (either implicitly or
|
|
|
|
// explicitly), mWriteState will be eDocumentOpened. When document.close has
|
|
|
|
// been called, mWriteState will become eDocumentClosed if there have been no
|
|
|
|
// external script loads in the meantime. If there have been, then mWriteState
|
|
|
|
// becomes ePendingClose, indicating that we might still be writing, but that
|
|
|
|
// we shouldn't process any further close() calls.
|
|
|
|
enum {
|
|
|
|
eNotWriting,
|
|
|
|
eDocumentOpened,
|
|
|
|
ePendingClose,
|
|
|
|
eDocumentClosed
|
|
|
|
} mWriteState;
|
|
|
|
|
|
|
|
// Tracks if we are currently processing any document.write calls (either
|
|
|
|
// implicit or explicit). Note that if a write call writes out something which
|
|
|
|
// would block the parser, then mWriteLevel will be incorrect until the parser
|
|
|
|
// finishes processing that script.
|
|
|
|
PRUint32 mWriteLevel;
|
|
|
|
|
2009-03-20 01:15:35 -07:00
|
|
|
nsAutoTArray<nsIScriptElement*, 1> mPendingScripts;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
// Load flags of the document's channel
|
|
|
|
PRUint32 mLoadFlags;
|
|
|
|
|
|
|
|
PRPackedBool mIsFrameset;
|
|
|
|
|
|
|
|
PRPackedBool mTooDeepWriteRecursion;
|
|
|
|
|
2009-11-05 20:27:30 -08:00
|
|
|
PRPackedBool mDisableDocWrite;
|
|
|
|
|
2010-08-27 04:44:28 -07:00
|
|
|
PRPackedBool mWarnedWidthHeight;
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
nsCOMPtr<nsIWyciwygChannel> mWyciwygChannel;
|
|
|
|
|
|
|
|
/* Midas implementation */
|
|
|
|
nsresult GetMidasCommandManager(nsICommandManager** aCommandManager);
|
2008-01-14 01:26:22 -08:00
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
nsCOMPtr<nsICommandManager> mMidasCommandManager;
|
2007-06-27 19:48:16 -07:00
|
|
|
|
|
|
|
nsresult TurnEditingOff();
|
|
|
|
nsresult EditingStateChanged();
|
2009-01-31 04:53:01 -08:00
|
|
|
void MaybeEditingStateChanged();
|
2007-06-27 19:48:16 -07:00
|
|
|
|
|
|
|
PRUint32 mContentEditableCount;
|
|
|
|
EditingState mEditingState;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
nsresult DoClipboardSecurityCheck(PRBool aPaste);
|
2010-07-14 23:19:36 -07:00
|
|
|
static jsid sCutCopyInternal_id;
|
|
|
|
static jsid sPasteInternal_id;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2008-09-30 17:49:30 -07:00
|
|
|
// When false, the .cookies property is completely disabled
|
|
|
|
PRBool mDisableCookieAccess;
|
|
|
|
|
2008-02-08 14:07:51 -08:00
|
|
|
// Parser used for constructing document fragments.
|
|
|
|
nsCOMPtr<nsIParser> mFragmentParser;
|
2007-03-22 10:30:00 -07:00
|
|
|
};
|
|
|
|
|
2008-11-03 02:31:47 -08:00
|
|
|
#define NS_HTML_DOCUMENT_INTERFACE_TABLE_BEGIN(_class) \
|
|
|
|
NS_DOCUMENT_INTERFACE_TABLE_BEGIN(_class) \
|
|
|
|
NS_INTERFACE_TABLE_ENTRY(_class, nsIHTMLDocument) \
|
|
|
|
NS_INTERFACE_TABLE_ENTRY(_class, nsIDOMHTMLDocument) \
|
|
|
|
NS_INTERFACE_TABLE_ENTRY(_class, nsIDOMNSHTMLDocument)
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
#endif /* nsHTMLDocument_h___ */
|