Bug 923913 - Make Element.inner/outerHTML [Pure], r=bz

--HG--
extra : rebase_source : 81556c5031279cee3f33639a47f4fb83e2743403
This commit is contained in:
Olli Pettay 2013-10-08 22:25:01 +03:00
Родитель d35f76c090
Коммит 986245e7be
9 изменённых файлов: 35 добавлений и 41 удалений

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

@ -725,9 +725,9 @@ public:
{
}
virtual void GetInnerHTML(nsAString& aInnerHTML, ErrorResult& aError);
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML);
virtual void SetInnerHTML(const nsAString& aInnerHTML, ErrorResult& aError);
void GetOuterHTML(nsAString& aOuterHTML, ErrorResult& aError);
void GetOuterHTML(nsAString& aOuterHTML);
void SetOuterHTML(const nsAString& aOuterHTML, ErrorResult& aError);
void InsertAdjacentHTML(const nsAString& aPosition, const nsAString& aText,
ErrorResult& aError);
@ -1124,7 +1124,7 @@ private:
nsIScrollableFrame* GetScrollFrame(nsIFrame **aStyledFrame = nullptr,
bool aFlushLayout = true);
nsresult GetMarkup(bool aIncludeSelf, nsAString& aMarkup);
void GetMarkup(bool aIncludeSelf, nsAString& aMarkup);
// Data members
nsEventStates mState;

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

