Title: [186448] releases/WebKitGTK/webkit-2.8
Revision
186448
Author
[email protected]
Date
2015-07-07 04:52:49 -0700 (Tue, 07 Jul 2015)

Log Message

Merge r186265 - REGRESSION (r178097): _javascript_ TypeError after clicking on compose button in Yahoo Mail
https://bugs.webkit.org/show_bug.cgi?id=146515
<rdar://problem/21348421>

Reviewed by Chris Dumez.

Source/WebCore:

Fixes an issue where extra arguments passed to a Web IDL overloaded function, whose implementation
is generated by the bindings generator script, are not ignored as per the note in section "Interface object [[Call]] method"
of the Web IDL spec, <http://www.w3.org/TR/2012/CR-WebIDL-20120419/> (19 April 2012).

Currently for an overloaded function the _javascript_ bindings generator script emits code to
throw a TypeError when it cannot find a candidate function that takes the same number of
arguments as passed by a caller. Prior to the change made in bug #139179 (r178097), the
bindings code for HTMLSelectElement.add() was written by hand and ignored extra arguments
that were passed to it. Following this change, the bindings code for HTMLSelectElement.add()
is generated by the bindings generator script. Therefore, we throw a TypeError when Yahoo Mail
calls HTMLSelectElement.add() with extra arguments because the code emitted by the bindings
generator script does not ignore them.

* bindings/scripts/CodeGeneratorJS.pm:
(LengthOfLongestFunctionParameterList): Added. Computes the length of longest overload parameter list.
(GenerateOverloadedFunction): Emit code that ignores more arguments than LengthOfLongestFunctionParameterList().
(GenerateOverloadedConstructorDefinition): Ditto.
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod12): Added; expected result for an overloaded
function that takes a variadic number of Blob elements.
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod): Update expected result. The added
if-conditional _expression_ for the IDL declaration overloadedMethod(Blob... blobArgs) is empty
because we do not support overloading of functions with variadic arguments.
(WebCore::jsTestObjConstructorFunctionOverloadedMethod1):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors5): Added; expected
result for an overloaded constructors that takes a variadic number of long arguments.
(WebCore::JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors): Update expected
result. The added if-conditional _expression_ for the IDL declaration Constructor(long... longArgs) is empty
because we do not support overloading of constructors with variadic arguments.
* bindings/scripts/test/TestObj.idl: Added declaration overloadedMethod(Blob...). Also fixed
typo in license block text.
* bindings/scripts/test/TestOverloadedConstructors.idl: Added declaration Constructor(long... longArgs).
Also fixed typo in license block text.

LayoutTests:

Add new sub-tests to LayoutTests/fast/dom/HTMLSelectElement/{add, options-collection-add}.html,
simplify existing test code, share common code, and update expected results.

Additionally, update results for tests in LayoutTests/fast/canvas now that we ignore extra
arguments passed to a Web IDL overloaded function whose implementation is generated by the
bindings generator script.

* fast/canvas/canvas-overloads-drawImage-expected.txt:
* fast/canvas/canvas-overloads-setFillColor-expected.txt:
* fast/canvas/canvas-overloads-setShadow-expected.txt:
* fast/canvas/canvas-overloads-setStrokeColor-expected.txt:
* fast/canvas/script-tests/canvas-overloads-drawImage.js:
* fast/canvas/script-tests/canvas-overloads-setFillColor.js:
* fast/canvas/script-tests/canvas-overloads-setShadow.js:
* fast/canvas/script-tests/canvas-overloads-setStrokeColor.js:
* fast/dom/HTMLSelectElement/add-expected.txt:
* fast/dom/HTMLSelectElement/add.html:
* fast/dom/HTMLSelectElement/options-collection-add-expected.txt:
* fast/dom/HTMLSelectElement/options-collection-add.html:
* fast/dom/HTMLSelectElement/resources/html-select-and-options-collection-utilities.js: Added.
(createSelectElementWithTestData):
(deepCopy):
(createOption):
(createGroup):

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog	2015-07-07 11:52:49 UTC (rev 186448)
@@ -1,3 +1,36 @@
+2015-07-03  Daniel Bates  <[email protected]>
+
+        REGRESSION (r178097): _javascript_ TypeError after clicking on compose button in Yahoo Mail
+        https://bugs.webkit.org/show_bug.cgi?id=146515
+        <rdar://problem/21348421>
+
+        Reviewed by Chris Dumez.
+
+        Add new sub-tests to LayoutTests/fast/dom/HTMLSelectElement/{add, options-collection-add}.html,
+        simplify existing test code, share common code, and update expected results.
+
+        Additionally, update results for tests in LayoutTests/fast/canvas now that we ignore extra
+        arguments passed to a Web IDL overloaded function whose implementation is generated by the
+        bindings generator script.
+
+        * fast/canvas/canvas-overloads-drawImage-expected.txt:
+        * fast/canvas/canvas-overloads-setFillColor-expected.txt:
+        * fast/canvas/canvas-overloads-setShadow-expected.txt:
+        * fast/canvas/canvas-overloads-setStrokeColor-expected.txt:
+        * fast/canvas/script-tests/canvas-overloads-drawImage.js:
+        * fast/canvas/script-tests/canvas-overloads-setFillColor.js:
+        * fast/canvas/script-tests/canvas-overloads-setShadow.js:
+        * fast/canvas/script-tests/canvas-overloads-setStrokeColor.js:
+        * fast/dom/HTMLSelectElement/add-expected.txt:
+        * fast/dom/HTMLSelectElement/add.html:
+        * fast/dom/HTMLSelectElement/options-collection-add-expected.txt:
+        * fast/dom/HTMLSelectElement/options-collection-add.html:
+        * fast/dom/HTMLSelectElement/resources/html-select-and-options-collection-utilities.js: Added.
+        (createSelectElementWithTestData):
+        (deepCopy):
+        (createOption):
+        (createGroup):
+
 2015-06-30  Ryosuke Niwa  <[email protected]>
 
         REGRESSION (r179168): Characters overlap after resizing the font on the copy-pasted Japanese text

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-drawImage-expected.txt (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-drawImage-expected.txt	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-drawImage-expected.txt	2015-07-07 11:52:49 UTC (rev 186448)
@@ -13,8 +13,8 @@
 PASS ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
 PASS ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
 PASS ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0) is undefined
-PASS ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
-PASS ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
+PASS ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0) is undefined
+PASS ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) is undefined
 PASS ctx.drawImage(canvasElement) threw exception TypeError: Not enough arguments.
 PASS ctx.drawImage(canvasElement, 0) threw exception TypeError: Not enough arguments.
 PASS ctx.drawImage(canvasElement, 0, 0) is undefined
@@ -24,8 +24,8 @@
 PASS ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
 PASS ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
 PASS ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0) threw exception Error: IndexSizeError: DOM Exception 1.
