Rename [Optional=CallWithDefalutValue] and [Optional=CallWithNullValue]
authorharaken@chromium.org <haraken@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Feb 2012 06:58:35 +0000 (06:58 +0000)
committerharaken@chromium.org <haraken@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Feb 2012 06:58:35 +0000 (06:58 +0000)
commitc76764bdf39eca52abd2165330a16f7988708e76
tree8cb143156e5bfc795609cf312b5651f246ba69f6
parent66bb1b94949527f616f0df5b0e22024b91d93291
Rename [Optional=CallWithDefalutValue] and [Optional=CallWithNullValue]
https://bugs.webkit.org/show_bug.cgi?id=78200

Reviewed by Adam Barth.

[Optional=CallWithDefalutValue] and [Optional=CallWithNullValue] are confusing.

- [Optional=CallWithDefalutValue] indicates that a missing value should be treated
as if the JavaScript undefined is passed.
- [Optional=CallWithNullValue] indicates that a missing value should be treated as
the WebKit null value (i.e. JSValue() or v8::Local<v8::Value>()).
- Actually, the difference between [Optional=CallWithDefalutValue] and
[Optional=CallWithNullValue] appears only when the type of the missing value is DOMString.
In case of [Optional=CallWithDefalutValue], the missing value is converted to the string
"undefined". On the other hand, in case of [Optional=CallWithNullValue], the missing
value is converted to the WebKit null string.

With these observations, this patch renames them as follows:

- Rename [Optional=CallWithDefalutValue] to [Optional=TreatAsUndefined].
- Remove [Optional=CallWithNullValue]. Instead, we use
[Optional=TreatAsUndefined, TreatUndefinedAs=NullString].

Test: bindings/scripts/test/TestInterface.idl

* bindings/js/JSDOMBinding.h: Renamed MissingIsUndefined to MissingIsUndefinedValue,
renamed MissingIsEmpty to MissingIsNullValue.
* bindings/v8/V8Binding.h: Ditto.
* bindings/v8/custom/V8BindingMacros.h: Ditto.

* bindings/scripts/CodeGeneratorJS.pm: Modified to support the IDL attribute renaming.
(GenerateParametersCheck):
(GenerateConstructorDefinition):
* bindings/scripts/CodeGeneratorV8.pm: Ditto.
(GenerateParametersCheck):
(RequiresCustomSignature):