@ -3107,14 +3107,15 @@ Serialize(Element* aRoot, bool aDescendentsOnly, nsAString& aOut)
}
}
nsresult
void
Element::GetMarkup(bool aIncludeSelf, nsAString& aMarkup)
{
aMarkup.Truncate();
nsIDocument* doc = OwnerDoc();
if (IsInHTMLDocument()) {
return Serialize(this, !aIncludeSelf, aMarkup) ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
Serialize(this, !aIncludeSelf, aMarkup);
return;
}
nsAutoString contentType;
@ -3135,7 +3136,7 @@ Element::GetMarkup(bool aIncludeSelf, nsAString& aMarkup)
docEncoder = do_CreateInstance(NS_DOC_ENCODER_CONTRACTID_BASE "application/xml");
}
NS_ENSURE_TRUE(docEncoder, NS_ERROR_FAILURE);
NS_ENSURE_TRUE_VOID(docEncoder);
uint32_t flags = nsIDocumentEncoder::OutputEncodeBasicEntities |
// Output DOM-standard newlines
@ -3153,8 +3154,8 @@ Element::GetMarkup(bool aIncludeSelf, nsAString& aMarkup)
}
}
nsresult rv = docEncoder->NativeInit(doc, contentType, flags);
NS_ENSURE_SUCCESS(rv, rv);
DebugOnly<nsresult> rv = docEncoder->NativeInit(doc, contentType, flags);
MOZ_ASSERT(NS_SUCCEEDED(rv));
if (aIncludeSelf) {
docEncoder->SetNativeNode(this);
@ -3162,10 +3163,10 @@ Element::GetMarkup(bool aIncludeSelf, nsAString& aMarkup)
docEncoder->SetNativeContainerNode(this);
}
rv = docEncoder->EncodeToString(aMarkup);
MOZ_ASSERT(NS_SUCCEEDED(rv));
if (!aIncludeSelf) {
doc->SetCachedEncoder(docEncoder.forget());
}
return rv;
}
/**
@ -3197,10 +3198,11 @@ FireMutationEventsForDirectParsing(nsIDocument* aDoc, nsIContent* aDest,
}
}
void
Element::GetInnerHTML(nsAString& aInnerHTML, ErrorResult& aError)
NS_IMETHODIMP
Element::GetInnerHTML(nsAString& aInnerHTML)
{
aError = GetMarkup(false, aInnerHTML);
GetMarkup(false, aInnerHTML);
return NS_OK;
}
void
@ -3266,9 +3268,9 @@ Element::SetInnerHTML(const nsAString& aInnerHTML, ErrorResult& aError)
}
void
Element::GetOuterHTML(nsAString& aOuterHTML, ErrorResult& aError)
Element::GetOuterHTML(nsAString& aOuterHTML)
{
aError = GetMarkup(true, aOuterHTML);
GetMarkup(true, aOuterHTML);
}
void

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

@ -16,9 +16,7 @@ public:
HTMLElement(already_AddRefed<nsINodeInfo> aNodeInfo);
virtual ~HTMLElement();
using nsGenericHTMLElement::GetInnerHTML;
virtual void GetInnerHTML(nsAString& aInnerHTML,
mozilla::ErrorResult& aError) MOZ_OVERRIDE;
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) MOZ_OVERRIDE;
virtual nsresult Clone(nsINodeInfo* aNodeInfo,
nsINode** aResult) const MOZ_OVERRIDE;
@ -39,8 +37,8 @@ HTMLElement::~HTMLElement()
NS_IMPL_ELEMENT_CLONE(HTMLElement)
void
HTMLElement::GetInnerHTML(nsAString& aInnerHTML, ErrorResult& aError)
NS_IMETHODIMP
HTMLElement::GetInnerHTML(nsAString& aInnerHTML)
{
/**
* nsGenericHTMLElement::GetInnerHTML escapes < and > characters (at least).
@ -52,10 +50,10 @@ HTMLElement::GetInnerHTML(nsAString& aInnerHTML, ErrorResult& aError)
if (mNodeInfo->Equals(nsGkAtoms::xmp) ||
mNodeInfo->Equals(nsGkAtoms::plaintext)) {
nsContentUtils::GetNodeTextContent(this, false, aInnerHTML);
return;
return NS_OK;
}
nsGenericHTMLElement::GetInnerHTML(aInnerHTML, aError);
return nsGenericHTMLElement::GetInnerHTML(aInnerHTML);
}
JSObject*

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

@ -226,10 +226,11 @@ HTMLScriptElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
aNotify);
}
void
HTMLScriptElement::GetInnerHTML(nsAString& aInnerHTML, ErrorResult& aError)
NS_IMETHODIMP
HTMLScriptElement::GetInnerHTML(nsAString& aInnerHTML)
{
nsContentUtils::GetNodeTextContent(this, false, aInnerHTML);
return NS_OK;
}
void

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

@ -30,9 +30,7 @@ public:
// nsISupports
NS_DECL_ISUPPORTS_INHERITED
using nsGenericHTMLElement::GetInnerHTML;
virtual void GetInnerHTML(nsAString& aInnerHTML,
mozilla::ErrorResult& aError) MOZ_OVERRIDE;
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) MOZ_OVERRIDE;
using nsGenericHTMLElement::SetInnerHTML;
virtual void SetInnerHTML(const nsAString& aInnerHTML,
mozilla::ErrorResult& aError) MOZ_OVERRIDE;

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

@ -201,10 +201,11 @@ HTMLStyleElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
return rv;
}
void
HTMLStyleElement::GetInnerHTML(nsAString& aInnerHTML, ErrorResult& aError)
NS_IMETHODIMP
HTMLStyleElement::GetInnerHTML(nsAString& aInnerHTML)
{
nsContentUtils::GetNodeTextContent(this, false, aInnerHTML);
return NS_OK;
}
void

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

@ -33,9 +33,7 @@ public:
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLStyleElement,
nsGenericHTMLElement)
using nsGenericHTMLElement::GetInnerHTML;
virtual void GetInnerHTML(nsAString& aInnerHTML,
mozilla::ErrorResult& aError) MOZ_OVERRIDE;
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) MOZ_OVERRIDE;
using nsGenericHTMLElement::SetInnerHTML;
virtual void SetInnerHTML(const nsAString& aInnerHTML,
mozilla::ErrorResult& aError) MOZ_OVERRIDE;

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

@ -464,9 +464,8 @@ public:
return rv.ErrorCode();
}
NS_IMETHOD GetOuterHTML(nsAString& aOuterHTML) MOZ_FINAL {
mozilla::ErrorResult rv;
mozilla::dom::Element::GetOuterHTML(aOuterHTML, rv);
return rv.ErrorCode();
mozilla::dom::Element::GetOuterHTML(aOuterHTML);
return NS_OK;
}
NS_IMETHOD SetOuterHTML(const nsAString& aOuterHTML) MOZ_FINAL {
mozilla::ErrorResult rv;
@ -528,11 +527,8 @@ public:
*aDraggable = Draggable();
return NS_OK;
}
using mozilla::dom::Element::GetInnerHTML;
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) MOZ_FINAL {
mozilla::ErrorResult rv;
GetInnerHTML(aInnerHTML, rv);
return rv.ErrorCode();
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) MOZ_OVERRIDE {
return mozilla::dom::Element::GetInnerHTML(aInnerHTML);
}
using mozilla::dom::Element::SetInnerHTML;
NS_IMETHOD SetInnerHTML(const nsAString& aInnerHTML) MOZ_FINAL {

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

@ -175,9 +175,9 @@ partial interface Element {
// http://domparsing.spec.whatwg.org/#extensions-to-the-element-interface
partial interface Element {
[Throws,TreatNullAs=EmptyString]
[Pure,SetterThrows,TreatNullAs=EmptyString]
attribute DOMString innerHTML;
[Throws,TreatNullAs=EmptyString]
[Pure,SetterThrows,TreatNullAs=EmptyString]
attribute DOMString outerHTML;
[Throws]
void insertAdjacentHTML(DOMString position, DOMString text);