[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdelibs/khtml
From: David Faure <faure () kde ! org>
Date: 2005-05-02 15:02:23
Message-ID: 20050502150223.7C489635 () office ! kde ! org
[Download RAW message or body]
CVS commit by faure:
Propagate correct DOM exception code from checkAddChild to setInnerHTML
(instead of making one up when setInnerHTML returns false). Testcase by spaze,
the real bug still needs to be fixed.
M +6 -0 ChangeLog 1.427
M +12 -10 dom/html_element.cpp 1.26
M +17 -18 html/html_elementimpl.cpp 1.186
M +2 -2 html/html_elementimpl.h 1.77
--- kdelibs/khtml/ChangeLog #1.426:1.427
@@ -1,2 +1,8 @@
+2005-05-02 David Faure <faure@kde.org>
+
+ Propagate correct DOM exception code from checkAddChild to setInnerHTML.
+ * html/html_elementimpl.cpp (setInnerHTML, setInnerText)
+ * dom/html_element.cpp (setInnerHTML, setInnerText)
+
2005-05-01 Allan Sandfeld Jensen <kde@carewolf.com>
--- kdelibs/khtml/html/html_elementimpl.cpp #1.185:1.186
@@ -548,26 +548,28 @@ DocumentFragment HTMLElementImpl::create
}
-bool HTMLElementImpl::setInnerHTML( const DOMString &html )
+void HTMLElementImpl::setInnerHTML( const DOMString &html, int &exceptioncode )
{
DocumentFragment fragment = createContextualFragment( html );
- if ( fragment.isNull() )
- return false;
+ if ( fragment.isNull() ) {
+ exceptioncode = DOMException::NO_MODIFICATION_ALLOWED_ERR;
+ return;
+ }
- int ec = 0;
// Make sure adding the new child is ok, before removing all children (#96187)
- checkAddChild( fragment.handle(), ec);
- if ( ec )
- return false;
+ checkAddChild( fragment.handle(), exceptioncode );
+ if ( exceptioncode )
+ return;
removeChildren();
- appendChild( fragment.handle(), ec );
- return !ec;
+ appendChild( fragment.handle(), exceptioncode );
}
-bool HTMLElementImpl::setInnerText( const DOMString &text )
+void HTMLElementImpl::setInnerText( const DOMString &text, int& exceptioncode )
{
// following the IE specs.
- if( endTag[id()] == FORBIDDEN )
- return false;
+ if( endTag[id()] == FORBIDDEN ) {
+ exceptioncode = DOMException::NO_MODIFICATION_ALLOWED_ERR;
+ return;
+ }
// IE disallows innerHTML on inline elements. I don't see why we should have \
this restriction, as our // dhtml engine can cope with it. Lars
@@ -584,5 +586,6 @@ bool HTMLElementImpl::setInnerText( cons
case ID_THEAD:
case ID_TR:
- return false;
+ exceptioncode = DOMException::NO_MODIFICATION_ALLOWED_ERR;
+ return;
default:
break;
@@ -592,9 +595,5 @@ bool HTMLElementImpl::setInnerText( cons
TextImpl *t = new TextImpl( docPtr(), text.implementation() );
- int ec = 0;
- appendChild( t, ec );
- if ( !ec )
- return true;
- return false;
+ appendChild( t, exceptioncode );
}
--- kdelibs/khtml/html/html_elementimpl.h #1.76:1.77
@@ -62,6 +62,6 @@ public:
DOMString innerText() const;
DocumentFragment createContextualFragment( const DOMString &html );
- bool setInnerHTML( const DOMString &html );
- bool setInnerText( const DOMString &text );
+ void setInnerHTML( const DOMString &html, int& exceptioncode );
+ void setInnerText( const DOMString &text, int& exceptioncode );
virtual DOMString toString() const;
--- kdelibs/khtml/dom/html_element.cpp #1.25:1.26
@@ -140,9 +140,10 @@ DOMString HTMLElement::innerHTML() const
void HTMLElement::setInnerHTML( const DOMString &html )
{
- bool ok = false;
- if( impl )
- ok = ((HTMLElementImpl *)impl)->setInnerHTML( html );
- if ( !ok )
- throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR);
+ if( !impl )
+ return;
+ int exceptioncode = 0;
+ ((HTMLElementImpl *)impl)->setInnerHTML( html, exceptioncode );
+ if ( exceptioncode )
+ throw DOMException( exceptioncode );
}
@@ -155,9 +156,10 @@ DOMString HTMLElement::innerText() const
void HTMLElement::setInnerText( const DOMString &text )
{
- bool ok = false;
- if( impl )
- ok = ((HTMLElementImpl *)impl)->setInnerText( text );
- if ( !ok )
- throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR);
+ if( !impl )
+ return;
+ int exceptioncode = 0;
+ ((HTMLElementImpl *)impl)->setInnerText( text, exceptioncode );
+ if ( exceptioncode )
+ throw DOMException( exceptioncode );
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic