Title: [99747] trunk/Source/WebCore
Revision
99747
Author
hara...@chromium.org
Date
2011-11-09 12:05:40 -0800 (Wed, 09 Nov 2011)

Log Message

Generate the HTMLOptionElement constructor using [NamedConstructor] IDL
https://bugs.webkit.org/show_bug.cgi?id=71925

Reviewed by Adam Barth.

This patch removes a custom constructor of HTMLOptionElement,
and generates it using [NamedConstructor] IDL.

Tests: fast/js/custom-constructors.html
       fast/forms/option-index.html
       fast/forms/add-and-remove-option.html
       fast/dom/dom-add-optionelement.html

* Target.pri: Removed V8HTMLOptionElementConstructor.{h,cpp}
* WebCore.gypi: Ditto.
* bindings/v8/custom/V8HTMLOptionElementConstructor.cpp: Removed.
* bindings/v8/custom/V8HTMLOptionElementConstructor.h: Removed.
* html/HTMLOptionElement.idl: Added [NamedConstructor] IDL.
* page/DOMWindow.idl: Removed [V8CustomConstructor] IDL.

Modified Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (99746 => 99747)


--- trunk/Source/WebCore/ChangeLog	2011-11-09 20:04:02 UTC (rev 99746)
+++ trunk/Source/WebCore/ChangeLog	2011-11-09 20:05:40 UTC (rev 99747)
@@ -1,3 +1,25 @@
+2011-11-09  Kentaro Hara  <hara...@chromium.org>
+
+        Generate the HTMLOptionElement constructor using [NamedConstructor] IDL
+        https://bugs.webkit.org/show_bug.cgi?id=71925
+
+        Reviewed by Adam Barth.
+
+        This patch removes a custom constructor of HTMLOptionElement,
+        and generates it using [NamedConstructor] IDL.
+
+        Tests: fast/js/custom-constructors.html
+               fast/forms/option-index.html
+               fast/forms/add-and-remove-option.html
+               fast/dom/dom-add-optionelement.html
+
+        * Target.pri: Removed V8HTMLOptionElementConstructor.{h,cpp}
+        * WebCore.gypi: Ditto.
+        * bindings/v8/custom/V8HTMLOptionElementConstructor.cpp: Removed.
+        * bindings/v8/custom/V8HTMLOptionElementConstructor.h: Removed.
+        * html/HTMLOptionElement.idl: Added [NamedConstructor] IDL.
+        * page/DOMWindow.idl: Removed [V8CustomConstructor] IDL.
+
 2011-11-09  Julien Chaffraix  <jchaffr...@webkit.org>
 
         Crash in RenderTableSection::splitColumn

Modified: trunk/Source/WebCore/Target.pri (99746 => 99747)


--- trunk/Source/WebCore/Target.pri	2011-11-09 20:04:02 UTC (rev 99746)
+++ trunk/Source/WebCore/Target.pri	2011-11-09 20:05:40 UTC (rev 99747)
@@ -198,7 +198,6 @@
         bindings/v8/custom/V8HTMLImageElementConstructor.cpp \
         bindings/v8/custom/V8HTMLInputElementCustom.cpp \
         bindings/v8/custom/V8HTMLLinkElementCustom.cpp \
-        bindings/v8/custom/V8HTMLOptionElementConstructor.cpp \
         bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp \
         bindings/v8/custom/V8HTMLOutputElementCustom.cpp \
         bindings/v8/custom/V8HTMLPlugInElementCustom.cpp \
@@ -1352,7 +1351,6 @@
         bindings/v8/custom/V8CustomXPathNSResolver.h \
         bindings/v8/custom/V8HTMLAudioElementConstructor.h \
         bindings/v8/custom/V8HTMLImageElementConstructor.h \
-        bindings/v8/custom/V8HTMLOptionElementConstructor.h \
         bindings/v8/custom/V8HTMLSelectElementCustom.h \
         bindings/v8/custom/V8MessagePortCustom.h \
         bindings/v8/custom/V8NamedNodesCollection.h \

