michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef nsIHTMLDocument_h michael@0: #define nsIHTMLDocument_h michael@0: michael@0: #include "nsISupports.h" michael@0: #include "nsCompatibility.h" michael@0: michael@0: class nsIDOMHTMLFormElement; michael@0: class nsIContent; michael@0: class nsIScriptElement; michael@0: class nsIEditor; michael@0: class nsContentList; michael@0: class nsWrapperCache; michael@0: michael@0: #define NS_IHTMLDOCUMENT_IID \ michael@0: { 0xcf814492, 0x303c, 0x4718, \ michael@0: { 0x9a, 0x3e, 0x39, 0xbc, 0xd5, 0x2c, 0x10, 0xdb } } michael@0: michael@0: /** michael@0: * HTML document extensions to nsIDocument. michael@0: */ michael@0: class nsIHTMLDocument : public nsISupports michael@0: { michael@0: public: michael@0: NS_DECLARE_STATIC_IID_ACCESSOR(NS_IHTMLDOCUMENT_IID) michael@0: michael@0: /** michael@0: * Set compatibility mode for this document michael@0: */ michael@0: virtual void SetCompatibilityMode(nsCompatibility aMode) = 0; michael@0: michael@0: /** michael@0: * Called when form->BindToTree() is called so that document knows michael@0: * immediately when a form is added michael@0: */ michael@0: virtual void AddedForm() = 0; michael@0: /** michael@0: * Called when form->SetDocument() is called so that document knows michael@0: * immediately when a form is removed michael@0: */ michael@0: virtual void RemovedForm() = 0; michael@0: /** michael@0: * Called to get a better count of forms than document.forms can provide michael@0: * without calling FlushPendingNotifications (bug 138892). michael@0: */ michael@0: // XXXbz is this still needed now that we can flush just content, michael@0: // not the rest? michael@0: virtual int32_t GetNumFormsSynchronous() = 0; michael@0: michael@0: virtual bool IsWriting() = 0; michael@0: michael@0: /** michael@0: * Get the list of form elements in the document. michael@0: */ michael@0: virtual nsContentList* GetForms() = 0; michael@0: michael@0: /** michael@0: * Get the list of form controls in the document (all elements in michael@0: * the document that are of type nsIContent::eHTML_FORM_CONTROL). michael@0: */ michael@0: virtual nsContentList* GetFormControls() = 0; michael@0: michael@0: /** michael@0: * Should be called when an element's editable changes as a result of michael@0: * changing its contentEditable attribute/property. michael@0: * michael@0: * @param aElement the element for which the contentEditable michael@0: * attribute/property was changed michael@0: * @param aChange +1 if the contentEditable attribute/property was changed to michael@0: * true, -1 if it was changed to false michael@0: */ michael@0: virtual nsresult ChangeContentEditableCount(nsIContent *aElement, michael@0: int32_t aChange) = 0; michael@0: michael@0: enum EditingState { michael@0: eTearingDown = -2, michael@0: eSettingUp = -1, michael@0: eOff = 0, michael@0: eDesignMode, michael@0: eContentEditable michael@0: }; michael@0: michael@0: /** michael@0: * Returns whether the document is editable. michael@0: */ michael@0: bool IsEditingOn() michael@0: { michael@0: return GetEditingState() == eDesignMode || michael@0: GetEditingState() == eContentEditable; michael@0: } michael@0: michael@0: /** michael@0: * Returns the editing state of the document (not editable, contentEditable or michael@0: * designMode). michael@0: */ michael@0: virtual EditingState GetEditingState() = 0; michael@0: michael@0: /** michael@0: * Set the editing state of the document. Don't use this if you want michael@0: * to enable/disable editing, call EditingStateChanged() or michael@0: * SetDesignMode(). michael@0: */ michael@0: virtual nsresult SetEditingState(EditingState aState) = 0; michael@0: michael@0: /** michael@0: * Disables getting and setting cookies michael@0: */ michael@0: virtual void DisableCookieAccess() = 0; michael@0: michael@0: /** michael@0: * Called when this nsIHTMLDocument's editor is destroyed. michael@0: */ michael@0: virtual void TearingDownEditor(nsIEditor *aEditor) = 0; michael@0: michael@0: virtual void SetIsXHTML(bool aXHTML) = 0; michael@0: michael@0: virtual void SetDocWriteDisabled(bool aDisabled) = 0; michael@0: }; michael@0: michael@0: NS_DEFINE_STATIC_IID_ACCESSOR(nsIHTMLDocument, NS_IHTMLDOCUMENT_IID) michael@0: michael@0: #endif /* nsIHTMLDocument_h */