* Modules/gamepad/GamepadList.idl: Renamed IDL attributes as described above.
* Modules/intents/Intent.idl:
* css/CSSMediaRule.idl:
* css/CSSPrimitiveValue.idl:
* css/CSSRuleList.idl:
* css/CSSStyleDeclaration.idl:
* css/CSSStyleSheet.idl:
* css/CSSValueList.idl:
* css/MediaList.idl:
* css/MediaQueryList.idl:
* css/MediaQueryListListener.idl:
* css/StyleMedia.idl:
* css/StyleSheetList.idl:
* css/WebKitCSSKeyframesRule.idl:
* css/WebKitCSSMatrix.idl:
* dom/CharacterData.idl:
* dom/ClientRectList.idl:
* dom/CompositionEvent.idl:
* dom/CustomEvent.idl:
* dom/DOMImplementation.idl:
* dom/DOMStringList.idl:
* dom/DataTransferItem.idl:
* dom/DataTransferItemList.idl:
* dom/DeviceMotionEvent.idl:
* dom/DeviceOrientationEvent.idl:
* dom/Document.idl:
* dom/Element.idl:
* dom/Event.idl:
* dom/HashChangeEvent.idl:
* dom/KeyboardEvent.idl:
* dom/MessageEvent.idl:
* dom/MouseEvent.idl:
* dom/MutationEvent.idl:
* dom/NamedNodeMap.idl:
* dom/Node.idl:
* dom/NodeFilter.idl:
* dom/NodeList.idl:
* dom/OverflowEvent.idl:
* dom/Range.idl:
* dom/ShadowRoot.idl:
* dom/Text.idl:
* dom/TextEvent.idl:
* dom/TouchEvent.idl:
* dom/UIEvent.idl:
* dom/WheelEvent.idl:
* html/DOMFormData.idl:
* html/HTMLAllCollection.idl:
* html/HTMLAudioElement.idl:
* html/HTMLCanvasElement.idl:
* html/HTMLCollection.idl:
* html/HTMLDocument.idl:
* html/HTMLElement.idl:
* html/HTMLInputElement.idl:
* html/HTMLMediaElement.idl:
* html/HTMLOptionElement.idl:
* html/HTMLOptionsCollection.idl:
* html/HTMLSelectElement.idl:
* html/HTMLTableElement.idl:
* html/HTMLTableRowElement.idl:
* html/HTMLTableSectionElement.idl:
* html/HTMLTextAreaElement.idl:
* html/TextTrackCue.idl:
* html/canvas/CanvasGradient.idl:
* html/canvas/CanvasRenderingContext2D.idl:
* html/canvas/Float32Array.idl:
* html/canvas/Float64Array.idl:
* html/canvas/Int16Array.idl:
* html/canvas/Int32Array.idl:
* html/canvas/Int8Array.idl:
* html/canvas/OESVertexArrayObject.idl:
* html/canvas/Uint16Array.idl:
* html/canvas/Uint32Array.idl:
* html/canvas/Uint8Array.idl:
* html/canvas/Uint8ClampedArray.idl:
* page/Console.idl:
* page/DOMSelection.idl:
* page/DOMWindow.idl:
* page/History.idl:
* page/Location.idl:
* plugins/DOMMimeTypeArray.idl:
* plugins/DOMPlugin.idl:
* plugins/DOMPluginArray.idl:
* storage/IDBDatabase.idl:
* storage/StorageEvent.idl:
* svg/ElementTimeControl.idl:
* svg/SVGDocument.idl:
* svg/SVGElementInstanceList.idl:
* svg/SVGFEDropShadowElement.idl:
* svg/SVGFEGaussianBlurElement.idl:
* svg/SVGFEMorphologyElement.idl:
* svg/SVGFilterElement.idl:
* svg/SVGLocatable.idl:
* svg/SVGMarkerElement.idl:
* svg/SVGPathElement.idl:
* svg/SVGSVGElement.idl:
* svg/SVGStylable.idl:
* svg/SVGTests.idl:
* svg/SVGTextContentElement.idl:
* webaudio/AudioNode.idl:
* workers/SharedWorker.idl:
* workers/WorkerContext.idl:
* xml/DOMParser.idl:
* xml/XMLSerializer.idl:
* xml/XPathEvaluator.idl:
* xml/XPathExpression.idl:
* xml/XPathNSResolver.idl:
* xml/XPathResult.idl:

* bindings/scripts/test/TestInterface.idl: Added test cases for [Optional],
[Optional=TreatAsUndefined] and [Optional=TreatAsUndefined, TreatUndefinedAs=NullString]
* bindings/scripts/test/TestNamedConstructor.idl: Renamed IDL attributes as described above.
* bindings/scripts/test/TestObj.idl: Ditto.

