<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[279093] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/279093">279093</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2021-06-21 17:22:44 -0700 (Mon, 21 Jun 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Use double instead of float where appropriate in HTML Canvas IDL
https://bugs.webkit.org/show_bug.cgi?id=227238

Reviewed by Sam Weinig.

There are a lot of places in our HTML Canvas IDL where we're using float type, even though
the specification is using double. This patch fixes those.

* html/canvas/CanvasCompositing.idl:
* html/canvas/CanvasDrawImage.idl:
* html/canvas/CanvasDrawPath.idl:
* html/canvas/CanvasGradient.cpp:
(WebCore::CanvasGradient::addColorStop):
* html/canvas/CanvasGradient.h:
* html/canvas/CanvasGradient.idl:
* html/canvas/CanvasPathDrawingStyles.idl:
* html/canvas/CanvasRect.idl:
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::fillText):
(WebCore::CanvasRenderingContext2D::strokeText):
(WebCore::CanvasRenderingContext2D::drawTextInternal):
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2D.idl:
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::setLineWidth):
(WebCore::CanvasRenderingContext2DBase::setMiterLimit):
(WebCore::lineDashSequenceIsValid):
(WebCore::CanvasRenderingContext2DBase::setLineDash):
(WebCore::CanvasRenderingContext2DBase::setWebkitLineDash):
(WebCore::CanvasRenderingContext2DBase::setLineDashOffset):
(WebCore::CanvasRenderingContext2DBase::setGlobalAlpha):
(WebCore::CanvasRenderingContext2DBase::scale):
(WebCore::CanvasRenderingContext2DBase::rotate):
(WebCore::CanvasRenderingContext2DBase::translate):
(WebCore::CanvasRenderingContext2DBase::transform):
(WebCore::CanvasRenderingContext2DBase::setTransform):
(WebCore::validateRectForCanvas):
(WebCore::CanvasRenderingContext2DBase::isPointInPath):
(WebCore::CanvasRenderingContext2DBase::isPointInStroke):
(WebCore::CanvasRenderingContext2DBase::isPointInPathInternal):
(WebCore::CanvasRenderingContext2DBase::isPointInStrokeInternal):
(WebCore::CanvasRenderingContext2DBase::clearRect):
(WebCore::CanvasRenderingContext2DBase::fillRect):
(WebCore::CanvasRenderingContext2DBase::strokeRect):
(WebCore::CanvasRenderingContext2DBase::canDrawText):
(WebCore::CanvasRenderingContext2DBase::drawText):
(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):
* html/canvas/CanvasRenderingContext2DBase.h:
(WebCore::CanvasRenderingContext2DBase::lineWidth const):
(WebCore::CanvasRenderingContext2DBase::miterLimit const):
(WebCore::CanvasRenderingContext2DBase::getLineDash const):
(WebCore::CanvasRenderingContext2DBase::webkitLineDash const):
(WebCore::CanvasRenderingContext2DBase::lineDashOffset const):
(WebCore::CanvasRenderingContext2DBase::globalAlpha const):
* html/canvas/CanvasShadowStyles.idl:
* html/canvas/CanvasText.idl:
* html/canvas/CanvasTransform.idl:
* html/canvas/OffscreenCanvasRenderingContext2D.cpp:
(WebCore::OffscreenCanvasRenderingContext2D::fillText):
(WebCore::OffscreenCanvasRenderingContext2D::strokeText):
* html/canvas/OffscreenCanvasRenderingContext2D.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::processArgument):
* inspector/InspectorCanvasCallTracer.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasCompositingidl">trunk/Source/WebCore/html/canvas/CanvasCompositing.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasDrawImageidl">trunk/Source/WebCore/html/canvas/CanvasDrawImage.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasDrawPathidl">trunk/Source/WebCore/html/canvas/CanvasDrawPath.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasGradientcpp">trunk/Source/WebCore/html/canvas/CanvasGradient.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasGradienth">trunk/Source/WebCore/html/canvas/CanvasGradient.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasGradientidl">trunk/Source/WebCore/html/canvas/CanvasGradient.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasPathDrawingStylesidl">trunk/Source/WebCore/html/canvas/CanvasPathDrawingStyles.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRectidl">trunk/Source/WebCore/html/canvas/CanvasRect.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dcpp">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dh">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Didl">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2DBasecpp">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2DBaseh">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasShadowStylesidl">trunk/Source/WebCore/html/canvas/CanvasShadowStyles.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasTextidl">trunk/Source/WebCore/html/canvas/CanvasText.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasTransformidl">trunk/Source/WebCore/html/canvas/CanvasTransform.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasOffscreenCanvasRenderingContext2Dcpp">trunk/Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasOffscreenCanvasRenderingContext2Dh">trunk/Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorCanvascpp">trunk/Source/WebCore/inspector/InspectorCanvas.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorCanvasCallTracerh">trunk/Source/WebCore/inspector/InspectorCanvasCallTracer.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/ChangeLog      2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -1,3 +1,70 @@
</span><ins>+2021-06-21  Chris Dumez  <cdumez@apple.com>
+
+        Use double instead of float where appropriate in HTML Canvas IDL
+        https://bugs.webkit.org/show_bug.cgi?id=227238
+
+        Reviewed by Sam Weinig.
+
+        There are a lot of places in our HTML Canvas IDL where we're using float type, even though
+        the specification is using double. This patch fixes those.
+
+        * html/canvas/CanvasCompositing.idl:
+        * html/canvas/CanvasDrawImage.idl:
+        * html/canvas/CanvasDrawPath.idl:
+        * html/canvas/CanvasGradient.cpp:
+        (WebCore::CanvasGradient::addColorStop):
+        * html/canvas/CanvasGradient.h:
+        * html/canvas/CanvasGradient.idl:
+        * html/canvas/CanvasPathDrawingStyles.idl:
+        * html/canvas/CanvasRect.idl:
+        * html/canvas/CanvasRenderingContext2D.cpp:
+        (WebCore::CanvasRenderingContext2D::fillText):
+        (WebCore::CanvasRenderingContext2D::strokeText):
+        (WebCore::CanvasRenderingContext2D::drawTextInternal):
+        * html/canvas/CanvasRenderingContext2D.h:
+        * html/canvas/CanvasRenderingContext2D.idl:
+        * html/canvas/CanvasRenderingContext2DBase.cpp:
+        (WebCore::CanvasRenderingContext2DBase::setLineWidth):
+        (WebCore::CanvasRenderingContext2DBase::setMiterLimit):
+        (WebCore::lineDashSequenceIsValid):
+        (WebCore::CanvasRenderingContext2DBase::setLineDash):
+        (WebCore::CanvasRenderingContext2DBase::setWebkitLineDash):
+        (WebCore::CanvasRenderingContext2DBase::setLineDashOffset):
+        (WebCore::CanvasRenderingContext2DBase::setGlobalAlpha):
+        (WebCore::CanvasRenderingContext2DBase::scale):
+        (WebCore::CanvasRenderingContext2DBase::rotate):
+        (WebCore::CanvasRenderingContext2DBase::translate):
+        (WebCore::CanvasRenderingContext2DBase::transform):
+        (WebCore::CanvasRenderingContext2DBase::setTransform):
+        (WebCore::validateRectForCanvas):
+        (WebCore::CanvasRenderingContext2DBase::isPointInPath):
+        (WebCore::CanvasRenderingContext2DBase::isPointInStroke):
+        (WebCore::CanvasRenderingContext2DBase::isPointInPathInternal):
+        (WebCore::CanvasRenderingContext2DBase::isPointInStrokeInternal):
+        (WebCore::CanvasRenderingContext2DBase::clearRect):
+        (WebCore::CanvasRenderingContext2DBase::fillRect):
+        (WebCore::CanvasRenderingContext2DBase::strokeRect):
+        (WebCore::CanvasRenderingContext2DBase::canDrawText):
+        (WebCore::CanvasRenderingContext2DBase::drawText):
+        (WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):
+        * html/canvas/CanvasRenderingContext2DBase.h:
+        (WebCore::CanvasRenderingContext2DBase::lineWidth const):
+        (WebCore::CanvasRenderingContext2DBase::miterLimit const):
+        (WebCore::CanvasRenderingContext2DBase::getLineDash const):
+        (WebCore::CanvasRenderingContext2DBase::webkitLineDash const):
+        (WebCore::CanvasRenderingContext2DBase::lineDashOffset const):
+        (WebCore::CanvasRenderingContext2DBase::globalAlpha const):
+        * html/canvas/CanvasShadowStyles.idl:
+        * html/canvas/CanvasText.idl:
+        * html/canvas/CanvasTransform.idl:
+        * html/canvas/OffscreenCanvasRenderingContext2D.cpp:
+        (WebCore::OffscreenCanvasRenderingContext2D::fillText):
+        (WebCore::OffscreenCanvasRenderingContext2D::strokeText):
+        * html/canvas/OffscreenCanvasRenderingContext2D.h:
+        * inspector/InspectorCanvas.cpp:
+        (WebCore::InspectorCanvas::processArgument):
+        * inspector/InspectorCanvasCallTracer.h:
+
</ins><span class="cx"> 2021-06-21  Fujii Hironori  <Hironori.Fujii@sony.com>
</span><span class="cx"> 
</span><span class="cx">         [WinCairo] Turn ENABLE_SHAREABLE_RESOURCE on
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasCompositingidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasCompositing.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasCompositing.idl   2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasCompositing.idl      2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -25,9 +25,7 @@
</span><span class="cx"> 
</span><span class="cx"> // https://html.spec.whatwg.org/multipage/canvas.html#canvascompositing
</span><span class="cx"> interface mixin CanvasCompositing {
</span><del>-    // FIXME: All the unrestricted float attributes below should be unrestricted doubles.
-
</del><span class="cx">     // compositing
</span><del>-    attribute unrestricted float globalAlpha; // (default 1.0)
</del><ins>+    attribute unrestricted double globalAlpha; // (default 1.0)
</ins><span class="cx">     attribute DOMString globalCompositeOperation; // (default source-over)
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasDrawImageidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasDrawImage.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasDrawImage.idl     2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasDrawImage.idl        2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -38,8 +38,6 @@
</span><span class="cx"> 
</span><span class="cx"> // https://html.spec.whatwg.org/multipage/canvas.html#canvasdrawimage
</span><span class="cx"> interface mixin CanvasDrawImage {
</span><del>-    // FIXME: All the unrestricted float arguments below should be unrestricted doubles.
-
</del><span class="cx">     // drawing images
</span><span class="cx">     undefined drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy);
</span><span class="cx">     undefined drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasDrawPathidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasDrawPath.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasDrawPath.idl      2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasDrawPath.idl 2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -36,9 +36,8 @@
</span><span class="cx">     // FIXME: Implement resetClip.
</span><span class="cx">     // undefined resetClip();
</span><span class="cx"> 
</span><del>-    // FIXME: All the unrestricted float parameters below should be unrestricted doubles.
-    boolean isPointInPath(unrestricted float x, unrestricted float y, optional CanvasFillRule fillRule = "nonzero");
-    boolean isPointInPath(Path2D path, unrestricted float x, unrestricted float y, optional CanvasFillRule fillRule = "nonzero");
-    boolean isPointInStroke(unrestricted float x, unrestricted float y);
-    boolean isPointInStroke(Path2D path, unrestricted float x, unrestricted float y);
</del><ins>+    boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
+    boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
+    boolean isPointInStroke(unrestricted double x, unrestricted double y);
+    boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasGradientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasGradient.cpp (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasGradient.cpp      2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasGradient.cpp 2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> 
</span><span class="cx"> CanvasGradient::~CanvasGradient() = default;
</span><span class="cx"> 
</span><del>-ExceptionOr<void> CanvasGradient::addColorStop(float value, const String& colorString)
</del><ins>+ExceptionOr<void> CanvasGradient::addColorStop(double value, const String& colorString)
</ins><span class="cx"> {
</span><span class="cx">     if (!(value >= 0 && value <= 1))
</span><span class="cx">         return Exception { IndexSizeError };
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">     if (!color.isValid())
</span><span class="cx">         return Exception { SyntaxError };
</span><span class="cx"> 
</span><del>-    m_gradient->addColorStop({ value, WTFMove(color) });
</del><ins>+    m_gradient->addColorStop({ static_cast<float>(value), WTFMove(color) });
</ins><span class="cx">     return { };
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasGradienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasGradient.h (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasGradient.h        2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasGradient.h   2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">     Gradient& gradient() { return m_gradient; }
</span><span class="cx">     const Gradient& gradient() const { return m_gradient; }
</span><span class="cx"> 
</span><del>-    ExceptionOr<void> addColorStop(float value, const String& color);
</del><ins>+    ExceptionOr<void> addColorStop(double value, const String& color);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CanvasGradient(const FloatPoint& p0, const FloatPoint& p1, CanvasBase&);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasGradientidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasGradient.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasGradient.idl      2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasGradient.idl 2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -28,8 +28,6 @@
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="cx">     ImplementationLacksVTable
</span><span class="cx"> ] interface CanvasGradient {
</span><del>-    // FIXME: The float parameters below should be a double.
-
</del><span class="cx">     // opaque object
</span><del>-    undefined addColorStop(float offset, DOMString color);
</del><ins>+    undefined addColorStop(double offset, DOMString color);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasPathDrawingStylesidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasPathDrawingStyles.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasPathDrawingStyles.idl     2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasPathDrawingStyles.idl        2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -25,16 +25,14 @@
</span><span class="cx"> 
</span><span class="cx"> // https://html.spec.whatwg.org/multipage/canvas.html#canvaspathdrawingstyles
</span><span class="cx"> interface mixin CanvasPathDrawingStyles {
</span><del>-    // FIXME: All the unrestricted float arguments / attributes below should be unrestricted doubles.
-
</del><span class="cx">     // line caps/joins
</span><del>-    attribute unrestricted float lineWidth; // (default 1)
</del><ins>+    attribute unrestricted double lineWidth; // (default 1)
</ins><span class="cx">     attribute CanvasLineCap lineCap; // (default "butt")
</span><span class="cx">     attribute CanvasLineJoin lineJoin; // (default "miter")
</span><del>-    attribute unrestricted float miterLimit; // (default 10)
</del><ins>+    attribute unrestricted double miterLimit; // (default 10)
</ins><span class="cx"> 
</span><span class="cx">     // dashed lines
</span><del>-    undefined setLineDash(sequence<unrestricted float> segments); // default empty
-    sequence<unrestricted float> getLineDash();
-    attribute unrestricted float lineDashOffset;
</del><ins>+    undefined setLineDash(sequence<unrestricted double> segments); // default empty
+    sequence<unrestricted double> getLineDash();
+    attribute unrestricted double lineDashOffset;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRectidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRect.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRect.idl  2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasRect.idl     2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -25,10 +25,8 @@
</span><span class="cx"> 
</span><span class="cx"> // https://html.spec.whatwg.org/multipage/canvas.html#canvasrect
</span><span class="cx"> interface mixin CanvasRect {
</span><del>-    // FIXME: All the unrestricted float parameters below should be unrestricted doubles.
-
</del><span class="cx">     // rects
</span><del>-    undefined clearRect(unrestricted float x, unrestricted float y, unrestricted float w, unrestricted float h);
-    undefined fillRect(unrestricted float x, unrestricted float y, unrestricted float w, unrestricted float h);
-    undefined strokeRect(unrestricted float x, unrestricted float y, unrestricted float w, unrestricted float h);
</del><ins>+    undefined clearRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
+    undefined fillRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
+    undefined strokeRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp    2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp       2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -181,12 +181,12 @@
</span><span class="cx">     return toTextDirection(state().direction) == TextDirection::RTL ? CanvasDirection::Rtl : CanvasDirection::Ltr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2D::fillText(const String& text, float x, float y, std::optional<float> maxWidth)
</del><ins>+void CanvasRenderingContext2D::fillText(const String& text, double x, double y, std::optional<double> maxWidth)
</ins><span class="cx"> {
</span><span class="cx">     drawTextInternal(text, x, y, true, maxWidth);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2D::strokeText(const String& text, float x, float y, std::optional<float> maxWidth)
</del><ins>+void CanvasRenderingContext2D::strokeText(const String& text, double x, double y, std::optional<double> maxWidth)
</ins><span class="cx"> {
</span><span class="cx">     drawTextInternal(text, x, y, false, maxWidth);
</span><span class="cx"> }
</span><span class="lines">@@ -224,7 +224,7 @@
</span><span class="cx">     return &state().font;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2D::drawTextInternal(const String& text, float x, float y, bool fill, std::optional<float> maxWidth)
</del><ins>+void CanvasRenderingContext2D::drawTextInternal(const String& text, double x, double y, bool fill, std::optional<double> maxWidth)
</ins><span class="cx"> {
</span><span class="cx">     downcast<HTMLCanvasElement>(canvasBase()).document().updateStyleIfNeeded();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h      2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h 2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -49,8 +49,8 @@
</span><span class="cx"> 
</span><span class="cx">     CanvasDirection direction() const;
</span><span class="cx"> 
</span><del>-    void fillText(const String& text, float x, float y, std::optional<float> maxWidth = std::nullopt);
-    void strokeText(const String& text, float x, float y, std::optional<float> maxWidth = std::nullopt);
</del><ins>+    void fillText(const String& text, double x, double y, std::optional<double> maxWidth = std::nullopt);
+    void strokeText(const String& text, double x, double y, std::optional<double> maxWidth = std::nullopt);
</ins><span class="cx">     Ref<TextMetrics> measureText(const String& text);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> 
</span><span class="cx">     void setFontWithoutUpdatingStyle(const String&);
</span><span class="cx"> 
</span><del>-    void drawTextInternal(const String& text, float x, float y, bool fill, std::optional<float> maxWidth = std::nullopt);
</del><ins>+    void drawTextInternal(const String& text, double x, double y, bool fill, std::optional<double> maxWidth = std::nullopt);
</ins><span class="cx"> 
</span><span class="cx">     void drawFocusIfNeededInternal(const Path&, Element&);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Didl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl    2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl       2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -64,8 +64,8 @@
</span><span class="cx">     undefined setLineCap(optional DOMString cap);
</span><span class="cx">     undefined setLineJoin(optional DOMString join);
</span><span class="cx">     undefined setMiterLimit(optional unrestricted float limit = NaN);
</span><del>-    attribute sequence<unrestricted float> webkitLineDash;
-    [ImplementedAs=lineDashOffset] attribute unrestricted float webkitLineDashOffset;
</del><ins>+    attribute sequence<unrestricted double> webkitLineDash;
+    [ImplementedAs=lineDashOffset] attribute unrestricted double webkitLineDashOffset;
</ins><span class="cx"> 
</span><span class="cx">     // Non-standard legacy aliases (CanvasShadowStyles).
</span><span class="cx">     undefined setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, optional DOMString color, optional unrestricted float alpha);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2DBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp        2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp   2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -515,7 +515,7 @@
</span><span class="cx">     state.unparsedFillColor = String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::setLineWidth(float width)
</del><ins>+void CanvasRenderingContext2DBase::setLineWidth(double width)
</ins><span class="cx"> {
</span><span class="cx">     if (!(std::isfinite(width) && width > 0))
</span><span class="cx">         return;
</span><span class="lines">@@ -585,7 +585,7 @@
</span><span class="cx">     setLineJoin(join);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::setMiterLimit(float limit)
</del><ins>+void CanvasRenderingContext2DBase::setMiterLimit(double limit)
</ins><span class="cx"> {
</span><span class="cx">     if (!(std::isfinite(limit) && limit > 0))
</span><span class="cx">         return;
</span><span class="lines">@@ -644,7 +644,7 @@
</span><span class="cx">     applyShadow();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool lineDashSequenceIsValid(const Vector<float>& dash)
</del><ins>+static bool lineDashSequenceIsValid(const Vector<double>& dash)
</ins><span class="cx"> {
</span><span class="cx">     for (size_t i = 0; i < dash.size(); i++) {
</span><span class="cx">         if (!std::isfinite(dash[i]) || dash[i] < 0)
</span><span class="lines">@@ -653,7 +653,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::setLineDash(const Vector<float>& dash)
</del><ins>+void CanvasRenderingContext2DBase::setLineDash(const Vector<double>& dash)
</ins><span class="cx"> {
</span><span class="cx">     if (!lineDashSequenceIsValid(dash))
</span><span class="cx">         return;
</span><span class="lines">@@ -668,7 +668,7 @@
</span><span class="cx">     applyLineDash();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::setWebkitLineDash(const Vector<float>& dash)
</del><ins>+void CanvasRenderingContext2DBase::setWebkitLineDash(const Vector<double>& dash)
</ins><span class="cx"> {
</span><span class="cx">     if (!lineDashSequenceIsValid(dash))
</span><span class="cx">         return;
</span><span class="lines">@@ -679,7 +679,7 @@
</span><span class="cx">     applyLineDash();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::setLineDashOffset(float offset)
</del><ins>+void CanvasRenderingContext2DBase::setLineDashOffset(double offset)
</ins><span class="cx"> {
</span><span class="cx">     if (!std::isfinite(offset) || state().lineDashOffset == offset)
</span><span class="cx">         return;
</span><span class="lines">@@ -700,7 +700,7 @@
</span><span class="cx">     c->setLineDash(convertedLineDash, state().lineDashOffset);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::setGlobalAlpha(float alpha)
</del><ins>+void CanvasRenderingContext2DBase::setGlobalAlpha(double alpha)
</ins><span class="cx"> {
</span><span class="cx">     if (!(alpha >= 0 && alpha <= 1))
</span><span class="cx">         return;
</span><span class="lines">@@ -731,7 +731,7 @@
</span><span class="cx">     c->setCompositeOperation(op, blendMode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::scale(float sx, float sy)
</del><ins>+void CanvasRenderingContext2DBase::scale(double sx, double sy)
</ins><span class="cx"> {
</span><span class="cx">     GraphicsContext* c = drawingContext();
</span><span class="cx">     if (!c)
</span><span class="lines">@@ -759,7 +759,7 @@
</span><span class="cx">     m_path.transform(AffineTransform().scaleNonUniform(1.0 / sx, 1.0 / sy));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::rotate(float angleInRadians)
</del><ins>+void CanvasRenderingContext2DBase::rotate(double angleInRadians)
</ins><span class="cx"> {
</span><span class="cx">     GraphicsContext* c = drawingContext();
</span><span class="cx">     if (!c)
</span><span class="lines">@@ -782,7 +782,7 @@
</span><span class="cx">     m_path.transform(AffineTransform().rotate(-angleInRadians / piDouble * 180.0));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::translate(float tx, float ty)
</del><ins>+void CanvasRenderingContext2DBase::translate(double tx, double ty)
</ins><span class="cx"> {
</span><span class="cx">     GraphicsContext* c = drawingContext();
</span><span class="cx">     if (!c)
</span><span class="lines">@@ -805,7 +805,7 @@
</span><span class="cx">     m_path.transform(AffineTransform().translate(-tx, -ty));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::transform(float m11, float m12, float m21, float m22, float dx, float dy)
</del><ins>+void CanvasRenderingContext2DBase::transform(double m11, double m12, double m21, double m22, double dx, double dy)
</ins><span class="cx"> {
</span><span class="cx">     GraphicsContext* c = drawingContext();
</span><span class="cx">     if (!c)
</span><span class="lines">@@ -837,7 +837,7 @@
</span><span class="cx">     return DOMMatrix::create(state().transform.toTransformationMatrix(), DOMMatrixReadOnly::Is2D::Yes);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::setTransform(float m11, float m12, float m21, float m22, float dx, float dy)
</del><ins>+void CanvasRenderingContext2DBase::setTransform(double m11, double m12, double m21, double m22, double dx, double dy)
</ins><span class="cx"> {
</span><span class="cx">     GraphicsContext* c = drawingContext();
</span><span class="cx">     if (!c)
</span><span class="lines">@@ -965,7 +965,7 @@
</span><span class="cx">     m_path.clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool validateRectForCanvas(float& x, float& y, float& width, float& height)
</del><ins>+static bool validateRectForCanvas(double& x, double& y, double& width, double& height)
</ins><span class="cx"> {
</span><span class="cx">     if (!std::isfinite(x) | !std::isfinite(y) | !std::isfinite(width) | !std::isfinite(height))
</span><span class="cx">         return false;
</span><span class="lines">@@ -1137,27 +1137,27 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CanvasRenderingContext2DBase::isPointInPath(float x, float y, CanvasFillRule windingRule)
</del><ins>+bool CanvasRenderingContext2DBase::isPointInPath(double x, double y, CanvasFillRule windingRule)
</ins><span class="cx"> {
</span><span class="cx">     return isPointInPathInternal(m_path, x, y, windingRule);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CanvasRenderingContext2DBase::isPointInStroke(float x, float y)
</del><ins>+bool CanvasRenderingContext2DBase::isPointInStroke(double x, double y)
</ins><span class="cx"> {
</span><span class="cx">     return isPointInStrokeInternal(m_path, x, y);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CanvasRenderingContext2DBase::isPointInPath(Path2D& path, float x, float y, CanvasFillRule windingRule)
</del><ins>+bool CanvasRenderingContext2DBase::isPointInPath(Path2D& path, double x, double y, CanvasFillRule windingRule)
</ins><span class="cx"> {
</span><span class="cx">     return isPointInPathInternal(path.path(), x, y, windingRule);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CanvasRenderingContext2DBase::isPointInStroke(Path2D& path, float x, float y)
</del><ins>+bool CanvasRenderingContext2DBase::isPointInStroke(Path2D& path, double x, double y)
</ins><span class="cx"> {
</span><span class="cx">     return isPointInStrokeInternal(path.path(), x, y);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CanvasRenderingContext2DBase::isPointInPathInternal(const Path& path, float x, float y, CanvasFillRule windingRule)
</del><ins>+bool CanvasRenderingContext2DBase::isPointInPathInternal(const Path& path, double x, double y, CanvasFillRule windingRule)
</ins><span class="cx"> {
</span><span class="cx">     if (!drawingContext())
</span><span class="cx">         return false;
</span><span class="lines">@@ -1172,7 +1172,7 @@
</span><span class="cx">     return path.contains(transformedPoint, toWindRule(windingRule));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CanvasRenderingContext2DBase::isPointInStrokeInternal(const Path& path, float x, float y)
</del><ins>+bool CanvasRenderingContext2DBase::isPointInStrokeInternal(const Path& path, double x, double y)
</ins><span class="cx"> {
</span><span class="cx">     if (!drawingContext())
</span><span class="cx">         return false;
</span><span class="lines">@@ -1197,7 +1197,7 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::clearRect(float x, float y, float width, float height)
</del><ins>+void CanvasRenderingContext2DBase::clearRect(double x, double y, double width, double height)
</ins><span class="cx"> {
</span><span class="cx">     if (!validateRectForCanvas(x, y, width, height))
</span><span class="cx">         return;
</span><span class="lines">@@ -1234,7 +1234,7 @@
</span><span class="cx">     didDraw(rect);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::fillRect(float x, float y, float width, float height)
</del><ins>+void CanvasRenderingContext2DBase::fillRect(double x, double y, double width, double height)
</ins><span class="cx"> {
</span><span class="cx">     if (!validateRectForCanvas(x, y, width, height))
</span><span class="cx">         return;
</span><span class="lines">@@ -1278,7 +1278,7 @@
</span><span class="cx">         didDraw(rect);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::strokeRect(float x, float y, float width, float height)
</del><ins>+void CanvasRenderingContext2DBase::strokeRect(double x, double y, double width, double height)
</ins><span class="cx"> {
</span><span class="cx">     if (!validateRectForCanvas(x, y, width, height))
</span><span class="cx">         return;
</span><span class="lines">@@ -2352,7 +2352,7 @@
</span><span class="cx">     modifiableState().direction = direction;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CanvasRenderingContext2DBase::canDrawText(float x, float y, bool fill, std::optional<float> maxWidth)
</del><ins>+bool CanvasRenderingContext2DBase::canDrawText(double x, double y, bool fill, std::optional<double> maxWidth)
</ins><span class="cx"> {
</span><span class="cx">     if (!fontProxy()->realized())
</span><span class="cx">         return false;
</span><span class="lines">@@ -2409,7 +2409,7 @@
</span><span class="cx">     return String::adopt(WTFMove(charVector));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::drawText(const String& text, float x, float y, bool fill, std::optional<float> maxWidth)
</del><ins>+void CanvasRenderingContext2DBase::drawText(const String& text, double x, double y, bool fill, std::optional<double> maxWidth)
</ins><span class="cx"> {
</span><span class="cx">     if (!canDrawText(x, y, fill, maxWidth))
</span><span class="cx">         return;
</span><span class="lines">@@ -2420,7 +2420,7 @@
</span><span class="cx">     drawTextUnchecked(textRun, x, y, fill, maxWidth);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CanvasRenderingContext2DBase::drawTextUnchecked(const TextRun& textRun, float x, float y, bool fill, std::optional<float> maxWidth)
</del><ins>+void CanvasRenderingContext2DBase::drawTextUnchecked(const TextRun& textRun, double x, double y, bool fill, std::optional<double> maxWidth)
</ins><span class="cx"> {
</span><span class="cx">     auto* c = drawingContext();
</span><span class="cx">     auto& fontProxy = *this->fontProxy();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2DBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h  2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h     2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -87,8 +87,8 @@
</span><span class="cx"> 
</span><span class="cx">     const CanvasRenderingContext2DSettings& getContextAttributes() const { return m_settings; }
</span><span class="cx"> 
</span><del>-    float lineWidth() const { return state().lineWidth; }
-    void setLineWidth(float);
</del><ins>+    double lineWidth() const { return state().lineWidth; }
+    void setLineWidth(double);
</ins><span class="cx"> 
</span><span class="cx">     CanvasLineCap lineCap() const { return state().canvasLineCap(); }
</span><span class="cx">     void setLineCap(CanvasLineCap);
</span><span class="lines">@@ -98,17 +98,17 @@
</span><span class="cx">     void setLineJoin(CanvasLineJoin);
</span><span class="cx">     void setLineJoin(const String&);
</span><span class="cx"> 
</span><del>-    float miterLimit() const { return state().miterLimit; }
-    void setMiterLimit(float);
</del><ins>+    double miterLimit() const { return state().miterLimit; }
+    void setMiterLimit(double);
</ins><span class="cx"> 
</span><del>-    const Vector<float>& getLineDash() const { return state().lineDash; }
-    void setLineDash(const Vector<float>&);
</del><ins>+    const Vector<double>& getLineDash() const { return state().lineDash; }
+    void setLineDash(const Vector<double>&);
</ins><span class="cx"> 
</span><del>-    const Vector<float>& webkitLineDash() const { return getLineDash(); }
-    void setWebkitLineDash(const Vector<float>&);
</del><ins>+    const Vector<double>& webkitLineDash() const { return getLineDash(); }
+    void setWebkitLineDash(const Vector<double>&);
</ins><span class="cx"> 
</span><del>-    float lineDashOffset() const { return state().lineDashOffset; }
-    void setLineDashOffset(float);
</del><ins>+    double lineDashOffset() const { return state().lineDashOffset; }
+    void setLineDashOffset(double);
</ins><span class="cx"> 
</span><span class="cx">     float shadowOffsetX() const { return state().shadowOffset.width(); }
</span><span class="cx">     void setShadowOffsetX(float);
</span><span class="lines">@@ -122,8 +122,8 @@
</span><span class="cx">     String shadowColor() const { return state().shadowColorString(); }
</span><span class="cx">     void setShadowColor(const String&);
</span><span class="cx"> 
</span><del>-    float globalAlpha() const { return state().globalAlpha; }
-    void setGlobalAlpha(float);
</del><ins>+    double globalAlpha() const { return state().globalAlpha; }
+    void setGlobalAlpha(double);
</ins><span class="cx"> 
</span><span class="cx">     String globalCompositeOperation() const { return state().globalCompositeOperationString(); }
</span><span class="cx">     void setGlobalCompositeOperation(const String&);
</span><span class="lines">@@ -131,13 +131,13 @@
</span><span class="cx">     void save() { ++m_unrealizedSaveCount; }
</span><span class="cx">     void restore();
</span><span class="cx"> 
</span><del>-    void scale(float sx, float sy);
-    void rotate(float angleInRadians);
-    void translate(float tx, float ty);
-    void transform(float m11, float m12, float m21, float m22, float dx, float dy);
</del><ins>+    void scale(double sx, double sy);
+    void rotate(double angleInRadians);
+    void translate(double tx, double ty);
+    void transform(double m11, double m12, double m21, double m22, double dx, double dy);
</ins><span class="cx"> 
</span><span class="cx">     Ref<DOMMatrix> getTransform() const;
</span><del>-    void setTransform(float m11, float m12, float m21, float m22, float dx, float dy);
</del><ins>+    void setTransform(double m11, double m12, double m21, double m22, double dx, double dy);
</ins><span class="cx">     ExceptionOr<void> setTransform(DOMMatrix2DInit&&);
</span><span class="cx">     void resetTransform();
</span><span class="cx"> 
</span><span class="lines">@@ -159,15 +159,15 @@
</span><span class="cx">     void stroke(Path2D&);
</span><span class="cx">     void clip(Path2D&, CanvasFillRule = CanvasFillRule::Nonzero);
</span><span class="cx"> 
</span><del>-    bool isPointInPath(float x, float y, CanvasFillRule = CanvasFillRule::Nonzero);
-    bool isPointInStroke(float x, float y);
</del><ins>+    bool isPointInPath(double x, double y, CanvasFillRule = CanvasFillRule::Nonzero);
+    bool isPointInStroke(double x, double y);
</ins><span class="cx"> 
</span><del>-    bool isPointInPath(Path2D&, float x, float y, CanvasFillRule = CanvasFillRule::Nonzero);
-    bool isPointInStroke(Path2D&, float x, float y);
</del><ins>+    bool isPointInPath(Path2D&, double x, double y, CanvasFillRule = CanvasFillRule::Nonzero);
+    bool isPointInStroke(Path2D&, double x, double y);
</ins><span class="cx"> 
</span><del>-    void clearRect(float x, float y, float width, float height);
-    void fillRect(float x, float y, float width, float height);
-    void strokeRect(float x, float y, float width, float height);
</del><ins>+    void clearRect(double x, double y, double width, double height);
+    void fillRect(double x, double y, double width, double height);
+    void strokeRect(double x, double y, double width, double height);
</ins><span class="cx"> 
</span><span class="cx">     void setShadow(float width, float height, float blur, const String& color = String(), std::optional<float> alpha = std::nullopt);
</span><span class="cx">     void setShadow(float width, float height, float blur, float grayLevel, float alpha = 1.0);
</span><span class="lines">@@ -257,20 +257,20 @@
</span><span class="cx">         String unparsedFillColor;
</span><span class="cx">         CanvasStyle strokeStyle;
</span><span class="cx">         CanvasStyle fillStyle;
</span><del>-        float lineWidth;
</del><ins>+        double lineWidth;
</ins><span class="cx">         LineCap lineCap;
</span><span class="cx">         LineJoin lineJoin;
</span><del>-        float miterLimit;
</del><ins>+        double miterLimit;
</ins><span class="cx">         FloatSize shadowOffset;
</span><span class="cx">         float shadowBlur;
</span><span class="cx">         Color shadowColor;
</span><del>-        float globalAlpha;
</del><ins>+        double globalAlpha;
</ins><span class="cx">         CompositeOperator globalComposite;
</span><span class="cx">         BlendMode globalBlend;
</span><span class="cx">         AffineTransform transform;
</span><span class="cx">         bool hasInvertibleTransform;
</span><del>-        Vector<float> lineDash;
-        float lineDashOffset;
</del><ins>+        Vector<double> lineDash;
+        double lineDashOffset;
</ins><span class="cx">         bool imageSmoothingEnabled;
</span><span class="cx">         ImageSmoothingQuality imageSmoothingQuality;
</span><span class="cx">         TextAlign textAlign;
</span><span class="lines">@@ -302,9 +302,9 @@
</span><span class="cx"> 
</span><span class="cx">     static String normalizeSpaces(const String&);
</span><span class="cx"> 
</span><del>-    void drawText(const String& text, float x, float y, bool fill, std::optional<float> maxWidth = std::nullopt);
-    bool canDrawText(float x, float y, bool fill, std::optional<float> maxWidth = std::nullopt);
-    void drawTextUnchecked(const TextRun&, float x, float y, bool fill, std::optional<float> maxWidth = std::nullopt);
</del><ins>+    void drawText(const String& text, double x, double y, bool fill, std::optional<double> maxWidth = std::nullopt);
+    bool canDrawText(double x, double y, bool fill, std::optional<double> maxWidth = std::nullopt);
+    void drawTextUnchecked(const TextRun&, double x, double y, bool fill, std::optional<double> maxWidth = std::nullopt);
</ins><span class="cx"> 
</span><span class="cx">     Ref<TextMetrics> measureTextInternal(const TextRun&);
</span><span class="cx">     Ref<TextMetrics> measureTextInternal(const String& text);
</span><span class="lines">@@ -371,8 +371,8 @@
</span><span class="cx">     void strokeInternal(const Path&);
</span><span class="cx">     void clipInternal(const Path&, CanvasFillRule);
</span><span class="cx"> 
</span><del>-    bool isPointInPathInternal(const Path&, float x, float y, CanvasFillRule);
-    bool isPointInStrokeInternal(const Path&, float x, float y);
</del><ins>+    bool isPointInPathInternal(const Path&, double x, double y, CanvasFillRule);
+    bool isPointInStrokeInternal(const Path&, double x, double y);
</ins><span class="cx"> 
</span><span class="cx">     Path transformAreaToDevice(const Path&) const;
</span><span class="cx">     Path transformAreaToDevice(const FloatRect&) const;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasShadowStylesidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasShadowStyles.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasShadowStyles.idl  2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasShadowStyles.idl     2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -25,8 +25,6 @@
</span><span class="cx"> 
</span><span class="cx"> // https://html.spec.whatwg.org/multipage/canvas.html#canvasshadowstyles
</span><span class="cx"> interface mixin CanvasShadowStyles {
</span><del>-    // FIXME: All the unrestricted float attributes below should be unrestricted doubles.
-
</del><span class="cx">     // shadows
</span><span class="cx">     attribute unrestricted double shadowOffsetX; // (default 0)
</span><span class="cx">     attribute unrestricted double shadowOffsetY; // (default 0)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasTextidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasText.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasText.idl  2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasText.idl     2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -25,10 +25,8 @@
</span><span class="cx"> 
</span><span class="cx"> // https://html.spec.whatwg.org/multipage/canvas.html#canvastext
</span><span class="cx"> interface mixin CanvasText {
</span><del>-    // FIXME: All the unrestricted float parameters below should be unrestricted doubles.
-
</del><span class="cx">     // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces)
</span><del>-    undefined fillText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
-    undefined strokeText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
</del><ins>+    undefined fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
+    undefined strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
</ins><span class="cx">     TextMetrics measureText(DOMString text);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasTransformidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasTransform.idl (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasTransform.idl     2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/CanvasTransform.idl        2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -25,16 +25,14 @@
</span><span class="cx"> 
</span><span class="cx"> // https://html.spec.whatwg.org/multipage/canvas.html#canvastransform
</span><span class="cx"> interface mixin CanvasTransform {
</span><del>-    // FIXME: All the unrestricted float parameters below should be unrestricted doubles.
-
</del><span class="cx">     // transformations (default transform is the identity matrix)
</span><del>-    undefined scale(unrestricted float x, unrestricted float y);
-    undefined rotate(unrestricted float angle);
-    undefined translate(unrestricted float x, unrestricted float y);
-    undefined transform(unrestricted float a, unrestricted float b, unrestricted float c, unrestricted float d, unrestricted float e, unrestricted float f);
</del><ins>+    undefined scale(unrestricted double x, unrestricted double y);
+    undefined rotate(unrestricted double angle);
+    undefined translate(unrestricted double x, unrestricted double y);
+    undefined transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
</ins><span class="cx"> 
</span><span class="cx">     [NewObject] DOMMatrix getTransform();
</span><del>-    undefined setTransform(unrestricted float a, unrestricted float b, unrestricted float c, unrestricted float d, unrestricted float e, unrestricted float f);
</del><ins>+    undefined setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
</ins><span class="cx">     undefined setTransform(optional DOMMatrix2DInit transform);
</span><span class="cx">     undefined resetTransform();
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasOffscreenCanvasRenderingContext2Dcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.cpp (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.cpp   2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.cpp      2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -126,12 +126,12 @@
</span><span class="cx">     return &state().font;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void OffscreenCanvasRenderingContext2D::fillText(const String& text, float x, float y, std::optional<float> maxWidth)
</del><ins>+void OffscreenCanvasRenderingContext2D::fillText(const String& text, double x, double y, std::optional<double> maxWidth)
</ins><span class="cx"> {
</span><span class="cx">     drawText(text, x, y, true, maxWidth);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void OffscreenCanvasRenderingContext2D::strokeText(const String& text, float x, float y, std::optional<float> maxWidth)
</del><ins>+void OffscreenCanvasRenderingContext2D::strokeText(const String& text, double x, double y, std::optional<double> maxWidth)
</ins><span class="cx"> {
</span><span class="cx">     drawText(text, x, y, false, maxWidth);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasOffscreenCanvasRenderingContext2Dh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.h (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.h     2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.h        2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -47,8 +47,8 @@
</span><span class="cx"> 
</span><span class="cx">     void setFont(const String&);
</span><span class="cx">     CanvasDirection direction() const;
</span><del>-    void fillText(const String& text, float x, float y, std::optional<float> maxWidth = std::nullopt);
-    void strokeText(const String& text, float x, float y, std::optional<float> maxWidth = std::nullopt);
</del><ins>+    void fillText(const String& text, double x, double y, std::optional<double> maxWidth = std::nullopt);
+    void strokeText(const String& text, double x, double y, std::optional<double> maxWidth = std::nullopt);
</ins><span class="cx">     Ref<TextMetrics> measureText(const String& text);
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorCanvascpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorCanvas.cpp (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorCanvas.cpp       2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/inspector/InspectorCanvas.cpp  2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -438,6 +438,13 @@
</span><span class="cx">     return {{ valueIndexForData(convertEnumerationToString(argument)), RecordingSwizzleType::String }};
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+std::optional<InspectorCanvasCallTracer::ProcessedArgument> InspectorCanvas::processArgument(std::optional<double>& argument)
+{
+    if (!argument)
+        return std::nullopt;
+    return {{ JSON::Value::create(*argument), RecordingSwizzleType::Number }};
+}
+
</ins><span class="cx"> std::optional<InspectorCanvasCallTracer::ProcessedArgument> InspectorCanvas::processArgument(std::optional<float>& argument)
</span><span class="cx"> {
</span><span class="cx">     if (!argument)
</span><span class="lines">@@ -536,6 +543,11 @@
</span><span class="cx">     return {{ buildArrayForVector(WTFMove(deduplicated)), RecordingSwizzleType::String }};
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+std::optional<InspectorCanvasCallTracer::ProcessedArgument> InspectorCanvas::processArgument(Vector<double>& argument)
+{
+    return {{ buildArrayForVector(argument), RecordingSwizzleType::Array }};
+}
+
</ins><span class="cx"> std::optional<InspectorCanvasCallTracer::ProcessedArgument> InspectorCanvas::processArgument(Vector<float>& argument)
</span><span class="cx"> {
</span><span class="cx">     return {{ buildArrayForVector(argument), RecordingSwizzleType::Array }};
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorCanvasCallTracerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorCanvasCallTracer.h (279092 => 279093)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorCanvasCallTracer.h       2021-06-22 00:01:54 UTC (rev 279092)
+++ trunk/Source/WebCore/inspector/InspectorCanvasCallTracer.h  2021-06-22 00:22:44 UTC (rev 279093)
</span><span class="lines">@@ -153,6 +153,7 @@
</span><span class="cx">     macro(ImageDataSettings&) \
</span><span class="cx">     macro(ImageSmoothingQuality) \
</span><span class="cx">     macro(std::optional<float>&) \
</span><ins>+    macro(std::optional<double>&) \
</ins><span class="cx">     macro(Path2D*) \
</span><span class="cx">     macro(RefPtr<CanvasGradient>&) \
</span><span class="cx">     macro(RefPtr<CanvasPattern>&) \
</span><span class="lines">@@ -168,6 +169,7 @@
</span><span class="cx">     macro(String&) \
</span><span class="cx">     macro(Vector<String>&) \
</span><span class="cx">     macro(Vector<float>&) \
</span><ins>+    macro(Vector<double>&) \
</ins><span class="cx">     macro(Vector<uint32_t>&) \
</span><span class="cx">     macro(Vector<int32_t>&) \
</span><span class="cx">     macro(double) \
</span></span></pre>
</div>
</div>

</body>
</html>