Modified: trunk/Source/WebCore/WebCore.gypi (99746 => 99747)


--- trunk/Source/WebCore/WebCore.gypi	2011-11-09 20:04:02 UTC (rev 99746)
+++ trunk/Source/WebCore/WebCore.gypi	2011-11-09 20:05:40 UTC (rev 99747)
@@ -2200,8 +2200,6 @@
             'bindings/v8/custom/V8HTMLImageElementConstructor.h',
             'bindings/v8/custom/V8HTMLInputElementCustom.cpp',
             'bindings/v8/custom/V8HTMLLinkElementCustom.cpp',
-            'bindings/v8/custom/V8HTMLOptionElementConstructor.cpp',
-            'bindings/v8/custom/V8HTMLOptionElementConstructor.h',
             'bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp',
             'bindings/v8/custom/V8HTMLOutputElementCustom.cpp',
             'bindings/v8/custom/V8HTMLPlugInElementCustom.cpp',

Deleted: trunk/Source/WebCore/bindings/v8/custom/V8HTMLOptionElementConstructor.cpp (99746 => 99747)


--- trunk/Source/WebCore/bindings/v8/custom/V8HTMLOptionElementConstructor.cpp	2011-11-09 20:04:02 UTC (rev 99746)
+++ trunk/Source/WebCore/bindings/v8/custom/V8HTMLOptionElementConstructor.cpp	2011-11-09 20:05:40 UTC (rev 99747)
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "V8HTMLOptionElementConstructor.h"
-
-#include "HTMLOptionElement.h"
-#include "Document.h"
-#include "Frame.h"
-#include "HTMLNames.h"
-#include "Text.h"
-#include "V8Binding.h"
-#include "V8HTMLOptionElement.h"
-#include "V8Proxy.h"
-
-#include <wtf/RefPtr.h>
-
-namespace WebCore {
-
-WrapperTypeInfo V8HTMLOptionElementConstructor::info = { V8HTMLOptionElementConstructor::GetTemplate, 0, 0, 0 };
-
-static v8::Handle<v8::Value> v8HTMLOptionElementConstructorCallback(const v8::Arguments& args)
-{
-    INC_STATS("DOM.HTMLOptionElement.Contructor");
-
-    if (!args.IsConstructCall())
-        return throwError("DOM object constructor cannot be called as a function.", V8Proxy::TypeError);
-
-    if (ConstructorMode::current() == ConstructorMode::WrapExistingObject)
-        return args.Holder();
-
-    Frame* frame = V8Proxy::retrieveFrameForCurrentContext();
-    if (!frame)
-        return throwError("Option constructor associated frame is unavailable", V8Proxy::ReferenceError);
-
-    Document* document = frame->document();
-    if (!document)
-        return throwError("Option constructor associated document is unavailable", V8Proxy::ReferenceError);
-
-    String data;
-    String value;
-    bool defaultSelected = false;
-    bool selected = false;
-    if (args.Length() > 0)
-        data = ""
-    if (args.Length() > 1)
-        value = toWebCoreString(args[1]);
-    if (args.Length() > 2)
-        defaultSelected = args[2]->BooleanValue();
-    if (args.Length() > 3)
-        selected = args[3]->BooleanValue();
-
-    ExceptionCode ec = 0;
-    RefPtr<HTMLOptionElement> option = HTMLOptionElement::createForJSConstructor(document, data, value, defaultSelected, selected, ec);
-
-    if (ec)
-        throwError(ec);
-
-    V8DOMWrapper::setDOMWrapper(args.Holder(), &V8HTMLOptionElementConstructor::info, option.get());
-    option->ref();
-    V8DOMWrapper::setJSWrapperForDOMNode(option.get(), v8::Persistent<v8::Object>::New(args.Holder()));
-    return args.Holder();
-}
-
-v8::Persistent<v8::FunctionTemplate> V8HTMLOptionElementConstructor::GetTemplate()
-{
-    static v8::Persistent<v8::FunctionTemplate> cachedTemplate;
-    if (!cachedTemplate.IsEmpty())
-        return cachedTemplate;
-
-    v8::HandleScope scope;
-    v8::Local<v8::FunctionTemplate> result = v8::FunctionTemplate::New(v8HTMLOptionElementConstructorCallback);
-
-    v8::Local<v8::ObjectTemplate> instance = result->InstanceTemplate();
-    instance->SetInternalFieldCount(V8HTMLOptionElement::internalFieldCount);
-    result->SetClassName(v8::String::New("HTMLOptionElement"));
-    result->Inherit(V8HTMLOptionElement::GetTemplate());
-
-    cachedTemplate = v8::Persistent<v8::FunctionTemplate>::New(result);
-    return cachedTemplate;
-}
-
-} // namespace WebCore

