Bug 346485 - "Implement output element" [r=smaug,hsivonen,mrbkap,timeless,roc sr=jst]
This commit is contained in:
Родитель
3b21b1e58d
Коммит
69d9e7c537
|
@ -97,6 +97,7 @@ CPPSRCS = \
|
|||
nsDOMParser.cpp \
|
||||
nsDOMSerializer.cpp \
|
||||
nsDOMTokenList.cpp \
|
||||
nsDOMSettableTokenList.cpp \
|
||||
nsDocument.cpp \
|
||||
nsDocumentEncoder.cpp \
|
||||
nsDocumentFragment.cpp \
|
||||
|
|
|
@ -437,7 +437,8 @@ DragDataProducer::Produce(nsDOMDataTransfer* aDataTransfer,
|
|||
if (form && form->GetType() != NS_FORM_OBJECT &&
|
||||
form->GetType() != NS_FORM_FIELDSET &&
|
||||
form->GetType() != NS_FORM_LEGEND &&
|
||||
form->GetType() != NS_FORM_LABEL)
|
||||
form->GetType() != NS_FORM_LABEL &&
|
||||
form->GetType() != NS_FORM_OUTPUT)
|
||||
return NS_OK;
|
||||
findFormParent = findFormParent->GetParent();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,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 Mozilla Foundation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mounir Lamouri <mounir.lamouri@mozilla.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 of nsIDOMDOMSettableTokenList specified by HTML5.
|
||||
*/
|
||||
|
||||
#include "nsDOMSettableTokenList.h"
|
||||
|
||||
|
||||
nsDOMSettableTokenList::nsDOMSettableTokenList(nsGenericElement *aElement, nsIAtom* aAttrAtom)
|
||||
: nsDOMTokenList(aElement, aAttrAtom)
|
||||
{
|
||||
}
|
||||
|
||||
nsDOMSettableTokenList::~nsDOMSettableTokenList()
|
||||
{
|
||||
}
|
||||
|
||||
DOMCI_DATA(DOMSettableTokenList, nsDOMSettableTokenList)
|
||||
|
||||
NS_INTERFACE_TABLE_HEAD(nsDOMSettableTokenList)
|
||||
NS_INTERFACE_TABLE1(nsDOMSettableTokenList,
|
||||
nsIDOMDOMSettableTokenList)
|
||||
NS_INTERFACE_TABLE_TO_MAP_SEGUE
|
||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(DOMSettableTokenList)
|
||||
NS_INTERFACE_MAP_END_INHERITING(nsDOMTokenList)
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsDOMSettableTokenList, nsDOMTokenList)
|
||||
NS_IMPL_RELEASE_INHERITED(nsDOMSettableTokenList, nsDOMTokenList)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDOMSettableTokenList::GetValue(nsAString& aResult)
|
||||
{
|
||||
return ToString(aResult);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDOMSettableTokenList::SetValue(const nsAString& aValue)
|
||||
{
|
||||
if (!mElement) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return mElement->SetAttr(kNameSpaceID_None, mAttrAtom, aValue, PR_TRUE);
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
/* ***** 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 Mozilla Foundation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mounir Lamouri <mounir.lamouri@mozilla.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 of nsIDOMDOMSettableTokenList specified by HTML5.
|
||||
*/
|
||||
|
||||
#ifndef nsDOMSettableTokenList_h___
|
||||
#define nsDOMSettableTokenList_h___
|
||||
|
||||
#include "nsIDOMDOMSettableTokenList.h"
|
||||
#include "nsDOMTokenList.h"
|
||||
|
||||
|
||||
class nsGenericElement;
|
||||
class nsIAtom;
|
||||
|
||||
class nsDOMSettableTokenList : public nsDOMTokenList,
|
||||
public nsIDOMDOMSettableTokenList
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_NSIDOMDOMSETTABLETOKENLIST
|
||||
|
||||
NS_FORWARD_NSIDOMDOMTOKENLIST(nsDOMTokenList::);
|
||||
|
||||
nsDOMSettableTokenList(nsGenericElement* aElement, nsIAtom* aAttrAtom);
|
||||
|
||||
protected:
|
||||
virtual ~nsDOMSettableTokenList();
|
||||
};
|
||||
|
||||
#endif // nsDOMSettableTokenList_h___
|
||||
|
|
@ -56,7 +56,7 @@ public:
|
|||
|
||||
void DropReference();
|
||||
|
||||
private:
|
||||
protected:
|
||||
~nsDOMTokenList();
|
||||
|
||||
const nsAttrValue* GetParsedAttr() {
|
||||
|
|
|
@ -62,10 +62,11 @@ class nsFormSubmission;
|
|||
#define NS_FORM_LABEL 15
|
||||
#define NS_FORM_OPTION 16
|
||||
#define NS_FORM_OPTGROUP 17
|
||||
#define NS_FORM_LEGEND 18
|
||||
#define NS_FORM_SELECT 19
|
||||
#define NS_FORM_TEXTAREA 20
|
||||
#define NS_FORM_OBJECT 21
|
||||
#define NS_FORM_OUTPUT 18
|
||||
#define NS_FORM_LEGEND 19
|
||||
#define NS_FORM_SELECT 20
|
||||
#define NS_FORM_TEXTAREA 21
|
||||
#define NS_FORM_OBJECT 22
|
||||
|
||||
#define NS_IFORMCONTROL_IID \
|
||||
{ 0x52dc1f0d, 0x1683, 0x4dd7, \
|
||||
|
|
|
@ -87,6 +87,7 @@ CPPSRCS = \
|
|||
nsHTMLSharedObjectElement.cpp \
|
||||
nsHTMLOptionElement.cpp \
|
||||
nsHTMLOptGroupElement.cpp \
|
||||
nsHTMLOutputElement.cpp \
|
||||
nsHTMLParagraphElement.cpp \
|
||||
nsHTMLPreElement.cpp \
|
||||
nsHTMLScriptElement.cpp \
|
||||
|
|
|
@ -2570,7 +2570,8 @@ nsGenericHTMLFormElement::CanBeDisabled() const
|
|||
type != NS_FORM_LABEL &&
|
||||
type != NS_FORM_LEGEND &&
|
||||
type != NS_FORM_FIELDSET &&
|
||||
type != NS_FORM_OBJECT;
|
||||
type != NS_FORM_OBJECT &&
|
||||
type != NS_FORM_OUTPUT;
|
||||
}
|
||||
|
||||
PRBool
|
||||
|
|
|
@ -1276,6 +1276,7 @@ NS_DECLARE_NS_NEW_HTML_ELEMENT(Meta)
|
|||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Object)
|
||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(OptGroup)
|
||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Option)
|
||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Output)
|
||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Paragraph)
|
||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Pre)
|
||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Script)
|
||||
|
|
|
@ -191,6 +191,7 @@ ShouldBeInElements(nsIFormControl* aFormControl)
|
|||
case NS_FORM_TEXTAREA :
|
||||
case NS_FORM_FIELDSET :
|
||||
case NS_FORM_OBJECT :
|
||||
case NS_FORM_OUTPUT :
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,278 @@
|
|||
/* -*- 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 Mozilla Foundation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mounir Lamouri <mounir.lamouri@mozilla.com> (original author)
|
||||
*
|
||||
* 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 ***** */
|
||||
|
||||
#include "nsIDOMHTMLOutputElement.h"
|
||||
#include "nsGenericHTMLElement.h"
|
||||
#include "nsIFormSubmission.h"
|
||||
#include "nsDOMSettableTokenList.h"
|
||||
#include "nsStubMutationObserver.h"
|
||||
|
||||
|
||||
class nsHTMLOutputElement : public nsGenericHTMLFormElement,
|
||||
public nsIDOMHTMLOutputElement,
|
||||
public nsStubMutationObserver
|
||||
{
|
||||
public:
|
||||
nsHTMLOutputElement(nsINodeInfo *aNodeInfo);
|
||||
virtual ~nsHTMLOutputElement();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// nsIDOMNode
|
||||
NS_FORWARD_NSIDOMNODE(nsGenericHTMLFormElement::)
|
||||
|
||||
// nsIDOMElement
|
||||
NS_FORWARD_NSIDOMELEMENT(nsGenericHTMLFormElement::)
|
||||
|
||||
// nsIDOMHTMLElement
|
||||
NS_FORWARD_NSIDOMHTMLELEMENT(nsGenericHTMLFormElement::)
|
||||
|
||||
// nsIDOMHTMLOutputElement
|
||||
NS_DECL_NSIDOMHTMLOUTPUTELEMENT
|
||||
|
||||
// nsIFormControl
|
||||
NS_IMETHOD_(PRInt32) GetType() const { return NS_FORM_OUTPUT; }
|
||||
NS_IMETHOD Reset();
|
||||
NS_IMETHOD SubmitNamesValues(nsFormSubmission* aFormSubmission,
|
||||
nsIContent* aSubmitElement);
|
||||
|
||||
nsresult Clone(nsINodeInfo* aNodeInfo, nsINode** aResult) const;
|
||||
|
||||
PRBool ParseAttribute(PRInt32 aNamespaceID, nsIAtom* aAttribute,
|
||||
const nsAString& aValue, nsAttrValue& aResult);
|
||||
|
||||
// This function is called when a callback function from nsIMutationObserver
|
||||
// has to be used to update the defaultValue attribute.
|
||||
void DescendantsChanged();
|
||||
|
||||
// nsIMutationObserver
|
||||
void CharacterDataChanged(nsIDocument* aDocument,
|
||||
nsIContent* aContent,
|
||||
CharacterDataChangeInfo* aInfo);
|
||||
void ContentAppended (nsIDocument* aDocument,
|
||||
nsIContent* aContainer,
|
||||
PRInt32 aNewIndexInContainer);
|
||||
void ContentInserted (nsIDocument* aDocument,
|
||||
nsIContent* aContainer,
|
||||
nsIContent* aChild,
|
||||
PRInt32 aIndexInContainer);
|
||||
void ContentRemoved (nsIDocument* aDocument,
|
||||
nsIContent* aContainer,
|
||||
nsIContent* aChild,
|
||||
PRInt32 aIndexInContainer);
|
||||
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED_NO_UNLINK(nsHTMLOutputElement,
|
||||
nsGenericHTMLFormElement)
|
||||
|
||||
protected:
|
||||
enum ValueModeFlag {
|
||||
eModeDefault,
|
||||
eModeValue
|
||||
};
|
||||
|
||||
ValueModeFlag mValueModeFlag;
|
||||
nsString mDefaultValue;
|
||||
nsRefPtr<nsDOMSettableTokenList> mTokenList;
|
||||
};
|
||||
|
||||
|
||||
NS_IMPL_NS_NEW_HTML_ELEMENT(Output)
|
||||
|
||||
|
||||
nsHTMLOutputElement::nsHTMLOutputElement(nsINodeInfo *aNodeInfo)
|
||||
: nsGenericHTMLFormElement(aNodeInfo)
|
||||
, mValueModeFlag(eModeDefault)
|
||||
{
|
||||
AddMutationObserver(this);
|
||||
}
|
||||
|
||||
nsHTMLOutputElement::~nsHTMLOutputElement()
|
||||
{
|
||||
if (mTokenList) {
|
||||
mTokenList->DropReference();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsHTMLOutputElement, nsGenericElement)
|
||||
NS_IMPL_RELEASE_INHERITED(nsHTMLOutputElement, nsGenericElement)
|
||||
|
||||
DOMCI_DATA(HTMLOutputElement, nsHTMLOutputElement)
|
||||
|
||||
NS_INTERFACE_TABLE_HEAD(nsHTMLOutputElement)
|
||||
NS_HTML_CONTENT_INTERFACE_TABLE2(nsHTMLOutputElement,
|
||||
nsIDOMHTMLOutputElement,
|
||||
nsIMutationObserver)
|
||||
NS_HTML_CONTENT_INTERFACE_TABLE_TO_MAP_SEGUE(nsHTMLOutputElement,
|
||||
nsGenericHTMLFormElement)
|
||||
NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLOutputElement)
|
||||
|
||||
NS_IMPL_ELEMENT_CLONE(nsHTMLOutputElement)
|
||||
|
||||
|
||||
NS_IMPL_STRING_ATTR(nsHTMLOutputElement, Name, name)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::Reset()
|
||||
{
|
||||
mValueModeFlag = eModeDefault;
|
||||
nsresult rv = nsContentUtils::SetNodeTextContent(this, mDefaultValue,
|
||||
PR_TRUE);
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::SubmitNamesValues(nsFormSubmission* aFormSubmission,
|
||||
nsIContent* aSubmitElement)
|
||||
{
|
||||
// The output element is not submittable.
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsHTMLOutputElement::ParseAttribute(PRInt32 aNamespaceID, nsIAtom* aAttribute,
|
||||
const nsAString& aValue, nsAttrValue& aResult)
|
||||
{
|
||||
if (aNamespaceID == kNameSpaceID_None) {
|
||||
if (aAttribute == nsGkAtoms::_for) {
|
||||
aResult.ParseAtomArray(aValue);
|
||||
return PR_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return nsGenericHTMLFormElement::ParseAttribute(aNamespaceID, aAttribute,
|
||||
aValue, aResult);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::GetForm(nsIDOMHTMLFormElement** aForm)
|
||||
{
|
||||
return nsGenericHTMLFormElement::GetForm(aForm);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::GetType(nsAString& aType)
|
||||
{
|
||||
aType.AssignLiteral("output");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::GetValue(nsAString& aValue)
|
||||
{
|
||||
nsContentUtils::GetNodeTextContent(this, PR_TRUE, aValue);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::SetValue(const nsAString& aValue)
|
||||
{
|
||||
mValueModeFlag = eModeValue;
|
||||
return nsContentUtils::SetNodeTextContent(this, aValue, PR_TRUE);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::GetDefaultValue(nsAString& aDefaultValue)
|
||||
{
|
||||
aDefaultValue = mDefaultValue;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::SetDefaultValue(const nsAString& aDefaultValue)
|
||||
{
|
||||
mDefaultValue = aDefaultValue;
|
||||
if (mValueModeFlag == eModeDefault) {
|
||||
return nsContentUtils::SetNodeTextContent(this, mDefaultValue, PR_TRUE);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLOutputElement::GetHtmlFor(nsIDOMDOMSettableTokenList** aResult)
|
||||
{
|
||||
if (!mTokenList) {
|
||||
mTokenList = new nsDOMSettableTokenList(this, nsGkAtoms::_for);
|
||||
}
|
||||
|
||||
NS_ADDREF(*aResult = mTokenList);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void nsHTMLOutputElement::DescendantsChanged()
|
||||
{
|
||||
if (mValueModeFlag == eModeDefault) {
|
||||
nsContentUtils::GetNodeTextContent(this, PR_TRUE, mDefaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
// nsIMutationObserver
|
||||
|
||||
void nsHTMLOutputElement::CharacterDataChanged(nsIDocument* aDocument,
|
||||
nsIContent* aContent,
|
||||
CharacterDataChangeInfo* aInfo)
|
||||
{
|
||||
DescendantsChanged();
|
||||
}
|
||||
|
||||
void nsHTMLOutputElement::ContentAppended(nsIDocument* aDocument,
|
||||
nsIContent* aContainer,
|
||||
PRInt32 aNewIndexInContainer)
|
||||
{
|
||||
DescendantsChanged();
|
||||
}
|
||||
|
||||
void nsHTMLOutputElement::ContentInserted(nsIDocument* aDocument,
|
||||
nsIContent* aContainer,
|
||||
nsIContent* aChild,
|
||||
PRInt32 aIndexInContainer)
|
||||
{
|
||||
DescendantsChanged();
|
||||
}
|
||||
|
||||
void nsHTMLOutputElement::ContentRemoved(nsIDocument* aDocument,
|
||||
nsIContent* aContainer,
|
||||
nsIContent* aChild,
|
||||
PRInt32 aIndexInContainer)
|
||||
{
|
||||
DescendantsChanged();
|
||||
}
|
||||
|
|
@ -125,6 +125,7 @@
|
|||
#include "nsIDOMNamedNodeMap.h"
|
||||
#include "nsIDOMDOMStringList.h"
|
||||
#include "nsIDOMDOMTokenList.h"
|
||||
#include "nsIDOMDOMSettableTokenList.h"
|
||||
#include "nsIDOMNameList.h"
|
||||
#include "nsIDOMNSElement.h"
|
||||
|
||||
|
@ -288,6 +289,7 @@
|
|||
#include "nsIDOMHTMLOListElement.h"
|
||||
#include "nsIDOMHTMLObjectElement.h"
|
||||
#include "nsIDOMHTMLOptGroupElement.h"
|
||||
#include "nsIDOMHTMLOutputElement.h"
|
||||
#include "nsIDOMHTMLParagraphElement.h"
|
||||
#include "nsIDOMHTMLParamElement.h"
|
||||
#include "nsIDOMHTMLPreElement.h"
|
||||
|
@ -656,6 +658,8 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
|||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(DOMTokenList, nsDOMTokenListSH,
|
||||
ARRAY_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(DOMSettableTokenList, nsDOMTokenListSH,
|
||||
ARRAY_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(DocumentFragment, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(Element, nsElementSH,
|
||||
|
@ -784,6 +788,8 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
|||
ELEMENT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(HTMLOptionElement, nsElementSH,
|
||||
ELEMENT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(HTMLOutputElement, nsElementSH,
|
||||
ELEMENT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(HTMLParagraphElement, nsElementSH,
|
||||
ELEMENT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(HTMLParamElement, nsElementSH,
|
||||
|
@ -2155,6 +2161,10 @@ nsDOMClassInfo::Init()
|
|||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMDOMTokenList)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(DOMSettableTokenList, nsIDOMDOMSettableTokenList)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMDOMSettableTokenList)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(DocumentFragment, nsIDOMDocumentFragment)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMDocumentFragment)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOM3Node)
|
||||
|
@ -2511,6 +2521,11 @@ nsDOMClassInfo::Init()
|
|||
DOM_CLASSINFO_GENERIC_HTML_MAP_ENTRIES
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(HTMLOutputElement, nsIDOMHTMLOutputElement)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMHTMLOutputElement)
|
||||
DOM_CLASSINFO_GENERIC_HTML_MAP_ENTRIES
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(HTMLParagraphElement, nsIDOMHTMLParagraphElement)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMHTMLParagraphElement)
|
||||
DOM_CLASSINFO_GENERIC_HTML_MAP_ENTRIES
|
||||
|
|
|
@ -55,6 +55,7 @@ DOMCI_CLASS(DocumentType)
|
|||
DOMCI_CLASS(DOMImplementation)
|
||||
DOMCI_CLASS(DOMException)
|
||||
DOMCI_CLASS(DOMTokenList)
|
||||
DOMCI_CLASS(DOMSettableTokenList)
|
||||
DOMCI_CLASS(DocumentFragment)
|
||||
DOMCI_CLASS(Element)
|
||||
DOMCI_CLASS(Attr)
|
||||
|
@ -120,6 +121,7 @@ DOMCI_CLASS(HTMLOListElement)
|
|||
DOMCI_CLASS(HTMLObjectElement)
|
||||
DOMCI_CLASS(HTMLOptGroupElement)
|
||||
DOMCI_CLASS(HTMLOptionElement)
|
||||
DOMCI_CLASS(HTMLOutputElement)
|
||||
DOMCI_CLASS(HTMLParagraphElement)
|
||||
DOMCI_CLASS(HTMLParamElement)
|
||||
DOMCI_CLASS(HTMLPreElement)
|
||||
|
|
|
@ -82,6 +82,7 @@ XPIDLSRCS = \
|
|||
nsIDOMNSElement.idl \
|
||||
nsIDOMNodeSelector.idl \
|
||||
nsIDOMDOMTokenList.idl \
|
||||
nsIDOMDOMSettableTokenList.idl \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
/* -*- Mode: IDL; 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 Mozilla Foundation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mounir Lamouri <mounir.lamouri@mozilla.com> (original author)
|
||||
*
|
||||
* 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 ***** */
|
||||
|
||||
#include "nsIDOMDOMTokenList.idl"
|
||||
|
||||
/**
|
||||
* The DOMSettableTokenList interface is the same as the DOMTokenList interface,
|
||||
* except that it allows the underlying string to be directly changed.
|
||||
*
|
||||
* For more information on this interface please see:
|
||||
* http://dev.w3.org/html5/spec/infrastructure.html#domsettabletokenlist
|
||||
*/
|
||||
[scriptable, uuid(cdac274e-6619-4b5f-ba1a-cd1dbfae44b8)]
|
||||
interface nsIDOMDOMSettableTokenList : nsIDOMDOMTokenList
|
||||
{
|
||||
attribute DOMString value;
|
||||
};
|
||||
|
|
@ -87,6 +87,7 @@ SDK_XPIDLSRCS = \
|
|||
nsIDOMHTMLOptGroupElement.idl \
|
||||
nsIDOMHTMLOptionElement.idl \
|
||||
nsIDOMHTMLOptionsCollection.idl \
|
||||
nsIDOMHTMLOutputElement.idl \
|
||||
nsIDOMHTMLParagraphElement.idl \
|
||||
nsIDOMHTMLParamElement.idl \
|
||||
nsIDOMHTMLPreElement.idl \
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
/* -*- Mode: IDL; 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 Mozilla Foundation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mounir Lamouri <mounir.lamouri@mozilla.com> (original author)
|
||||
*
|
||||
* 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 ***** */
|
||||
|
||||
#include "nsIDOMHTMLElement.idl"
|
||||
|
||||
/**
|
||||
* The nsIDOMHTMLOutputElement interface is the interface to a HTML
|
||||
* <output> element.
|
||||
*
|
||||
* For more information on this interface, please see
|
||||
* http://dev.w3.org/html5/spec/forms.html#the-output-element
|
||||
*
|
||||
* @status UNDER_DEVELOPMENT
|
||||
*/
|
||||
|
||||
interface nsIDOMDOMSettableTokenList;
|
||||
|
||||
[scriptable, uuid(0f7f15a9-ea72-4feb-b2b5-2fcbc9c10ab8)]
|
||||
interface nsIDOMHTMLOutputElement : nsIDOMHTMLElement
|
||||
{
|
||||
readonly attribute nsIDOMDOMSettableTokenList htmlFor;
|
||||
readonly attribute nsIDOMHTMLFormElement form;
|
||||
attribute DOMString name;
|
||||
|
||||
readonly attribute DOMString type;
|
||||
attribute DOMString defaultValue;
|
||||
attribute DOMString value;
|
||||
|
||||
/**
|
||||
* The next attributes depend on the constraint validation API.
|
||||
* Keeping them commented until the constraint validation API is implemented.
|
||||
* See bug bug 345624.
|
||||
*/
|
||||
//readonly attribute boolean willValidate;
|
||||
//readonly attribute ValidityState validity;
|
||||
//readonly attribute DOMString validationMessage;
|
||||
//boolean checkValidity();
|
||||
//void setCustomValidity(in DOMString error);
|
||||
|
||||
/**
|
||||
* The labels IDL attribute will be added with bug 556743.
|
||||
*/
|
||||
//readonly attribute nsIDOMNodeList labels;
|
||||
};
|
||||
|
|
@ -95,6 +95,7 @@ EDITOR_ATOM(select, "select")
|
|||
EDITOR_ATOM(textarea, "textarea")
|
||||
EDITOR_ATOM(label, "label")
|
||||
EDITOR_ATOM(button, "button")
|
||||
EDITOR_ATOM(output, "output")
|
||||
// block tags
|
||||
EDITOR_ATOM(p, "p")
|
||||
EDITOR_ATOM(div, "div")
|
||||
|
|
|
@ -431,6 +431,7 @@ nsHTMLEditUtils::IsFormWidget(nsIDOMNode *node)
|
|||
return (nodeAtom == nsEditProperty::textarea)
|
||||
|| (nodeAtom == nsEditProperty::select)
|
||||
|| (nodeAtom == nsEditProperty::button)
|
||||
|| (nodeAtom == nsEditProperty::output)
|
||||
|| (nodeAtom == nsEditProperty::input);
|
||||
}
|
||||
|
||||
|
@ -481,8 +482,8 @@ nsHTMLEditUtils::SupportsAlignAttr(nsIDOMNode * aNode)
|
|||
// abbr, acronym, cite, code, del, dfn, em, ins, kbd, samp, strong, var
|
||||
#define GROUP_PHRASE (1 << 4)
|
||||
|
||||
// a, applet, basefont, bdo, br, font, iframe, img, map, object, q, script,
|
||||
// span, sub, sup
|
||||
// a, applet, basefont, bdo, br, font, iframe, img, map, object, output, q,
|
||||
// script, span, sub, sup
|
||||
#define GROUP_SPECIAL (1 << 5)
|
||||
|
||||
// button, form, input, label, select, textarea
|
||||
|
@ -650,6 +651,7 @@ static const nsElementInfo kElements[eHTMLTag_userdefined] = {
|
|||
GROUP_OPTGROUP_CONTENT),
|
||||
ELEM(option, PR_TRUE, PR_FALSE,
|
||||
GROUP_SELECT_CONTENT | GROUP_OPTGROUP_CONTENT, GROUP_LEAF),
|
||||
ELEM(output, PR_TRUE, PR_TRUE, GROUP_SPECIAL, GROUP_INLINE_ELEMENT),
|
||||
ELEM(p, PR_TRUE, PR_FALSE, GROUP_BLOCK | GROUP_P, GROUP_INLINE_ELEMENT),
|
||||
ELEM(param, PR_FALSE, PR_FALSE, GROUP_OBJECT_CONTENT, GROUP_NONE),
|
||||
ELEM(plaintext, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
|
||||
|
|
|
@ -235,6 +235,8 @@ EmbedContextMenuInfo::SetFormControlType(nsIDOMEventTarget *originalTarget)
|
|||
break;
|
||||
case NS_FORM_OBJECT:
|
||||
break;
|
||||
case NS_FORM_OUTPUT:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -166,6 +166,7 @@ members = [
|
|||
'nsIDOMDOMStringList.length',
|
||||
'nsIDOMDOMStringList.contains',
|
||||
'nsIDOMDOMTokenList.*',
|
||||
'nsIDOMDOMSettableTokenList.*',
|
||||
'nsIDOMNameList.getName',
|
||||
'nsIDOMNameList.contains',
|
||||
'nsIDOMNameList.containsNS',
|
||||
|
|
|
@ -140,6 +140,7 @@ HTML_TAG(object, Object)
|
|||
HTML_TAG(ol, SharedList)
|
||||
HTML_TAG(optgroup, OptGroup)
|
||||
HTML_TAG(option, Option)
|
||||
HTML_TAG(output, Output)
|
||||
HTML_TAG(p, Paragraph)
|
||||
HTML_TAG(param, Shared)
|
||||
HTML_TAG(plaintext, Span)
|
||||
|
|
|
@ -874,6 +874,15 @@ const nsHTMLElement gHTMLElements[] = {
|
|||
/*special props, prop-range*/ kNoStyleLeaksIn|kNoPropagate, kDefaultPropRange,
|
||||
/*special parents,kids*/ &gOptgroupParents,&gContainedInOpt,
|
||||
},
|
||||
{
|
||||
/*tag*/ eHTMLTag_output,
|
||||
/*requiredAncestor*/ eHTMLTag_unknown,eHTMLTag_unknown,
|
||||
/*rootnodes,endrootnodes*/ &gRootTags,&gRootTags,
|
||||
/*autoclose starttags and endtags*/ 0,0,0,0,
|
||||
/*parent,incl,exclgroups*/ kSpecial, (kInlineEntity|kSelf), kNone,
|
||||
/*special props, prop-range*/ 0,kDefaultPropRange,
|
||||
/*special parents,kids*/ 0,0,
|
||||
},
|
||||
{
|
||||
/*tag*/ eHTMLTag_p,
|
||||
/*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown,
|
||||
|
|
|
@ -199,6 +199,8 @@ static const PRUnichar sHTMLTagUnicodeName_optgroup[] =
|
|||
{'o', 'p', 't', 'g', 'r', 'o', 'u', 'p', '\0'};
|
||||
static const PRUnichar sHTMLTagUnicodeName_option[] =
|
||||
{'o', 'p', 't', 'i', 'o', 'n', '\0'};
|
||||
static const PRUnichar sHTMLTagUnicodeName_output[] =
|
||||
{'o', 'u', 't', 'p', 'u', 't', '\0'};
|
||||
static const PRUnichar sHTMLTagUnicodeName_p[] =
|
||||
{'p', '\0'};
|
||||
static const PRUnichar sHTMLTagUnicodeName_param[] =
|
||||
|
|
Загрузка…
Ссылка в новой задаче