-PASS ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
-PASS ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
+PASS ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0) threw exception Error: IndexSizeError: DOM Exception 1.
+PASS ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) threw exception Error: IndexSizeError: DOM Exception 1.
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setFillColor-expected.txt (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setFillColor-expected.txt	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setFillColor-expected.txt	2015-07-07 11:52:49 UTC (rev 186448)
@@ -10,7 +10,7 @@
 PASS ctx.setFillColor(0, 0, 0) threw exception TypeError: Type error.
 PASS ctx.setFillColor(0, 0, 0, 0) is undefined
 PASS ctx.setFillColor(0, 0, 0, 0, 0) is undefined
-PASS ctx.setFillColor(0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
+PASS ctx.setFillColor(0, 0, 0, 0, 0, 0) is undefined
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setShadow-expected.txt (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setShadow-expected.txt	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setShadow-expected.txt	2015-07-07 11:52:49 UTC (rev 186448)
@@ -16,7 +16,7 @@
 PASS ctx.setShadow(0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
 PASS ctx.setShadow(0, 0, 0, 0, 0, 0, 0) is undefined
 PASS ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0) is undefined
-PASS ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
+PASS ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0, 0) is undefined
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setStrokeColor-expected.txt (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setStrokeColor-expected.txt	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/canvas-overloads-setStrokeColor-expected.txt	2015-07-07 11:52:49 UTC (rev 186448)
@@ -10,7 +10,7 @@
 PASS ctx.setStrokeColor(0, 0, 0) threw exception TypeError: Type error.
 PASS ctx.setStrokeColor(0, 0, 0, 0) is undefined
 PASS ctx.setStrokeColor(0, 0, 0, 0, 0) is undefined
-PASS ctx.setStrokeColor(0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
+PASS ctx.setStrokeColor(0, 0, 0, 0, 0, 0) is undefined
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-drawImage.js (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-drawImage.js	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-drawImage.js	2015-07-07 11:52:49 UTC (rev 186448)
@@ -16,8 +16,8 @@
 shouldThrow("ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0)", "TypeError");
 shouldThrow("ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0)", "TypeError");
 shouldBe("ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0)", "undefined");
-shouldThrow("ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0)", "TypeError");
-shouldThrow("ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)", "TypeError");
+shouldBe("ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0)", "undefined");
+shouldBe("ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)", "undefined");
 
 var canvasElement = document.createElement("canvas");
 shouldThrow("ctx.drawImage(canvasElement)", "TypeErrorNotEnoughArguments");
@@ -29,5 +29,5 @@
 shouldThrow("ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0)", "TypeError");
 shouldThrow("ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0)", "TypeError");
 shouldThrow("ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0)", "'Error: IndexSizeError: DOM Exception 1'");
-shouldThrow("ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0)", "TypeError");
-shouldThrow("ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)", "TypeError");
+shouldThrow("ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0)", "'Error: IndexSizeError: DOM Exception 1'");
+shouldThrow("ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)", "'Error: IndexSizeError: DOM Exception 1'");

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setFillColor.js (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setFillColor.js	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setFillColor.js	2015-07-07 11:52:49 UTC (rev 186448)
@@ -12,4 +12,4 @@
 shouldThrow("ctx.setFillColor(0, 0, 0)", "TypeError");
 shouldBe("ctx.setFillColor(0, 0, 0, 0)", "undefined");
 shouldBe("ctx.setFillColor(0, 0, 0, 0, 0)", "undefined");
-shouldThrow("ctx.setFillColor(0, 0, 0, 0, 0, 0)", "TypeError");
+shouldBe("ctx.setFillColor(0, 0, 0, 0, 0, 0)", "undefined");

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setShadow.js (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setShadow.js	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setShadow.js	2015-07-07 11:52:49 UTC (rev 186448)
@@ -18,4 +18,4 @@
 shouldThrow("ctx.setShadow(0, 0, 0, 0, 0, 0)", "TypeError");
 shouldBe("ctx.setShadow(0, 0, 0, 0, 0, 0, 0)", "undefined");
 shouldBe("ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0)", "undefined");
-shouldThrow("ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0, 0)", "TypeError");
+shouldBe("ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0, 0)", "undefined");

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setStrokeColor.js (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setStrokeColor.js	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/canvas/script-tests/canvas-overloads-setStrokeColor.js	2015-07-07 11:52:49 UTC (rev 186448)
@@ -12,4 +12,4 @@
 shouldThrow("ctx.setStrokeColor(0, 0, 0)", "TypeError");
 shouldBe("ctx.setStrokeColor(0, 0, 0, 0)", "undefined");
 shouldBe("ctx.setStrokeColor(0, 0, 0, 0, 0)", "undefined");
-shouldThrow("ctx.setStrokeColor(0, 0, 0, 0, 0, 0)", "TypeError");
+shouldBe("ctx.setStrokeColor(0, 0, 0, 0, 0, 0)", "undefined");

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/add-expected.txt (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/add-expected.txt	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/add-expected.txt	2015-07-07 11:52:49 UTC (rev 186448)
@@ -1,43 +1,52 @@
-Test select.add() with index parameter
+Test that HTMLSelectElement.add() works when passing an index or an HTML option element as its second argument.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-list elements are = 0,1,2
-PASS testAdd1(createOption("Y1")) is "0,1,2,Y1"
-PASS testAdd3(createOption("Y2"), null) is "0,1,2,Y2"
-PASS testAdd3(createOption("Y3"), 0) is "Y3,0,1,2"
-PASS testAdd3(createOption("Y4"), 1) is "0,Y4,1,2"
-PASS testAdd3(createOption("Y5"), 2) is "0,1,Y5,2"
-PASS testAdd3(createOption("Y6"), 3) is "0,1,2,Y6"
-PASS testAdd3(createOption("Y7"), 100) is "0,1,2,Y7"
-PASS testAdd3(createOption("Y8"), -100) is "0,1,2,Y8"
-PASS testAdd3(createOption("Y9"), "0") is "Y9,0,1,2"
-PASS testAdd3(createOption("Y10"), "1") is "0,Y10,1,2"
-PASS testAdd3(createOption("Y11"), "2") is "0,1,Y11,2"
-PASS testAdd3(createOption("Y12"), true) is "0,Y12,1,2"
-PASS testAdd3(createOption("Y13"), false) is "Y13,0,1,2"
-PASS testAdd3(createOption("Y14"), 2147483647) is "0,1,2,Y14"
-PASS testAdd3(createOption("Y15"), 2147483648) is "0,1,2,Y15"
-PASS testAdd3(createOption("Y16"), -2147483647) is "0,1,2,Y16"
-PASS testAdd3(createOption("Y17"), -2147483648) is "0,1,2,Y17"
-PASS testAdd3(createOption("Y18"), -2147483649) is "0,1,2,Y18"
-PASS testAdd3(createOption("Y19"), Infinity) is "Y19,0,1,2"
-PASS testAdd3(createOption("Y20"), -Infinity) is "Y20,0,1,2"
-PASS testAdd3(createOption("Y21"), "foo") is "Y21,0,1,2"
-PASS testAdd3(createOption("Y22"), NaN) is "Y22,0,1,2"
-PASS testAdd3(createOption("Y23"), undefined) is "Y23,0,1,2"
-PASS testAdd3(createOption("Y24"), -2) is "0,1,2,Y24"
-PASS testAdd4(createOption("Y25"), 0, 1) threw exception TypeError: Type error.
-PASS testAdd4(createOption("Y25"), mySelect.options[0], 1) threw exception TypeError: Type error.
-list elements are = 0,1,2
-PASS mySelect.add("foo") threw exception TypeError: Type error.
-PASS mySelect.add("foo", 0) threw exception TypeError: Type error.
-PASS mySelect.add(undefined) threw exception TypeError: Type error.
-PASS mySelect.add(undefined, 0) threw exception TypeError: Type error.
-PASS mySelect.add(null, 0) threw exception TypeError: Type error.
-PASS mySelect.add(null) threw exception TypeError: Type error.
-PASS mySelect.add() threw exception TypeError: Not enough arguments.
+
+Call HTMLSelectElement.add() with zero arguments:
+PASS testAdd() threw exception TypeError: Not enough arguments.
+
+Call HTMLSelectElement.add() with one argument:
+PASS testAdd(createOption("Y1")) is "0,1,2,Y1"
+PASS testAdd("foo") threw exception TypeError: Type error.
+PASS testAdd(undefined) threw exception TypeError: Type error.
+PASS testAdd(null) threw exception TypeError: Type error.
+
+Call HTMLSelectElement.add() with two arguments:
+PASS testAdd(createOption("Y2"), null) is "0,1,2,Y2"
+PASS testAdd(createOption("Y3"), 0) is "Y3,0,1,2"
+PASS testAdd(createOption("Y4"), 1) is "0,Y4,1,2"
+PASS testAdd(createOption("Y5"), 2) is "0,1,Y5,2"
+PASS testAdd(createOption("Y6"), 3) is "0,1,2,Y6"
+PASS testAdd(createOption("Y7"), 100) is "0,1,2,Y7"
+PASS testAdd(createOption("Y8"), -100) is "0,1,2,Y8"
+PASS testAdd(createOption("Y9"), "0") is "Y9,0,1,2"
+PASS testAdd(createOption("Y10"), "1") is "0,Y10,1,2"
+PASS testAdd(createOption("Y11"), "2") is "0,1,Y11,2"
+PASS testAdd(createOption("Y12"), true) is "0,Y12,1,2"
+PASS testAdd(createOption("Y13"), false) is "Y13,0,1,2"
+PASS testAdd(createOption("Y14"), 2147483647) is "0,1,2,Y14"
+PASS testAdd(createOption("Y15"), 2147483648) is "0,1,2,Y15"
+PASS testAdd(createOption("Y16"), -2147483647) is "0,1,2,Y16"
+PASS testAdd(createOption("Y17"), -2147483648) is "0,1,2,Y17"
+PASS testAdd(createOption("Y18"), -2147483649) is "0,1,2,Y18"
+PASS testAdd(createOption("Y19"), Infinity) is "Y19,0,1,2"
+PASS testAdd(createOption("Y20"), -Infinity) is "Y20,0,1,2"
+PASS testAdd(createOption("Y21"), "foo") is "Y21,0,1,2"
+PASS testAdd(createOption("Y22"), NaN) is "Y22,0,1,2"
+PASS testAdd(createOption("Y23"), undefined) is "Y23,0,1,2"
+PASS testAdd(createOption("Y24"), -2) is "0,1,2,Y24"
+PASS testAdd(createOption("X"), mySelect.options[0]) is "X,0,1,2"
+PASS testAdd(createOption("X"), mySelect.options[1]) is "0,X,1,2"
+PASS testAdd(createOption("X"), mySelect.options[2]) is "0,1,X,2"
+PASS testAdd("foo", 0) threw exception TypeError: Type error.
+PASS testAdd(undefined, 0) threw exception TypeError: Type error.
+PASS testAdd(null, 0) threw exception TypeError: Type error.
+
+Call HTMLSelectElement.add() with three arguments (when it only takes two arguments):
+PASS testAdd(createOption("X"), 0, "unnecessary extra argument - should be ignored") is "X,0,1,2"
+PASS testAdd(createOption("X"), mySelect.options[1], "unnecessary extra argument - should be ignored") is "0,X,1,2"
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/add.html (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/add.html	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/add.html	2015-07-07 11:52:49 UTC (rev 186448)
@@ -2,87 +2,65 @@
 <html>
 <head>
 <script src=""
+<script src=""
 </head>
 <body>
 <script>
-description('Test select.add() with index parameter');
-	
-var mySelect;
+description("Test that HTMLSelectElement.add() works when passing an index or an HTML option element as its second argument.");
 
-function resetSelection() {
-    mySelect = document.createElement('select');
-    mySelect.appendChild(new Option("0", "0", false, false));
-    mySelect.appendChild(new Option("1", "1", false, false));
-    mySelect.appendChild(new Option("2", "2", false, false));
-}
+var mySelect = createSelectElementWithTestData();
 
-function deepCopy() {
-    var copy = [];
-    for(var i = 0; i < mySelect.options.length; ++i)
-        copy.push(mySelect.options[i].value);
-    return copy.join(",");
+function testAdd()
+{
+    HTMLSelectElement.prototype.add.apply(mySelect, arguments);
+    var result = deepCopy(mySelect);
+    mySelect = createSelectElementWithTestData(); // Reset
+    return result;
 }
-	
-function createOption(value) {
-    return new Option(value + "X", value, false, false);
-}
 
-function testAdd1(element) {
-    resetSelection();
-    mySelect.add(element);
-    return deepCopy();
-}
+debug("<br>Call HTMLSelectElement.add() with zero arguments:");
+shouldThrow("testAdd()");
 
-function testAdd3(newelement, index) {
-    resetSelection();
-    mySelect.add(newelement, index);
-    return deepCopy();
-}
+debug("<br>Call HTMLSelectElement.add() with one argument:");
+shouldBeEqualToString('testAdd(createOption("Y1"))', "0,1,2,Y1");
+shouldThrow('testAdd("foo")');
+shouldThrow("testAdd(undefined)");
+shouldThrow("testAdd(null)");
 
-function testAdd4(newelement, element, index) {
-    resetSelection();
-    mySelect.add(newelement, element, index);
-    return deepCopy();
-}
+debug("<br>Call HTMLSelectElement.add() with two arguments:");
+shouldBeEqualToString('testAdd(createOption("Y2"), null)', "0,1,2,Y2");
+shouldBeEqualToString('testAdd(createOption("Y3"), 0)', "Y3,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y4"), 1)', "0,Y4,1,2");
+shouldBeEqualToString('testAdd(createOption("Y5"), 2)', "0,1,Y5,2");
+shouldBeEqualToString('testAdd(createOption("Y6"), 3)', "0,1,2,Y6");
+shouldBeEqualToString('testAdd(createOption("Y7"), 100)', "0,1,2,Y7");
+shouldBeEqualToString('testAdd(createOption("Y8"), -100)', "0,1,2,Y8");
+shouldBeEqualToString('testAdd(createOption("Y9"), "0")', "Y9,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y10"), "1")', "0,Y10,1,2");
+shouldBeEqualToString('testAdd(createOption("Y11"), "2")', "0,1,Y11,2");
+shouldBeEqualToString('testAdd(createOption("Y12"), true)', "0,Y12,1,2");
+shouldBeEqualToString('testAdd(createOption("Y13"), false)', "Y13,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y14"), 2147483647)', "0,1,2,Y14");
+shouldBeEqualToString('testAdd(createOption("Y15"), 2147483648)', "0,1,2,Y15");
+shouldBeEqualToString('testAdd(createOption("Y16"), -2147483647)', "0,1,2,Y16");
+shouldBeEqualToString('testAdd(createOption("Y17"), -2147483648)', "0,1,2,Y17");
+shouldBeEqualToString('testAdd(createOption("Y18"), -2147483649)', "0,1,2,Y18");
+shouldBeEqualToString('testAdd(createOption("Y19"), Infinity)', "Y19,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y20"), -Infinity)', "Y20,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y21"), "foo")', "Y21,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y22"), NaN)', "Y22,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y23"), undefined)', "Y23,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y24"), -2)', "0,1,2,Y24");
+shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[0])', "X,0,1,2");
+shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[1])', "0,X,1,2");
+shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[2])', "0,1,X,2");
+shouldThrow('testAdd("foo", 0)', "'TypeError: Type error'");
+shouldThrow('testAdd(undefined, 0)', "'TypeError: Type error'");
+shouldThrow('testAdd(null, 0)', "'TypeError: Type error'");
 
