Title: [261317] trunk/Source/WebCore
Revision
261317
Author
[email protected]
Date
2020-05-07 11:12:46 -0700 (Thu, 07 May 2020)

Log Message

[Conditional=] not working for operations in WebGLRenderingContextBase.idl
https://bugs.webkit.org/show_bug.cgi?id=211528

Reviewed by Chris Dumez.

When an IDL interface under a given Condition defined an operation with
another Condition the generated source file should guard the operation
with both the Condition from the interface and the one from the
operation. This was working fine for sole interfaces but not for those
who were inheriting from a base one, i.e., it was not working for
supplemental interfaces.

Added a new minimalistic binding test showcasing the problem.

* bindings/scripts/CodeGenerator.pm:
(ProcessSupplementalDependencies): Add Conditionals from both interface and operation.
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::jsTestGlobalObjectTestOperationConditionalConstructorGetter): Updated result.
(WebCore::jsTestGlobalObjectTestOperationConditionalConstructor): Ditto.
(WebCore::setJSTestGlobalObjectTestOperationConditionalConstructorSetter): Ditto.
(WebCore::setJSTestGlobalObjectTestOperationConditionalConstructor): Ditto.
* bindings/scripts/test/JS/JSTestOperationBase.cpp: Added.
* bindings/scripts/test/JS/JSTestOperationBase.h: Added.
* bindings/scripts/test/JS/JSTestOperationConditional.cpp: Added.
* bindings/scripts/test/JS/JSTestOperationConditional.h: Added.
* bindings/scripts/test/TestOperationBase.idl: Added.
* bindings/scripts/test/TestOperationConditional.idl: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (261316 => 261317)


--- trunk/Source/WebCore/ChangeLog	2020-05-07 18:07:49 UTC (rev 261316)
+++ trunk/Source/WebCore/ChangeLog	2020-05-07 18:12:46 UTC (rev 261317)
@@ -1,3 +1,33 @@
+2020-05-07  Sergio Villar Senin  <[email protected]>
+
+        [Conditional=] not working for operations in WebGLRenderingContextBase.idl
+        https://bugs.webkit.org/show_bug.cgi?id=211528
+
+        Reviewed by Chris Dumez.
+
+        When an IDL interface under a given Condition defined an operation with
+        another Condition the generated source file should guard the operation
+        with both the Condition from the interface and the one from the
+        operation. This was working fine for sole interfaces but not for those
+        who were inheriting from a base one, i.e., it was not working for
+        supplemental interfaces.
+
+        Added a new minimalistic binding test showcasing the problem.
+
+        * bindings/scripts/CodeGenerator.pm:
+        (ProcessSupplementalDependencies): Add Conditionals from both interface and operation.
+        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
+        (WebCore::jsTestGlobalObjectTestOperationConditionalConstructorGetter): Updated result.
+        (WebCore::jsTestGlobalObjectTestOperationConditionalConstructor): Ditto.
+        (WebCore::setJSTestGlobalObjectTestOperationConditionalConstructorSetter): Ditto.
+        (WebCore::setJSTestGlobalObjectTestOperationConditionalConstructor): Ditto.
+        * bindings/scripts/test/JS/JSTestOperationBase.cpp: Added.
+        * bindings/scripts/test/JS/JSTestOperationBase.h: Added.
+        * bindings/scripts/test/JS/JSTestOperationConditional.cpp: Added.
+        * bindings/scripts/test/JS/JSTestOperationConditional.h: Added.
+        * bindings/scripts/test/TestOperationBase.idl: Added.
+        * bindings/scripts/test/TestOperationConditional.idl: Added.
+
 2020-05-07  Antti Koivisto  <[email protected]>
 
         [Wheel event region] Include listeners on Window

Modified: trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm (261316 => 261317)


--- trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm	2020-05-07 18:07:49 UTC (rev 261316)
+++ trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm	2020-05-07 18:12:46 UTC (rev 261317)
@@ -303,7 +303,11 @@
 
                 # Add interface-wide extended attributes to each method.
                 foreach my $extendedAttributeName (keys %{$interface->extendedAttributes}) {
-                    $operation->extendedAttributes->{$extendedAttributeName} = $interface->extendedAttributes->{$extendedAttributeName};
+                    if ($operation->extendedAttributes->{$extendedAttributeName} && $extendedAttributeName eq "Conditional") {
+                        $operation->extendedAttributes->{$extendedAttributeName} = $operation->extendedAttributes->{$extendedAttributeName} . '&' . $interface->extendedAttributes->{$extendedAttributeName};
+                    } else {
+                        $operation->extendedAttributes->{$extendedAttributeName} = $interface->extendedAttributes->{$extendedAttributeName};
+                    }
                 }
                 push(@{$targetDataNode->operations}, $operation);
             }

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp (261316 => 261317)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp	2020-05-07 18:07:49 UTC (rev 261316)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp	2020-05-07 18:12:46 UTC (rev 261317)
@@ -111,6 +111,10 @@
 #include "JSTestSerializedScriptValueInterface.h"
 #endif
 
+#if ENABLE(ConditionDerived)
+#include "JSTestOperationConditional.h"
+#endif
+
 #if ENABLE(TEST_CONDITIONAL)
 #include "JSTestCallbackInterface.h"
 #endif
@@ -248,6 +252,10 @@
 bool setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
 JSC::EncodedJSValue jsTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::PropertyName);
 bool setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+#if ENABLE(ConditionDerived)
+JSC::EncodedJSValue jsTestGlobalObjectTestOperationConditionalConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::PropertyName);
+bool setJSTestGlobalObjectTestOperationConditionalConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+#endif
 JSC::EncodedJSValue jsTestGlobalObjectTestOverloadedConstructorsConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::PropertyName);
 bool setJSTestGlobalObjectTestOverloadedConstructorsConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
 JSC::EncodedJSValue jsTestGlobalObjectTestOverloadedConstructorsWithSequenceConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::PropertyName);
@@ -297,12 +305,12 @@
 
 /* Hash table */
 
-static const struct CompactHashIndex JSTestGlobalObjectTableIndex[266] = {
+static const struct CompactHashIndex JSTestGlobalObjectTableIndex[267] = {
     { -1, -1 },
     { 36, -1 },
     { -1, -1 },
     { 0, -1 },
-    { 4, 262 },
+    { 4, 263 },
     { 40, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -311,7 +319,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 50, -1 },
+    { 51, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -319,7 +327,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 62, -1 },
+    { 63, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -339,7 +347,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 65, -1 },
+    { 66, -1 },
     { 9, 258 },
     { -1, -1 },
     { -1, -1 },
@@ -349,7 +357,7 @@
     { -1, -1 },
     { -1, -1 },
     { 34, -1 },
-    { 16, 263 },
+    { 16, 264 },
     { 6, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -368,7 +376,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 18, 264 },
+    { 18, 265 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -383,7 +391,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 56, -1 },
+    { 57, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -392,7 +400,7 @@
     { -1, -1 },
     { 20, 256 },
     { -1, -1 },
-    { 57, -1 },
+    { 58, -1 },
     { 15, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -409,7 +417,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 46, -1 },
+    { 47, -1 },
     { 21, -1 },
     { -1, -1 },
     { 2, -1 },
@@ -423,7 +431,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 54, -1 },
+    { 55, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -438,7 +446,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 49, -1 },
+    { 50, -1 },
     { -1, -1 },
     { 10, -1 },
     { -1, -1 },
@@ -456,12 +464,12 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 63, -1 },
+    { 64, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
     { 28, -1 },
-    { 25, 261 },
+    { 25, 262 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -473,7 +481,7 @@
     { -1, -1 },
     { 12, 257 },
     { -1, -1 },
-    { 58, -1 },
+    { 59, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -482,17 +490,17 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 29, 265 },
+    { 29, 266 },
     { -1, -1 },
     { 13, -1 },
     { -1, -1 },
-    { 61, -1 },
+    { 62, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 44, -1 },
+    { 45, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -505,7 +513,7 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 52, -1 },
+    { 53, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
@@ -527,10 +535,10 @@
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
-    { 45, -1 },
+    { 44, 261 },
     { 7, 260 },
     { -1, -1 },
-    { 59, -1 },
+    { 60, -1 },
     { -1, -1 },
     { 43, -1 },
     { -1, -1 },
@@ -547,23 +555,24 @@
     { -1, -1 },
     { 41, -1 },
     { 3, -1 },
-    { 47, -1 },
-    { -1, -1 },
     { 48, -1 },
     { -1, -1 },
+    { 49, -1 },
     { -1, -1 },
     { -1, -1 },
     { -1, -1 },
+    { -1, -1 },
     { 23, 259 },
     { 26, -1 },
     { 35, -1 },
     { 37, -1 },
     { 39, -1 },
-    { 51, -1 },
-    { 53, -1 },
-    { 55, -1 },
-    { 60, -1 },
-    { 64, -1 },
+    { 46, -1 },
+    { 52, -1 },
+    { 54, -1 },
+    { 56, -1 },
+    { 61, -1 },
+    { 65, -1 },
 };
 
 
@@ -625,6 +634,11 @@
     { "TestNamedSetterWithOverrideBuiltins", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGlobalObjectTestNamedSetterWithOverrideBuiltinsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestGlobalObjectTestNamedSetterWithOverrideBuiltinsConstructor) } },
     { "TestNamedSetterWithUnforgableProperties", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGlobalObjectTestNamedSetterWithUnforgablePropertiesConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesConstructor) } },
     { "TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor) } },
+#if ENABLE(ConditionDerived)
+    { "TestOperationConditional", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGlobalObjectTestOperationConditionalConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestGlobalObjectTestOperationConditionalConstructor) } },
+#else
+    { 0, 0, NoIntrinsic, { 0, 0 } },
+#endif
     { "TestOverloadedConstructors", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGlobalObjectTestOverloadedConstructorsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestGlobalObjectTestOverloadedConstructorsConstructor) } },
     { "TestOverloadedConstructorsWithSequence", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGlobalObjectTestOverloadedConstructorsWithSequenceConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestGlobalObjectTestOverloadedConstructorsWithSequenceConstructor) } },
     { "TestOverrideBuiltins", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGlobalObjectTestOverrideBuiltinsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestGlobalObjectTestOverrideBuiltinsConstructor) } },
