From 40dbb2c1008f9629e6794d980fdc9374a8bbbb59 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 5 Jul 2019 11:03:34 +0900 Subject: [PATCH] Implement DOMPoint.fromPoint --- .../dom/bindings/codegen/CodegenRust.py | 3 +- components/script/dom/dompoint.rs | 5 ++ components/script/dom/dompointreadonly.rs | 6 +++ components/script/dom/webidls/DOMPoint.webidl | 2 + .../dom/webidls/DOMPointReadOnly.webidl | 2 + tests/wpt/metadata/MANIFEST.json | 4 +- .../transitionevent-interface.html.ini | 7 --- .../DOMMatrixInit-validate-fixup.html.ini | 6 --- .../css/geometry/DOMPoint-001.html.ini | 26 ---------- .../css/geometry/DOMPoint-002.html.ini | 48 ------------------- .../metadata/css/geometry/interfaces.html.ini | 15 ------ .../css/geometry/interfaces.worker.js.ini | 15 ------ .../k-rate-biquad.html.ini | 2 - .../k-rate-gain.html.ini | 2 - .../k-rate-oscillator.html.ini | 10 +++- .../k-rate-stereo-panner.html.ini | 2 - .../webstorage/event_constructor.html.ini | 4 -- .../automation-rate-testing.js | 2 +- .../k-rate-oscillator.html | 2 +- 19 files changed, 30 insertions(+), 133 deletions(-) delete mode 100644 tests/wpt/metadata/css/css-transitions/transitionevent-interface.html.ini delete mode 100644 tests/wpt/metadata/css/geometry/DOMPoint-001.html.ini delete mode 100644 tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-biquad.html.ini delete mode 100644 tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-gain.html.ini delete mode 100644 tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-stereo-panner.html.ini delete mode 100644 tests/wpt/metadata/webstorage/event_constructor.html.ini diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index dcbdea765d4..114b403d077 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -6414,7 +6414,8 @@ class CGDictionary(CGThing): conversion = ( "{\n" " rooted!(in(cx) let mut rval = UndefinedValue());\n" - " if r#try!(get_dictionary_property(cx, object.handle(), \"%s\", rval.handle_mut())) {\n" + " if r#try!(get_dictionary_property(cx, object.handle(), \"%s\", rval.handle_mut()))" + " && !rval.is_undefined() {\n" "%s\n" " } else {\n" "%s\n" diff --git a/components/script/dom/dompoint.rs b/components/script/dom/dompoint.rs index 654e6dda3d8..6a89249342d 100644 --- a/components/script/dom/dompoint.rs +++ b/components/script/dom/dompoint.rs @@ -40,6 +40,11 @@ impl DOMPoint { Ok(DOMPoint::new(global, x, y, z, w)) } + // https://drafts.fxtf.org/geometry/#dom-dompoint-frompoint + pub fn FromPoint(global: &GlobalScope, init: &DOMPointInit) -> DomRoot { + Self::new_from_init(global, init) + } + pub fn new_from_init(global: &GlobalScope, p: &DOMPointInit) -> DomRoot { DOMPoint::new(global, p.x, p.y, p.z, p.w) } diff --git a/components/script/dom/dompointreadonly.rs b/components/script/dom/dompointreadonly.rs index 2387cb8f6d5..4c327107388 100644 --- a/components/script/dom/dompointreadonly.rs +++ b/components/script/dom/dompointreadonly.rs @@ -2,6 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ +use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit; use crate::dom::bindings::codegen::Bindings::DOMPointReadOnlyBinding::{ DOMPointReadOnlyMethods, Wrap, }; @@ -50,6 +51,11 @@ impl DOMPointReadOnly { ) -> Fallible> { Ok(DOMPointReadOnly::new(global, x, y, z, w)) } + + // https://drafts.fxtf.org/geometry/#dom-dompointreadonly-frompoint + pub fn FromPoint(global: &GlobalScope, init: &DOMPointInit) -> DomRoot { + Self::new(global, init.x, init.y, init.z, init.w) + } } impl DOMPointReadOnlyMethods for DOMPointReadOnly { diff --git a/components/script/dom/webidls/DOMPoint.webidl b/components/script/dom/webidls/DOMPoint.webidl index c2a014a4fd8..9f75a1c835f 100644 --- a/components/script/dom/webidls/DOMPoint.webidl +++ b/components/script/dom/webidls/DOMPoint.webidl @@ -14,6 +14,8 @@ optional unrestricted double z = 0, optional unrestricted double w = 1), Exposed=(Window,Worker)] interface DOMPoint : DOMPointReadOnly { + [NewObject] static DOMPoint fromPoint(optional DOMPointInit other = null); + inherit attribute unrestricted double x; inherit attribute unrestricted double y; inherit attribute unrestricted double z; diff --git a/components/script/dom/webidls/DOMPointReadOnly.webidl b/components/script/dom/webidls/DOMPointReadOnly.webidl index 66d66d669e5..b6478f31337 100644 --- a/components/script/dom/webidls/DOMPointReadOnly.webidl +++ b/components/script/dom/webidls/DOMPointReadOnly.webidl @@ -14,6 +14,8 @@ optional unrestricted double z = 0, optional unrestricted double w = 1), Exposed=(Window,Worker)] interface DOMPointReadOnly { + [NewObject] static DOMPointReadOnly fromPoint(optional DOMPointInit other = null); + readonly attribute unrestricted double x; readonly attribute unrestricted double y; readonly attribute unrestricted double z; diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 86135321792..720c7b25a00 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -677585,7 +677585,7 @@ "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/automation-rate-testing.js": [ - "73892dd845887d731779b3794a14df3f6bd36cba", + "43279f91d68d3c5e2d7a086c739c838b31dc7335", "support" ], "webaudio/the-audio-api/the-audioparam-interface/automation-rate.html": [ @@ -677617,7 +677617,7 @@ "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html": [ - "1672f0d975f2b2e2fd0c127663b403745b669265", + "6803f55eab00bbfb9766cc044a7240e6b4a0fda0", "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/k-rate-panner.html": [ diff --git a/tests/wpt/metadata/css/css-transitions/transitionevent-interface.html.ini b/tests/wpt/metadata/css/css-transitions/transitionevent-interface.html.ini deleted file mode 100644 index 18ebdebfb7c..00000000000 --- a/tests/wpt/metadata/css/css-transitions/transitionevent-interface.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[transitionevent-interface.html] - [elapsedTime set to undefined] - expected: FAIL - - [propertyName set to undefined] - expected: FAIL - diff --git a/tests/wpt/metadata/css/geometry/DOMMatrixInit-validate-fixup.html.ini b/tests/wpt/metadata/css/geometry/DOMMatrixInit-validate-fixup.html.ini index e823fe1b24d..54d6b4490f3 100644 --- a/tests/wpt/metadata/css/geometry/DOMMatrixInit-validate-fixup.html.ini +++ b/tests/wpt/metadata/css/geometry/DOMMatrixInit-validate-fixup.html.ini @@ -1,10 +1,4 @@ [DOMMatrixInit-validate-fixup.html] - [{is2D: undefined} (2d)] - expected: FAIL - - [{b: 0, m12: undefined} (2d)] - expected: FAIL - [{f: NaN, m42: NaN} (2d)] expected: FAIL diff --git a/tests/wpt/metadata/css/geometry/DOMPoint-001.html.ini b/tests/wpt/metadata/css/geometry/DOMPoint-001.html.ini deleted file mode 100644 index f2cfb97e90d..00000000000 --- a/tests/wpt/metadata/css/geometry/DOMPoint-001.html.ini +++ /dev/null @@ -1,26 +0,0 @@ -[DOMPoint-001.html] - type: testharness - [testConstructorDictionary2undefined] - expected: FAIL - - [testConstructorDictionary3] - expected: FAIL - - [testConstructorDictionary4] - expected: FAIL - - [testConstructorDictionary5] - expected: FAIL - - [testConstructorDictionary2irregular] - expected: FAIL - - [testConstructorDOMPoint] - expected: FAIL - - [testConstructorIllegal1] - expected: FAIL - - [testConstructorIllegal2] - expected: FAIL - diff --git a/tests/wpt/metadata/css/geometry/DOMPoint-002.html.ini b/tests/wpt/metadata/css/geometry/DOMPoint-002.html.ini index 901f3ad183c..419db00b16c 100644 --- a/tests/wpt/metadata/css/geometry/DOMPoint-002.html.ini +++ b/tests/wpt/metadata/css/geometry/DOMPoint-002.html.ini @@ -1,55 +1,7 @@ [DOMPoint-002.html] - [test DOMPoint fromPoint with empty object] - expected: FAIL - - [test DOMPoint fromPoint with x] - expected: FAIL - - [test DOMPoint fromPoint with x, y] - expected: FAIL - - [test DOMPoint fromPoint with x, y, z] - expected: FAIL - - [test DOMPoint fromPoint with x, y, z, w] - expected: FAIL - - [test DOMPoint fromPoint with x, y, z, w, v] - expected: FAIL - - [test DOMPoint fromPoint with x, z] - expected: FAIL - - [test DOMPoint fromPoint with undefined value] - expected: FAIL - [test DOMPoint matrixTransform] expected: FAIL - [test DOMPointReadOnly fromPoint with empty object] - expected: FAIL - - [test DOMPointReadOnly fromPoint with x] - expected: FAIL - - [test DOMPointReadOnly fromPoint with x, y] - expected: FAIL - - [test DOMPointReadOnly fromPoint with x, y, z] - expected: FAIL - - [test DOMPointReadOnly fromPoint with x, y, z, w] - expected: FAIL - - [test DOMPointReadOnly fromPoint with x, y, z, w, v] - expected: FAIL - - [test DOMPointReadOnly fromPoint with x, z] - expected: FAIL - - [test DOMPointReadOnly fromPoint with undefined value] - expected: FAIL - [test DOMPointReadOnly matrixTransform] expected: FAIL diff --git a/tests/wpt/metadata/css/geometry/interfaces.html.ini b/tests/wpt/metadata/css/geometry/interfaces.html.ini index b6286c0e9e4..67e7bfc4757 100644 --- a/tests/wpt/metadata/css/geometry/interfaces.html.ini +++ b/tests/wpt/metadata/css/geometry/interfaces.html.ini @@ -213,15 +213,9 @@ [PseudoElement interface object name] expected: FAIL - [DOMPointReadOnly interface: operation fromPoint(DOMPointInit)] - expected: FAIL - [DOMPointReadOnly interface: operation matrixTransform(DOMMatrixInit)] expected: FAIL - [DOMPointReadOnly interface: calling fromPoint(DOMPointInit) on new DOMPointReadOnly() with too few arguments must throw TypeError] - expected: FAIL - [DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "matrixTransform(DOMMatrixInit)" with the proper type] expected: FAIL @@ -231,15 +225,6 @@ [DOMPoint interface: legacy window alias] expected: FAIL - [DOMPoint interface: operation fromPoint(DOMPointInit)] - expected: FAIL - - [DOMPoint interface: calling fromPoint(DOMPointInit) on new DOMPoint() with too few arguments must throw TypeError] - expected: FAIL - - [DOMPointReadOnly interface: calling fromPoint(DOMPointInit) on new DOMPoint() with too few arguments must throw TypeError] - expected: FAIL - [DOMPointReadOnly interface: new DOMPoint() must inherit property "matrixTransform(DOMMatrixInit)" with the proper type] expected: FAIL diff --git a/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini b/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini index f361b253dc0..f21695bbfdc 100644 --- a/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini +++ b/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini @@ -1,28 +1,13 @@ [interfaces.worker.html] - [DOMPointReadOnly interface: operation fromPoint(DOMPointInit)] - expected: FAIL - [DOMPointReadOnly interface: operation matrixTransform(DOMMatrixInit)] expected: FAIL - [DOMPointReadOnly interface: calling fromPoint(DOMPointInit) on new DOMPointReadOnly() with too few arguments must throw TypeError] - expected: FAIL - [DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "matrixTransform(DOMMatrixInit)" with the proper type] expected: FAIL [DOMPointReadOnly interface: calling matrixTransform(DOMMatrixInit) on new DOMPointReadOnly() with too few arguments must throw TypeError] expected: FAIL - [DOMPoint interface: operation fromPoint(DOMPointInit)] - expected: FAIL - - [DOMPoint interface: calling fromPoint(DOMPointInit) on new DOMPoint() with too few arguments must throw TypeError] - expected: FAIL - - [DOMPointReadOnly interface: calling fromPoint(DOMPointInit) on new DOMPoint() with too few arguments must throw TypeError] - expected: FAIL - [DOMPointReadOnly interface: new DOMPoint() must inherit property "matrixTransform(DOMMatrixInit)" with the proper type] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-biquad.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-biquad.html.ini deleted file mode 100644 index 3d6983a5926..00000000000 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-biquad.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[k-rate-biquad.html] - expected: ERROR diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-gain.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-gain.html.ini deleted file mode 100644 index e479a35ccdc..00000000000 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-gain.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[k-rate-gain.html] - expected: ERROR diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html.ini index 2810e1b0234..0dc7689a7f3 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html.ini @@ -1,2 +1,10 @@ [k-rate-oscillator.html] - expected: ERROR + [X k-rate detune: Difference between a-rate and k-rate outputs should have contain at least one value different from 0.] + expected: FAIL + + [< [Oscillator k-rate detune\] 1 out of 1 assertions were failed.] + expected: FAIL + + [# AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed.] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-stereo-panner.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-stereo-panner.html.ini deleted file mode 100644 index c54ad68ca58..00000000000 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-stereo-panner.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[k-rate-stereo-panner.html] - expected: ERROR diff --git a/tests/wpt/metadata/webstorage/event_constructor.html.ini b/tests/wpt/metadata/webstorage/event_constructor.html.ini deleted file mode 100644 index a98ab74a83d..00000000000 --- a/tests/wpt/metadata/webstorage/event_constructor.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[event_constructor.html] - [constructor with undefined type argument and members] - expected: FAIL - diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/automation-rate-testing.js b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/automation-rate-testing.js index 73892dd8458..43279f91d68 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/automation-rate-testing.js +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/automation-rate-testing.js @@ -45,7 +45,7 @@ // The promise from |startRendering| is returned. function doTest(context, should, options) { let merger = new ChannelMergerNode( - context, {numberOfInputs: context.destination.numberOfChannels}); + context, {numberOfInputs: context.destination.channelCount}); merger.connect(context.destination); let src = null; diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html index 1672f0d975f..6803f55eab0 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html @@ -32,7 +32,7 @@ }); let merger = new ChannelMergerNode( - context, {numberOfInputs: context.numberOfChannels}); + context, {numberOfInputs: context.destination.channelCount}); merger.connect(context.destination); let inverter = new GainNode(context, {gain: -1}); inverter.connect(merger, 0, 2);