-resetSelection();
-debug('list elements are = ' + deepCopy());
-shouldBeEqualToString('testAdd1(createOption("Y1"))', '0,1,2,Y1');
-shouldBeEqualToString('testAdd3(createOption("Y2"), null)', '0,1,2,Y2');
-shouldBeEqualToString('testAdd3(createOption("Y3"), 0)', 'Y3,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y4"), 1)', '0,Y4,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y5"), 2)', '0,1,Y5,2');
-shouldBeEqualToString('testAdd3(createOption("Y6"), 3)', '0,1,2,Y6');
-shouldBeEqualToString('testAdd3(createOption("Y7"), 100)', '0,1,2,Y7');
-shouldBeEqualToString('testAdd3(createOption("Y8"), -100)', '0,1,2,Y8');
-shouldBeEqualToString('testAdd3(createOption("Y9"), "0")', 'Y9,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y10"), "1")', '0,Y10,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y11"), "2")', '0,1,Y11,2');
-shouldBeEqualToString('testAdd3(createOption("Y12"), true)', '0,Y12,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y13"), false)', 'Y13,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y14"), 2147483647)', '0,1,2,Y14');
-shouldBeEqualToString('testAdd3(createOption("Y15"), 2147483648)', '0,1,2,Y15');
-shouldBeEqualToString('testAdd3(createOption("Y16"), -2147483647)', '0,1,2,Y16');
-shouldBeEqualToString('testAdd3(createOption("Y17"), -2147483648)', '0,1,2,Y17');
-shouldBeEqualToString('testAdd3(createOption("Y18"), -2147483649)', '0,1,2,Y18');
-shouldBeEqualToString('testAdd3(createOption("Y19"), Infinity)', 'Y19,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y20"), -Infinity)', 'Y20,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y21"), "foo")', 'Y21,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y22"), NaN)', 'Y22,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y23"), undefined)', 'Y23,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y24"), -2)','0,1,2,Y24');
-shouldThrow('testAdd4(createOption("Y25"), 0, 1)');
-shouldThrow('testAdd4(createOption("Y25"), mySelect.options[0], 1)');
-resetSelection();
-debug('list elements are = ' + deepCopy());
-shouldThrow('mySelect.add("foo")');
-shouldThrow('mySelect.add("foo", 0)');
-shouldThrow('mySelect.add(undefined)');
-shouldThrow('mySelect.add(undefined, 0)');
-shouldThrow('mySelect.add(null, 0)');
-shouldThrow('mySelect.add(null)');
-shouldThrow('mySelect.add()');
-	
+debug("<br>Call HTMLSelectElement.add() with three arguments (when it only takes two arguments):");
+shouldBeEqualToString('testAdd(createOption("X"), 0, "unnecessary extra argument - should be ignored")', "X,0,1,2");
+shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[1], "unnecessary extra argument - should be ignored")', "0,X,1,2");
 </script>
 </body>
 </html>

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/options-collection-add-expected.txt (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/options-collection-add-expected.txt	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/options-collection-add-expected.txt	2015-07-07 11:52:49 UTC (rev 186448)
@@ -3,55 +3,63 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-list elements are = 0,1,2
-PASS testAdd3(createGroup("Y1", "Y2"), null) is "0,1,2,Y1,Y2"
-PASS testAdd3(createGroup("Y3", "Y4"), 0) is "Y3,Y4,0,1,2"
-PASS testAdd3(createGroup("Y5", "Y6"), 2) is "0,1,Y5,Y6,2"
-PASS testAdd1(createGroup("Y7", "Y8")) is "0,1,2,Y7,Y8"
-PASS testAdd1(createOption("Y9")) is "0,1,2,Y9"
-list elements are = 0,1,2
-PASS testAdd2(createOption("Y10"), mySelect.options[2]) is "0,1,Y10,2"
-PASS testAdd2(createOption("Y11"), mySelect.options[1]) is "0,Y11,1,Y10,2"
-list elements are = 0,1,2
-PASS testAdd2(createGroup("Y12", "Y13"), mySelect.options[1]) is "0,Y12,Y13,1,2"
-PASS testAdd2(createGroup("Y14", "Y15"), mySelect.options[3]) is "0,Y12,Y13,Y14,Y15,1,2"
-list elements are = 0,1,2
-PASS testAdd2(createOption("Y16"), createOption("Y17")) threw exception Error: NotFoundError: DOM Exception 8.
-list elements are = 0,1,2
-PASS testAdd1(createOption("Y1")) is "0,1,2,Y1"
-PASS testAdd3(createOption("Y2"), null) is "0,1,2,Y2"
-PASS testAdd3(createOption("Y3"), 0) is "Y3,0,1,2"
-PASS testAdd3(createOption("Y4"), 1) is "0,Y4,1,2"
-PASS testAdd3(createOption("Y5"), 2) is "0,1,Y5,2"
-PASS testAdd3(createOption("Y6"), 3) is "0,1,2,Y6"
-PASS testAdd3(createOption("Y7"), 100) is "0,1,2,Y7"
-PASS testAdd3(createOption("Y8"), -100) is "0,1,2,Y8"
-PASS testAdd3(createOption("Y9"), "0") is "Y9,0,1,2"
-PASS testAdd3(createOption("Y10"), "1") is "0,Y10,1,2"
-PASS testAdd3(createOption("Y11"), "2") is "0,1,Y11,2"
-PASS testAdd3(createOption("Y12"), true) is "0,Y12,1,2"
-PASS testAdd3(createOption("Y13"), false) is "Y13,0,1,2"
-PASS testAdd3(createOption("Y14"), 2147483647) is "0,1,2,Y14"
-PASS testAdd3(createOption("Y15"), 2147483648) is "0,1,2,Y15"
-PASS testAdd3(createOption("Y16"), -2147483647) is "0,1,2,Y16"
-PASS testAdd3(createOption("Y17"), -2147483648) is "0,1,2,Y17"
-PASS testAdd3(createOption("Y18"), -2147483649) is "0,1,2,Y18"
-PASS testAdd3(createOption("Y19"), Infinity) is "Y19,0,1,2"
-PASS testAdd3(createOption("Y20"), -Infinity) is "Y20,0,1,2"
-PASS testAdd3(createOption("Y21"), "foo") is "Y21,0,1,2"
-PASS testAdd3(createOption("Y22"), NaN) is "Y22,0,1,2"
-PASS testAdd3(createOption("Y23"), undefined) is "Y23,0,1,2"
-PASS testAdd3(createOption("Y24"), -2) is "0,1,2,Y24"
-PASS testAdd4(createOption("Y25"), 0, 1) threw exception TypeError: Type error.
-PASS testAdd4(createOption("Y25"), mySelect.options[0], 1) threw exception TypeError: Type error.
-list elements are = 0,1,2
-PASS mySelect.options.add("foo") threw exception TypeError: Type error.
-PASS mySelect.options.add("foo", 0) threw exception TypeError: Type error.
-PASS mySelect.options.add(undefined) threw exception TypeError: Type error.
-PASS mySelect.options.add(undefined, 0) threw exception TypeError: Type error.
-PASS mySelect.options.add(null, 0) threw exception TypeError: Type error.
-PASS mySelect.options.add(null) threw exception TypeError: Type error.
-PASS mySelect.options.add() threw exception TypeError: Not enough arguments.
+
+Call HTMLOptionsCollection.add() with zero arguments:
+PASS testAdd() threw exception TypeError: Not enough arguments.
+
+Call HTMLOptionsCollection.add() with only one argument:
+PASS testAdd(createOption("Y9")) is "0,1,2,Y9"
+PASS testAdd("foo") threw exception TypeError: Type error.
+PASS testAdd(undefined) threw exception TypeError: Type error.
+PASS testAdd(null) threw exception TypeError: Type error.
+
+Call HTMLOptionsCollection.add() with two arguments:
+PASS testAdd(createGroup("Y1", "Y2"), null) is "0,1,2,Y1,Y2"
+PASS testAdd(createGroup("Y3", "Y4"), 0) is "Y3,Y4,0,1,2"
+PASS testAdd(createGroup("Y5", "Y6"), 2) is "0,1,Y5,Y6,2"
+PASS testAdd(createGroup("Y7", "Y8")) is "0,1,2,Y7,Y8"
+PASS testAddWithoutResettingListOptions(createOption("Y10"), mySelect.options[2]) is "0,1,Y10,2"
+PASS testAdd(createOption("Y11"), mySelect.options[1]) is "0,Y11,1,Y10,2"
+PASS testAddWithoutResettingListOptions(createGroup("Y12", "Y13"), mySelect.options[1]) is "0,Y12,Y13,1,2"
+PASS testAdd(createGroup("Y14", "Y15"), mySelect.options[3]) is "0,Y12,Y13,Y14,Y15,1,2"
+PASS testAdd(createOption("Y16"), createOption("Y17")) threw exception Error: NotFoundError: DOM Exception 8.
+PASS testAdd(createOption("Y1")) is "0,1,2,Y1"
+PASS testAdd(createOption("Y2"), null) is "0,1,2,Y2"
+PASS testAdd(createOption("Y3"), 0) is "Y3,0,1,2"
+PASS testAdd(createOption("Y4"), 1) is "0,Y4,1,2"
+PASS testAdd(createOption("Y5"), 2) is "0,1,Y5,2"
+PASS testAdd(createOption("Y6"), 3) is "0,1,2,Y6"
+PASS testAdd(createOption("Y7"), 100) is "0,1,2,Y7"
+PASS testAdd(createOption("Y8"), -100) is "0,1,2,Y8"
+PASS testAdd(createOption("Y9"), "0") is "Y9,0,1,2"
+PASS testAdd(createOption("Y10"), "1") is "0,Y10,1,2"
+PASS testAdd(createOption("Y11"), "2") is "0,1,Y11,2"
+PASS testAdd(createOption("Y12"), true) is "0,Y12,1,2"
+PASS testAdd(createOption("Y13"), false) is "Y13,0,1,2"
+PASS testAdd(createOption("Y14"), 2147483647) is "0,1,2,Y14"
+PASS testAdd(createOption("Y15"), 2147483648) is "0,1,2,Y15"
+PASS testAdd(createOption("Y16"), -2147483647) is "0,1,2,Y16"
+PASS testAdd(createOption("Y17"), -2147483648) is "0,1,2,Y17"
+PASS testAdd(createOption("Y18"), -2147483649) is "0,1,2,Y18"
+PASS testAdd(createOption("Y19"), Infinity) is "Y19,0,1,2"
+PASS testAdd(createOption("Y20"), -Infinity) is "Y20,0,1,2"
+PASS testAdd(createOption("Y21"), "foo") is "Y21,0,1,2"
+PASS testAdd(createOption("Y22"), NaN) is "Y22,0,1,2"
+PASS testAdd(createOption("Y23"), undefined) is "Y23,0,1,2"
+PASS testAdd(createOption("Y24"), -2) is "0,1,2,Y24"
+PASS testAdd(createOption("X"), mySelect.options[0]) is "X,0,1,2"
+PASS testAdd(createOption("X"), mySelect.options[1]) is "0,X,1,2"
+PASS testAdd(createOption("X"), mySelect.options[2]) is "0,1,X,2"
+PASS testAdd(createOption("Y25"), 0, 1) is "Y25,0,1,2"
+PASS testAdd(createOption("Y25"), mySelect.options[0], 1) is "Y25,0,1,2"
+PASS testAdd("foo", 0) threw exception TypeError: Type error.
+PASS testAdd(undefined, 0) threw exception TypeError: Type error.
+PASS testAdd(null, 0) threw exception TypeError: Type error.
+
+Call HTMLOptionsCollection.add() with three arguments (when it only takes two arguments):
+PASS testAdd(createOption("X"), 0, "unnecessary extra argument - should be ignored") is "X,0,1,2"
+PASS testAdd(createOption("X"), mySelect.options[1], "unnecessary extra argument - should be ignored") is "0,X,1,2"
+PASS testAdd(createGroup("G1", "G2"), 1, "unnecessary extra argument - should be ignored") is "0,G1,G2,1,2"
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/options-collection-add.html (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/options-collection-add.html	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/options-collection-add.html	2015-07-07 11:52:49 UTC (rev 186448)
@@ -2,117 +2,88 @@
 <html>
 <head>
 <script src=""
+<script src=""
 </head>
 <body>
 <script>
 description('Test select.options.add() with optgroup and with index parameter');
-	
-var mySelect;
 
-function resetSelection() {
-    mySelect = document.createElement('select');
-    mySelect.appendChild(new Option("0", "0", false, false));
-    mySelect.appendChild(new Option("1", "1", false, false));
-    mySelect.appendChild(new Option("2", "2", false, false));
-}
+var mySelect = createSelectElementWithTestData();
 
-function deepCopy() {
-    var copy = [];
-    for(var i = 0; i < mySelect.options.length; ++i)
-        copy.push(mySelect.options[i].value);
-    return copy.join(",");
+function testAdd()
+{
+    HTMLOptionsCollection.prototype.add.apply(mySelect.options, arguments);
+    var result = deepCopy(mySelect);
+    mySelect = createSelectElementWithTestData(); // Reset
+    return result;
 }
-	
-function createOption(value) {
-    return new Option(value + "X", value, false, false);
-}
 
-function createGroup(value1, value2) {
-    var group = document.createElement('optgroup');
-    group.appendChild(new Option(value1 + "X", value1, false, false));
-    group.appendChild(new Option(value2 + "Y", value2, false, false));
-    return group;
+function testAddWithoutResettingListOptions()
+{
+    HTMLOptionsCollection.prototype.add.apply(mySelect.options, arguments);
+    return deepCopy(mySelect);
 }
 
-function testAdd1(element) {
-    resetSelection();
-    mySelect.options.add(element);
-    return deepCopy();
-}
+debug("<br>Call HTMLOptionsCollection.add() with zero arguments:");
+shouldThrow("testAdd()");
 
-function testAdd2(newelement, element) {
-    mySelect.options.add(newelement, element);
-    return deepCopy();
-}
+debug("<br>Call HTMLOptionsCollection.add() with only one argument:");
+shouldBeEqualToString('testAdd(createOption("Y9"))', "0,1,2,Y9");
+shouldThrow('testAdd("foo")');
+shouldThrow("testAdd(undefined)");
+shouldThrow("testAdd(null)");
 
-function testAdd3(newelement, index) {
-    resetSelection();
-    mySelect.options.add(newelement, index);
-    return deepCopy();
-}
+debug("<br>Call HTMLOptionsCollection.add() with two arguments:");
+shouldBeEqualToString('testAdd(createGroup("Y1", "Y2"), null)', "0,1,2,Y1,Y2");
+shouldBeEqualToString('testAdd(createGroup("Y3", "Y4"), 0)', "Y3,Y4,0,1,2");
+shouldBeEqualToString('testAdd(createGroup("Y5", "Y6"), 2)', "0,1,Y5,Y6,2");
+shouldBeEqualToString('testAdd(createGroup("Y7", "Y8"))', "0,1,2,Y7,Y8");
 
-function testAdd4(newelement, element, index) {
-    resetSelection();
-    mySelect.options.add(newelement, element, index);
-    return deepCopy();
-}
+shouldBeEqualToString('testAddWithoutResettingListOptions(createOption("Y10"), mySelect.options[2])', "0,1,Y10,2");
+shouldBeEqualToString('testAdd(createOption("Y11"), mySelect.options[1])', "0,Y11,1,Y10,2");
 
-resetSelection();
-debug('list elements are = ' + deepCopy());
-shouldBeEqualToString('testAdd3(createGroup("Y1", "Y2"), null)', '0,1,2,Y1,Y2');
-shouldBeEqualToString('testAdd3(createGroup("Y3", "Y4"), 0)', 'Y3,Y4,0,1,2');
-shouldBeEqualToString('testAdd3(createGroup("Y5", "Y6"), 2)', '0,1,Y5,Y6,2');
-shouldBeEqualToString('testAdd1(createGroup("Y7", "Y8"))', '0,1,2,Y7,Y8');
-shouldBeEqualToString('testAdd1(createOption("Y9"))', '0,1,2,Y9');
-resetSelection();
-debug('list elements are = ' + deepCopy());
-shouldBeEqualToString('testAdd2(createOption("Y10"), mySelect.options[2])', '0,1,Y10,2');
-shouldBeEqualToString('testAdd2(createOption("Y11"), mySelect.options[1])', '0,Y11,1,Y10,2');
-resetSelection();
-debug('list elements are = ' + deepCopy());
-shouldBeEqualToString('testAdd2(createGroup("Y12", "Y13"), mySelect.options[1])', '0,Y12,Y13,1,2');
-shouldBeEqualToString('testAdd2(createGroup("Y14", "Y15"), mySelect.options[3])', '0,Y12,Y13,Y14,Y15,1,2');
-resetSelection();
-debug('list elements are = ' + deepCopy());
-shouldThrow('testAdd2(createOption("Y16"), createOption("Y17"))');
-resetSelection();
-debug('list elements are = ' + deepCopy());
-shouldBeEqualToString('testAdd1(createOption("Y1"))', '0,1,2,Y1');
-shouldBeEqualToString('testAdd3(createOption("Y2"), null)', '0,1,2,Y2');
-shouldBeEqualToString('testAdd3(createOption("Y3"), 0)', 'Y3,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y4"), 1)', '0,Y4,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y5"), 2)', '0,1,Y5,2');
-shouldBeEqualToString('testAdd3(createOption("Y6"), 3)', '0,1,2,Y6');
-shouldBeEqualToString('testAdd3(createOption("Y7"), 100)', '0,1,2,Y7');
-shouldBeEqualToString('testAdd3(createOption("Y8"), -100)', '0,1,2,Y8');
-shouldBeEqualToString('testAdd3(createOption("Y9"), "0")', 'Y9,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y10"), "1")', '0,Y10,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y11"), "2")', '0,1,Y11,2');
-shouldBeEqualToString('testAdd3(createOption("Y12"), true)', '0,Y12,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y13"), false)', 'Y13,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y14"), 2147483647)', '0,1,2,Y14');
-shouldBeEqualToString('testAdd3(createOption("Y15"), 2147483648)', '0,1,2,Y15');
-shouldBeEqualToString('testAdd3(createOption("Y16"), -2147483647)', '0,1,2,Y16');
-shouldBeEqualToString('testAdd3(createOption("Y17"), -2147483648)', '0,1,2,Y17');
-shouldBeEqualToString('testAdd3(createOption("Y18"), -2147483649)', '0,1,2,Y18');
-shouldBeEqualToString('testAdd3(createOption("Y19"), Infinity)', 'Y19,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y20"), -Infinity)', 'Y20,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y21"), "foo")', 'Y21,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y22"), NaN)', 'Y22,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y23"), undefined)', 'Y23,0,1,2');
-shouldBeEqualToString('testAdd3(createOption("Y24"), -2)','0,1,2,Y24');
-shouldThrow('testAdd4(createOption("Y25"), 0, 1)');
-shouldThrow('testAdd4(createOption("Y25"), mySelect.options[0], 1)');
-resetSelection();
-debug('list elements are = ' + deepCopy());
-shouldThrow('mySelect.options.add("foo")');
-shouldThrow('mySelect.options.add("foo", 0)');
-shouldThrow('mySelect.options.add(undefined)');
-shouldThrow('mySelect.options.add(undefined, 0)');
-shouldThrow('mySelect.options.add(null, 0)');
-shouldThrow('mySelect.options.add(null)');
-shouldThrow('mySelect.options.add()');
-	
+shouldBeEqualToString('testAddWithoutResettingListOptions(createGroup("Y12", "Y13"), mySelect.options[1])', "0,Y12,Y13,1,2");
+shouldBeEqualToString('testAdd(createGroup("Y14", "Y15"), mySelect.options[3])', "0,Y12,Y13,Y14,Y15,1,2");
+
+shouldThrow('testAdd(createOption("Y16"), createOption("Y17"))');
+
+shouldBeEqualToString('testAdd(createOption("Y1"))', "0,1,2,Y1");
+shouldBeEqualToString('testAdd(createOption("Y2"), null)', "0,1,2,Y2");
+shouldBeEqualToString('testAdd(createOption("Y3"), 0)', "Y3,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y4"), 1)', "0,Y4,1,2");
+shouldBeEqualToString('testAdd(createOption("Y5"), 2)', "0,1,Y5,2");
+shouldBeEqualToString('testAdd(createOption("Y6"), 3)', "0,1,2,Y6");
+shouldBeEqualToString('testAdd(createOption("Y7"), 100)', "0,1,2,Y7");
+shouldBeEqualToString('testAdd(createOption("Y8"), -100)', "0,1,2,Y8");
+shouldBeEqualToString('testAdd(createOption("Y9"), "0")', "Y9,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y10"), "1")', "0,Y10,1,2");
+shouldBeEqualToString('testAdd(createOption("Y11"), "2")', "0,1,Y11,2");
+shouldBeEqualToString('testAdd(createOption("Y12"), true)', "0,Y12,1,2");
+shouldBeEqualToString('testAdd(createOption("Y13"), false)', "Y13,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y14"), 2147483647)', "0,1,2,Y14");
+shouldBeEqualToString('testAdd(createOption("Y15"), 2147483648)', "0,1,2,Y15");
+shouldBeEqualToString('testAdd(createOption("Y16"), -2147483647)', "0,1,2,Y16");
+shouldBeEqualToString('testAdd(createOption("Y17"), -2147483648)', "0,1,2,Y17");
+shouldBeEqualToString('testAdd(createOption("Y18"), -2147483649)', "0,1,2,Y18");
+shouldBeEqualToString('testAdd(createOption("Y19"), Infinity)', "Y19,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y20"), -Infinity)', "Y20,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y21"), "foo")', "Y21,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y22"), NaN)', "Y22,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y23"), undefined)', "Y23,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y24"), -2)', "0,1,2,Y24");
+shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[0])', "X,0,1,2");
+shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[1])', "0,X,1,2");
+shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[2])', "0,1,X,2");
+shouldBeEqualToString('testAdd(createOption("Y25"), 0, 1)', "Y25,0,1,2");
+shouldBeEqualToString('testAdd(createOption("Y25"), mySelect.options[0], 1)', "Y25,0,1,2");
+shouldThrow('testAdd("foo", 0)', "'TypeError: Type error'");
+shouldThrow('testAdd(undefined, 0)', "'TypeError: Type error'");
+shouldThrow('testAdd(null, 0)', "'TypeError: Type error'");
+
+debug("<br>Call HTMLOptionsCollection.add() with three arguments (when it only takes two arguments):");
+shouldBeEqualToString('testAdd(createOption("X"), 0, "unnecessary extra argument - should be ignored")', "X,0,1,2");
+shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[1], "unnecessary extra argument - should be ignored")', "0,X,1,2");
+shouldBeEqualToString('testAdd(createGroup("G1", "G2"), 1, "unnecessary extra argument - should be ignored")', "0,G1,G2,1,2");
 </script>
 </body>
 </html>