@@ -653,7 +667,7 @@
     { "regularOperation", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestGlobalObjectInstanceFunctionRegularOperation), (intptr_t) (1) } },
 };
 
-static const HashTable JSTestGlobalObjectTable = { 66, 255, true, JSTestGlobalObject::info(), JSTestGlobalObjectTableValues, JSTestGlobalObjectTableIndex };
+static const HashTable JSTestGlobalObjectTable = { 67, 255, true, JSTestGlobalObject::info(), JSTestGlobalObjectTableValues, JSTestGlobalObjectTableIndex };
 /* Hash table for constructor */
 
 static const HashTableValue JSTestGlobalObjectConstructorTableValues[] =
@@ -2005,6 +2019,37 @@
     return IDLAttribute<JSTestGlobalObject>::set<setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructorSetter>(*lexicalGlobalObject, thisValue, encodedValue, "TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins");
 }
 
+#if ENABLE(ConditionDerived)
+static inline JSValue jsTestGlobalObjectTestOperationConditionalConstructorGetter(JSGlobalObject& lexicalGlobalObject, JSTestGlobalObject& thisObject, ThrowScope& throwScope)
+{
+    UNUSED_PARAM(throwScope);
+    UNUSED_PARAM(lexicalGlobalObject);
+    return JSTestOperationConditional::getConstructor(JSC::getVM(&lexicalGlobalObject), thisObject.globalObject());
+}
+
+EncodedJSValue jsTestGlobalObjectTestOperationConditionalConstructor(JSGlobalObject* lexicalGlobalObject, EncodedJSValue thisValue, PropertyName)
+{
+    return IDLAttribute<JSTestGlobalObject>::get<jsTestGlobalObjectTestOperationConditionalConstructorGetter>(*lexicalGlobalObject, thisValue, "TestOperationConditional");
+}
+
+#endif
+
+#if ENABLE(ConditionDerived)
+static inline bool setJSTestGlobalObjectTestOperationConditionalConstructorSetter(JSGlobalObject& lexicalGlobalObject, JSTestGlobalObject& thisObject, JSValue value, ThrowScope& throwScope)
+{
+    UNUSED_PARAM(lexicalGlobalObject);
+    VM& vm = throwScope.vm();
+    // Shadowing a built-in constructor.
+    return thisObject.putDirect(vm, Identifier::fromString(vm, reinterpret_cast<const LChar*>("TestOperationConditional"), strlen("TestOperationConditional")), value);
+}
+
+bool setJSTestGlobalObjectTestOperationConditionalConstructor(JSGlobalObject* lexicalGlobalObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    return IDLAttribute<JSTestGlobalObject>::set<setJSTestGlobalObjectTestOperationConditionalConstructorSetter>(*lexicalGlobalObject, thisValue, encodedValue, "TestOperationConditional");
+}
+
+#endif
+
 static inline JSValue jsTestGlobalObjectTestOverloadedConstructorsConstructorGetter(JSGlobalObject& lexicalGlobalObject, JSTestGlobalObject& thisObject, ThrowScope& throwScope)
 {
     UNUSED_PARAM(throwScope);

Added: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationBase.cpp (0 => 261317)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationBase.cpp	                        (rev 0)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationBase.cpp	2020-05-07 18:12:46 UTC (rev 261317)
@@ -0,0 +1,6 @@
+/*
+    This file is generated just to tell build scripts that JSTestOperationBase.h and
+    JSTestOperationBase.cpp are created for TestOperationBase.idl, and thus
+    prevent the build scripts from trying to generate JSTestOperationBase.h and
+    JSTestOperationBase.cpp at every build. This file must not be tried to compile.
+*/
Property changes on: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationBase.cpp
___________________________________________________________________

Added: svn:eol-style

+LF \ No newline at end of property

Added: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationBase.h (0 => 261317)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationBase.h	                        (rev 0)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationBase.h	2020-05-07 18:12:46 UTC (rev 261317)
@@ -0,0 +1,6 @@
+/*
+    This file is generated just to tell build scripts that JSTestOperationBase.h and
+    JSTestOperationBase.cpp are created for TestOperationBase.idl, and thus
+    prevent the build scripts from trying to generate JSTestOperationBase.h and
+    JSTestOperationBase.cpp at every build. This file must not be tried to compile.
+*/
Property changes on: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationBase.h
___________________________________________________________________

Added: svn:eol-style

+LF \ No newline at end of property

Added: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.cpp (0 => 261317)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.cpp	                        (rev 0)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.cpp	2020-05-07 18:12:46 UTC (rev 261317)
@@ -0,0 +1,331 @@
+/*
+    This file is part of the WebKit open source project.
+    This file has been generated by generate-bindings.pl. DO NOT MODIFY!
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+*/
+
+#include "config.h"
+
+#if ENABLE(ConditionDerived)
+
+#include "JSTestOperationConditional.h"
+
+#include "ActiveDOMObject.h"
+#include "DOMIsoSubspaces.h"
+#include "JSDOMBinding.h"
+#include "JSDOMConstructorNotConstructable.h"
+#include "JSDOMExceptionHandling.h"
+#include "JSDOMOperation.h"
+#include "JSDOMWrapperCache.h"
+#include "ScriptExecutionContext.h"
+#include "WebCoreJSClientData.h"
+#include <_javascript_Core/FunctionPrototype.h>
+#include <_javascript_Core/HeapAnalyzer.h>
+#include <_javascript_Core/JSCInlines.h>
+#include <_javascript_Core/JSDestructibleObjectHeapCellType.h>
+#include <_javascript_Core/SubspaceInlines.h>
+#include <wtf/GetPtr.h>
+#include <wtf/PointerPreparations.h>
+#include <wtf/URL.h>
+
+
+namespace WebCore {
+using namespace JSC;
+
+// Functions
+
+#if ENABLE(ConditionBase)
+JSC::EncodedJSValue JSC_HOST_CALL jsTestOperationConditionalPrototypeFunctionNonConditionalOperation(JSC::JSGlobalObject*, JSC::CallFrame*);
+#endif
+#if ENABLE(ConditionBase) && ENABLE(ConditionOperation)
+JSC::EncodedJSValue JSC_HOST_CALL jsTestOperationConditionalPrototypeFunctionConditionalOperation(JSC::JSGlobalObject*, JSC::CallFrame*);
+#endif
+
+// Attributes
+
+JSC::EncodedJSValue jsTestOperationConditionalConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::PropertyName);
+bool setJSTestOperationConditionalConstructor(JSC::JSGlobalObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+
+class JSTestOperationConditionalPrototype final : public JSC::JSNonFinalObject {
+public:
+    using Base = JSC::JSNonFinalObject;
+    static JSTestOperationConditionalPrototype* create(JSC::VM& vm, JSDOMGlobalObject* globalObject, JSC::Structure* structure)
+    {
+        JSTestOperationConditionalPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestOperationConditionalPrototype>(vm.heap)) JSTestOperationConditionalPrototype(vm, globalObject, structure);
+        ptr->finishCreation(vm);
+        return ptr;
+    }
+
+    DECLARE_INFO;
+    template<typename CellType, JSC::SubspaceAccess>
+    static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
+    {
+        STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestOperationConditionalPrototype, Base);
+        return &vm.plainObjectSpace;
+    }
+    static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
+    {
+        return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
+    }
+
+private:
+    JSTestOperationConditionalPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
+        : JSC::JSNonFinalObject(vm, structure)
+    {
+    }
+
+    void finishCreation(JSC::VM&);
+};
+STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestOperationConditionalPrototype, JSTestOperationConditionalPrototype::Base);
+
+using JSTestOperationConditionalConstructor = JSDOMConstructorNotConstructable<JSTestOperationConditional>;
+
+template<> JSValue JSTestOperationConditionalConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
+{
+    UNUSED_PARAM(vm);
+    return globalObject.functionPrototype();
+}
+
+template<> void JSTestOperationConditionalConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
+{
+    putDirect(vm, vm.propertyNames->prototype, JSTestOperationConditional::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestOperationConditional"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+}
+
+template<> const ClassInfo JSTestOperationConditionalConstructor::s_info = { "TestOperationConditional", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestOperationConditionalConstructor) };
+
+/* Hash table for prototype */
+
+static const HashTableValue JSTestOperationConditionalPrototypeTableValues[] =
+{
+    { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestOperationConditionalConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestOperationConditionalConstructor) } },
+#if ENABLE(ConditionBase)
+    { "nonConditionalOperation", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestOperationConditionalPrototypeFunctionNonConditionalOperation), (intptr_t) (0) } },
+#else
+    { 0, 0, NoIntrinsic, { 0, 0 } },
+#endif
+#if ENABLE(ConditionBase) && ENABLE(ConditionOperation)
+    { "conditionalOperation", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestOperationConditionalPrototypeFunctionConditionalOperation), (intptr_t) (0) } },
+#else
+    { 0, 0, NoIntrinsic, { 0, 0 } },
+#endif
+};
+
+const ClassInfo JSTestOperationConditionalPrototype::s_info = { "TestOperationConditional", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestOperationConditionalPrototype) };
+
+void JSTestOperationConditionalPrototype::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    reifyStaticProperties(vm, JSTestOperationConditional::info(), JSTestOperationConditionalPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
+}
+
+const ClassInfo JSTestOperationConditional::s_info = { "TestOperationConditional", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestOperationConditional) };
+
+JSTestOperationConditional::JSTestOperationConditional(Structure* structure, JSDOMGlobalObject& globalObject, Ref<TestOperationConditional>&& impl)
+    : JSDOMWrapper<TestOperationConditional>(structure, globalObject, WTFMove(impl))
+{
+}
+
+void JSTestOperationConditional::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(vm, info()));
+
+    static_assert(!std::is_base_of<ActiveDOMObject, TestOperationConditional>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
+}
+
+JSObject* JSTestOperationConditional::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
+{
+    return JSTestOperationConditionalPrototype::create(vm, &globalObject, JSTestOperationConditionalPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype()));
+}
+
+JSObject* JSTestOperationConditional::prototype(VM& vm, JSDOMGlobalObject& globalObject)
+{
+    return getDOMPrototype<JSTestOperationConditional>(vm, globalObject);
+}
+
+JSValue JSTestOperationConditional::getConstructor(VM& vm, const JSGlobalObject* globalObject)
+{
+    return getDOMConstructor<JSTestOperationConditionalConstructor>(vm, *jsCast<const JSDOMGlobalObject*>(globalObject));
+}
+
+void JSTestOperationConditional::destroy(JSC::JSCell* cell)
+{
+    JSTestOperationConditional* thisObject = static_cast<JSTestOperationConditional*>(cell);
+    thisObject->JSTestOperationConditional::~JSTestOperationConditional();
+}
+
+template<> inline JSTestOperationConditional* IDLOperation<JSTestOperationConditional>::cast(JSGlobalObject& lexicalGlobalObject, CallFrame& callFrame)
+{
+    return jsDynamicCast<JSTestOperationConditional*>(JSC::getVM(&lexicalGlobalObject), callFrame.thisValue());
+}
+
+EncodedJSValue jsTestOperationConditionalConstructor(JSGlobalObject* lexicalGlobalObject, EncodedJSValue thisValue, PropertyName)
+{
+    VM& vm = JSC::getVM(lexicalGlobalObject);
+    auto throwScope = DECLARE_THROW_SCOPE(vm);
+    auto* prototype = jsDynamicCast<JSTestOperationConditionalPrototype*>(vm, JSValue::decode(thisValue));
+    if (UNLIKELY(!prototype))
+        return throwVMTypeError(lexicalGlobalObject, throwScope);
+    return JSValue::encode(JSTestOperationConditional::getConstructor(JSC::getVM(lexicalGlobalObject), prototype->globalObject()));
+}
+
+bool setJSTestOperationConditionalConstructor(JSGlobalObject* lexicalGlobalObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    VM& vm = JSC::getVM(lexicalGlobalObject);
+    auto throwScope = DECLARE_THROW_SCOPE(vm);
+    auto* prototype = jsDynamicCast<JSTestOperationConditionalPrototype*>(vm, JSValue::decode(thisValue));
+    if (UNLIKELY(!prototype)) {
+        throwVMTypeError(lexicalGlobalObject, throwScope);
+        return false;
+    }
+    // Shadowing a built-in constructor
+    return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
+}
+
+#if ENABLE(ConditionBase)
+static inline JSC::EncodedJSValue jsTestOperationConditionalPrototypeFunctionNonConditionalOperationBody(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation<JSTestOperationConditional>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
+{
+    UNUSED_PARAM(lexicalGlobalObject);
+    UNUSED_PARAM(callFrame);
+    UNUSED_PARAM(throwScope);
+    auto& impl = castedThis->wrapped();
+    impl.nonConditionalOperation();
+    return JSValue::encode(jsUndefined());
+}
+
+EncodedJSValue JSC_HOST_CALL jsTestOperationConditionalPrototypeFunctionNonConditionalOperation(JSGlobalObject* lexicalGlobalObject, CallFrame* callFrame)
+{
+    return IDLOperation<JSTestOperationConditional>::call<jsTestOperationConditionalPrototypeFunctionNonConditionalOperationBody>(*lexicalGlobalObject, *callFrame, "nonConditionalOperation");
+}
+
+#endif
+
+#if ENABLE(ConditionBase) && ENABLE(ConditionOperation)
+static inline JSC::EncodedJSValue jsTestOperationConditionalPrototypeFunctionConditionalOperationBody(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation<JSTestOperationConditional>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
+{
+    UNUSED_PARAM(lexicalGlobalObject);
+    UNUSED_PARAM(callFrame);
+    UNUSED_PARAM(throwScope);
+    auto& impl = castedThis->wrapped();
+    impl.conditionalOperation();
+    return JSValue::encode(jsUndefined());
+}
+
+EncodedJSValue JSC_HOST_CALL jsTestOperationConditionalPrototypeFunctionConditionalOperation(JSGlobalObject* lexicalGlobalObject, CallFrame* callFrame)
+{
+    return IDLOperation<JSTestOperationConditional>::call<jsTestOperationConditionalPrototypeFunctionConditionalOperationBody>(*lexicalGlobalObject, *callFrame, "conditionalOperation");
+}
+
+#endif
+
+JSC::IsoSubspace* JSTestOperationConditional::subspaceForImpl(JSC::VM& vm)
+{
+    auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
+    auto& spaces = clientData.subspaces();
+    if (auto* space = spaces.m_subspaceForTestOperationConditional.get())
+        return space;
+    static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOperationConditional> || !JSTestOperationConditional::needsDestruction);
+    if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOperationConditional>)
+        spaces.m_subspaceForTestOperationConditional = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestOperationConditional);
+    else
+        spaces.m_subspaceForTestOperationConditional = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestOperationConditional);
+    auto* space = spaces.m_subspaceForTestOperationConditional.get();
+IGNORE_WARNINGS_BEGIN("unreachable-code")
+IGNORE_WARNINGS_BEGIN("tautological-compare")
+    if (&JSTestOperationConditional::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
+        clientData.outputConstraintSpaces().append(space);
+IGNORE_WARNINGS_END
+IGNORE_WARNINGS_END
+    return space;
+}
+
+void JSTestOperationConditional::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
+{
+    auto* thisObject = jsCast<JSTestOperationConditional*>(cell);
+    analyzer.setWrappedObjectForCell(cell, &thisObject->wrapped());
+    if (thisObject->scriptExecutionContext())
+        analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string());
+    Base::analyzeHeap(cell, analyzer);
+}
+
+bool JSTestOperationConditionalOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor, const char** reason)
+{
+    UNUSED_PARAM(handle);
+    UNUSED_PARAM(visitor);
+    UNUSED_PARAM(reason);
+    return false;
+}
+
+void JSTestOperationConditionalOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context)
+{
+    auto* jsTestOperationConditional = static_cast<JSTestOperationConditional*>(handle.slot()->asCell());
+    auto& world = *static_cast<DOMWrapperWorld*>(context);
+    uncacheWrapper(world, &jsTestOperationConditional->wrapped(), jsTestOperationConditional);
+}
+
+#if ENABLE(BINDING_INTEGRITY)
+#if PLATFORM(WIN)
+#pragma warning(disable: 4483)
+extern "C" { extern void (*const __identifier("??_7TestOperationConditional@WebCore@@6B@")[])(); }
+#else
+extern "C" { extern void* _ZTVN7WebCore24TestOperationConditionalE[]; }
+#endif
+#endif
+
+JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref<TestOperationConditional>&& impl)
+{
+
+#if ENABLE(BINDING_INTEGRITY)
+    const void* actualVTablePointer = getVTablePointer(impl.ptr());
+#if PLATFORM(WIN)
+    void* expectedVTablePointer = __identifier("??_7TestOperationConditional@WebCore@@6B@");
+#else
+    void* expectedVTablePointer = &_ZTVN7WebCore24TestOperationConditionalE[2];
+#endif
+
+    // If this fails TestOperationConditional does not have a vtable, so you need to add the
+    // ImplementationLacksVTable attribute to the interface definition
+    static_assert(std::is_polymorphic<TestOperationConditional>::value, "TestOperationConditional is not polymorphic");
+
+    // If you hit this assertion you either have a use after free bug, or
+    // TestOperationConditional has subclasses. If TestOperationConditional has subclasses that get passed
+    // to toJS() we currently require TestOperationConditional you to opt out of binding hardening
+    // by adding the SkipVTableValidation attribute to the interface IDL definition
+    RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer);
+#endif
+    return createWrapper<TestOperationConditional>(globalObject, WTFMove(impl));
+}
+
+JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, TestOperationConditional& impl)
+{
+    return wrap(lexicalGlobalObject, globalObject, impl);
+}
+
+TestOperationConditional* JSTestOperationConditional::toWrapped(JSC::VM& vm, JSC::JSValue value)
+{
+    if (auto* wrapper = jsDynamicCast<JSTestOperationConditional*>(vm, value))
+        return &wrapper->wrapped();
+    return nullptr;
+}
+
+}
+
+#endif // ENABLE(ConditionDerived)
Property changes on: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.cpp
___________________________________________________________________

