<!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>[201810] 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/201810">201810</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-06-08 10:32:48 -0700 (Wed, 08 Jun 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
https://bugs.webkit.org/show_bug.cgi?id=156096

Patch by Rawinder Singh &lt;rawinder.singh-webkit@cisra.canon.com.au&gt; on 2016-06-08
Reviewed by Dean Jackson.

Adds:
Source/JavaScriptCore:

- Animatable interface and implementation of getAnimations in Element
- Interface and implementation for Document getAnimations method.
- AnimationEffect interface and class stub.
- KeyframeEffect interface and constructor implementation.
- 'Animation' interface, constructor and query methods for effect and timeline.
- Remove runtime condition on Web animation interfaces (compile time flag is specified).

* runtime/CommonIdentifiers.h:

Source/WebCore:

- Animatable interface and implementation of getAnimations in Element
- Interface and implementation for Document getAnimations method.
- AnimationEffect interface and class stub.
- KeyframeEffect interface and constructor implementation.
- 'Animation' interface, constructor and query methods for effect and timeline.
- Remove runtime condition on Web animation interfaces (compile time flag is specified).

Test: webanimations/Document.html

* CMakeLists.txt:
* DerivedSources.make:
* PlatformGTK.cmake:
* WebCore.xcodeproj/project.pbxproj:
* animation/Animatable.idl: Copied from Source/WebCore/animation/DocumentAnimation.idl.
* animation/AnimationEffect.cpp: Copied from Source/WebCore/animation/AnimationTimeline.cpp.
(WebCore::AnimationEffect::AnimationEffect):
(WebCore::AnimationEffect::~AnimationEffect):
(WebCore::AnimationEffect::setAnimation):
(WebCore::AnimationEffect::isCurrent):
(WebCore::AnimationEffect::isInEffect):
* animation/AnimationEffect.h: Copied from Source/WebCore/animation/DocumentTimeline.cpp.
* animation/AnimationEffect.idl: Copied from Source/WebCore/animation/AnimationTimeline.idl.
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::destroy):
(WebCore::AnimationTimeline::attachAnimation):
(WebCore::AnimationTimeline::detachAnimation):
* animation/AnimationTimeline.h:
* animation/AnimationTimeline.idl:
* animation/DocumentAnimation.cpp:
(WebCore::DocumentAnimation::timeline):
(WebCore::DocumentAnimation::getAnimations):
(WebCore::DocumentAnimation::addAnimation):
(WebCore::DocumentAnimation::removeAnimation):
* animation/DocumentAnimation.h:
(WebCore::DocumentAnimation::getAnimations):
* animation/DocumentAnimation.idl:
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::create):
(WebCore::DocumentTimeline::DocumentTimeline):
(WebCore::DocumentTimeline::attach):
(WebCore::DocumentTimeline::detach):
* animation/DocumentTimeline.h:
* animation/DocumentTimeline.idl:
* animation/KeyframeEffect.cpp: Copied from Source/WebCore/animation/DocumentTimeline.cpp.
(WebCore::KeyframeEffect::create):
(WebCore::KeyframeEffect::KeyframeEffect):
(WebCore::KeyframeEffect::~KeyframeEffect):
* animation/KeyframeEffect.h: Copied from Source/WebCore/animation/DocumentTimeline.h.
* animation/KeyframeEffect.idl: Copied from Source/WebCore/animation/AnimationTimeline.idl.
* animation/WebAnimation.cpp: Copied from Source/WebCore/animation/DocumentAnimation.cpp.
(WebCore::WebAnimation::create):
(WebCore::WebAnimation::WebAnimation):
(WebCore::WebAnimation::~WebAnimation):
* animation/WebAnimation.h: Copied from Source/WebCore/animation/DocumentAnimation.h.
* animation/WebAnimation.idl: Copied from Source/WebCore/animation/DocumentTimeline.idl.
* bindings/scripts/CodeGeneratorGObject.pm:
* dom/Element.cpp:
(WebCore::Element::getAnimations):
* dom/Element.h:
* dom/Element.idl:

Source/WebKit/mac:

- Setup interface for enabling runtime flag for Web animations through preferences.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webAnimationsEnabled]):
(-[WebPreferences setWebAnimationsEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

LayoutTests:

- Animatable interface and implementation of getAnimations in Element
- Interface and implementation for Document getAnimations method.
- AnimationEffect interface and class stub.
- KeyframeEffect interface and constructor implementation.
- 'Animation' interface, constructor and query methods for effect and timeline.
- Remove runtime condition on Web animation interfaces (compile time flag is specified).

* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* webanimations/Document-expected.txt: Added.
* webanimations/Document.html: Added.
* webanimations/script-tests/Document.js: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformgtkjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacyosemitejsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonIdentifiersh">trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h</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="#trunkSourceWebCorePlatformGTKcmake">trunk/Source/WebCore/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreanimationAnimationTimelinecpp">trunk/Source/WebCore/animation/AnimationTimeline.cpp</a></li>
<li><a href="#trunkSourceWebCoreanimationAnimationTimelineh">trunk/Source/WebCore/animation/AnimationTimeline.h</a></li>
<li><a href="#trunkSourceWebCoreanimationAnimationTimelineidl">trunk/Source/WebCore/animation/AnimationTimeline.idl</a></li>
<li><a href="#trunkSourceWebCoreanimationDocumentAnimationcpp">trunk/Source/WebCore/animation/DocumentAnimation.cpp</a></li>
<li><a href="#trunkSourceWebCoreanimationDocumentAnimationh">trunk/Source/WebCore/animation/DocumentAnimation.h</a></li>
<li><a href="#trunkSourceWebCoreanimationDocumentAnimationidl">trunk/Source/WebCore/animation/DocumentAnimation.idl</a></li>
<li><a href="#trunkSourceWebCoreanimationDocumentTimelinecpp">trunk/Source/WebCore/animation/DocumentTimeline.cpp</a></li>
<li><a href="#trunkSourceWebCoreanimationDocumentTimelineh">trunk/Source/WebCore/animation/DocumentTimeline.h</a></li>
<li><a href="#trunkSourceWebCoreanimationDocumentTimelineidl">trunk/Source/WebCore/animation/DocumentTimeline.idl</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementh">trunk/Source/WebCore/dom/Element.h</a></li>
<li><a href="#trunkSourceWebCoredomElementidl">trunk/Source/WebCore/dom/Element.idl</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebPreferenceKeysPrivateh">trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebPreferencesmm">trunk/Source/WebKit/mac/WebView/WebPreferences.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebPreferencesPrivateh">trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/webanimations/</li>
<li><a href="#trunkLayoutTestswebanimationsDocumentexpectedtxt">trunk/LayoutTests/webanimations/Document-expected.txt</a></li>
<li><a href="#trunkLayoutTestswebanimationsDocumenthtml">trunk/LayoutTests/webanimations/Document.html</a></li>
<li>trunk/LayoutTests/webanimations/script-tests/</li>
<li><a href="#trunkLayoutTestswebanimationsscripttestsDocumentjs">trunk/LayoutTests/webanimations/script-tests/Document.js</a></li>
<li><a href="#trunkSourceWebCoreanimationAnimatableidl">trunk/Source/WebCore/animation/Animatable.idl</a></li>
<li><a href="#trunkSourceWebCoreanimationAnimationEffectcpp">trunk/Source/WebCore/animation/AnimationEffect.cpp</a></li>
<li><a href="#trunkSourceWebCoreanimationAnimationEffecth">trunk/Source/WebCore/animation/AnimationEffect.h</a></li>
<li><a href="#trunkSourceWebCoreanimationAnimationEffectidl">trunk/Source/WebCore/animation/AnimationEffect.idl</a></li>
<li><a href="#trunkSourceWebCoreanimationKeyframeEffectcpp">trunk/Source/WebCore/animation/KeyframeEffect.cpp</a></li>
<li><a href="#trunkSourceWebCoreanimationKeyframeEffecth">trunk/Source/WebCore/animation/KeyframeEffect.h</a></li>
<li><a href="#trunkSourceWebCoreanimationKeyframeEffectidl">trunk/Source/WebCore/animation/KeyframeEffect.idl</a></li>
<li><a href="#trunkSourceWebCoreanimationWebAnimationcpp">trunk/Source/WebCore/animation/WebAnimation.cpp</a></li>
<li><a href="#trunkSourceWebCoreanimationWebAnimationh">trunk/Source/WebCore/animation/WebAnimation.h</a></li>
<li><a href="#trunkSourceWebCoreanimationWebAnimationidl">trunk/Source/WebCore/animation/WebAnimation.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/LayoutTests/ChangeLog        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2016-06-08  Rawinder Singh  &lt;rawinder.singh-webkit@cisra.canon.com.au&gt;
+
+        [web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
+        https://bugs.webkit.org/show_bug.cgi?id=156096
+
+        Reviewed by Dean Jackson.
+
+        Adds:
+        - Animatable interface and implementation of getAnimations in Element
+        - Interface and implementation for Document getAnimations method.
+        - AnimationEffect interface and class stub.
+        - KeyframeEffect interface and constructor implementation.
+        - 'Animation' interface, constructor and query methods for effect and timeline.
+        - Remove runtime condition on Web animation interfaces (compile time flag is specified).
+
+        * platform/gtk/js/dom/global-constructors-attributes-expected.txt:
+        * platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
+        * webanimations/Document-expected.txt: Added.
+        * webanimations/Document.html: Added.
+        * webanimations/script-tests/Document.js: Added.
+
</ins><span class="cx"> 2016-06-08  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         self.hasOwnProperty() does not work inside Web workers
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -8,16 +8,41 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Animation').value is Animation
+PASS Object.getOwnPropertyDescriptor(global, 'Animation').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Animation').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Animation').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Animation').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').value is AnimationEffectReadOnly
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').value is AnimationEvent
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').value is AnimationTimeline
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').value is ApplicationCache
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Array').value is Array
+PASS Object.getOwnPropertyDescriptor(global, 'Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Array').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').value is ArrayBuffer
+PASS Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Attr').value is Attr
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Attr').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Attr').hasOwnProperty('set') is false
</span><span class="lines">@@ -63,11 +88,16 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AudioProcessingEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AudioProcessingEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AudioProcessingEvent').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'AudioStreamTrack').value is AudioStreamTrack
-PASS Object.getOwnPropertyDescriptor(global, 'AudioStreamTrack').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'AudioStreamTrack').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'AudioStreamTrack').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'AudioStreamTrack').configurable is true
</del><ins>+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrack').value is AudioTrack
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrack').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrack').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrack').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrack').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrackList').value is AudioTrackList
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrackList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrackList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrackList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioTrackList').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'BarProp').value is BarProp
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'BarProp').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'BarProp').hasOwnProperty('set') is false
</span><span class="lines">@@ -93,6 +123,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Blob').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Blob').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Blob').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Boolean').value is Boolean
+PASS Object.getOwnPropertyDescriptor(global, 'Boolean').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Boolean').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Boolean').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Boolean').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').value is ByteLengthQueuingStrategy
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').hasOwnProperty('set') is false
</span><span class="lines">@@ -298,16 +333,26 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').value is DataCue
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').configurable is true
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').value is DataTransfer
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'DataView').value is DataView
+PASS Object.getOwnPropertyDescriptor(global, 'DataView').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DataView').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DataView').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DataView').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Database').value is Database
+PASS Object.getOwnPropertyDescriptor(global, 'Database').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Database').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Database').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Database').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Date').value is Date
+PASS Object.getOwnPropertyDescriptor(global, 'Date').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Date').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Date').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Date').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DelayNode').value is DelayNode
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DelayNode').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DelayNode').hasOwnProperty('set') is false
</span><span class="lines">@@ -323,6 +368,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').value is DocumentTimeline
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').value is DocumentType
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').hasOwnProperty('set') is false
</span><span class="lines">@@ -338,11 +388,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Element').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Element').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Element').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Error').value is Error
+PASS Object.getOwnPropertyDescriptor(global, 'Error').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Error').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Error').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Error').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').value is ErrorEvent
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'EvalError').value is EvalError
+PASS Object.getOwnPropertyDescriptor(global, 'EvalError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'EvalError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'EvalError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'EvalError').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Event').value is Event
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Event').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Event').hasOwnProperty('set') is false
</span><span class="lines">@@ -378,6 +438,16 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FileReader').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FileReader').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FileReader').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Float32Array').value is Float32Array
+PASS Object.getOwnPropertyDescriptor(global, 'Float32Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Float32Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Float32Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Float32Array').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Float64Array').value is Float64Array
+PASS Object.getOwnPropertyDescriptor(global, 'Float64Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Float64Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Float64Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Float64Array').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FocusEvent').value is FocusEvent
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FocusEvent').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FocusEvent').hasOwnProperty('set') is false
</span><span class="lines">@@ -398,6 +468,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FormData').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'FormData').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Function').value is Function
+PASS Object.getOwnPropertyDescriptor(global, 'Function').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Function').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Function').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Function').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'GainNode').value is GainNode
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'GainNode').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'GainNode').hasOwnProperty('set') is false
</span><span class="lines">@@ -663,6 +738,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLParamElement').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLParamElement').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLParamElement').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPictureElement').value is HTMLPictureElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPictureElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPictureElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPictureElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPictureElement').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLPreElement').value is HTMLPreElement
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLPreElement').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLPreElement').hasOwnProperty('set') is false
</span><span class="lines">@@ -808,16 +888,41 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ImageData').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ImageData').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ImageData').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Int16Array').value is Int16Array
+PASS Object.getOwnPropertyDescriptor(global, 'Int16Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int16Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int16Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int16Array').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Int32Array').value is Int32Array
+PASS Object.getOwnPropertyDescriptor(global, 'Int32Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int32Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int32Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int32Array').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Int8Array').value is Int8Array
+PASS Object.getOwnPropertyDescriptor(global, 'Int8Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int8Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int8Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Int8Array').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').value is KeyboardEvent
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').value is KeyframeEffect
+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Location').value is Location
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Location').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Location').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Location').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Location').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Map').value is Map
+PASS Object.getOwnPropertyDescriptor(global, 'Map').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Map').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Map').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Map').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaController').value is MediaController
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaController').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaController').hasOwnProperty('set') is false
</span><span class="lines">@@ -843,6 +948,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaSource').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaSource').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaSource').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'MediaStream').value is MediaStream
+PASS Object.getOwnPropertyDescriptor(global, 'MediaStream').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaStream').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaStream').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaStream').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaStreamAudioDestinationNode').value is MediaStreamAudioDestinationNode
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaStreamAudioDestinationNode').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'MediaStreamAudioDestinationNode').hasOwnProperty('set') is false
</span><span class="lines">@@ -943,6 +1053,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'NodeList').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'NodeList').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'NodeList').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Notification').value is Notification
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Number').value is Number
+PASS Object.getOwnPropertyDescriptor(global, 'Number').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Number').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Number').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Number').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Object').value is Object
+PASS Object.getOwnPropertyDescriptor(global, 'Object').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Object').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Object').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Object').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'OfflineAudioCompletionEvent').value is OfflineAudioCompletionEvent
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'OfflineAudioCompletionEvent').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'OfflineAudioCompletionEvent').hasOwnProperty('set') is false
</span><span class="lines">@@ -978,11 +1103,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
</span><span class="lines">@@ -998,11 +1118,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').value is PerformanceResourceTiming
-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').configurable is true
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceTiming').value is PerformanceTiming
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceTiming').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceTiming').hasOwnProperty('set') is false
</span><span class="lines">@@ -1038,6 +1153,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ProgressEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ProgressEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ProgressEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Promise').value is Promise
+PASS Object.getOwnPropertyDescriptor(global, 'Promise').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Promise').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Promise').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Promise').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'RGBColor').value is RGBColor
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'RGBColor').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'RGBColor').hasOwnProperty('set') is false
</span><span class="lines">@@ -1078,6 +1198,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Range').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Range').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Range').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'RangeError').value is RangeError
+PASS Object.getOwnPropertyDescriptor(global, 'RangeError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'RangeError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'RangeError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'RangeError').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ReadableStream').value is ReadableStream
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ReadableStream').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ReadableStream').hasOwnProperty('set') is false
</span><span class="lines">@@ -1088,6 +1213,16 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Rect').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Rect').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Rect').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'ReferenceError').value is ReferenceError
+PASS Object.getOwnPropertyDescriptor(global, 'ReferenceError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ReferenceError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ReferenceError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ReferenceError').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'RegExp').value is RegExp
+PASS Object.getOwnPropertyDescriptor(global, 'RegExp').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'RegExp').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'RegExp').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'RegExp').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Request').value is Request
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Request').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Request').hasOwnProperty('set') is false
</span><span class="lines">@@ -1098,11 +1233,31 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Response').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Response').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Response').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'SQLError').value is SQLError
+PASS Object.getOwnPropertyDescriptor(global, 'SQLError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLError').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'SQLException').value is SQLException
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'SQLException').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'SQLException').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'SQLException').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'SQLException').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSet').value is SQLResultSet
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSet').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSet').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSet').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSet').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSetRowList').value is SQLResultSetRowList
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSetRowList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSetRowList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSetRowList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLResultSetRowList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SQLTransaction').value is SQLTransaction
+PASS Object.getOwnPropertyDescriptor(global, 'SQLTransaction').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLTransaction').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLTransaction').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLTransaction').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'SVGAElement').value is SVGAElement
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'SVGAElement').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'SVGAElement').hasOwnProperty('set') is false
</span><span class="lines">@@ -1828,6 +1983,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Selection').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Selection').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Selection').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Set').value is Set
+PASS Object.getOwnPropertyDescriptor(global, 'Set').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Set').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Set').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Set').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Storage').value is Storage
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Storage').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Storage').hasOwnProperty('set') is false
</span><span class="lines">@@ -1838,6 +1998,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StorageEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StorageEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StorageEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'String').value is String
+PASS Object.getOwnPropertyDescriptor(global, 'String').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'String').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'String').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'String').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StyleSheet').value is StyleSheet
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StyleSheet').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StyleSheet').hasOwnProperty('set') is false
</span><span class="lines">@@ -1848,6 +2013,16 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StyleSheetList').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StyleSheetList').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'StyleSheetList').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Symbol').value is Symbol
+PASS Object.getOwnPropertyDescriptor(global, 'Symbol').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Symbol').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Symbol').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Symbol').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SyntaxError').value is SyntaxError
+PASS Object.getOwnPropertyDescriptor(global, 'SyntaxError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SyntaxError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SyntaxError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SyntaxError').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Text').value is Text
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Text').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Text').hasOwnProperty('set') is false
</span><span class="lines">@@ -1918,36 +2093,96 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'TreeWalker').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'TreeWalker').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'TreeWalker').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'TypeError').value is TypeError
+PASS Object.getOwnPropertyDescriptor(global, 'TypeError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TypeError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TypeError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TypeError').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').value is UIEvent
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'URIError').value is URIError
+PASS Object.getOwnPropertyDescriptor(global, 'URIError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'URIError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'URIError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'URIError').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'URL').value is URL
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'URL').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'URL').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'URL').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'URL').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Uint16Array').value is Uint16Array
+PASS Object.getOwnPropertyDescriptor(global, 'Uint16Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint16Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint16Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint16Array').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Uint32Array').value is Uint32Array
+PASS Object.getOwnPropertyDescriptor(global, 'Uint32Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint32Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint32Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint32Array').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8Array').value is Uint8Array
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8Array').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').value is Uint8ClampedArray
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').value is UserMessageHandler
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').value is UserMessageHandlersNamespace
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').value is VTTCue
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').value is VTTRegion
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ValidityState').value is ValidityState
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ValidityState').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ValidityState').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ValidityState').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ValidityState').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'VideoStreamTrack').value is VideoStreamTrack
-PASS Object.getOwnPropertyDescriptor(global, 'VideoStreamTrack').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'VideoStreamTrack').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'VideoStreamTrack').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'VideoStreamTrack').configurable is true
</del><ins>+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrack').value is VideoTrack
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrack').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrack').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrack').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrack').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrackList').value is VideoTrackList
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrackList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrackList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrackList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'VideoTrackList').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').value is WaveShaperNode
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WeakMap').value is WeakMap
+PASS Object.getOwnPropertyDescriptor(global, 'WeakMap').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WeakMap').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WeakMap').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WeakMap').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WeakSet').value is WeakSet
+PASS Object.getOwnPropertyDescriptor(global, 'WeakSet').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WeakSet').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WeakSet').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WeakSet').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLActiveInfo').value is WebGLActiveInfo
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLActiveInfo').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLActiveInfo').hasOwnProperty('set') is false
</span><span class="lines">@@ -1973,6 +2208,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLProgram').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLProgram').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLProgram').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').value is WebGLQuery
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderbuffer').value is WebGLRenderbuffer
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderbuffer').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderbuffer').hasOwnProperty('set') is false
</span><span class="lines">@@ -1983,6 +2223,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderingContext').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderingContext').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderingContext').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').value is WebGLSampler
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLShader').value is WebGLShader
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLShader').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLShader').hasOwnProperty('set') is false
</span><span class="lines">@@ -1993,11 +2238,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLShaderPrecisionFormat').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLShaderPrecisionFormat').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLShaderPrecisionFormat').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').value is WebGLSync
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').value is WebGLTexture
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').value is WebGLTransformFeedback
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLUniformLocation').value is WebGLUniformLocation
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLUniformLocation').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebGLUniformLocation').hasOwnProperty('set') is false
</span><span class="lines">@@ -2008,6 +2263,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
</span><span class="lines">@@ -2023,11 +2283,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').value is WebKitDataCue
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').value is WebKitMutationObserver
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').value is WebKitNamespace
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitPoint').value is WebKitPoint
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitPoint').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitPoint').hasOwnProperty('set') is false
</span><span class="lines">@@ -2128,11 +2398,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioPannerNode').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioPannerNode').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioPannerNode').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'webkitMediaStream').value is webkitMediaStream
-PASS Object.getOwnPropertyDescriptor(global, 'webkitMediaStream').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'webkitMediaStream').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'webkitMediaStream').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'webkitMediaStream').configurable is true
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'webkitOfflineAudioContext').value is webkitOfflineAudioContext
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'webkitOfflineAudioContext').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'webkitOfflineAudioContext').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacyosemitejsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -8,11 +8,26 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'Animation').value is Animation
+PASS Object.getOwnPropertyDescriptor(global, 'Animation').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Animation').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Animation').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Animation').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').value is AnimationEffectReadOnly
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEffectReadOnly').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').value is AnimationEvent
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').value is AnimationTimeline
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationTimeline').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').value is ApplicationCache
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').hasOwnProperty('set') is false
</span><span class="lines">@@ -353,6 +368,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').value is DocumentTimeline
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentTimeline').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').value is DocumentType
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').hasOwnProperty('set') is false
</span><span class="lines">@@ -898,6 +918,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').value is KeyframeEffect
+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyframeEffect').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Location').value is Location
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Location').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Location').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestswebanimationsDocumentexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/webanimations/Document-expected.txt (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webanimations/Document-expected.txt                                (rev 0)
+++ trunk/LayoutTests/webanimations/Document-expected.txt        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+Web Animation API: Document interface extension test.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS document.timeline is not null
+PASS document.timeline is document.timeline
+PASS document.timeline is not iframe.contentDocument.timeline
+PASS document.getAnimations().length is 0
+PASS target.getAnimations().length is 0
+PASS iframe.contentDocument.getAnimations().length is 0
+PASS animation is not null
+PASS document.getAnimations().length is 1
+PASS target.getAnimations().length is 1
+PASS iframe.contentDocument.getAnimations().length is 0
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestswebanimationsDocumenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/webanimations/Document.html (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webanimations/Document.html                                (rev 0)
+++ trunk/LayoutTests/webanimations/Document.html        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;div id=&quot;target&quot;&gt;&lt;/div&gt;
+&lt;iframe src=&quot;data:text/html;charset=utf-8,&quot; width=&quot;10&quot; height=&quot;10&quot; id=&quot;iframe&quot;&gt;&lt;/iframe&gt;
+&lt;script src=&quot;script-tests/Document.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestswebanimationsscripttestsDocumentjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/webanimations/script-tests/Document.js (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webanimations/script-tests/Document.js                                (rev 0)
+++ trunk/LayoutTests/webanimations/script-tests/Document.js        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+description(&quot;Web Animation API: Document interface extension test.&quot;);
+
+// Enable Web Animations API.
+if (window.testRunner)
+    window.testRunner.overridePreference(&quot;WebKitWebAnimationsEnabled&quot;, &quot;1&quot;);
+
+var iframe = document.getElementById(&quot;iframe&quot;);
+var target = document.getElementById(&quot;target&quot;);
+
+// Check document.timeline.
+shouldNotBe(&quot;document.timeline&quot;, &quot;null&quot;);
+
+// Returns same object each time.
+shouldBe(&quot;document.timeline&quot;, &quot;document.timeline&quot;);
+
+// Different object for each document.
+shouldNotBe(&quot;document.timeline&quot;, &quot;iframe.contentDocument.timeline&quot;);
+
+// All getAnimations calls should be empty.
+shouldBe(&quot;document.getAnimations().length&quot;, &quot;0&quot;);
+shouldBe(&quot;target.getAnimations().length&quot;, &quot;0&quot;);
+shouldBe(&quot;iframe.contentDocument.getAnimations().length&quot;, &quot;0&quot;);
+
+// Check created animation.
+var effect = new KeyframeEffect(target);
+var animation = new Animation(effect, document.timeline);
+shouldNotBe(&quot;animation&quot;, &quot;null&quot;);
+
+// Check getAnimations for timeline and target.
+shouldBe(&quot;document.getAnimations().length&quot;, &quot;1&quot;);
+shouldBe(&quot;target.getAnimations().length&quot;, &quot;1&quot;);
+
+// Check getAnimations for iframe.
+shouldBe(&quot;iframe.contentDocument.getAnimations().length&quot;, &quot;0&quot;);
+
+debug(&quot;&quot;);
+
+successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2016-06-08  Rawinder Singh  &lt;rawinder.singh-webkit@cisra.canon.com.au&gt;
+
+        [web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
+        https://bugs.webkit.org/show_bug.cgi?id=156096
+
+        Reviewed by Dean Jackson.
+
+        Adds:
+        - Animatable interface and implementation of getAnimations in Element
+        - Interface and implementation for Document getAnimations method.
+        - AnimationEffect interface and class stub.
+        - KeyframeEffect interface and constructor implementation.
+        - 'Animation' interface, constructor and query methods for effect and timeline.
+        - Remove runtime condition on Web animation interfaces (compile time flag is specified).
+
+        * runtime/CommonIdentifiers.h:
+
</ins><span class="cx"> 2016-06-08  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         self.hasOwnProperty() does not work inside Web workers
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonIdentifiersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -28,6 +28,8 @@
</span><span class="cx"> // MarkedArgumentBuffer of property names, passed to a macro so we can do set them up various
</span><span class="cx"> // ways without repeating the list.
</span><span class="cx"> #define JSC_COMMON_IDENTIFIERS_EACH_PROPERTY_NAME(macro) \
</span><ins>+    macro(Animation) \
+    macro(AnimationEffectReadOnly) \
</ins><span class="cx">     macro(AnimationTimeline) \
</span><span class="cx">     macro(Array) \
</span><span class="cx">     macro(ArrayBuffer) \
</span><span class="lines">@@ -182,6 +184,7 @@
</span><span class="cx">     macro(isWatchpoint) \
</span><span class="cx">     macro(jettisonReason) \
</span><span class="cx">     macro(join) \
</span><ins>+    macro(KeyframeEffect) \
</ins><span class="cx">     macro(lastIndex) \
</span><span class="cx">     macro(length) \
</span><span class="cx">     macro(line) \
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -3016,15 +3016,22 @@
</span><span class="cx"> 
</span><span class="cx"> if (ENABLE_WEB_ANIMATIONS)
</span><span class="cx">     list(APPEND WebCore_IDL_FILES
</span><ins>+        &quot;animation/Animatable.idl&quot;
+        &quot;animation/AnimationEffect.idl&quot;
</ins><span class="cx">         &quot;animation/AnimationTimeline.idl&quot;
</span><span class="cx">         &quot;animation/DocumentAnimation.idl&quot;
</span><span class="cx">         &quot;animation/DocumentTimeline.idl&quot;
</span><ins>+        &quot;animation/KeyframeEffect.idl&quot;
+        &quot;animation/WebAnimation.idl&quot;
</ins><span class="cx">     )
</span><span class="cx"> 
</span><span class="cx">     list(APPEND WebCore_SOURCES
</span><ins>+        &quot;animation/AnimationEffect.cpp&quot;
</ins><span class="cx">         &quot;animation/AnimationTimeline.cpp&quot;
</span><span class="cx">         &quot;animation/DocumentAnimation.cpp&quot;
</span><span class="cx">         &quot;animation/DocumentTimeline.cpp&quot;
</span><ins>+        &quot;animation/KeyframeEffect.cpp&quot;
+        &quot;animation/WebAnimation.cpp&quot;
</ins><span class="cx">     )
</span><span class="cx"> endif ()
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/ChangeLog        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -1,3 +1,72 @@
</span><ins>+2016-06-08  Rawinder Singh  &lt;rawinder.singh-webkit@cisra.canon.com.au&gt;
+
+        [web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
+        https://bugs.webkit.org/show_bug.cgi?id=156096
+
+        Reviewed by Dean Jackson.
+
+        Adds:
+        - Animatable interface and implementation of getAnimations in Element
+        - Interface and implementation for Document getAnimations method.
+        - AnimationEffect interface and class stub.
+        - KeyframeEffect interface and constructor implementation.
+        - 'Animation' interface, constructor and query methods for effect and timeline.
+        - Remove runtime condition on Web animation interfaces (compile time flag is specified).
+
+        Test: webanimations/Document.html
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * PlatformGTK.cmake:
+        * WebCore.xcodeproj/project.pbxproj:
+        * animation/Animatable.idl: Copied from Source/WebCore/animation/DocumentAnimation.idl.
+        * animation/AnimationEffect.cpp: Copied from Source/WebCore/animation/AnimationTimeline.cpp.
+        (WebCore::AnimationEffect::AnimationEffect):
+        (WebCore::AnimationEffect::~AnimationEffect):
+        (WebCore::AnimationEffect::setAnimation):
+        (WebCore::AnimationEffect::isCurrent):
+        (WebCore::AnimationEffect::isInEffect):
+        * animation/AnimationEffect.h: Copied from Source/WebCore/animation/DocumentTimeline.cpp.
+        * animation/AnimationEffect.idl: Copied from Source/WebCore/animation/AnimationTimeline.idl.
+        * animation/AnimationTimeline.cpp:
+        (WebCore::AnimationTimeline::destroy):
+        (WebCore::AnimationTimeline::attachAnimation):
+        (WebCore::AnimationTimeline::detachAnimation):
+        * animation/AnimationTimeline.h:
+        * animation/AnimationTimeline.idl:
+        * animation/DocumentAnimation.cpp:
+        (WebCore::DocumentAnimation::timeline):
+        (WebCore::DocumentAnimation::getAnimations):
+        (WebCore::DocumentAnimation::addAnimation):
+        (WebCore::DocumentAnimation::removeAnimation):
+        * animation/DocumentAnimation.h:
+        (WebCore::DocumentAnimation::getAnimations):
+        * animation/DocumentAnimation.idl:
+        * animation/DocumentTimeline.cpp:
+        (WebCore::DocumentTimeline::create):
+        (WebCore::DocumentTimeline::DocumentTimeline):
+        (WebCore::DocumentTimeline::attach):
+        (WebCore::DocumentTimeline::detach):
+        * animation/DocumentTimeline.h:
+        * animation/DocumentTimeline.idl:
+        * animation/KeyframeEffect.cpp: Copied from Source/WebCore/animation/DocumentTimeline.cpp.
+        (WebCore::KeyframeEffect::create):
+        (WebCore::KeyframeEffect::KeyframeEffect):
+        (WebCore::KeyframeEffect::~KeyframeEffect):
+        * animation/KeyframeEffect.h: Copied from Source/WebCore/animation/DocumentTimeline.h.
+        * animation/KeyframeEffect.idl: Copied from Source/WebCore/animation/AnimationTimeline.idl.
+        * animation/WebAnimation.cpp: Copied from Source/WebCore/animation/DocumentAnimation.cpp.
+        (WebCore::WebAnimation::create):
+        (WebCore::WebAnimation::WebAnimation):
+        (WebCore::WebAnimation::~WebAnimation):
+        * animation/WebAnimation.h: Copied from Source/WebCore/animation/DocumentAnimation.h.
+        * animation/WebAnimation.idl: Copied from Source/WebCore/animation/DocumentTimeline.idl.
+        * bindings/scripts/CodeGeneratorGObject.pm:
+        * dom/Element.cpp:
+        (WebCore::Element::getAnimations):
+        * dom/Element.h:
+        * dom/Element.idl:
+
</ins><span class="cx"> 2016-06-08  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         self.hasOwnProperty() does not work inside Web workers
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/DerivedSources.make        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -223,9 +223,13 @@
</span><span class="cx">     $(WebCore)/Modules/webdatabase/SQLTransactionErrorCallback.idl \
</span><span class="cx">     $(WebCore)/Modules/websockets/CloseEvent.idl \
</span><span class="cx">     $(WebCore)/Modules/websockets/WebSocket.idl \
</span><ins>+    $(WebCore)/animation/Animatable.idl \
+    $(WebCore)/animation/AnimationEffect.idl \
</ins><span class="cx">     $(WebCore)/animation/AnimationTimeline.idl \
</span><span class="cx">     $(WebCore)/animation/DocumentAnimation.idl \
</span><span class="cx">     $(WebCore)/animation/DocumentTimeline.idl \
</span><ins>+    $(WebCore)/animation/KeyframeEffect.idl \
+    $(WebCore)/animation/WebAnimation.idl \
</ins><span class="cx">     $(WebCore)/crypto/CryptoKey.idl \
</span><span class="cx">     $(WebCore)/crypto/CryptoKeyPair.idl \
</span><span class="cx">     $(WebCore)/crypto/SubtleCrypto.idl \
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformGTK.cmake (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformGTK.cmake        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/PlatformGTK.cmake        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -592,9 +592,13 @@
</span><span class="cx"> 
</span><span class="cx"> if (ENABLE_WEB_ANIMATIONS)
</span><span class="cx">     list(APPEND GObjectDOMBindingsUnstable_IDL_FILES
</span><ins>+        animation/Animatable.idl
+        animation/AnimationEffect.idl
</ins><span class="cx">         animation/AnimationTimeline.idl
</span><span class="cx">         animation/DocumentAnimation.idl
</span><span class="cx">         animation/DocumentTimeline.idl
</span><ins>+        animation/KeyframeEffect.idl
+        animation/WebAnimation.idl
</ins><span class="cx">     )
</span><span class="cx"> endif ()
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -576,6 +576,12 @@
</span><span class="cx">                 0FFD4D6018651FA300512F6E /* AsyncScrollingCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FFD4D5E18651FA300512F6E /* AsyncScrollingCoordinator.cpp */; };
</span><span class="cx">                 0FFD4D6118651FA300512F6E /* AsyncScrollingCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFD4D5F18651FA300512F6E /* AsyncScrollingCoordinator.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 10FB084B14E15C7E00A3DB98 /* PublicURLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 10FB084A14E15C7E00A3DB98 /* PublicURLManager.h */; };
</span><ins>+                120DE3ED1C86CA3E00B6D4DD /* WebAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 120DE3EA1C80161C00B6D4DD /* WebAnimation.cpp */; };
+                120DE3F11C86CCC600B6D4DD /* AnimationEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 120DE3EE1C86CCBD00B6D4DD /* AnimationEffect.cpp */; };
+                120DE3F81C87C5A800B6D4DD /* JSWebAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 120DE3F51C87C58E00B6D4DD /* JSWebAnimation.h */; };
+                120DE3F91C87C5AB00B6D4DD /* JSWebAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 120DE3F41C87C58E00B6D4DD /* JSWebAnimation.cpp */; };
+                120DE3FD1C87E18400B6D4DD /* JSAnimationEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 120DE3FC1C87E17900B6D4DD /* JSAnimationEffect.h */; };
+                120DE3FE1C87E18800B6D4DD /* JSAnimationEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 120DE3FB1C87E17900B6D4DD /* JSAnimationEffect.cpp */; };
</ins><span class="cx">                 1221E0471BFC3D2C006A1A00 /* DocumentAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1221E0411BFC3D2C006A1A00 /* DocumentAnimation.cpp */; };
</span><span class="cx">                 1221E0481BFC3D2C006A1A00 /* DocumentAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1221E0421BFC3D2C006A1A00 /* DocumentAnimation.h */; };
</span><span class="cx">                 1221E04A1BFC3D2C006A1A00 /* DocumentTimeline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1221E0441BFC3D2C006A1A00 /* DocumentTimeline.cpp */; };
</span><span class="lines">@@ -588,6 +594,11 @@
</span><span class="cx">                 1221E06C1C03D224006A1A00 /* JSAnimationTimeline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1221E06A1C03D224006A1A00 /* JSAnimationTimeline.cpp */; };
</span><span class="cx">                 1221E06D1C03D224006A1A00 /* JSAnimationTimeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 1221E06B1C03D224006A1A00 /* JSAnimationTimeline.h */; };
</span><span class="cx">                 1221E0731C03E4C2006A1A00 /* JSAnimationTimelineCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1221E0721C03E4C2006A1A00 /* JSAnimationTimelineCustom.cpp */; };
</span><ins>+                12A253DB1C8FF7DC00C22295 /* KeyframeEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12A253D81C8FF7CC00C22295 /* KeyframeEffect.cpp */; };
+                12A253E01C8FFF6600C22295 /* JSKeyframeEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12A253DE1C8FFF5700C22295 /* JSKeyframeEffect.cpp */; };
+                12A253E11C8FFF6600C22295 /* JSKeyframeEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 12A253DF1C8FFF5700C22295 /* JSKeyframeEffect.h */; };
+                12A253E21C8FFF6600C22295 /* JSAnimatable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12A253DC1C8FFF4200C22295 /* JSAnimatable.cpp */; };
+                12A253E31C8FFF6600C22295 /* JSAnimatable.h in Headers */ = {isa = PBXBuildFile; fileRef = 12A253DD1C8FFF4200C22295 /* JSAnimatable.h */; };
</ins><span class="cx">                 1400D7A817136EA70077CE05 /* ScriptWrappableInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 1400D7A717136EA70077CE05 /* ScriptWrappableInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 1402645E0AFDC19B005919E2 /* LoggingMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1402645D0AFDC19B005919E2 /* LoggingMac.mm */; };
</span><span class="cx">                 1403B99709EB13AF00797C7F /* DOMWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 1403B99509EB13AF00797C7F /* DOMWindow.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -7997,6 +8008,17 @@
</span><span class="cx">                 0FFD4D5E18651FA300512F6E /* AsyncScrollingCoordinator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AsyncScrollingCoordinator.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FFD4D5F18651FA300512F6E /* AsyncScrollingCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncScrollingCoordinator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 10FB084A14E15C7E00A3DB98 /* PublicURLManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PublicURLManager.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                120DE3EA1C80161C00B6D4DD /* WebAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebAnimation.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3EB1C80161C00B6D4DD /* WebAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAnimation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3EC1C80161C00B6D4DD /* WebAnimation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebAnimation.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3EE1C86CCBD00B6D4DD /* AnimationEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationEffect.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3EF1C86CCBD00B6D4DD /* AnimationEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationEffect.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3F41C87C58E00B6D4DD /* JSWebAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebAnimation.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3F51C87C58E00B6D4DD /* JSWebAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebAnimation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3FA1C87D1F100B6D4DD /* AnimationEffect.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AnimationEffect.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3FB1C87E17900B6D4DD /* JSAnimationEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAnimationEffect.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE3FC1C87E17900B6D4DD /* JSAnimationEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAnimationEffect.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                120DE4011C8E997A00B6D4DD /* Animatable.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Animatable.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 1221E0411BFC3D2C006A1A00 /* DocumentAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentAnimation.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1221E0421BFC3D2C006A1A00 /* DocumentAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentAnimation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1221E0431BFC3D2C006A1A00 /* DocumentAnimation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DocumentAnimation.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8013,6 +8035,13 @@
</span><span class="cx">                 1221E06A1C03D224006A1A00 /* JSAnimationTimeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAnimationTimeline.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1221E06B1C03D224006A1A00 /* JSAnimationTimeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAnimationTimeline.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1221E0721C03E4C2006A1A00 /* JSAnimationTimelineCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAnimationTimelineCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                12A253D81C8FF7CC00C22295 /* KeyframeEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyframeEffect.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                12A253D91C8FF7CC00C22295 /* KeyframeEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyframeEffect.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                12A253DA1C8FF7CC00C22295 /* KeyframeEffect.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = KeyframeEffect.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                12A253DC1C8FFF4200C22295 /* JSAnimatable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAnimatable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                12A253DD1C8FFF4200C22295 /* JSAnimatable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAnimatable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                12A253DE1C8FFF5700C22295 /* JSKeyframeEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSKeyframeEffect.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                12A253DF1C8FFF5700C22295 /* JSKeyframeEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSKeyframeEffect.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 1400D7A717136EA70077CE05 /* ScriptWrappableInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptWrappableInlines.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1402645D0AFDC19B005919E2 /* LoggingMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = LoggingMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1403B90C09EB124500797C7F /* DOMWindow.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMWindow.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -15967,6 +15996,10 @@
</span><span class="cx">                 1221E0401BFC3CF2006A1A00 /* animation */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                120DE4011C8E997A00B6D4DD /* Animatable.idl */,
+                                120DE3EE1C86CCBD00B6D4DD /* AnimationEffect.cpp */,
+                                120DE3EF1C86CCBD00B6D4DD /* AnimationEffect.h */,
+                                120DE3FA1C87D1F100B6D4DD /* AnimationEffect.idl */,
</ins><span class="cx">                                 1221E0611C02D623006A1A00 /* AnimationTimeline.cpp */,
</span><span class="cx">                                 1221E0621C02D623006A1A00 /* AnimationTimeline.h */,
</span><span class="cx">                                 1221E0651C02D636006A1A00 /* AnimationTimeline.idl */,
</span><span class="lines">@@ -15976,6 +16009,12 @@
</span><span class="cx">                                 1221E0441BFC3D2C006A1A00 /* DocumentTimeline.cpp */,
</span><span class="cx">                                 1221E0451BFC3D2C006A1A00 /* DocumentTimeline.h */,
</span><span class="cx">                                 1221E0461BFC3D2C006A1A00 /* DocumentTimeline.idl */,
</span><ins>+                                12A253D81C8FF7CC00C22295 /* KeyframeEffect.cpp */,
+                                12A253D91C8FF7CC00C22295 /* KeyframeEffect.h */,
+                                12A253DA1C8FF7CC00C22295 /* KeyframeEffect.idl */,
+                                120DE3EA1C80161C00B6D4DD /* WebAnimation.cpp */,
+                                120DE3EB1C80161C00B6D4DD /* WebAnimation.h */,
+                                120DE3EC1C80161C00B6D4DD /* WebAnimation.idl */,
</ins><span class="cx">                         );
</span><span class="cx">                         path = animation;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -15983,6 +16022,14 @@
</span><span class="cx">                 1221E0581C02B409006A1A00 /* Animation */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                12A253DE1C8FFF5700C22295 /* JSKeyframeEffect.cpp */,
+                                12A253DF1C8FFF5700C22295 /* JSKeyframeEffect.h */,
+                                12A253DC1C8FFF4200C22295 /* JSAnimatable.cpp */,
+                                12A253DD1C8FFF4200C22295 /* JSAnimatable.h */,
+                                120DE3FB1C87E17900B6D4DD /* JSAnimationEffect.cpp */,
+                                120DE3FC1C87E17900B6D4DD /* JSAnimationEffect.h */,
+                                120DE3F41C87C58E00B6D4DD /* JSWebAnimation.cpp */,
+                                120DE3F51C87C58E00B6D4DD /* JSWebAnimation.h */,
</ins><span class="cx">                                 1221E06A1C03D224006A1A00 /* JSAnimationTimeline.cpp */,
</span><span class="cx">                                 1221E06B1C03D224006A1A00 /* JSAnimationTimeline.h */,
</span><span class="cx">                                 1221E0591C02B444006A1A00 /* JSDocumentAnimation.cpp */,
</span><span class="lines">@@ -25277,6 +25324,7 @@
</span><span class="cx">                                 5FA904CA178E61F5004C8A2D /* CertificateInfo.h in Headers */,
</span><span class="cx">                                 A10D7FEC1C2676D100C6C115 /* CFNetworkConnectionCacheSPI.h in Headers */,
</span><span class="cx">                                 CE12525B1A1C018200864480 /* CFNetworkSPI.h in Headers */,
</span><ins>+                                120DE3FD1C87E18400B6D4DD /* JSAnimationEffect.h in Headers */,
</ins><span class="cx">                                 E1A8E56717552B2A007488E7 /* CFURLExtras.h in Headers */,
</span><span class="cx">                                 FE36FD1516C7826500F887C1 /* ChangeVersionData.h in Headers */,
</span><span class="cx">                                 97BC69DD1505F076001B74AC /* ChangeVersionWrapper.h in Headers */,
</span><span class="lines">@@ -25341,6 +25389,7 @@
</span><span class="cx">                                 26F0C8A01A2EC3BE002794F8 /* ContentExtensionsBackend.h in Headers */,
</span><span class="cx">                                 262391361A648CEE007251A3 /* ContentExtensionsDebugging.h in Headers */,
</span><span class="cx">                                 51FB67DC1AE6B82F00D06C5A /* ContentExtensionStyleSheet.h in Headers */,
</span><ins>+                                120DE3F81C87C5A800B6D4DD /* JSWebAnimation.h in Headers */,
</ins><span class="cx">                                 A149786F1ABAF33800CEF7E4 /* ContentFilter.h in Headers */,
</span><span class="cx">                                 A14090FD1AA51E480091191A /* ContentFilterUnblockHandler.h in Headers */,
</span><span class="cx">                                 97C471DC12F925BD0086354B /* ContentSecurityPolicy.h in Headers */,
</span><span class="lines">@@ -25399,6 +25448,7 @@
</span><span class="cx">                                 E19DA29C18189ADD00088BC8 /* CryptoAlgorithmHmacKeyParams.h in Headers */,
</span><span class="cx">                                 E1C6571F1816E50300256CDD /* CryptoAlgorithmHmacParams.h in Headers */,
</span><span class="cx">                                 E1C657251816E69D00256CDD /* CryptoAlgorithmIdentifier.h in Headers */,
</span><ins>+                                12A253E11C8FFF6600C22295 /* JSKeyframeEffect.h in Headers */,
</ins><span class="cx">                                 E1C657271816F9FE00256CDD /* CryptoAlgorithmParameters.h in Headers */,
</span><span class="cx">                                 E1FF8F6D180DB5BE00132674 /* CryptoAlgorithmRegistry.h in Headers */,
</span><span class="cx">                                 E1FE136B183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.h in Headers */,
</span><span class="lines">@@ -26487,6 +26537,7 @@
</span><span class="cx">                                 B27535720B053814002CE64F /* IntPoint.h in Headers */,
</span><span class="cx">                                 E462A4A1113E71BE004A4220 /* IntPointHash.h in Headers */,
</span><span class="cx">                                 B27535740B053814002CE64F /* IntRect.h in Headers */,
</span><ins>+                                12A253E31C8FFF6600C22295 /* JSAnimatable.h in Headers */,
</ins><span class="cx">                                 A2B9217316C5CC420041DCD9 /* IntRectExtent.h in Headers */,
</span><span class="cx">                                 E134F5AB12EE343F004EC58D /* IntRectHash.h in Headers */,
</span><span class="cx">                                 B27535750B053814002CE64F /* IntSize.h in Headers */,
</span><span class="lines">@@ -29459,6 +29510,7 @@
</span><span class="cx">                                 A7C9ABF81357A3BF00F5503F /* DetailsMarkerControl.cpp in Sources */,
</span><span class="cx">                                 A1ED778C1BE3294000DC1791 /* Device.cpp in Sources */,
</span><span class="cx">                                 CCC2B51515F613060048CDD6 /* DeviceController.cpp in Sources */,
</span><ins>+                                120DE3F11C86CCC600B6D4DD /* AnimationEffect.cpp in Sources */,
</ins><span class="cx">                                 31EAF97F121435A400E7C1BF /* DeviceMotionClientIOS.mm in Sources */,
</span><span class="cx">                                 31FB1A58120A5D0600DC02A0 /* DeviceMotionController.cpp in Sources */,
</span><span class="cx">                                 31FB1A5A120A5D0600DC02A0 /* DeviceMotionData.cpp in Sources */,
</span><span class="lines">@@ -30162,6 +30214,7 @@
</span><span class="cx">                                 2D46F04E17B96FBD005647F0 /* IntPoint.cpp in Sources */,
</span><span class="cx">                                 B27535600B053814002CE64F /* IntPointCG.cpp in Sources */,
</span><span class="cx">                                 B275357C0B053814002CE64F /* IntPointMac.mm in Sources */,
</span><ins>+                                120DE3FE1C87E18800B6D4DD /* JSAnimationEffect.cpp in Sources */,
</ins><span class="cx">                                 B27535730B053814002CE64F /* IntRect.cpp in Sources */,
</span><span class="cx">                                 B27535610B053814002CE64F /* IntRectCG.cpp in Sources */,
</span><span class="cx">                                 B275357D0B053814002CE64F /* IntRectMac.mm in Sources */,
</span><span class="lines">@@ -30434,6 +30487,7 @@
</span><span class="cx">                                 1AE2ABA60A1CE90500B42B25 /* JSHTMLParagraphElement.cpp in Sources */,
</span><span class="cx">                                 1AE2ABA80A1CE90500B42B25 /* JSHTMLParamElement.cpp in Sources */,
</span><span class="cx">                                 BC3D85BB1C0E2E7700D3B610 /* JSHTMLPictureElement.cpp in Sources */,
</span><ins>+                                12A253E21C8FFF6600C22295 /* JSAnimatable.cpp in Sources */,
</ins><span class="cx">                                 1AE2ABAA0A1CE90500B42B25 /* JSHTMLPreElement.cpp in Sources */,
</span><span class="cx">                                 A4226E5A1163D667008B8397 /* JSHTMLProgressElement.cpp in Sources */,
</span><span class="cx">                                 1AE2AEC70A1D297B00B42B25 /* JSHTMLQuoteElement.cpp in Sources */,
</span><span class="lines">@@ -30638,6 +30692,7 @@
</span><span class="cx">                                 BCE0139A0C0BEF180043860A /* JSStyleSheet.cpp in Sources */,
</span><span class="cx">                                 BC98A27D0C0C9950004BEBF7 /* JSStyleSheetCustom.cpp in Sources */,
</span><span class="cx">                                 A84EBD840CB8C97700079609 /* JSStyleSheetList.cpp in Sources */,
</span><ins>+                                120DE3F91C87C5AB00B6D4DD /* JSWebAnimation.cpp in Sources */,
</ins><span class="cx">                                 A84EBD780CB8C89200079609 /* JSStyleSheetListCustom.cpp in Sources */,
</span><span class="cx">                                 E1FF8F64180745D800132674 /* JSSubtleCrypto.cpp in Sources */,
</span><span class="cx">                                 E1FF8F681807460800132674 /* JSSubtleCryptoCustom.cpp in Sources */,
</span><span class="lines">@@ -30886,6 +30941,7 @@
</span><span class="cx">                                 BC60DB490D2A3D1E00B9918F /* JSXPathException.cpp in Sources */,
</span><span class="cx">                                 1A762C750A074F2600989F5B /* JSXPathExpression.cpp in Sources */,
</span><span class="cx">                                 1A762C770A074F2600989F5B /* JSXPathNSResolver.cpp in Sources */,
</span><ins>+                                12A253DB1C8FF7DC00C22295 /* KeyframeEffect.cpp in Sources */,
</ins><span class="cx">                                 1A762C790A074F2600989F5B /* JSXPathResult.cpp in Sources */,
</span><span class="cx">                                 A1C7FAA2133A5D3500D6732D /* JSXPathResultCustom.cpp in Sources */,
</span><span class="cx">                                 BCEFE1EA0DCA5F6400739219 /* JSXSLTProcessor.cpp in Sources */,
</span><span class="lines">@@ -30936,6 +30992,7 @@
</span><span class="cx">                                 656D37330ADBA5DE00A4554D /* LoaderNSURLExtras.mm in Sources */,
</span><span class="cx">                                 7EE6846812D26E3800E79415 /* LoaderRunLoopCF.cpp in Sources */,
</span><span class="cx">                                 51ABF64D16392E2800132A7A /* LoaderStrategy.cpp in Sources */,
</span><ins>+                                12A253E01C8FFF6600C22295 /* JSKeyframeEffect.cpp in Sources */,
</ins><span class="cx">                                 06E81EEC0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm in Sources */,
</span><span class="cx">                                 F5973DE115CFB2030027F804 /* LocaleMac.mm in Sources */,
</span><span class="cx">                                 7633A72713D8B33A008501B6 /* LocaleToScriptMappingDefault.cpp in Sources */,
</span><span class="lines">@@ -30968,6 +31025,7 @@
</span><span class="cx">                                 073794E119EE2D1B00E5A045 /* MediaConstraintsMock.cpp in Sources */,
</span><span class="cx">                                 417253AA1354BBBC00360F2A /* MediaControlElements.cpp in Sources */,
</span><span class="cx">                                 DEBCCDD516646EB200A452E1 /* MediaControlElementTypes.cpp in Sources */,
</span><ins>+                                120DE3ED1C86CA3E00B6D4DD /* WebAnimation.cpp in Sources */,
</ins><span class="cx">                                 CD27F6E7145770D30078207D /* MediaController.cpp in Sources */,
</span><span class="cx">                                 5E5E2B131CFC3E70000C0D85 /* RTCRtpTransceiver.cpp in Sources */,
</span><span class="cx">                                 1F3C3BEA135CAF3C00B8C1AC /* MediaControls.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoreanimationAnimatableidlfromrev201809trunkSourceWebCoreanimationDocumentAnimationidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/Animatable.idl (from rev 201809, trunk/Source/WebCore/animation/DocumentAnimation.idl) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/Animatable.idl                                (rev 0)
+++ trunk/Source/WebCore/animation/Animatable.idl        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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.
+ */
+
+[
+    Conditional=WEB_ANIMATIONS,
+    NoInterfaceObject
+] interface Animatable {
+#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
+    // FIXME: Incomplete interface (implement animate).
+    sequence&lt;WebAnimation&gt; getAnimations();
+#endif
+}; 
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationAnimationEffectcppfromrev201809trunkSourceWebCoreanimationAnimationTimelinecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/AnimationEffect.cpp (from rev 201809, trunk/Source/WebCore/animation/AnimationTimeline.cpp) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/AnimationEffect.cpp                                (rev 0)
+++ trunk/Source/WebCore/animation/AnimationEffect.cpp        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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;AnimationEffect.h&quot;
+
+#if ENABLE(WEB_ANIMATIONS)
+
+#include &quot;WebAnimation.h&quot;
+
+namespace WebCore {
+
+AnimationEffect::AnimationEffect()
+{
+}
+
+AnimationEffect::~AnimationEffect()
+{
+}
+
+void AnimationEffect::setAnimation(WebAnimation* animation)
+{
+    m_animation = animation ? animation-&gt;createWeakPtr() : WeakPtr&lt;WebAnimation&gt;();
+}
+
+bool AnimationEffect::isCurrent() const
+{
+    // FIXME: Calculate whether animation is current according to spec.
+    return true;
+}
+
+bool AnimationEffect::isInEffect() const
+{
+    // FIXME: Calculate whether animation is in effect according to spec.
+    return false;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_ANIMATIONS)
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationAnimationEffecthfromrev201809trunkSourceWebCoreanimationDocumentTimelinecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/AnimationEffect.h (from rev 201809, trunk/Source/WebCore/animation/DocumentTimeline.cpp) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/AnimationEffect.h                                (rev 0)
+++ trunk/Source/WebCore/animation/AnimationEffect.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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
+
+#if ENABLE(WEB_ANIMATIONS)
+
+#include &quot;WebAnimation.h&quot;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+
+namespace WebCore {
+
+class AnimationEffect : public RefCounted&lt;AnimationEffect&gt; {
+public:
+    AnimationEffect();
+    virtual ~AnimationEffect();
+
+    void setAnimation(WebAnimation*);
+
+    bool isCurrent() const;
+    bool isInEffect() const;
+
+private:
+    WeakPtr&lt;WebAnimation&gt; m_animation;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_ANIMATIONS)
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationAnimationEffectidlfromrev201809trunkSourceWebCoreanimationAnimationTimelineidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/AnimationEffect.idl (from rev 201809, trunk/Source/WebCore/animation/AnimationTimeline.idl) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/AnimationEffect.idl                                (rev 0)
+++ trunk/Source/WebCore/animation/AnimationEffect.idl        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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.
+ */
+
+[
+    Conditional=WEB_ANIMATIONS,
+    InterfaceName=AnimationEffectReadOnly,
+    SkipVTableValidation
+] interface AnimationEffect {
+    // FIXME: Stub only at the moment.
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationAnimationTimelinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/AnimationTimeline.cpp (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/AnimationTimeline.cpp        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/AnimationTimeline.cpp        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -54,9 +54,28 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><del>-    return;
</del><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void AnimationTimeline::attachAnimation(WebAnimation&amp; animation)
+{
+    if (classType() == DocumentTimelineClass) {
+        downcast&lt;DocumentTimeline&gt;(*this).attach(animation);
+        return;
+    }
+
+    ASSERT_NOT_REACHED();
+}
+
+void AnimationTimeline::detachAnimation(WebAnimation&amp; animation)
+{
+    if (classType() == DocumentTimelineClass) {
+        downcast&lt;DocumentTimeline&gt;(*this).detach(animation);
+        return;
+    }
+    
+    ASSERT_NOT_REACHED();
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_ANIMATIONS)
</span></span></pre></div>
<a id="trunkSourceWebCoreanimationAnimationTimelineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/AnimationTimeline.h (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/AnimationTimeline.h        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/AnimationTimeline.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -26,8 +26,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef AnimationTimeline_h
-#define AnimationTimeline_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_ANIMATIONS)
</span><span class="cx"> 
</span><span class="lines">@@ -37,6 +36,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class WebAnimation;
+
</ins><span class="cx"> class AnimationTimeline : public RefCounted&lt;AnimationTimeline&gt; {
</span><span class="cx"> public:
</span><span class="cx">     // Override RefCounted's deref() to ensure operator delete is called on
</span><span class="lines">@@ -49,6 +50,9 @@
</span><span class="cx">     
</span><span class="cx">     bool isDocumentTimeline() const { return m_classType == DocumentTimelineClass; }
</span><span class="cx"> 
</span><ins>+    void attachAnimation(WebAnimation&amp;);
+    void detachAnimation(WebAnimation&amp;);
+
</ins><span class="cx"> protected:
</span><span class="cx">     enum ClassType {
</span><span class="cx">         DocumentTimelineClass
</span><span class="lines">@@ -75,5 +79,3 @@
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_END()
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_ANIMATIONS)
</span><del>-
-#endif // AnimationTimeline_h
</del></span></pre></div>
<a id="trunkSourceWebCoreanimationAnimationTimelineidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/AnimationTimeline.idl (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/AnimationTimeline.idl        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/AnimationTimeline.idl        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -27,12 +27,11 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><del>-    EnabledAtRuntime=WebAnimations,
</del><span class="cx">     Conditional=WEB_ANIMATIONS,
</span><span class="cx">     CustomToJSObject,
</span><span class="cx">     ObjCPolymorphic,
</span><span class="cx">     ImplementationLacksVTable
</span><span class="cx"> ] interface AnimationTimeline {
</span><del>-    // FIX: Only a stub at the moment.
</del><ins>+    // FIXME: Only a stub at the moment.
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreanimationDocumentAnimationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/DocumentAnimation.cpp (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/DocumentAnimation.cpp        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/DocumentAnimation.cpp        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> {
</span><span class="cx">     auto* documentAnimation = DocumentAnimation::from(&amp;document);
</span><span class="cx">     if (!documentAnimation-&gt;m_defaultTimeline)
</span><del>-        documentAnimation-&gt;m_defaultTimeline = DocumentTimeline::create(0.0);
</del><ins>+        documentAnimation-&gt;m_defaultTimeline = DocumentTimeline::create(document, 0.0);
</ins><span class="cx">     return documentAnimation-&gt;m_defaultTimeline.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -68,6 +68,46 @@
</span><span class="cx">     return supplement;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WebAnimationVector DocumentAnimation::getAnimations(std::function&lt;bool(const AnimationEffect&amp;)&gt; effect_test) const
+{
+    WebAnimationVector animations;
+
+    auto sortBasedOnPriority = [](const RefPtr&lt;WebAnimation&gt;&amp; a, const RefPtr&lt;WebAnimation&gt;&amp; b)
+    {
+        // FIXME: Sort using the composite order as described in the spec.
+        UNUSED_PARAM(a);
+        UNUSED_PARAM(b);
+        return true;
+    };
+
+    for (auto&amp; animation : m_animations.values()) {
+        if (animation &amp;&amp; animation-&gt;effect()) {
+            const AnimationEffect&amp; effect = *animation-&gt;effect();
+            if ((effect.isCurrent() || effect.isInEffect()) &amp;&amp; effect_test(effect))
+                animations.append(animation.get());
+        }
+    }
+    std::sort(animations.begin(), animations.end(), sortBasedOnPriority);
+
+    return animations;
+}
+
+void DocumentAnimation::addAnimation(WebAnimation&amp; animation)
+{
+    ASSERT(!m_animations.contains(&amp;animation));
+    m_animations.add(&amp;animation, animation.createWeakPtr());
+}
+
+void DocumentAnimation::removeAnimation(WebAnimation&amp; animation)
+{
+    m_animations.remove(&amp;animation);
+}
+
+WebAnimationVector DocumentAnimation::getAnimations(Document&amp; document)
+{
+    return DocumentAnimation::from(&amp;document)-&gt;getAnimations();
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_ANIMATIONS)
</span></span></pre></div>
<a id="trunkSourceWebCoreanimationDocumentAnimationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/DocumentAnimation.h (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/DocumentAnimation.h        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/DocumentAnimation.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -26,12 +26,15 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef DocumentAnimation_h
-#define DocumentAnimation_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_ANIMATIONS)
</span><span class="cx"> 
</span><ins>+#include &quot;AnimationEffect.h&quot;
</ins><span class="cx"> #include &quot;Supplementable.h&quot;
</span><ins>+#include &quot;WebAnimation.h&quot;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/WeakPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -45,15 +48,21 @@
</span><span class="cx"> 
</span><span class="cx">     static DocumentAnimation* from(Document*);
</span><span class="cx">     static DocumentTimeline* timeline(Document&amp;);
</span><ins>+    static WebAnimationVector getAnimations(Document&amp;);
</ins><span class="cx"> 
</span><ins>+    WebAnimationVector getAnimations(std::function&lt;bool(const AnimationEffect&amp;)&gt; = [](const AnimationEffect&amp;) { return true; }) const;
+
+    void addAnimation(WebAnimation&amp;);
+    void removeAnimation(WebAnimation&amp;);
+
</ins><span class="cx"> private:
</span><span class="cx">     static const char* supplementName();
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;DocumentTimeline&gt; m_defaultTimeline;
</span><ins>+
+    HashMap&lt;WebAnimation*, WeakPtr&lt;WebAnimation&gt;&gt; m_animations;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_ANIMATIONS)
</span><del>-
-#endif // DocumentAnimation_h
</del></span></pre></div>
<a id="trunkSourceWebCoreanimationDocumentAnimationidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/DocumentAnimation.idl (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/DocumentAnimation.idl        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/DocumentAnimation.idl        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -27,10 +27,10 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><del>-    EnabledAtRuntime=WebAnimations,
</del><span class="cx">     Conditional=WEB_ANIMATIONS
</span><span class="cx"> ] partial interface Document {
</span><span class="cx"> #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
</span><span class="cx">     readonly attribute DocumentTimeline timeline;
</span><ins>+    sequence&lt;WebAnimation&gt; getAnimations();
</ins><span class="cx"> #endif
</span><span class="cx"> }; 
</span></span></pre></div>
<a id="trunkSourceWebCoreanimationDocumentTimelinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/DocumentTimeline.cpp (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/DocumentTimeline.cpp        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/DocumentTimeline.cpp        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -31,15 +31,20 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_ANIMATIONS)
</span><span class="cx"> 
</span><ins>+#include &quot;Document.h&quot;
+#include &quot;DocumentAnimation.h&quot;
+#include &quot;WebAnimation.h&quot;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-Ref&lt;DocumentTimeline&gt; DocumentTimeline::create(double originTime)
</del><ins>+Ref&lt;DocumentTimeline&gt; DocumentTimeline::create(Document&amp; context, double originTime)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new DocumentTimeline(originTime));
</del><ins>+    return adoptRef(*new DocumentTimeline(context, originTime));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-DocumentTimeline::DocumentTimeline(double originTime)
</del><ins>+DocumentTimeline::DocumentTimeline(Document&amp; context, double originTime)
</ins><span class="cx">     : AnimationTimeline(DocumentTimelineClass)
</span><ins>+    , m_document(context.createWeakPtr())
</ins><span class="cx">     , m_originTime(originTime)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(m_originTime);
</span><span class="lines">@@ -49,6 +54,31 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void DocumentTimeline::attach(WebAnimation&amp; animation)
+{
+    ASSERT(animation.timeline() == this);
+    ASSERT(m_document);
+
+    if (!m_document)
+        return;
+
+    auto* document = DocumentAnimation::from(m_document.get());
+    if (document)
+        document-&gt;addAnimation(animation);
+}
+
+void DocumentTimeline::detach(WebAnimation&amp; animation)
+{
+    ASSERT(m_document);
+
+    if (!m_document)
+        return;
+
+    auto* document = DocumentAnimation::from(m_document.get());
+    if (document)
+        document-&gt;removeAnimation(animation);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_ANIMATIONS)
</span></span></pre></div>
<a id="trunkSourceWebCoreanimationDocumentTimelineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/DocumentTimeline.h (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/DocumentTimeline.h        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/DocumentTimeline.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -26,24 +26,30 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef DocumentTimeline_h
-#define DocumentTimeline_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_ANIMATIONS)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AnimationTimeline.h&quot;
</span><ins>+#include &lt;wtf/WeakPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class Document;
+
</ins><span class="cx"> class DocumentTimeline final : public AnimationTimeline {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;DocumentTimeline&gt; create(double);
</del><ins>+    static Ref&lt;DocumentTimeline&gt; create(Document&amp;, double);
</ins><span class="cx">     ~DocumentTimeline();
</span><span class="cx"> 
</span><ins>+    void attach(WebAnimation&amp;);
+    void detach(WebAnimation&amp;);
+
</ins><span class="cx"> protected:
</span><del>-    DocumentTimeline(double);
</del><ins>+    DocumentTimeline(Document&amp;, double);
</ins><span class="cx">     
</span><span class="cx"> private:
</span><ins>+    WeakPtr&lt;Document&gt; m_document;
</ins><span class="cx">     double m_originTime;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -52,5 +58,3 @@
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_ANIMATION_TIMELINE(DocumentTimeline, isDocumentTimeline())
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_ANIMATIONS)
</span><del>-
-#endif // DocumentTimeline_h
</del></span></pre></div>
<a id="trunkSourceWebCoreanimationDocumentTimelineidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/animation/DocumentTimeline.idl (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/DocumentTimeline.idl        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/animation/DocumentTimeline.idl        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -27,10 +27,10 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><del>-    EnabledAtRuntime=WebAnimations,
</del><span class="cx">     Conditional=WEB_ANIMATIONS,
</span><span class="cx">     ImplementationLacksVTable,
</span><del>-    // FIX: Should be DOMHighResTimeStamp rather than double (e.g. see Performance.now()).
-    Constructor(double originTime)
</del><ins>+    // FIXME: Should be DOMHighResTimeStamp rather than double (e.g. see Performance.now()).
+    Constructor(double originTime),
+    ConstructorCallWith=Document
</ins><span class="cx"> ] interface DocumentTimeline : AnimationTimeline {
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreanimationKeyframeEffectcppfromrev201809trunkSourceWebCoreanimationDocumentTimelinecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/KeyframeEffect.cpp (from rev 201809, trunk/Source/WebCore/animation/DocumentTimeline.cpp) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/KeyframeEffect.cpp                                (rev 0)
+++ trunk/Source/WebCore/animation/KeyframeEffect.cpp        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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;KeyframeEffect.h&quot;
+
+#if ENABLE(WEB_ANIMATIONS)
+
+#include &quot;Element.h&quot;
+#include &lt;wtf/Ref.h&gt;
+
+namespace WebCore {
+
+RefPtr&lt;KeyframeEffect&gt; KeyframeEffect::create(Element* target)
+{
+    if (!target) {
+        // FIXME: Support null animation target.
+        return nullptr;
+    }
+
+    return adoptRef(new KeyframeEffect(target));
+}
+
+KeyframeEffect::KeyframeEffect(Element* target)
+    : m_target(target)
+{
+}
+
+KeyframeEffect::~KeyframeEffect()
+{
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_ANIMATIONS)
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationKeyframeEffecthfromrev201809trunkSourceWebCoreanimationDocumentTimelineh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/KeyframeEffect.h (from rev 201809, trunk/Source/WebCore/animation/DocumentTimeline.h) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/KeyframeEffect.h                                (rev 0)
+++ trunk/Source/WebCore/animation/KeyframeEffect.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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
+
+#if ENABLE(WEB_ANIMATIONS)
+
+#include &quot;AnimationEffect.h&quot;
+
+namespace WebCore {
+
+class Element;
+
+class KeyframeEffect final : public AnimationEffect {
+public:
+    static RefPtr&lt;KeyframeEffect&gt; create(Element*);
+    ~KeyframeEffect() override;
+
+    Element* target() const { return m_target.get(); }
+
+private:
+    KeyframeEffect(Element*);
+
+    // FIXME: Ensure that there is no cyclic reference from Element to KeyframeEffect.
+    RefPtr&lt;Element&gt; m_target;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_ANIMATIONS)
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationKeyframeEffectidlfromrev201809trunkSourceWebCoreanimationAnimationTimelineidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/KeyframeEffect.idl (from rev 201809, trunk/Source/WebCore/animation/AnimationTimeline.idl) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/KeyframeEffect.idl                                (rev 0)
+++ trunk/Source/WebCore/animation/KeyframeEffect.idl        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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.
+ */
+
+[
+    Conditional=WEB_ANIMATIONS,
+    // FIX: Constructor stub only at the moment (should accept PseudoElement target, frames and options).
+    Constructor([Default=Undefined] Element? target)
+    // FIX: Add interface for and inherit from KeyframeEffectReadOnly.
+] interface KeyframeEffect : AnimationEffect {
+    // FIX: Stub only at the moment.
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationWebAnimationcppfromrev201809trunkSourceWebCoreanimationDocumentAnimationcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/WebAnimation.cpp (from rev 201809, trunk/Source/WebCore/animation/DocumentAnimation.cpp) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/WebAnimation.cpp                                (rev 0)
+++ trunk/Source/WebCore/animation/WebAnimation.cpp        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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;WebAnimation.h&quot;
+
+#if ENABLE(WEB_ANIMATIONS)
+
+#include &quot;AnimationEffect.h&quot;
+#include &quot;DocumentTimeline.h&quot;
+#include &lt;wtf/Ref.h&gt;
+
+namespace WebCore {
+
+RefPtr&lt;WebAnimation&gt; WebAnimation::create(AnimationEffect* effect, AnimationTimeline* timeline)
+{
+    if (!effect) {
+        // FIXME: Support creating animations with null effect.
+        return nullptr;
+    }
+
+    if (!timeline) {
+        // FIXME: Support creating animations without a timeline.
+        return nullptr;
+    } 
+
+    if (!timeline-&gt;isDocumentTimeline()) {
+        // FIXME: Currently only support DocumentTimeline.
+        return nullptr;
+    } 
+
+    return adoptRef(new WebAnimation(effect, timeline));
+}
+
+WebAnimation::WebAnimation(AnimationEffect* effect, AnimationTimeline* timeline)
+    : m_effect(effect)
+    , m_timeline(timeline)
+    , m_weakPtrFactory(this)
+{
+    if (m_effect)
+        m_effect-&gt;setAnimation(this);
+
+    if (m_timeline)
+        m_timeline-&gt;attachAnimation(*this);
+}
+
+WebAnimation::~WebAnimation()
+{
+    if (m_effect)
+        m_effect-&gt;setAnimation(nullptr);
+
+    if (m_timeline)
+        m_timeline-&gt;detachAnimation(*this);
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_ANIMATIONS)
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationWebAnimationhfromrev201809trunkSourceWebCoreanimationDocumentAnimationh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/WebAnimation.h (from rev 201809, trunk/Source/WebCore/animation/DocumentAnimation.h) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/WebAnimation.h                                (rev 0)
+++ trunk/Source/WebCore/animation/WebAnimation.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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
+
+#if ENABLE(WEB_ANIMATIONS)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+#include &lt;wtf/WeakPtr.h&gt;
+
+namespace WebCore {
+
+class AnimationEffect;
+class AnimationTimeline;
+
+class WebAnimation final : public RefCounted&lt;WebAnimation&gt; {
+public:
+    static RefPtr&lt;WebAnimation&gt; create(AnimationEffect*, AnimationTimeline*);
+    ~WebAnimation();
+
+    AnimationEffect* effect() const { return m_effect.get(); }
+    AnimationTimeline* timeline() const { return m_timeline.get(); }
+
+    WeakPtr&lt;WebAnimation&gt; createWeakPtr() const { return m_weakPtrFactory.createWeakPtr(); }
+
+private:
+    WebAnimation(AnimationEffect*, AnimationTimeline*);
+
+    RefPtr&lt;AnimationEffect&gt; m_effect;
+    RefPtr&lt;AnimationTimeline&gt; m_timeline;
+    WeakPtrFactory&lt;WebAnimation&gt; m_weakPtrFactory;
+};
+
+typedef Vector&lt;WebAnimation *&gt; WebAnimationVector;
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_ANIMATIONS)
</ins></span></pre></div>
<a id="trunkSourceWebCoreanimationWebAnimationidlfromrev201809trunkSourceWebCoreanimationDocumentTimelineidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/animation/WebAnimation.idl (from rev 201809, trunk/Source/WebCore/animation/DocumentTimeline.idl) (0 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/animation/WebAnimation.idl                                (rev 0)
+++ trunk/Source/WebCore/animation/WebAnimation.idl        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+/*
+ * Copyright (C) Canon Inc. 2016
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be 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.
+ * 3. Neither the name of Canon Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS &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 CANON INC. AND ITS CONTRIBUTORS 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.
+ */
+
+[
+    Conditional=WEB_ANIMATIONS,
+    InterfaceName=Animation,
+    ImplementationLacksVTable,
+    Constructor([Default=Undefined] AnimationEffect? effect, [Default=Undefined] AnimationTimeline? timeline)
+] interface WebAnimation { // FIXME: Inherit from EventTarget.
+    // FIXME: Incomplete interface.
+    readonly attribute AnimationEffect? effect;
+    readonly attribute AnimationTimeline? timeline;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">                     &quot;Event&quot; =&gt; 1, &quot;CSSRule&quot; =&gt; 1, &quot;CSSValue&quot; =&gt; 1, &quot;StyleSheet&quot; =&gt; 1, &quot;MediaList&quot; =&gt; 1,
</span><span class="cx">                     &quot;Counter&quot; =&gt; 1, &quot;Rect&quot; =&gt; 1, &quot;RGBColor&quot; =&gt; 1, &quot;XPathExpression&quot; =&gt; 1, &quot;XPathResult&quot; =&gt; 1,
</span><span class="cx">                     &quot;NodeIterator&quot; =&gt; 1, &quot;TreeWalker&quot; =&gt; 1, &quot;AbstractView&quot; =&gt; 1, &quot;Blob&quot; =&gt; 1, &quot;DOMTokenList&quot; =&gt; 1,
</span><del>-                    &quot;HTMLCollection&quot; =&gt; 1, &quot;TextTrackCue&quot; =&gt; 1, &quot;AnimationTimeline&quot; =&gt; 1);
</del><ins>+                    &quot;HTMLCollection&quot; =&gt; 1, &quot;TextTrackCue&quot; =&gt; 1, &quot;AnimationTimeline&quot; =&gt; 1, &quot;AnimationEffect&quot; =&gt; 1);
</ins><span class="cx"> 
</span><span class="cx"> # Only objects derived from Node are released by the DOM object cache and can be
</span><span class="cx"> # transfer none. Ideally we could use GetBaseClass with the parent type to check
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">     &quot;DOMWindow&quot; =&gt; 1, &quot;DOMWindowCSS&quot; =&gt; 1, &quot;EventTarget&quot; =&gt; 1,
</span><span class="cx">     &quot;File&quot; =&gt; 1, &quot;FileList&quot; =&gt; 1, &quot;Gamepad&quot; =&gt; 1, &quot;GamepadList&quot; =&gt; 1,
</span><span class="cx">     &quot;Geolocation&quot; =&gt; 1, &quot;HTMLOptionsCollection&quot; =&gt; 1, &quot;History&quot; =&gt; 1,
</span><del>-    &quot;KeyboardEvent&quot; =&gt; 1, &quot;MediaError&quot; =&gt; 1, &quot;MediaController&quot; =&gt; 1,
</del><ins>+    &quot;KeyboardEvent&quot; =&gt; 1, &quot;KeyframeEffect&quot; =&gt; 1, &quot;MediaError&quot; =&gt; 1, &quot;MediaController&quot; =&gt; 1,
</ins><span class="cx">     &quot;MouseEvent&quot; =&gt; 1, &quot;MediaQueryList&quot; =&gt; 1, &quot;Navigator&quot; =&gt; 1, &quot;NodeFilter&quot; =&gt; 1,
</span><span class="cx">     &quot;Performance&quot; =&gt; 1, &quot;PerformanceEntry&quot; =&gt; 1, &quot;PerformanceEntryList&quot; =&gt; 1, &quot;PerformanceNavigation&quot; =&gt; 1, &quot;PerformanceTiming&quot; =&gt; 1,
</span><span class="cx">     &quot;Range&quot; =&gt; 1, &quot;Screen&quot; =&gt; 1, &quot;SpeechSynthesis&quot; =&gt; 1, &quot;SpeechSynthesisVoice&quot; =&gt; 1,
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/dom/Element.cpp        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> #include &quot;CustomElementDefinitions.h&quot;
</span><span class="cx"> #include &quot;DOMTokenList.h&quot;
</span><span class="cx"> #include &quot;Dictionary.h&quot;
</span><ins>+#include &quot;DocumentAnimation.h&quot;
</ins><span class="cx"> #include &quot;DocumentSharedObjectPool.h&quot;
</span><span class="cx"> #include &quot;ElementIterator.h&quot;
</span><span class="cx"> #include &quot;ElementRareData.h&quot;
</span><span class="lines">@@ -66,6 +67,7 @@
</span><span class="cx"> #include &quot;IdTargetObserverRegistry.h&quot;
</span><span class="cx"> #include &quot;JSLazyEventListener.h&quot;
</span><span class="cx"> #include &quot;KeyboardEvent.h&quot;
</span><ins>+#include &quot;KeyframeEffect.h&quot;
</ins><span class="cx"> #include &quot;LifecycleCallbackQueue.h&quot;
</span><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;MutationObserverInterestGroup.h&quot;
</span><span class="lines">@@ -1382,6 +1384,21 @@
</span><span class="cx">     return styleResolver().styleForElement(*this, parentStyle);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(WEB_ANIMATIONS)
+WebAnimationVector Element::getAnimations()
+{
+    auto checkTarget = [this](AnimationEffect const&amp; effect)
+    {
+        return (static_cast&lt;KeyframeEffect const&amp;&gt;(effect).target() == this);
+    };
+
+    auto* document = DocumentAnimation::from(&amp;this-&gt;document());
+    if (document)
+        return document-&gt;getAnimations(checkTarget);
+    return WebAnimationVector();
+}
+#endif
+
</ins><span class="cx"> bool Element::hasDisplayContents() const
</span><span class="cx"> {
</span><span class="cx">     return hasRareData() &amp;&amp; elementRareData()-&gt;hasDisplayContents();
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/dom/Element.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx"> class PseudoElement;
</span><span class="cx"> class RenderNamedFlowFragment;
</span><span class="cx"> class RenderTreePosition;
</span><ins>+class WebAnimation;
</ins><span class="cx"> struct ElementStyle;
</span><span class="cx"> 
</span><span class="cx"> enum SpellcheckAttributeState {
</span><span class="lines">@@ -516,6 +517,10 @@
</span><span class="cx">     using ContainerNode::setAttributeEventListener;
</span><span class="cx">     void setAttributeEventListener(const AtomicString&amp; eventType, const QualifiedName&amp; attributeName, const AtomicString&amp; value);
</span><span class="cx"> 
</span><ins>+#if ENABLE(WEB_ANIMATIONS)
+    Vector&lt;WebAnimation*&gt; getAnimations();
+#endif
+
</ins><span class="cx"> protected:
</span><span class="cx">     Element(const QualifiedName&amp;, Document&amp;, ConstructionType);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebCore/dom/Element.idl        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -240,6 +240,7 @@
</span><span class="cx">     required ShadowRootMode mode;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+Element implements Animatable;
</ins><span class="cx"> Element implements ChildNode;
</span><span class="cx"> Element implements ParentNode;
</span><span class="cx"> Element implements NonDocumentTypeChildNode;
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2016-06-08  Rawinder Singh  &lt;rawinder.singh-webkit@cisra.canon.com.au&gt;
+
+        [web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
+        https://bugs.webkit.org/show_bug.cgi?id=156096
+
+        Reviewed by Dean Jackson.
+
+        Adds:
+        - Setup interface for enabling runtime flag for Web animations through preferences.
+
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        (-[WebPreferences webAnimationsEnabled]):
+        (-[WebPreferences setWebAnimationsEnabled:]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChanged:]):
+
</ins><span class="cx"> 2016-06-07  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS WK1] Remove unused -_webkit_unescapedQueryValue and -_webkit_queryKeysAndValues NSString category methods
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebPreferenceKeysPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx"> #define WebKitJavaEnabledPreferenceKey @&quot;WebKitJavaEnabled&quot;
</span><span class="cx"> #define WebKitJavaScriptEnabledPreferenceKey @&quot;WebKitJavaScriptEnabled&quot;
</span><span class="cx"> #define WebKitJavaScriptMarkupEnabledPreferenceKey @&quot;WebKitJavaScriptMarkupEnabled&quot;
</span><ins>+#define WebKitWebAnimationsEnabledPreferenceKey @&quot;WebKitWebAnimationsEnabled&quot;
</ins><span class="cx"> #define WebKitWebSecurityEnabledPreferenceKey @&quot;WebKitWebSecurityEnabled&quot;
</span><span class="cx"> #define WebKitAllowUniversalAccessFromFileURLsPreferenceKey @&quot;WebKitAllowUniversalAccessFromFileURLs&quot;
</span><span class="cx"> #define WebKitAllowFileAccessFromFileURLsPreferenceKey @&quot;WebKitAllowFileAccessFromFileURLs&quot;
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebPreferencesmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -624,6 +624,9 @@
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx">         [NSNumber numberWithBool:YES], WebKitCSSGridLayoutEnabledPreferenceKey,
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_ANIMATIONS)
+        [NSNumber numberWithBool:NO], WebKitWebAnimationsEnabledPreferenceKey,
+#endif
</ins><span class="cx">         nil];
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="lines">@@ -2754,6 +2757,16 @@
</span><span class="cx">     [self _setBoolValue:flag forKey:WebKitCSSGridLayoutEnabledPreferenceKey];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (BOOL)webAnimationsEnabled
+{
+    return [self _boolValueForKey:WebKitWebAnimationsEnabledPreferenceKey];
+}
+
+- (void)setWebAnimationsEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitWebAnimationsEnabledPreferenceKey];
+}
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WebPreferences (WebInternal)
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebPreferencesPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -490,6 +490,9 @@
</span><span class="cx"> - (void)setCSSGridLayoutEnabled:(BOOL)flag;
</span><span class="cx"> - (BOOL)isCSSGridLayoutEnabled;
</span><span class="cx"> 
</span><ins>+- (void)setWebAnimationsEnabled:(BOOL)flag;
+- (BOOL)webAnimationsEnabled;
+
</ins><span class="cx"> @property (nonatomic) BOOL javaScriptMarkupEnabled;
</span><span class="cx"> @property (nonatomic) BOOL mediaDataLoadsAutomatically;
</span><span class="cx"> @property (nonatomic) BOOL attachmentElementEnabled;
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (201809 => 201810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2016-06-08 17:31:47 UTC (rev 201809)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2016-06-08 17:32:48 UTC (rev 201810)
</span><span class="lines">@@ -2512,6 +2512,10 @@
</span><span class="cx">     RuntimeEnabledFeatures::sharedFeatures().setCSSGridLayoutEnabled([preferences isCSSGridLayoutEnabled]);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(WEB_ANIMATIONS)
+    RuntimeEnabledFeatures::sharedFeatures().setWebAnimationsEnabled([preferences webAnimationsEnabled]);
+#endif
+
</ins><span class="cx">     NSTimeInterval timeout = [preferences incrementalRenderingSuppressionTimeoutInSeconds];
</span><span class="cx">     if (timeout &gt; 0)
</span><span class="cx">         settings.setIncrementalRenderingSuppressionTimeoutInSeconds(timeout);
</span></span></pre>
</div>
</div>

</body>
</html>