Added: releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/resources/html-select-and-options-collection-utilities.js (0 => 186448)


--- releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/resources/html-select-and-options-collection-utilities.js	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/fast/dom/HTMLSelectElement/resources/html-select-and-options-collection-utilities.js	2015-07-07 11:52:49 UTC (rev 186448)
@@ -0,0 +1,25 @@
+function createSelectElementWithTestData() {
+    var example = document.createElement("select");
+    example.appendChild(new Option("0", "0", false, false));
+    example.appendChild(new Option("1", "1", false, false));
+    example.appendChild(new Option("2", "2", false, false));
+    return example;
+}
+
+function deepCopy(selectElement) {
+    var copy = [];
+    for(var i = 0; i < selectElement.options.length; ++i)
+        copy.push(selectElement.options[i].value);
+    return copy.join(",");
+}
+
+function createOption(value) {
+    return new Option(value + "X", value, false, false);
+}
+
+function createGroup(value1, value2) {
+    var group = document.createElement("optgroup");
+    group.appendChild(new Option(value1 + "X", value1, false, false));
+    group.appendChild(new Option(value2 + "Y", value2, false, false));
+    return group;
+}

Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog	2015-07-07 11:52:49 UTC (rev 186448)
@@ -1,3 +1,46 @@
+2015-07-03  Daniel Bates  <[email protected]>
+
+        REGRESSION (r178097): _javascript_ TypeError after clicking on compose button in Yahoo Mail
+        https://bugs.webkit.org/show_bug.cgi?id=146515
+        <rdar://problem/21348421>
+
+        Reviewed by Chris Dumez.
+
+        Fixes an issue where extra arguments passed to a Web IDL overloaded function, whose implementation
+        is generated by the bindings generator script, are not ignored as per the note in section "Interface object [[Call]] method"
+        of the Web IDL spec, <http://www.w3.org/TR/2012/CR-WebIDL-20120419/> (19 April 2012).
+
+        Currently for an overloaded function the _javascript_ bindings generator script emits code to
+        throw a TypeError when it cannot find a candidate function that takes the same number of
+        arguments as passed by a caller. Prior to the change made in bug #139179 (r178097), the
+        bindings code for HTMLSelectElement.add() was written by hand and ignored extra arguments
+        that were passed to it. Following this change, the bindings code for HTMLSelectElement.add()
+        is generated by the bindings generator script. Therefore, we throw a TypeError when Yahoo Mail
+        calls HTMLSelectElement.add() with extra arguments because the code emitted by the bindings
+        generator script does not ignore them.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (LengthOfLongestFunctionParameterList): Added. Computes the length of longest overload parameter list.
+        (GenerateOverloadedFunction): Emit code that ignores more arguments than LengthOfLongestFunctionParameterList().
+        (GenerateOverloadedConstructorDefinition): Ditto.
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod12): Added; expected result for an overloaded
+        function that takes a variadic number of Blob elements.
+        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod): Update expected result. The added
+        if-conditional _expression_ for the IDL declaration overloadedMethod(Blob... blobArgs) is empty
+        because we do not support overloading of functions with variadic arguments.
+        (WebCore::jsTestObjConstructorFunctionOverloadedMethod1):
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
+        (WebCore::JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors5): Added; expected
+        result for an overloaded constructors that takes a variadic number of long arguments.
+        (WebCore::JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors): Update expected
+        result. The added if-conditional _expression_ for the IDL declaration Constructor(long... longArgs) is empty
+        because we do not support overloading of constructors with variadic arguments.
+        * bindings/scripts/test/TestObj.idl: Added declaration overloadedMethod(Blob...). Also fixed
+        typo in license block text.
+        * bindings/scripts/test/TestOverloadedConstructors.idl: Added declaration Constructor(long... longArgs).
+        Also fixed typo in license block text.
+
 2015-07-03  Mario Sanchez Prada  <[email protected]>
 
         Crash on xLarge memory allocation using bmalloc on 32bit systems

Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm	2015-07-07 11:52:49 UTC (rev 186448)
@@ -1404,6 +1404,17 @@
     return ($numMandatoryParams, join(" || ", @orExpression), @neededArguments);
 }
 