Deleted: trunk/Source/WebCore/bindings/v8/custom/V8HTMLOptionElementConstructor.h (99746 => 99747)


--- trunk/Source/WebCore/bindings/v8/custom/V8HTMLOptionElementConstructor.h	2011-11-09 20:04:02 UTC (rev 99746)
+++ trunk/Source/WebCore/bindings/v8/custom/V8HTMLOptionElementConstructor.h	2011-11-09 20:05:40 UTC (rev 99747)
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef V8HTMLOptionElementConstructor_h
-#define V8HTMLOptionElementConstructor_h
-
-#include "WrapperTypeInfo.h"
-
-#include <v8.h>
-
-namespace WebCore {
-
-class V8HTMLOptionElementConstructor {
-public:
-    static v8::Persistent<v8::FunctionTemplate> GetTemplate();
-    static WrapperTypeInfo info;
-};
-
-}
-
-#endif // V8HTMLOptionElementConstructor_h

Modified: trunk/Source/WebCore/html/HTMLOptionElement.idl (99746 => 99747)


--- trunk/Source/WebCore/html/HTMLOptionElement.idl	2011-11-09 20:04:02 UTC (rev 99746)
+++ trunk/Source/WebCore/html/HTMLOptionElement.idl	2011-11-09 20:05:40 UTC (rev 99747)
@@ -21,7 +21,9 @@
 module html {
 
     interface [
-        GenerateNativeConverter
+        GenerateNativeConverter,
+        NamedConstructor=Option(in [Optional=CallWithNullValue] DOMString data, in [Optional=CallWithNullValue] DOMString value, in [Optional=CallWithDefaultValue] boolean defaultSelected, in [Optional=CallWithDefaultValue] boolean selected),
+        ConstructorRaisesException
     ] HTMLOptionElement : HTMLElement {
         readonly attribute HTMLFormElement form;
         attribute [Reflect=selected] boolean defaultSelected;

Modified: trunk/Source/WebCore/page/DOMWindow.idl (99746 => 99747)


--- trunk/Source/WebCore/page/DOMWindow.idl	2011-11-09 20:04:02 UTC (rev 99746)
+++ trunk/Source/WebCore/page/DOMWindow.idl	2011-11-09 20:05:40 UTC (rev 99747)
@@ -491,7 +491,7 @@
         attribute HTMLUnknownElementConstructor HTMLUnknownElement;
 
         attribute [JSCCustomGetter, CustomConstructor] HTMLImageElementConstructorConstructor Image; // Usable with new operator
-        attribute [JSCCustomGetter, CustomConstructor] HTMLOptionElementConstructorConstructor Option; // Usable with new operator
+        attribute [JSCCustomGetter, JSCustomConstructor] HTMLOptionElementConstructorConstructor Option; // Usable with new operator
 
         attribute CanvasPatternConstructor CanvasPattern;
         attribute CanvasGradientConstructor CanvasGradient;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to