<!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>[204669] trunk</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/204669">204669</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-08-19 17:45:30 -0700 (Fri, 19 Aug 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Mark CanvasPath operations' parameters as mandatory when they should be
https://bugs.webkit.org/show_bug.cgi?id=161014

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Mark CanvasPath operations as mandatory when they should be:
- https://html.spec.whatwg.org/multipage/scripting.html#canvaspath

This patch moves the CanvasPath methods from CanvasRenderingContext2D
and Path2D to a new CanvasPath interface, to avoid duplication and
match the specification.

The parameters were correctly marked as mandatory in WebKit on
CanvasRenderingContext2D but not on Path2D.

Those parameters are correctly marked as mandatory in Chrome and Firefox.

No new tests, rebaselined existing test.

* CMakeLists.txt:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* html/canvas/CanvasPath.cpp: Renamed from Source/WebCore/html/canvas/CanvasPathMethods.cpp.
(WebCore::CanvasPath::closePath):
(WebCore::CanvasPath::moveTo):
(WebCore::CanvasPath::lineTo):
(WebCore::CanvasPath::quadraticCurveTo):
(WebCore::CanvasPath::bezierCurveTo):
(WebCore::CanvasPath::arcTo):
(WebCore::normalizeAngles):
(WebCore::CanvasPath::arc):
(WebCore::CanvasPath::ellipse):
(WebCore::CanvasPath::rect):
* html/canvas/CanvasPath.h: Renamed from Source/WebCore/html/canvas/CanvasPathMethods.h.
(WebCore::CanvasPath::~CanvasPath):
(WebCore::CanvasPath::CanvasPath):
(WebCore::CanvasPath::hasInvertibleTransform):
* html/canvas/CanvasPath.idl: Added.
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2D.idl:
* html/canvas/DOMPath.h:
* html/canvas/DOMPath.idl:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</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="#trunkSourceWebCorehtmlcanvasDOMPathh">trunk/Source/WebCore/html/canvas/DOMPath.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasDOMPathidl">trunk/Source/WebCore/html/canvas/DOMPath.idl</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasPathcpp">trunk/Source/WebCore/html/canvas/CanvasPath.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasPathh">trunk/Source/WebCore/html/canvas/CanvasPath.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasPathidl">trunk/Source/WebCore/html/canvas/CanvasPath.idl</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasPathMethodscpp">trunk/Source/WebCore/html/canvas/CanvasPathMethods.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasPathMethodsh">trunk/Source/WebCore/html/canvas/CanvasPathMethods.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -1,5 +1,16 @@
</span><span class="cx"> 2016-08-19  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Mark CanvasPath operations' parameters as mandatory when they should be
+        https://bugs.webkit.org/show_bug.cgi?id=161014
+
+        Reviewed by Sam Weinig.
+
+        Rebaseline W3C test now that more checks are passing.
+
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+
+2016-08-19  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Re-sync html/dom/interfaces.html web-platform-test from upstream
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=161012
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -5041,14 +5041,14 @@
</span><span class="cx"> PASS Path2D interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS Path2D interface: operation addPath(Path2D,DOMMatrixInit) 
</span><span class="cx"> PASS Path2D interface: operation closePath() 
</span><del>-FAIL Path2D interface: operation moveTo(unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 2 but got 0
-FAIL Path2D interface: operation lineTo(unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 2 but got 0
-FAIL Path2D interface: operation quadraticCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 4 but got 0
-FAIL Path2D interface: operation bezierCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 6 but got 0
-FAIL Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 5 but got 0
-FAIL Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 5 but got 0
-FAIL Path2D interface: operation rect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 4 but got 0
-FAIL Path2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) assert_equals: property has wrong .length expected 5 but got 0
</del><ins>+PASS Path2D interface: operation moveTo(unrestricted double,unrestricted double) 
+PASS Path2D interface: operation lineTo(unrestricted double,unrestricted double) 
+PASS Path2D interface: operation quadraticCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double) 
+PASS Path2D interface: operation bezierCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) 
+PASS Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) 
+PASS Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) 
+PASS Path2D interface: operation rect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) 
+PASS Path2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) 
</ins><span class="cx"> PASS Path2D interface: operation ellipse(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) 
</span><span class="cx"> PASS DataTransfer interface: existence and properties of interface object 
</span><span class="cx"> PASS DataTransfer interface object length 
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -541,6 +541,7 @@
</span><span class="cx"> 
</span><span class="cx">     html/canvas/ANGLEInstancedArrays.idl
</span><span class="cx">     html/canvas/CanvasGradient.idl
</span><ins>+    html/canvas/CanvasPath.idl
</ins><span class="cx">     html/canvas/CanvasPattern.idl
</span><span class="cx">     html/canvas/CanvasProxy.idl
</span><span class="cx">     html/canvas/CanvasRenderingContext.idl
</span><span class="lines">@@ -1792,7 +1793,7 @@
</span><span class="cx">     html/canvas/ANGLEInstancedArrays.cpp
</span><span class="cx">     html/canvas/CanvasContextAttributes.cpp
</span><span class="cx">     html/canvas/CanvasGradient.cpp
</span><del>-    html/canvas/CanvasPathMethods.cpp
</del><ins>+    html/canvas/CanvasPath.cpp
</ins><span class="cx">     html/canvas/CanvasPattern.cpp
</span><span class="cx">     html/canvas/CanvasProxy.cpp
</span><span class="cx">     html/canvas/CanvasRenderingContext.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/ChangeLog        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -1,3 +1,48 @@
</span><ins>+2016-08-19  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Mark CanvasPath operations' parameters as mandatory when they should be
+        https://bugs.webkit.org/show_bug.cgi?id=161014
+
+        Reviewed by Sam Weinig.
+
+        Mark CanvasPath operations as mandatory when they should be:
+        - https://html.spec.whatwg.org/multipage/scripting.html#canvaspath
+
+        This patch moves the CanvasPath methods from CanvasRenderingContext2D
+        and Path2D to a new CanvasPath interface, to avoid duplication and
+        match the specification.
+
+        The parameters were correctly marked as mandatory in WebKit on
+        CanvasRenderingContext2D but not on Path2D.
+
+        Those parameters are correctly marked as mandatory in Chrome and Firefox.
+
+        No new tests, rebaselined existing test.
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * WebCore.xcodeproj/project.pbxproj:
+        * html/canvas/CanvasPath.cpp: Renamed from Source/WebCore/html/canvas/CanvasPathMethods.cpp.
+        (WebCore::CanvasPath::closePath):
+        (WebCore::CanvasPath::moveTo):
+        (WebCore::CanvasPath::lineTo):
+        (WebCore::CanvasPath::quadraticCurveTo):
+        (WebCore::CanvasPath::bezierCurveTo):
+        (WebCore::CanvasPath::arcTo):
+        (WebCore::normalizeAngles):
+        (WebCore::CanvasPath::arc):
+        (WebCore::CanvasPath::ellipse):
+        (WebCore::CanvasPath::rect):
+        * html/canvas/CanvasPath.h: Renamed from Source/WebCore/html/canvas/CanvasPathMethods.h.
+        (WebCore::CanvasPath::~CanvasPath):
+        (WebCore::CanvasPath::CanvasPath):
+        (WebCore::CanvasPath::hasInvertibleTransform):
+        * html/canvas/CanvasPath.idl: Added.
+        * html/canvas/CanvasRenderingContext2D.h:
+        * html/canvas/CanvasRenderingContext2D.idl:
+        * html/canvas/DOMPath.h:
+        * html/canvas/DOMPath.idl:
+
</ins><span class="cx"> 2016-08-19  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         RenderObject::containingBlock() cleanup.
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/DerivedSources.make        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -450,6 +450,7 @@
</span><span class="cx">     $(WebCore)/html/VoidCallback.idl \
</span><span class="cx">     $(WebCore)/html/canvas/ANGLEInstancedArrays.idl \
</span><span class="cx">     $(WebCore)/html/canvas/CanvasGradient.idl \
</span><ins>+    $(WebCore)/html/canvas/CanvasPath.idl \
</ins><span class="cx">     $(WebCore)/html/canvas/CanvasPattern.idl \
</span><span class="cx">     $(WebCore)/html/canvas/CanvasProxy.idl \
</span><span class="cx">     $(WebCore)/html/canvas/CanvasRenderingContext.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -1812,6 +1812,8 @@
</span><span class="cx">                 463EB6231B8789E00096ED51 /* TagCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 463EB6211B8789CB0096ED51 /* TagCollection.h */; };
</span><span class="cx">                 465A8E791C8A24CE00E7D3E4 /* RuntimeApplicationChecks.mm in Sources */ = {isa = PBXBuildFile; fileRef = 465A8E781C8A24CE00E7D3E4 /* RuntimeApplicationChecks.mm */; };
</span><span class="cx">                 4669B2871B852A0B000F905F /* JSDOMNamedFlowCollectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46F2768E1B85297F005C2556 /* JSDOMNamedFlowCollectionCustom.cpp */; };
</span><ins>+                4671E0651D67A59600C6B497 /* CanvasPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4671E0631D67A57B00C6B497 /* CanvasPath.cpp */; };
+                4671E0661D67A59600C6B497 /* CanvasPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 4671E0641D67A57B00C6B497 /* CanvasPath.h */; };
</ins><span class="cx">                 467302021C4EFE7800BCB357 /* IgnoreOpensDuringUnloadCountIncrementer.h in Headers */ = {isa = PBXBuildFile; fileRef = 467302011C4EFE6600BCB357 /* IgnoreOpensDuringUnloadCountIncrementer.h */; };
</span><span class="cx">                 4689F1AF1267BAE100E8D380 /* FileMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 4689F1AE1267BAE100E8D380 /* FileMetadata.h */; };
</span><span class="cx">                 46A58AC51D46B3FA00432036 /* JSClientRectCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46A58AC41D46B3FA00432036 /* JSClientRectCustom.cpp */; };
</span><span class="lines">@@ -6728,8 +6730,6 @@
</span><span class="cx">                 FB484F4D171F821E00040755 /* TransformFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = FB484F4B171F821E00040755 /* TransformFunctions.h */; };
</span><span class="cx">                 FB78AD2E151BF5E600FE54D3 /* CSSParserMode.h in Headers */ = {isa = PBXBuildFile; fileRef = FB78AD2C151BF5D200FE54D3 /* CSSParserMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FB91392416AE4C17001FE682 /* DOMPath.h in Headers */ = {isa = PBXBuildFile; fileRef = FB91392016AE4B0B001FE682 /* DOMPath.h */; };
</span><del>-                FB91392616AE4C2F001FE682 /* CanvasPathMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = FB91391F16AE4B0B001FE682 /* CanvasPathMethods.h */; };
-                FB91392716AE4C34001FE682 /* CanvasPathMethods.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB91391E16AE4B0B001FE682 /* CanvasPathMethods.cpp */; };
</del><span class="cx">                 FB91392A16AE4FC0001FE682 /* JSDOMPath.h in Headers */ = {isa = PBXBuildFile; fileRef = FB91392816AE4FC0001FE682 /* JSDOMPath.h */; };
</span><span class="cx">                 FB91392B16AE4FC0001FE682 /* JSDOMPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB91392916AE4FC0001FE682 /* JSDOMPath.cpp */; };
</span><span class="cx">                 FB92DF4B15FED08700994433 /* ClipPathOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = FB92DF4915FED08700994433 /* ClipPathOperation.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -9133,6 +9133,8 @@
</span><span class="cx">                 463EB6201B8789CB0096ED51 /* TagCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TagCollection.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 463EB6211B8789CB0096ED51 /* TagCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagCollection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 465A8E781C8A24CE00E7D3E4 /* RuntimeApplicationChecks.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RuntimeApplicationChecks.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                4671E0631D67A57B00C6B497 /* CanvasPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasPath.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                4671E0641D67A57B00C6B497 /* CanvasPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CanvasPath.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 467302011C4EFE6600BCB357 /* IgnoreOpensDuringUnloadCountIncrementer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IgnoreOpensDuringUnloadCountIncrementer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4689F1AE1267BAE100E8D380 /* FileMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileMetadata.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 46A58AC41D46B3FA00432036 /* JSClientRectCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClientRectCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14707,8 +14709,6 @@
</span><span class="cx">                 FB484F4A171F821E00040755 /* TransformFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransformFunctions.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FB484F4B171F821E00040755 /* TransformFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransformFunctions.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FB78AD2C151BF5D200FE54D3 /* CSSParserMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSParserMode.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                FB91391E16AE4B0B001FE682 /* CanvasPathMethods.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasPathMethods.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                FB91391F16AE4B0B001FE682 /* CanvasPathMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CanvasPathMethods.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 FB91392016AE4B0B001FE682 /* DOMPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMPath.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FB91392116AE4B0B001FE682 /* DOMPath.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMPath.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FB91392816AE4FC0001FE682 /* JSDOMPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMPath.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -17145,8 +17145,8 @@
</span><span class="cx">                                 49484FB3102CF23C00187DD3 /* CanvasGradient.cpp */,
</span><span class="cx">                                 49484FB4102CF23C00187DD3 /* CanvasGradient.h */,
</span><span class="cx">                                 49484FB5102CF23C00187DD3 /* CanvasGradient.idl */,
</span><del>-                                FB91391E16AE4B0B001FE682 /* CanvasPathMethods.cpp */,
-                                FB91391F16AE4B0B001FE682 /* CanvasPathMethods.h */,
</del><ins>+                                4671E0631D67A57B00C6B497 /* CanvasPath.cpp */,
+                                4671E0641D67A57B00C6B497 /* CanvasPath.h */,
</ins><span class="cx">                                 49484FB6102CF23C00187DD3 /* CanvasPattern.cpp */,
</span><span class="cx">                                 49484FB7102CF23C00187DD3 /* CanvasPattern.h */,
</span><span class="cx">                                 49484FB8102CF23C00187DD3 /* CanvasPattern.idl */,
</span><span class="lines">@@ -24984,7 +24984,6 @@
</span><span class="cx">                                 B1D5ECB5134B58DA0087C78F /* CallbackFunction.h in Headers */,
</span><span class="cx">                                 6E4E91AD10F7FB3100A2779C /* CanvasContextAttributes.h in Headers */,
</span><span class="cx">                                 49484FC2102CF23C00187DD3 /* CanvasGradient.h in Headers */,
</span><del>-                                FB91392616AE4C2F001FE682 /* CanvasPathMethods.h in Headers */,
</del><span class="cx">                                 49484FC5102CF23C00187DD3 /* CanvasPattern.h in Headers */,
</span><span class="cx">                                 49484FC5102CF23C00188DD3 /* CanvasProxy.h in Headers */,
</span><span class="cx">                                 49C7B9DD1042D32F0009D447 /* CanvasRenderingContext.h in Headers */,
</span><span class="lines">@@ -28059,6 +28058,7 @@
</span><span class="cx">                                 1AF89A421518FDEA00E547B5 /* TiledBacking.h in Headers */,
</span><span class="cx">                                 7AA3A69C194A64E7001CBD24 /* TileGrid.h in Headers */,
</span><span class="cx">                                 498770F31242C535002226BA /* TilingData.h in Headers */,
</span><ins>+                                4671E0661D67A59600C6B497 /* CanvasPath.h in Headers */,
</ins><span class="cx">                                 F55B3DDC1251F12D003EF269 /* TimeInputType.h in Headers */,
</span><span class="cx">                                 7553CFE8108F473F00EA281E /* TimelineRecordFactory.h in Headers */,
</span><span class="cx">                                 9305B24D098F1B6B00C28855 /* Timer.h in Headers */,
</span><span class="lines">@@ -28865,7 +28865,6 @@
</span><span class="cx">                                 B1827493134CA4C100B98C2D /* CallbackFunction.cpp in Sources */,
</span><span class="cx">                                 6E4E91AC10F7FB3100A2779C /* CanvasContextAttributes.cpp in Sources */,
</span><span class="cx">                                 49484FC1102CF23C00187DD3 /* CanvasGradient.cpp in Sources */,
</span><del>-                                FB91392716AE4C34001FE682 /* CanvasPathMethods.cpp in Sources */,
</del><span class="cx">                                 49484FC4102CF23C00187DD3 /* CanvasPattern.cpp in Sources */,
</span><span class="cx">                                 49C7B9DC1042D32F0009D447 /* CanvasRenderingContext.cpp in Sources */,
</span><span class="cx">                                 49484FCA102CF23C00187DD3 /* CanvasRenderingContext2D.cpp in Sources */,
</span><span class="lines">@@ -29697,6 +29696,7 @@
</span><span class="cx">                                 5185FC901BB4C4E80012898F /* IDBIndex.cpp in Sources */,
</span><span class="cx">                                 51F798EF1BE880E7008AE491 /* IDBIndexInfo.cpp in Sources */,
</span><span class="cx">                                 5185FC941BB4C4E80012898F /* IDBKey.cpp in Sources */,
</span><ins>+                                4671E0651D67A59600C6B497 /* CanvasPath.cpp in Sources */,
</ins><span class="cx">                                 5185FC961BB4C4E80012898F /* IDBKeyData.cpp in Sources */,
</span><span class="cx">                                 5185FC981BB4C4E80012898F /* IDBKeyPath.cpp in Sources */,
</span><span class="cx">                                 5185FC9A1BB4C4E80012898F /* IDBKeyRange.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasPathcppfromrev204668trunkSourceWebCorehtmlcanvasCanvasPathMethodscpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/html/canvas/CanvasPath.cpp (from rev 204668, trunk/Source/WebCore/html/canvas/CanvasPathMethods.cpp) (0 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasPath.cpp                                (rev 0)
+++ trunk/Source/WebCore/html/canvas/CanvasPath.cpp        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -0,0 +1,241 @@
</span><ins>+/*
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies)
+ * Copyright (C) 2007 Alp Toker &lt;alp@atoker.com&gt;
+ * Copyright (C) 2008 Eric Seidel &lt;eric@webkit.org&gt;
+ * Copyright (C) 2008 Dirk Schulze &lt;krit@webkit.org&gt;
+ * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
+ * Copyright (C) 2012, 2013 Adobe Systems Incorporated. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER &quot;AS IS&quot; AND ANY
+ * 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 THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CanvasPath.h&quot;
+
+#include &quot;AffineTransform.h&quot;
+#include &quot;ExceptionCode.h&quot;
+#include &quot;FloatRect.h&quot;
+#include &lt;wtf/MathExtras.h&gt;
+
+namespace WebCore {
+
+void CanvasPath::closePath()
+{
+    if (m_path.isEmpty())
+        return;
+
+    FloatRect boundRect = m_path.fastBoundingRect();
+    if (boundRect.width() || boundRect.height())
+        m_path.closeSubpath();
+}
+
+void CanvasPath::moveTo(float x, float y)
+{
+    if (!std::isfinite(x) || !std::isfinite(y))
+        return;
+    if (!hasInvertibleTransform())
+        return;
+    m_path.moveTo(FloatPoint(x, y));
+}
+
+void CanvasPath::lineTo(FloatPoint point)
+{
+    lineTo(point.x(), point.y());
+}
+
+void CanvasPath::lineTo(float x, float y)
+{
+    if (!std::isfinite(x) || !std::isfinite(y))
+        return;
+    if (!hasInvertibleTransform())
+        return;
+
+    FloatPoint p1 = FloatPoint(x, y);
+    if (!m_path.hasCurrentPoint())
+        m_path.moveTo(p1);
+    else if (p1 != m_path.currentPoint())
+        m_path.addLineTo(p1);
+}
+
+void CanvasPath::quadraticCurveTo(float cpx, float cpy, float x, float y)
+{
+    if (!std::isfinite(cpx) || !std::isfinite(cpy) || !std::isfinite(x) || !std::isfinite(y))
+        return;
+    if (!hasInvertibleTransform())
+        return;
+    if (!m_path.hasCurrentPoint())
+        m_path.moveTo(FloatPoint(cpx, cpy));
+
+    FloatPoint p1 = FloatPoint(x, y);
+    FloatPoint cp = FloatPoint(cpx, cpy);
+    if (p1 != m_path.currentPoint() || p1 != cp)
+        m_path.addQuadCurveTo(cp, p1);
+}
+
+void CanvasPath::bezierCurveTo(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y)
+{
+    if (!std::isfinite(cp1x) || !std::isfinite(cp1y) || !std::isfinite(cp2x) || !std::isfinite(cp2y) || !std::isfinite(x) || !std::isfinite(y))
+        return;
+    if (!hasInvertibleTransform())
+        return;
+    if (!m_path.hasCurrentPoint())
+        m_path.moveTo(FloatPoint(cp1x, cp1y));
+
+    FloatPoint p1 = FloatPoint(x, y);
+    FloatPoint cp1 = FloatPoint(cp1x, cp1y);
+    FloatPoint cp2 = FloatPoint(cp2x, cp2y);
+    if (p1 != m_path.currentPoint() || p1 != cp1 ||  p1 != cp2)
+        m_path.addBezierCurveTo(cp1, cp2, p1);
+}
+
+void CanvasPath::arcTo(float x1, float y1, float x2, float y2, float r, ExceptionCode&amp; ec)
+{
+    ec = 0;
+    if (!std::isfinite(x1) || !std::isfinite(y1) || !std::isfinite(x2) || !std::isfinite(y2) || !std::isfinite(r))
+        return;
+
+    if (r &lt; 0) {
+        ec = INDEX_SIZE_ERR;
+        return;
+    }
+
+    if (!hasInvertibleTransform())
+        return;
+
+    FloatPoint p1 = FloatPoint(x1, y1);
+    FloatPoint p2 = FloatPoint(x2, y2);
+
+    if (!m_path.hasCurrentPoint())
+        m_path.moveTo(p1);
+    else if (p1 == m_path.currentPoint() || p1 == p2 || !r)
+        lineTo(x1, y1);
+    else
+        m_path.addArcTo(p1, p2, r);
+}
+
+static void normalizeAngles(float&amp; startAngle, float&amp; endAngle, bool anticlockwise)
+{
+    float newStartAngle = startAngle;
+    if (newStartAngle &lt; 0)
+        newStartAngle = (2 * piFloat) + fmodf(newStartAngle, -(2 * piFloat));
+    else
+        newStartAngle = fmodf(newStartAngle, 2 * piFloat);
+
+    float delta = newStartAngle - startAngle;
+    startAngle = newStartAngle;
+    endAngle = endAngle + delta;
+    ASSERT(newStartAngle &gt;= 0 &amp;&amp; newStartAngle &lt; 2 * piFloat);
+
+    if (anticlockwise &amp;&amp; startAngle - endAngle &gt;= 2 * piFloat)
+        endAngle = startAngle - 2 * piFloat;
+    else if (!anticlockwise &amp;&amp; endAngle - startAngle &gt;= 2 * piFloat)
+        endAngle = startAngle + 2 * piFloat;
+}
+
+void CanvasPath::arc(float x, float y, float radius, float startAngle, float endAngle, bool anticlockwise, ExceptionCode&amp; ec)
+{
+    if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(radius) || !std::isfinite(startAngle) || !std::isfinite(endAngle))
+        return;
+
+    if (radius &lt; 0) {
+        ec = INDEX_SIZE_ERR;
+        return;
+    }
+
+    if (!hasInvertibleTransform())
+        return;
+
+    normalizeAngles(startAngle, endAngle, anticlockwise);
+
+    if (!radius || startAngle == endAngle) {
+        // The arc is empty but we still need to draw the connecting line.
+        lineTo(x + radius * cosf(startAngle), y + radius * sinf(startAngle));
+        return;
+    }
+
+    m_path.addArc(FloatPoint(x, y), radius, startAngle, endAngle, anticlockwise);
+}
+    
+void CanvasPath::ellipse(float x, float y, float radiusX, float radiusY, float rotation, float startAngle, float endAngle, bool anticlockwise, ExceptionCode&amp; ec)
+{
+    if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(radiusX) || !std::isfinite(radiusY) || !std::isfinite(rotation) || !std::isfinite(startAngle) || !std::isfinite(endAngle))
+        return;
+
+    if (radiusX &lt; 0 || radiusY &lt; 0) {
+        ec = INDEX_SIZE_ERR;
+        return;
+    }
+
+    if (!hasInvertibleTransform())
+        return;
+
+    normalizeAngles(startAngle, endAngle, anticlockwise);
+
+    if ((!radiusX &amp;&amp; !radiusY) || startAngle == endAngle) {
+        AffineTransform transform;
+        transform.translate(x, y).rotate(rad2deg(rotation));
+
+        lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(startAngle), radiusY * sinf(startAngle))));
+        return;
+    }
+
+    if (!radiusX || !radiusY) {
+        AffineTransform transform;
+        transform.translate(x, y).rotate(rad2deg(rotation));
+
+        lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(startAngle), radiusY * sinf(startAngle))));
+
+        if (!anticlockwise) {
+            for (float angle = startAngle - fmodf(startAngle, piOverTwoFloat) + piOverTwoFloat; angle &lt; endAngle; angle += piOverTwoFloat)
+                lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(angle), radiusY * sinf(angle))));
+        } else {
+            for (float angle = startAngle - fmodf(startAngle, piOverTwoFloat); angle &gt; endAngle; angle -= piOverTwoFloat)
+                lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(angle), radiusY * sinf(angle))));
+        }
+
+        lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(endAngle), radiusY * sinf(endAngle))));
+        return;
+    }
+
+    m_path.addEllipse(FloatPoint(x, y), radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
+}
+
+void CanvasPath::rect(float x, float y, float width, float height)
+{
+    if (!hasInvertibleTransform())
+        return;
+
+    if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(width) || !std::isfinite(height))
+        return;
+
+    if (!width &amp;&amp; !height) {
+        m_path.moveTo(FloatPoint(x, y));
+        return;
+    }
+
+    m_path.addRect(FloatRect(x, y, width, height));
+}
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasPathhfromrev204668trunkSourceWebCorehtmlcanvasCanvasPathMethodsh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/html/canvas/CanvasPath.h (from rev 204668, trunk/Source/WebCore/html/canvas/CanvasPathMethods.h) (0 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasPath.h                                (rev 0)
+++ trunk/Source/WebCore/html/canvas/CanvasPath.h        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2006, 2007, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2012, 2013 Adobe Systems Incorporated. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER &quot;AS IS&quot; AND ANY
+ * 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 THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include &quot;Path.h&quot;
+
+namespace WebCore {
+
+class FloatRect;
+
+typedef int ExceptionCode;
+
+class CanvasPath {
+public:
+    virtual ~CanvasPath() { }
+
+    void closePath();
+    void moveTo(float x, float y);
+    void lineTo(float x, float y);
+    void quadraticCurveTo(float cpx, float cpy, float x, float y);
+    void bezierCurveTo(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y);
+    void arcTo(float x0, float y0, float x1, float y1, float radius, ExceptionCode&amp;);
+    void arc(float x, float y, float r, float sa, float ea, bool anticlockwise, ExceptionCode&amp;);
+    void ellipse(float x, float y, float radiusX, float radiusY, float rotation, float startAngle, float endAngled, bool anticlockwise, ExceptionCode&amp;);
+    void rect(float x, float y, float width, float height);
+
+protected:
+    CanvasPath() { }
+    CanvasPath(const Path&amp; path)
+        : m_path(path)
+    { }
+
+    virtual bool hasInvertibleTransform() const { return true; }
+
+    void lineTo(FloatPoint);
+
+    Path m_path;
+};
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasPathidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/html/canvas/CanvasPath.idl (0 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasPath.idl                                (rev 0)
+++ trunk/Source/WebCore/html/canvas/CanvasPath.idl        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER &quot;AS IS&quot; AND ANY
+ * 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 THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+[
+    NoInterfaceObject
+] interface CanvasPath {
+    void closePath();
+    void moveTo(unrestricted double x, unrestricted double y);
+    void lineTo(unrestricted double x, unrestricted double y);
+    void quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y);
+    void bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y);
+    [RaisesException] void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius);
+    // [RaisesException] void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation);
+    void rect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
+    [RaisesException] void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false);
+    [RaisesException] void ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false);
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasPathMethodscpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/html/canvas/CanvasPathMethods.cpp (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasPathMethods.cpp        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/html/canvas/CanvasPathMethods.cpp        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -1,241 +0,0 @@
</span><del>-/*
- * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies)
- * Copyright (C) 2007 Alp Toker &lt;alp@atoker.com&gt;
- * Copyright (C) 2008 Eric Seidel &lt;eric@webkit.org&gt;
- * Copyright (C) 2008 Dirk Schulze &lt;krit@webkit.org&gt;
- * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
- * Copyright (C) 2012 Intel Corporation. All rights reserved.
- * Copyright (C) 2012, 2013 Adobe Systems Incorporated. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER &quot;AS IS&quot; AND ANY
- * 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 THE COPYRIGHT HOLDER BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;CanvasPathMethods.h&quot;
-
-#include &quot;AffineTransform.h&quot;
-#include &quot;ExceptionCode.h&quot;
-#include &quot;FloatRect.h&quot;
-#include &lt;wtf/MathExtras.h&gt;
-
-namespace WebCore {
-
-void CanvasPathMethods::closePath()
-{
-    if (m_path.isEmpty())
-        return;
-
-    FloatRect boundRect = m_path.fastBoundingRect();
-    if (boundRect.width() || boundRect.height())
-        m_path.closeSubpath();
-}
-
-void CanvasPathMethods::moveTo(float x, float y)
-{
-    if (!std::isfinite(x) || !std::isfinite(y))
-        return;
-    if (!hasInvertibleTransform())
-        return;
-    m_path.moveTo(FloatPoint(x, y));
-}
-
-void CanvasPathMethods::lineTo(FloatPoint point)
-{
-    lineTo(point.x(), point.y());
-}
-
-void CanvasPathMethods::lineTo(float x, float y)
-{
-    if (!std::isfinite(x) || !std::isfinite(y))
-        return;
-    if (!hasInvertibleTransform())
-        return;
-
-    FloatPoint p1 = FloatPoint(x, y);
-    if (!m_path.hasCurrentPoint())
-        m_path.moveTo(p1);
-    else if (p1 != m_path.currentPoint())
-        m_path.addLineTo(p1);
-}
-
-void CanvasPathMethods::quadraticCurveTo(float cpx, float cpy, float x, float y)
-{
-    if (!std::isfinite(cpx) || !std::isfinite(cpy) || !std::isfinite(x) || !std::isfinite(y))
-        return;
-    if (!hasInvertibleTransform())
-        return;
-    if (!m_path.hasCurrentPoint())
-        m_path.moveTo(FloatPoint(cpx, cpy));
-
-    FloatPoint p1 = FloatPoint(x, y);
-    FloatPoint cp = FloatPoint(cpx, cpy);
-    if (p1 != m_path.currentPoint() || p1 != cp)
-        m_path.addQuadCurveTo(cp, p1);
-}
-
-void CanvasPathMethods::bezierCurveTo(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y)
-{
-    if (!std::isfinite(cp1x) || !std::isfinite(cp1y) || !std::isfinite(cp2x) || !std::isfinite(cp2y) || !std::isfinite(x) || !std::isfinite(y))
-        return;
-    if (!hasInvertibleTransform())
-        return;
-    if (!m_path.hasCurrentPoint())
-        m_path.moveTo(FloatPoint(cp1x, cp1y));
-
-    FloatPoint p1 = FloatPoint(x, y);
-    FloatPoint cp1 = FloatPoint(cp1x, cp1y);
-    FloatPoint cp2 = FloatPoint(cp2x, cp2y);
-    if (p1 != m_path.currentPoint() || p1 != cp1 ||  p1 != cp2)
-        m_path.addBezierCurveTo(cp1, cp2, p1);
-}
-
-void CanvasPathMethods::arcTo(float x1, float y1, float x2, float y2, float r, ExceptionCode&amp; ec)
-{
-    ec = 0;
-    if (!std::isfinite(x1) || !std::isfinite(y1) || !std::isfinite(x2) || !std::isfinite(y2) || !std::isfinite(r))
-        return;
-
-    if (r &lt; 0) {
-        ec = INDEX_SIZE_ERR;
-        return;
-    }
-
-    if (!hasInvertibleTransform())
-        return;
-
-    FloatPoint p1 = FloatPoint(x1, y1);
-    FloatPoint p2 = FloatPoint(x2, y2);
-
-    if (!m_path.hasCurrentPoint())
-        m_path.moveTo(p1);
-    else if (p1 == m_path.currentPoint() || p1 == p2 || !r)
-        lineTo(x1, y1);
-    else
-        m_path.addArcTo(p1, p2, r);
-}
-
-static void normalizeAngles(float&amp; startAngle, float&amp; endAngle, bool anticlockwise)
-{
-    float newStartAngle = startAngle;
-    if (newStartAngle &lt; 0)
-        newStartAngle = (2 * piFloat) + fmodf(newStartAngle, -(2 * piFloat));
-    else
-        newStartAngle = fmodf(newStartAngle, 2 * piFloat);
-
-    float delta = newStartAngle - startAngle;
-    startAngle = newStartAngle;
-    endAngle = endAngle + delta;
-    ASSERT(newStartAngle &gt;= 0 &amp;&amp; newStartAngle &lt; 2 * piFloat);
-
-    if (anticlockwise &amp;&amp; startAngle - endAngle &gt;= 2 * piFloat)
-        endAngle = startAngle - 2 * piFloat;
-    else if (!anticlockwise &amp;&amp; endAngle - startAngle &gt;= 2 * piFloat)
-        endAngle = startAngle + 2 * piFloat;
-}
-
-void CanvasPathMethods::arc(float x, float y, float radius, float startAngle, float endAngle, bool anticlockwise, ExceptionCode&amp; ec)
-{
-    if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(radius) || !std::isfinite(startAngle) || !std::isfinite(endAngle))
-        return;
-
-    if (radius &lt; 0) {
-        ec = INDEX_SIZE_ERR;
-        return;
-    }
-
-    if (!hasInvertibleTransform())
-        return;
-
-    normalizeAngles(startAngle, endAngle, anticlockwise);
-
-    if (!radius || startAngle == endAngle) {
-        // The arc is empty but we still need to draw the connecting line.
-        lineTo(x + radius * cosf(startAngle), y + radius * sinf(startAngle));
-        return;
-    }
-
-    m_path.addArc(FloatPoint(x, y), radius, startAngle, endAngle, anticlockwise);
-}
-    
-void CanvasPathMethods::ellipse(float x, float y, float radiusX, float radiusY, float rotation, float startAngle, float endAngle, bool anticlockwise, ExceptionCode&amp; ec)
-{
-    if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(radiusX) || !std::isfinite(radiusY) || !std::isfinite(rotation) || !std::isfinite(startAngle) || !std::isfinite(endAngle))
-        return;
-
-    if (radiusX &lt; 0 || radiusY &lt; 0) {
-        ec = INDEX_SIZE_ERR;
-        return;
-    }
-
-    if (!hasInvertibleTransform())
-        return;
-
-    normalizeAngles(startAngle, endAngle, anticlockwise);
-
-    if ((!radiusX &amp;&amp; !radiusY) || startAngle == endAngle) {
-        AffineTransform transform;
-        transform.translate(x, y).rotate(rad2deg(rotation));
-
-        lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(startAngle), radiusY * sinf(startAngle))));
-        return;
-    }
-
-    if (!radiusX || !radiusY) {
-        AffineTransform transform;
-        transform.translate(x, y).rotate(rad2deg(rotation));
-
-        lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(startAngle), radiusY * sinf(startAngle))));
-
-        if (!anticlockwise) {
-            for (float angle = startAngle - fmodf(startAngle, piOverTwoFloat) + piOverTwoFloat; angle &lt; endAngle; angle += piOverTwoFloat)
-                lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(angle), radiusY * sinf(angle))));
-        } else {
-            for (float angle = startAngle - fmodf(startAngle, piOverTwoFloat); angle &gt; endAngle; angle -= piOverTwoFloat)
-                lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(angle), radiusY * sinf(angle))));
-        }
-
-        lineTo(transform.mapPoint(FloatPoint(radiusX * cosf(endAngle), radiusY * sinf(endAngle))));
-        return;
-    }
-
-    m_path.addEllipse(FloatPoint(x, y), radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
-}
-
-void CanvasPathMethods::rect(float x, float y, float width, float height)
-{
-    if (!hasInvertibleTransform())
-        return;
-
-    if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(width) || !std::isfinite(height))
-        return;
-
-    if (!width &amp;&amp; !height) {
-        m_path.moveTo(FloatPoint(x, y));
-        return;
-    }
-
-    m_path.addRect(FloatRect(x, y, width, height));
-}
-}
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasPathMethodsh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/html/canvas/CanvasPathMethods.h (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasPathMethods.h        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/html/canvas/CanvasPathMethods.h        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-/*
- * Copyright (C) 2006, 2007, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2012, 2013 Adobe Systems Incorporated. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER &quot;AS IS&quot; AND ANY
- * 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 THE COPYRIGHT HOLDER BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef CanvasPathMethods_h
-#define CanvasPathMethods_h
-
-#include &quot;Path.h&quot;
-
-namespace WebCore {
-
-class FloatRect;
-
-typedef int ExceptionCode;
-
-class CanvasPathMethods {
-public:
-    virtual ~CanvasPathMethods() { }
-
-    void closePath();
-    void moveTo(float x, float y);
-    void lineTo(float x, float y);
-    void quadraticCurveTo(float cpx, float cpy, float x, float y);
-    void bezierCurveTo(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y);
-    void arcTo(float x0, float y0, float x1, float y1, float radius, ExceptionCode&amp;);
-    void arc(float x, float y, float r, float sa, float ea, bool anticlockwise, ExceptionCode&amp;);
-    void ellipse(float x, float y, float radiusX, float radiusY, float rotation, float startAngle, float endAngled, bool anticlockwise, ExceptionCode&amp;);
-    void rect(float x, float y, float width, float height);
-
-protected:
-    CanvasPathMethods() { }
-    CanvasPathMethods(const Path&amp; path) : m_path(path) { }
-
-    virtual bool hasInvertibleTransform() const { return true; }
-
-    void lineTo(FloatPoint);
-
-    Path m_path;
-};
-
-}
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AffineTransform.h&quot;
</span><del>-#include &quot;CanvasPathMethods.h&quot;
</del><ins>+#include &quot;CanvasPath.h&quot;
</ins><span class="cx"> #include &quot;CanvasRenderingContext.h&quot;
</span><span class="cx"> #include &quot;CanvasStyle.h&quot;
</span><span class="cx"> #include &quot;Color.h&quot;
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> 
</span><span class="cx"> typedef int ExceptionCode;
</span><span class="cx"> 
</span><del>-class CanvasRenderingContext2D final : public CanvasRenderingContext, public CanvasPathMethods {
</del><ins>+class CanvasRenderingContext2D final : public CanvasRenderingContext, public CanvasPath {
</ins><span class="cx"> public:
</span><span class="cx">     CanvasRenderingContext2D(HTMLCanvasElement*, bool usesCSSCompatibilityParseMode, bool usesDashboardCompatibilityMode);
</span><span class="cx">     virtual ~CanvasRenderingContext2D();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Didl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -70,20 +70,6 @@
</span><span class="cx"> 
</span><span class="cx">     void beginPath();
</span><span class="cx"> 
</span><del>-    // FIXME: These methods should be shared with CanvasRenderingContext2D in the CanvasPathMethods interface.
-    void closePath();
-    void moveTo(unrestricted float x, unrestricted float y);
-    void lineTo(unrestricted float x, unrestricted float y);
-    void quadraticCurveTo(unrestricted float cpx, unrestricted float cpy, unrestricted float x, unrestricted float y);
-    void bezierCurveTo(unrestricted float cp1x, unrestricted float cp1y, unrestricted float cp2x, unrestricted float cp2y, 
-        unrestricted float x, unrestricted float y);
-    [RaisesException] void arcTo(unrestricted float x1, unrestricted float y1, unrestricted float x2, unrestricted float y2,
-        unrestricted float radius);
-    void rect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
-    [RaisesException] void arc(unrestricted float x, unrestricted float y, unrestricted float radius, unrestricted float startAngle,
-        unrestricted float endAngle, optional boolean anticlockwise = false);
-    [RaisesException] void ellipse(unrestricted float x, unrestricted float y, unrestricted float radiusX, unrestricted float radiusY, unrestricted float rotation, unrestricted float startAngle, unrestricted float endAngle, optional boolean anticlockwise = false);
-
</del><span class="cx">     void fill(DOMPath path, optional CanvasWindingRule winding = &quot;nonzero&quot;);
</span><span class="cx">     void stroke(DOMPath path);
</span><span class="cx">     void clip(DOMPath path, optional CanvasWindingRule winding = &quot;nonzero&quot;);
</span><span class="lines">@@ -199,3 +185,4 @@
</span><span class="cx">     attribute ImageSmoothingQuality imageSmoothingQuality;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+CanvasRenderingContext2D implements CanvasPath;
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasDOMPathh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/DOMPath.h (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/DOMPath.h        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/html/canvas/DOMPath.h        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> #ifndef DOMPath_h
</span><span class="cx"> #define DOMPath_h
</span><span class="cx"> 
</span><del>-#include &quot;CanvasPathMethods.h&quot;
</del><ins>+#include &quot;CanvasPath.h&quot;
</ins><span class="cx"> #include &quot;SVGMatrix.h&quot;
</span><span class="cx"> #include &quot;SVGPathUtilities.h&quot;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class WEBCORE_EXPORT DOMPath final : public RefCounted&lt;DOMPath&gt;, public CanvasPathMethods {
</del><ins>+class WEBCORE_EXPORT DOMPath final : public RefCounted&lt;DOMPath&gt;, public CanvasPath {
</ins><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="cx">     virtual ~DOMPath();
</span><span class="lines">@@ -65,7 +65,9 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     DOMPath() { }
</span><del>-    DOMPath(const Path&amp; path) : CanvasPathMethods(path) { }
</del><ins>+    DOMPath(const Path&amp; path)
+        : CanvasPath(path)
+    { }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasDOMPathidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/DOMPath.idl (204668 => 204669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/DOMPath.idl        2016-08-20 00:11:17 UTC (rev 204668)
+++ trunk/Source/WebCore/html/canvas/DOMPath.idl        2016-08-20 00:45:30 UTC (rev 204669)
</span><span class="lines">@@ -37,38 +37,6 @@
</span><span class="cx">     // [Conditional=CANVAS_PATH] void addPath(DOMPath path, optional SVGMatrix transform);
</span><span class="cx">     [Conditional=CANVAS_PATH] void addPath(DOMPath? path);
</span><span class="cx">     [Conditional=CANVAS_PATH] void addPath(DOMPath? path, SVGMatrix transform);
</span><ins>+};
</ins><span class="cx"> 
</span><del>-    // FIXME: These methods should be shared with CanvasRenderingContext2D in the CanvasPathMethods interface.
-    void closePath();
-    void moveTo(optional float x = NaN,
-                optional float y = NaN);
-    void lineTo(optional float x = NaN,
-                optional float y = NaN);
-    void quadraticCurveTo(optional float cpx = NaN,
-                          optional float cpy = NaN,
-                          optional float x = NaN,
-                          optional float y = NaN);
-    void bezierCurveTo(optional float cp1x = NaN,
-                       optional float cp1y = NaN,
-                       optional float cp2x = NaN,
-                       optional float cp2y = NaN,
-                       optional float x = NaN,
-                       optional float y = NaN);
-    [RaisesException] void arcTo(optional float x1 = NaN,
-               optional float y1 = NaN,
-               optional float x2 = NaN,
-               optional float y2 = NaN,
-               optional float radius = NaN);
-    void rect(optional float x = NaN,
-              optional float y = NaN,
-              optional float width = NaN,
-              optional float height = NaN);
-    [RaisesException] void arc(optional float x = NaN,
-                               optional float y = NaN,
-                               optional float radius = NaN,
-                               optional float startAngle = NaN,
-                               optional float endAngle = NaN,
-                               optional boolean anticlockwise = false);
-    [RaisesException] void ellipse(unrestricted float x, unrestricted float y, unrestricted float radiusX, unrestricted float radiusY, unrestricted float rotation, unrestricted float startAngle, unrestricted float endAngle, optional boolean anticlockwise = false);
-
-};
</del><ins>+DOMPath implements CanvasPath;
</ins></span></pre>
</div>
</div>

</body>
</html>