+sub LengthOfLongestFunctionParameterList
+{
+    my ($overloads) = @_;
+    my $result = 0;
+    foreach my $overload (@{$overloads}) {
+        my @parameters = @{$overload->parameters};
+        $result = @parameters if $result < @parameters;
+    }
+    return $result;
+}
+
 sub GenerateOverloadedFunction
 {
     my $function = shift;
@@ -1419,10 +1430,13 @@
     my $kind = $function->isStatic ? "Constructor" : "Prototype";
     my $functionName = "js${interfaceName}${kind}Function" . $codeGenerator->WK_ucfirst($function->signature->name);
 
+    # FIXME: Implement support for overloaded functions with variadic arguments.
+    my $lengthOfLongestOverloadedFunctionParameterList = LengthOfLongestFunctionParameterList($function->{overloads});
+
     push(@implContent, "EncodedJSValue JSC_HOST_CALL ${functionName}(ExecState* exec)\n");
     push(@implContent, <<END);
 {
-    size_t argsCount = exec->argumentCount();
+    size_t argsCount = std::min<size_t>($lengthOfLongestOverloadedFunctionParameterList, exec->argumentCount());
 END
 
     my %fetchedArguments = ();
@@ -4434,10 +4448,14 @@
     my $interface = shift;
 
     my $functionName = "${className}Constructor::construct${className}";
+
+    # FIXME: Implement support for overloaded constructors with variadic arguments.
+    my $lengthOfLongestOverloadedConstructorParameterList = LengthOfLongestFunctionParameterList($interface->constructors);
+
     push(@$outputArray, <<END);
 EncodedJSValue JSC_HOST_CALL ${functionName}(ExecState* exec)
 {
-    size_t argsCount = exec->argumentCount();
+    size_t argsCount = std::min<size_t>($lengthOfLongestOverloadedConstructorParameterList, exec->argumentCount());
 END
 
     my %fetchedArguments = ();

Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp	2015-07-07 11:52:49 UTC (rev 186448)
@@ -3859,9 +3859,27 @@
     return JSValue::encode(jsUndefined());
 }
 
+static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod12(ExecState* exec)
+{
+    JSValue thisValue = exec->thisValue();
+    JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*exec, "TestObj", "overloadedMethod");
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto& impl = castedThis->impl();
+    Vector<Blob*> blobArgs;
+    for (unsigned i = 0, count = exec->argumentCount(); i < count; ++i) {
+        if (!exec->uncheckedArgument(i).inherits(JSBlob::info()))
+            return throwArgumentTypeError(*exec, i, "blobArgs", "TestObj", "overloadedMethod", "Blob");
+        blobArgs.append(JSBlob::toWrapped(exec->uncheckedArgument(i)));
+    }
+    impl.overloadedMethod(blobArgs);
+    return JSValue::encode(jsUndefined());
+}
+
 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod(ExecState* exec)
 {
-    size_t argsCount = exec->argumentCount();
+    size_t argsCount = std::min<size_t>(2, exec->argumentCount());
     JSValue arg0(exec->argument(0));
     JSValue arg1(exec->argument(1));
     if ((argsCount == 2 && (arg0.isNull() || (arg0.isObject() && asObject(arg0)->inherits(JSTestObj::info()))) && (arg1.isUndefinedOrNull() || arg1.isString() || arg1.isObject())))
@@ -3886,6 +3904,8 @@
         return jsTestObjPrototypeFunctionOverloadedMethod10(exec);
     if (argsCount == 1)
         return jsTestObjPrototypeFunctionOverloadedMethod11(exec);
+    if ()
+        return jsTestObjPrototypeFunctionOverloadedMethod12(exec);
     if (argsCount < 1)
         return throwVMError(exec, createNotEnoughArgumentsError(exec));
     return throwVMTypeError(exec);
@@ -3950,7 +3970,7 @@
 
 EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionOverloadedMethod1(ExecState* exec)
 {
-    size_t argsCount = exec->argumentCount();
+    size_t argsCount = std::min<size_t>(1, exec->argumentCount());
 #if ENABLE(Condition1)
     if (argsCount == 1)
         return jsTestObjConstructorFunctionOverloadedMethod11(exec);

Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp	2015-07-07 11:52:49 UTC (rev 186448)
@@ -86,6 +86,7 @@
     static JSC::EncodedJSValue JSC_HOST_CALL constructJSTestOverloadedConstructors2(JSC::ExecState*);
     static JSC::EncodedJSValue JSC_HOST_CALL constructJSTestOverloadedConstructors3(JSC::ExecState*);
     static JSC::EncodedJSValue JSC_HOST_CALL constructJSTestOverloadedConstructors4(JSC::ExecState*);
+    static JSC::EncodedJSValue JSC_HOST_CALL constructJSTestOverloadedConstructors5(JSC::ExecState*);
     static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);
 };
 
@@ -137,9 +138,19 @@
     return JSValue::encode(asObject(toJS(exec, castedThis->globalObject(), object.get())));
 }
 
