From: <rb...@us...> - 2017-12-11 18:02:01
|
Revision: 14994 http://sourceforge.net/p/htmlunit/code/14994 Author: rbri Date: 2017-12-11 18:01:58 +0000 (Mon, 11 Dec 2017) Log Message: ----------- CanvasGradient.addColorStop() added CanvasRenderingContext2D.createRadialGradient() now returns an CanvasGradient CanvasRenderingContext2D.createLinearGradient() now returns an CanvasGradient Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradient.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext2D.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext2DTest.java Added Paths: ----------- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradientTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2017-12-07 17:06:21 UTC (rev 14993) +++ trunk/htmlunit/src/changes/changes.xml 2017-12-11 18:01:58 UTC (rev 14994) @@ -8,6 +8,15 @@ <body> <release version="2.29" date="xx, 2017" description=""> + <action type="add" dev="rbri"> + JavaScript: CanvasGradient.addColorStop() added + </action> + <action type="fix" dev="rbri"> + JavaScript: CanvasRenderingContext2D.createRadialGradient() now returns an CanvasGradient + </action> + <action type="fix" dev="rbri"> + JavaScript: CanvasRenderingContext2D.createLinearGradient() now returns an CanvasGradient + </action> <action type="fix" dev="rbri" issue="1935"> Check option cssEnabled before downloading a css file (regression from 1927). </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradient.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradient.java 2017-12-07 17:06:21 UTC (rev 14993) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradient.java 2017-12-11 18:01:58 UTC (rev 14994) @@ -21,11 +21,13 @@ import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable; import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass; import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor; +import com.gargoylesoftware.htmlunit.javascript.configuration.JsxFunction; /** * A JavaScript object for {@code CanvasGradient}. * * @author Ahmed Ashour + * @author Ronald Brill */ @JsxClass public class CanvasGradient extends SimpleScriptable { @@ -36,4 +38,16 @@ @JsxConstructor({CHROME, FF, EDGE}) public CanvasGradient() { } + + /** + * Adds a new stop, defined by an offset and a color, to the gradient. + * @param offset A number between 0 and 1. An INDEX_SIZE_ERR is raised, + * if the number is not in that range. + * @param color A CSS <color>. A SYNTAX_ERR is raised, if the value + * can not be parsed as a CSS <color> value. + */ + @JsxFunction + public void addColorStop(final double offset, final String color) { + // empty + } } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext2D.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext2D.java 2017-12-07 17:06:21 UTC (rev 14993) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext2D.java 2017-12-11 18:01:58 UTC (rev 14994) @@ -257,11 +257,15 @@ * @param x1 the x1 * @param y1 the y1 * @param r1 the r1 + * @return the new CanvasGradient */ @JsxFunction - public void createLinearGradient(final double x0, final double y0, final double r0, final double x1, + public CanvasGradient createLinearGradient(final double x0, final double y0, final double r0, final double x1, final Object y1, final Object r1) { - //empty + final CanvasGradient canvasGradient = new CanvasGradient(); + canvasGradient.setParentScope(getParentScope()); + canvasGradient.setPrototype(getPrototype(canvasGradient.getClass())); + return canvasGradient; } /** @@ -274,10 +278,21 @@ /** * Creates a gradient. + * @param x0 the x axis of the coordinate of the start circle + * @param y0 the y axis of the coordinate of the start circle + * @param r0 the radius of the start circle + * @param x1 the x axis of the coordinate of the end circle + * @param y1 the y axis of the coordinate of the end circle + * @param r1 the radius of the end circle + * @return the new CanvasGradient */ @JsxFunction - public void createRadialGradient() { - //empty + public CanvasGradient createRadialGradient(final double x0, final double y0, + final double r0, final double x1, final double y1, final double r1) { + final CanvasGradient canvasGradient = new CanvasGradient(); + canvasGradient.setParentScope(getParentScope()); + canvasGradient.setPrototype(getPrototype(canvasGradient.getClass())); + return canvasGradient; } /** Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradientTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradientTest.java (rev 0) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradientTest.java 2017-12-11 18:01:58 UTC (rev 14994) @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2002-2017 Gargoyle Software Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gargoylesoftware.htmlunit.javascript.host.canvas; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; + +/** + * Unit tests for {@link CanvasGradient}. + * + * @author Ronald Brill + */ +@RunWith(BrowserRunner.class) +public class CanvasGradientTest extends WebDriverTestCase { + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts("function") + public void functions() throws Exception { + final String html = + "<html><head><script>\n" + + "function test() {\n" + + " var canvas = document.getElementById('myCanvas');\n" + + " var ctx = canvas.getContext('2d');\n" + + " var gradient = ctx.createRadialGradient(100, 100, 100, 100, 100, 0);\n" + + " alert(typeof gradient.addColorStop);\n" + + "}\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'><canvas id='myCanvas'></canvas></body>\n" + + "</html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts("[object CanvasGradient]") + public void addColorStop() throws Exception { + final String html = + "<html><head><script>\n" + + "function test() {\n" + + " var canvas = document.getElementById('myCanvas');\n" + + " var ctx = canvas.getContext('2d');\n" + + " var gradient = ctx.createRadialGradient(100, 100, 100, 100, 100, 0);\n" + + " gradient.addColorStop(0, 'green');\n" + + " gradient.addColorStop(1, 'white');\n" + + " alert(gradient);\n" + + "}\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'><canvas id='myCanvas'></canvas></body>\n" + + "</html>"; + loadPageWithAlerts2(html); + } +} Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasGradientTest.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext2DTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext2DTest.java 2017-12-07 17:06:21 UTC (rev 14993) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext2DTest.java 2017-12-11 18:01:58 UTC (rev 14994) @@ -34,6 +34,7 @@ * @author Ahmed Ashour * @author Marc Guillemot * @author Frank Danek + * @author Ronald Brill */ @RunWith(BrowserRunner.class) public class CanvasRenderingContext2DTest extends WebDriverTestCase { @@ -403,4 +404,46 @@ + "</html>"; loadPageWithAlerts2(html); } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts("[object CanvasGradient]") + public void createLinearGradient() throws Exception { + final String html = + "<html><head><script>\n" + + "function test() {\n" + + " var canvas = document.getElementById('myCanvas');\n" + + " var ctx = canvas.getContext('2d');\n" + + " var gradient = ctx.createLinearGradient(0, 0, 200, 0);\n" + + " alert(gradient);\n" + + "}\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'><canvas id='myCanvas'></canvas></body>\n" + + "</html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts("[object CanvasGradient]") + public void createRadialGradient() throws Exception { + final String html = + "<html><head><script>\n" + + "function test() {\n" + + " var canvas = document.getElementById('myCanvas');\n" + + " var ctx = canvas.getContext('2d');\n" + + " var gradient = ctx.createRadialGradient(100, 100, 100, 100, 100, 0);\n" + + " alert(gradient);\n" + + "}\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'><canvas id='myCanvas'></canvas></body>\n" + + "</html>"; + loadPageWithAlerts2(html); + } } |