* bindings/scripts/test/CPP/WebDOMTestObj.cpp: Updated run-bindings-tests results.
(WebDOMTestObj::methodWithOptionalString):
(WebDOMTestObj::methodWithOptionalIsTreatAsUndefinedString):
(WebDOMTestObj::methodWithOptionalIsNullStringString):
* bindings/scripts/test/CPP/WebDOMTestObj.h: Ditto.
* bindings/scripts/test/GObject/WebKitDOMTestObj.cpp: Ditto.
(webkit_dom_test_obj_method_with_optional_string):
(webkit_dom_test_obj_method_with_optional_is_treat_as_undefined_string):
(webkit_dom_test_obj_method_with_optional_is_null_string_string):
* bindings/scripts/test/GObject/WebKitDOMTestObj.h: Ditto.
* bindings/scripts/test/JS/JSFloat64Array.cpp: Ditto.
(WebCore::jsFloat64ArrayPrototypeFunctionFoo):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: Ditto.
(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunction):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessage):
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: Ditto.
(WebCore::jsTestCustomNamedGetterPrototypeFunctionAnotherFunction):
* bindings/scripts/test/JS/JSTestEventTarget.cpp: Ditto.
(WebCore::jsTestEventTargetPrototypeFunctionItem):
(WebCore::jsTestEventTargetPrototypeFunctionDispatchEvent):
* bindings/scripts/test/JS/JSTestInterface.cpp: Ditto.
(WebCore::JSTestInterfaceConstructor::constructJSTestInterface):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: Ditto.
(WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp: Ditto.
(WebCore::JSTestNamedConstructorNamedConstructor::constructJSTestNamedConstructor):
* bindings/scripts/test/JS/JSTestObj.cpp: Ditto.
(WebCore):
(WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionIntMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionObjMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows):
(WebCore::jsTestObjPrototypeFunctionSerializedValue):
(WebCore::jsTestObjPrototypeFunctionIdbKey):
(WebCore::jsTestObjPrototypeFunctionOptionsObject):
(WebCore::jsTestObjPrototypeFunctionCustomArgsAndException):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalIsTreatAsUndefinedString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalIsNullStringString):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod3):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod4):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod6):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod7):
(WebCore::jsTestObjConstructorFunctionClassMethodWithOptional):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod11):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod12):
(WebCore::jsTestObjPrototypeFunctionConvert1):
(WebCore::jsTestObjPrototypeFunctionConvert2):
(WebCore::jsTestObjPrototypeFunctionConvert3):
(WebCore::jsTestObjPrototypeFunctionConvert4):
(WebCore::jsTestObjPrototypeFunctionConvert5):
(WebCore::jsTestObjPrototypeFunctionStrictFunction):
* bindings/scripts/test/JS/JSTestObj.h: Ditto.
(WebCore):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: Ditto.
(WebCore::JSTestSerializedScriptValueInterfaceConstructor::constructJSTestSerializedScriptValueInterface):
* bindings/scripts/test/ObjC/DOMTestObj.h: Ditto.
* bindings/scripts/test/ObjC/DOMTestObj.mm: Ditto.
(-[DOMTestObj methodWithOptionalString:]):
(-[DOMTestObj methodWithOptionalIsTreatAsUndefinedString:]):
(-[DOMTestObj methodWithOptionalIsNullStringString:]):
* bindings/scripts/test/V8/V8Float64Array.cpp: Ditto.
(WebCore::Float64ArrayInternal::fooCallback):
* bindings/scripts/test/V8/V8TestActiveDOMObject.cpp: Ditto.
(WebCore::TestActiveDOMObjectInternal::excitingFunctionCallback):
(WebCore::TestActiveDOMObjectInternal::postMessageCallback):
* bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp: Ditto.
(WebCore::TestCustomNamedGetterInternal::anotherFunctionCallback):
* bindings/scripts/test/V8/V8TestEventTarget.cpp: Ditto.
(WebCore::TestEventTargetInternal::itemCallback):
(WebCore::TestEventTargetInternal::dispatchEventCallback):
* bindings/scripts/test/V8/V8TestInterface.cpp: Ditto.
(WebCore::TestInterfaceInternal::supplementalMethod2Callback):
(WebCore::V8TestInterface::constructorCallback):
* bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp: Ditto.
(WebCore::TestMediaQueryListListenerInternal::methodCallback):
* bindings/scripts/test/V8/V8TestNamedConstructor.cpp: Ditto.
(WebCore::V8TestNamedConstructorConstructorCallback):
* bindings/scripts/test/V8/V8TestObj.cpp: Ditto.
(WebCore::TestObjInternal::voidMethodWithArgsCallback):
(WebCore::TestObjInternal::intMethodWithArgsCallback):
(WebCore::TestObjInternal::objMethodWithArgsCallback):
(WebCore::TestObjInternal::methodThatRequiresAllArgsAndThrowsCallback):
(WebCore::TestObjInternal::idbKeyCallback):
(WebCore::TestObjInternal::optionsObjectCallback):
(WebCore::TestObjInternal::customArgsAndExceptionCallback):
(WebCore::TestObjInternal::methodWithOptionalArgCallback):
(WebCore::TestObjInternal::methodWithNonOptionalArgAndOptionalArgCallback):
(WebCore::TestObjInternal::methodWithNonOptionalArgAndTwoOptionalArgsCallback):
(WebCore::TestObjInternal::methodWithOptionalStringCallback):
(TestObjInternal):
(WebCore::TestObjInternal::methodWithOptionalIsTreatAsUndefinedStringCallback):
(WebCore::TestObjInternal::methodWithOptionalIsNullStringStringCallback):
(WebCore::TestObjInternal::methodWithNonCallbackArgAndCallbackArgCallback):
(WebCore::TestObjInternal::overloadedMethod1Callback):
(WebCore::TestObjInternal::overloadedMethod2Callback):
(WebCore::TestObjInternal::overloadedMethod3Callback):
(WebCore::TestObjInternal::overloadedMethod4Callback):
(WebCore::TestObjInternal::overloadedMethod6Callback):
(WebCore::TestObjInternal::overloadedMethod7Callback):
(WebCore::TestObjInternal::classMethodWithOptionalCallback):
(WebCore::TestObjInternal::overloadedMethod11Callback):
(WebCore::TestObjInternal::overloadedMethod12Callback):
(WebCore::TestObjInternal::enabledAtRuntimeMethod1Callback):
(WebCore::TestObjInternal::enabledAtRuntimeMethod2Callback):
(WebCore::TestObjInternal::convert1Callback):
(WebCore::TestObjInternal::convert2Callback):
(WebCore::TestObjInternal::convert3Callback):
(WebCore::TestObjInternal::convert4Callback):
(WebCore::TestObjInternal::convert5Callback):
(WebCore::TestObjInternal::strictFunctionCallback):
(WebCore):
* bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: Ditto.
(WebCore::V8TestSerializedScriptValueInterface::constructorCallback):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@107182 268f45cc-cd09-0410-ab3c-d52691b4dbfc
141 files changed:
Source/WebCore/ChangeLog
Source/WebCore/Modules/gamepad/GamepadList.idl
Source/WebCore/Modules/intents/Intent.idl
Source/WebCore/bindings/js/JSDOMBinding.h
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/bindings/scripts/CodeGeneratorV8.pm
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h
Source/WebCore/bindings/scripts/test/JS/JSFloat64Array.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h
Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm
Source/WebCore/bindings/scripts/test/TestInterface.idl
Source/WebCore/bindings/scripts/test/TestNamedConstructor.idl
Source/WebCore/bindings/scripts/test/TestObj.idl
Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp
Source/WebCore/bindings/v8/V8Binding.h
Source/WebCore/bindings/v8/custom/V8BindingMacros.h
Source/WebCore/css/CSSMediaRule.idl
Source/WebCore/css/CSSPrimitiveValue.idl
Source/WebCore/css/CSSRuleList.idl
Source/WebCore/css/CSSStyleDeclaration.idl
Source/WebCore/css/CSSStyleSheet.idl
Source/WebCore/css/CSSValueList.idl
Source/WebCore/css/MediaList.idl
Source/WebCore/css/MediaQueryList.idl
Source/WebCore/css/MediaQueryListListener.idl
Source/WebCore/css/StyleMedia.idl
Source/WebCore/css/StyleSheetList.idl
Source/WebCore/css/WebKitCSSKeyframesRule.idl
Source/WebCore/css/WebKitCSSMatrix.idl
Source/WebCore/dom/CharacterData.idl
Source/WebCore/dom/ClientRectList.idl
Source/WebCore/dom/CompositionEvent.idl
Source/WebCore/dom/CustomEvent.idl
Source/WebCore/dom/DOMImplementation.idl
Source/WebCore/dom/DOMStringList.idl
Source/WebCore/dom/DataTransferItem.idl
Source/WebCore/dom/DataTransferItemList.idl
Source/WebCore/dom/DeviceMotionEvent.idl
Source/WebCore/dom/DeviceOrientationEvent.idl
Source/WebCore/dom/Document.idl
Source/WebCore/dom/Element.idl
Source/WebCore/dom/Event.idl
Source/WebCore/dom/HashChangeEvent.idl
Source/WebCore/dom/KeyboardEvent.idl
Source/WebCore/dom/MessageEvent.idl
Source/WebCore/dom/MouseEvent.idl
Source/WebCore/dom/MutationEvent.idl
Source/WebCore/dom/NamedNodeMap.idl
Source/WebCore/dom/Node.idl
Source/WebCore/dom/NodeFilter.idl
Source/WebCore/dom/NodeList.idl
Source/WebCore/dom/OverflowEvent.idl
Source/WebCore/dom/Range.idl
Source/WebCore/dom/ShadowRoot.idl
Source/WebCore/dom/Text.idl
Source/WebCore/dom/TextEvent.idl
Source/WebCore/dom/TouchEvent.idl
Source/WebCore/dom/UIEvent.idl
Source/WebCore/dom/WheelEvent.idl
Source/WebCore/html/DOMFormData.idl
Source/WebCore/html/HTMLAllCollection.idl
Source/WebCore/html/HTMLAudioElement.idl
Source/WebCore/html/HTMLCanvasElement.idl
Source/WebCore/html/HTMLCollection.idl
Source/WebCore/html/HTMLDocument.idl
Source/WebCore/html/HTMLElement.idl
Source/WebCore/html/HTMLInputElement.idl
Source/WebCore/html/HTMLMediaElement.idl
Source/WebCore/html/HTMLOptionElement.idl
Source/WebCore/html/HTMLOptionsCollection.idl
Source/WebCore/html/HTMLSelectElement.idl
Source/WebCore/html/HTMLTableElement.idl
Source/WebCore/html/HTMLTableRowElement.idl
Source/WebCore/html/HTMLTableSectionElement.idl
Source/WebCore/html/HTMLTextAreaElement.idl
Source/WebCore/html/TextTrackCue.idl
Source/WebCore/html/canvas/CanvasGradient.idl
Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
Source/WebCore/html/canvas/Float32Array.idl
Source/WebCore/html/canvas/Float64Array.idl
Source/WebCore/html/canvas/Int16Array.idl
Source/WebCore/html/canvas/Int32Array.idl
Source/WebCore/html/canvas/Int8Array.idl
Source/WebCore/html/canvas/OESVertexArrayObject.idl
Source/WebCore/html/canvas/Uint16Array.idl
Source/WebCore/html/canvas/Uint32Array.idl
Source/WebCore/html/canvas/Uint8Array.idl
Source/WebCore/html/canvas/Uint8ClampedArray.idl
Source/WebCore/page/Console.idl
Source/WebCore/page/DOMSelection.idl
Source/WebCore/page/DOMWindow.idl
Source/WebCore/page/History.idl
Source/WebCore/page/Location.idl
Source/WebCore/plugins/DOMMimeTypeArray.idl
Source/WebCore/plugins/DOMPlugin.idl
Source/WebCore/plugins/DOMPluginArray.idl
Source/WebCore/storage/IDBDatabase.idl
Source/WebCore/storage/StorageEvent.idl
Source/WebCore/svg/ElementTimeControl.idl
Source/WebCore/svg/SVGDocument.idl
Source/WebCore/svg/SVGElementInstanceList.idl
Source/WebCore/svg/SVGFEDropShadowElement.idl
Source/WebCore/svg/SVGFEGaussianBlurElement.idl
Source/WebCore/svg/SVGFEMorphologyElement.idl
Source/WebCore/svg/SVGFilterElement.idl
Source/WebCore/svg/SVGLocatable.idl
Source/WebCore/svg/SVGMarkerElement.idl
Source/WebCore/svg/SVGPathElement.idl
Source/WebCore/svg/SVGSVGElement.idl
Source/WebCore/svg/SVGStylable.idl
Source/WebCore/svg/SVGTests.idl
Source/WebCore/svg/SVGTextContentElement.idl
Source/WebCore/webaudio/AudioNode.idl
Source/WebCore/workers/SharedWorker.idl
Source/WebCore/workers/WorkerContext.idl
Source/WebCore/xml/DOMParser.idl
Source/WebCore/xml/XMLSerializer.idl
Source/WebCore/xml/XPathEvaluator.idl
Source/WebCore/xml/XPathExpression.idl
Source/WebCore/xml/XPathNSResolver.idl
Source/WebCore/xml/XPathResult.idl