Added: svn:eol-style

+LF \ No newline at end of property

Added: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.h (0 => 261317)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.h	                        (rev 0)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.h	2020-05-07 18:12:46 UTC (rev 261317)
@@ -0,0 +1,97 @@
+/*
+    This file is part of the WebKit open source project.
+    This file has been generated by generate-bindings.pl. DO NOT MODIFY!
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+*/
+
+#pragma once
+
+#if ENABLE(ConditionDerived)
+
+#include "JSDOMWrapper.h"
+#include "TestOperationConditional.h"
+#include <wtf/NeverDestroyed.h>
+
+namespace WebCore {
+
+class JSTestOperationConditional : public JSDOMWrapper<TestOperationConditional> {
+public:
+    using Base = JSDOMWrapper<TestOperationConditional>;
+    static JSTestOperationConditional* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestOperationConditional>&& impl)
+    {
+        JSTestOperationConditional* ptr = new (NotNull, JSC::allocateCell<JSTestOperationConditional>(globalObject->vm().heap)) JSTestOperationConditional(structure, *globalObject, WTFMove(impl));
+        ptr->finishCreation(globalObject->vm());
+        return ptr;
+    }
+
+    static JSC::JSObject* createPrototype(JSC::VM&, JSDOMGlobalObject&);
+    static JSC::JSObject* prototype(JSC::VM&, JSDOMGlobalObject&);
+    static TestOperationConditional* toWrapped(JSC::VM&, JSC::JSValue);
+    static void destroy(JSC::JSCell*);
+
+    DECLARE_INFO;
+
+    static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
+    {
+        return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info(), JSC::NonArray);
+    }
+
+    static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
+    template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
+    {
+        if constexpr (mode == JSC::SubspaceAccess::Concurrently)
+            return nullptr;
+        return subspaceForImpl(vm);
+    }
+    static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
+    static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
+protected:
+    JSTestOperationConditional(JSC::Structure*, JSDOMGlobalObject&, Ref<TestOperationConditional>&&);
+
+    void finishCreation(JSC::VM&);
+};
+
+class JSTestOperationConditionalOwner : public JSC::WeakHandleOwner {
+public:
+    virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&, const char**);
+    virtual void finalize(JSC::Handle<JSC::Unknown>, void* context);
+};
+
+inline JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld&, TestOperationConditional*)
+{
+    static NeverDestroyed<JSTestOperationConditionalOwner> owner;
+    return &owner.get();
+}
+
+inline void* wrapperKey(TestOperationConditional* wrappableObject)
+{
+    return wrappableObject;
+}
+
+JSC::JSValue toJS(JSC::JSGlobalObject*, JSDOMGlobalObject*, TestOperationConditional&);
+inline JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, TestOperationConditional* impl) { return impl ? toJS(lexicalGlobalObject, globalObject, *impl) : JSC::jsNull(); }
+JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject*, Ref<TestOperationConditional>&&);
+inline JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, RefPtr<TestOperationConditional>&& impl) { return impl ? toJSNewlyCreated(lexicalGlobalObject, globalObject, impl.releaseNonNull()) : JSC::jsNull(); }
+
+template<> struct JSDOMWrapperConverterTraits<TestOperationConditional> {
+    using WrapperClass = JSTestOperationConditional;
+    using ToWrappedReturnType = TestOperationConditional*;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(ConditionDerived)
Property changes on: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.h
___________________________________________________________________

Added: svn:eol-style

+LF \ No newline at end of property

Added: trunk/Source/WebCore/bindings/scripts/test/TestOperationBase.idl (0 => 261317)


--- trunk/Source/WebCore/bindings/scripts/test/TestOperationBase.idl	                        (rev 0)
+++ trunk/Source/WebCore/bindings/scripts/test/TestOperationBase.idl	2020-05-07 18:12:46 UTC (rev 261317)
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2020 Igalia S.L. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  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.
+ * 3.  Neither the name of Apple Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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.
+ */
+
+// This IDL file is for testing the bindings code generator and for tracking
+// changes in its output.
+
+[
+    Conditional=ConditionBase,
+    NoInterfaceObject,
+] interface TestOperationBase {
+    void nonConditionalOperation();
+    [Conditional=ConditionOperation] void conditionalOperation();
+};
Property changes on: trunk/Source/WebCore/bindings/scripts/test/TestOperationBase.idl
___________________________________________________________________

Added: svn:eol-style

+LF \ No newline at end of property

Added: trunk/Source/WebCore/bindings/scripts/test/TestOperationConditional.idl (0 => 261317)


--- trunk/Source/WebCore/bindings/scripts/test/TestOperationConditional.idl	                        (rev 0)
+++ trunk/Source/WebCore/bindings/scripts/test/TestOperationConditional.idl	2020-05-07 18:12:46 UTC (rev 261317)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2020 Igalia S.L. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  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.
+ * 3.  Neither the name of Apple Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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.
+ */
+
+// This IDL file is for testing the bindings code generator and for tracking
+// changes in its output.
+
+[
+    Conditional=ConditionDerived,
+] interface TestOperationConditional {
+};
+
+TestOperationConditional implements TestOperationBase;
Property changes on: trunk/Source/WebCore/bindings/scripts/test/TestOperationConditional.idl
___________________________________________________________________

Added: svn:eol-style

+LF \ No newline at end of property
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to