diff options
Diffstat (limited to 'Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp')
-rw-r--r-- | Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp | 59 |
1 files changed, 4 insertions, 55 deletions
diff --git a/Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp b/Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp index 74a58672f..356679a8e 100644 --- a/Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp +++ b/Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp @@ -20,72 +20,21 @@ #include "config.h" #include "JSHTMLOptionsCollection.h" +#include "CustomElementReactionQueue.h" #include "ExceptionCode.h" -#include "HTMLNames.h" -#include "HTMLOptionElement.h" -#include "HTMLOptionsCollection.h" -#include "HTMLSelectElement.h" #include "JSHTMLOptionElement.h" #include "JSHTMLSelectElement.h" #include "JSHTMLSelectElementCustom.h" -#include "JSNodeList.h" -#include "StaticNodeList.h" - #include <wtf/MathExtras.h> using namespace JSC; namespace WebCore { -void JSHTMLOptionsCollection::setLength(ExecState* exec, JSValue value) -{ - ExceptionCode ec = 0; - unsigned newLength = 0; - double lengthValue = value.toNumber(exec); - if (!std::isnan(lengthValue) && !std::isinf(lengthValue)) { - if (lengthValue < 0.0) - ec = INDEX_SIZE_ERR; - else if (lengthValue > static_cast<double>(UINT_MAX)) - newLength = UINT_MAX; - else - newLength = static_cast<unsigned>(lengthValue); - } - if (!ec) - impl().setLength(newLength, ec); - setDOMException(exec, ec); -} - -void JSHTMLOptionsCollection::indexSetter(ExecState* exec, unsigned index, JSValue value) -{ - selectIndexSetter(&impl().selectElement(), exec, index, value); -} - -JSValue JSHTMLOptionsCollection::add(ExecState* exec) -{ - HTMLOptionsCollection& imp = impl(); - HTMLOptionElement* option = toHTMLOptionElement(exec->argument(0)); - ExceptionCode ec = 0; - if (exec->argumentCount() < 2) - imp.add(option, ec); - else { - int index = exec->argument(1).toInt32(exec); - if (exec->hadException()) - return jsUndefined(); - imp.add(option, index, ec); - } - setDOMException(exec, ec); - return jsUndefined(); -} - -JSValue JSHTMLOptionsCollection::remove(ExecState* exec) +void JSHTMLOptionsCollection::indexSetter(ExecState* state, unsigned index, JSValue value) { - // The argument can be an HTMLOptionElement or an index. - JSValue argument = exec->argument(0); - if (HTMLOptionElement* option = toHTMLOptionElement(argument)) - impl().remove(option); - else - impl().remove(argument.toInt32(exec)); - return jsUndefined(); + CustomElementReactionStack customElementReactionStack; + selectElementIndexSetter(*state, wrapped().selectElement(), index, value); } } |