+EncodedJSValue JSC_HOST_CALL JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors5(ExecState* exec)
+{
+    auto* castedThis = jsCast<JSTestOverloadedConstructorsConstructor*>(exec->callee());
+    Vector<int> longArgs = toNativeArguments<int>(exec, 0);
+    if (UNLIKELY(exec->hadException()))
+        return JSValue::encode(jsUndefined());
+    RefPtr<TestOverloadedConstructors> object = TestOverloadedConstructors::create(longArgs);
+    return JSValue::encode(asObject(toJS(exec, castedThis->globalObject(), object.get())));
+}
+
 EncodedJSValue JSC_HOST_CALL JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors(ExecState* exec)
 {
-    size_t argsCount = exec->argumentCount();
+    size_t argsCount = std::min<size_t>(1, exec->argumentCount());
     JSValue arg0(exec->argument(0));
     if ((argsCount == 1 && (arg0.isObject() && asObject(arg0)->inherits(JSArrayBuffer::info()))))
         return JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors1(exec);
@@ -149,6 +160,8 @@
         return JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors3(exec);
     if (argsCount == 1)
         return JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors4(exec);
+    if ()
+        return JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors5(exec);
     if (argsCount < 1)
         return throwVMError(exec, createNotEnoughArgumentsError(exec));
     return throwVMTypeError(exec);

Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/TestObj.idl (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/TestObj.idl	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/TestObj.idl	2015-07-07 11:52:49 UTC (rev 186448)
@@ -16,7 +16,7 @@
  *     from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * 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
@@ -190,6 +190,9 @@
     void    overloadedMethod(DOMString[] arrayArg);
     void    overloadedMethod(sequence<unsigned long> arrayArg);
     void    overloadedMethod(DOMString strArg);
+
+    // FIXME: Implement support for overloaded functions with variadic arguments.
+    void    overloadedMethod(Blob... blobArgs);
 #endif
 
     // Class methods within _javascript_ (like what's used for IDBKeyRange).

Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/TestOverloadedConstructors.idl (186447 => 186448)


--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/TestOverloadedConstructors.idl	2015-07-07 11:27:15 UTC (rev 186447)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/test/TestOverloadedConstructors.idl	2015-07-07 11:52:49 UTC (rev 186448)
@@ -15,7 +15,7 @@
  *     from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * 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
@@ -30,5 +30,6 @@
     Constructor(ArrayBufferView arrayBufferView),
     Constructor(Blob blob),
     Constructor(DOMString string),
+    Constructor(long... longArgs) // FIXME: Implement support for overloaded constructors with variadic arguments.
 ] interface TestOverloadedConstructors {
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to