Timeline



Dec 28, 2017:

11:52 PM Changeset in webkit [226310] by sbarati@apple.com
  • 14 edits in trunk/Source/JavaScriptCore

Remove op_assert and make @assert in builtins a function call so we have DFG/FTL coverage for builtins that use @assert in debug builds
https://bugs.webkit.org/show_bug.cgi?id=181176

Reviewed by Yusuke Suzuki.

Previously, op_assert was only implemented in the LLInt and baseline JIT. This
meant that any builtin that used @assert was not tiering up to the DFG/FTL
in debug builds. This patch changes @assert to just call a host function when
!ASSERT_DISABLED. It's a no-op when ASSERT_DISABLED. Now, builtins that use @assert
will tier up to the DFG/FTL on debug builds.

  • builtins/BuiltinNames.h:
  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumper<Block>::dumpBytecode):

  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitAssert): Deleted.

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_assert): Deleted.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • llint/LowLevelInterpreter.asm:
  • runtime/CommonSlowPaths.cpp:
  • runtime/CommonSlowPaths.h:
  • runtime/JSGlobalObject.cpp:

(JSC::assertCall):
(JSC::JSGlobalObject::init):

10:18 PM Changeset in webkit [226309] by Alan Bujtas
  • 4 edits
    2 adds in trunk

RenderTreeUpdater::GeneratedContent should hold a weak reference to RenderQuote.
https://bugs.webkit.org/show_bug.cgi?id=181185
<rdar://problem/36235307>

Reviewed by David Kilzer.

Source/WebCore:

Test: fast/css/content/content-quotes-crash-with-details.html

  • rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):

  • rendering/updating/RenderTreeUpdaterGeneratedContent.h:

(): Deleted.

LayoutTests:

  • fast/css/content/content-quotes-crash-with-details-expected.txt: Added.
  • fast/css/content/content-quotes-crash-with-details.html: Added.
9:56 PM Changeset in webkit [226308] by beidson@apple.com
  • 12 edits
    2 adds in trunk/Source

Add a ProcessIdentifier, vended from the UI process, to each child process
https://bugs.webkit.org/show_bug.cgi?id=181155

Reviewed by Brent Fulgham.

Source/WebCore:

No new tests (Not yet testable)

More than once we've needed to create an identifier for an object that is unique across
all processes no matter which process it came from.

Sometimes we have an object or proxy object to the UI, Storage, or Network process
that allows us to augment a process-unique identifier to be globally unique. Due to multiple
sessions even this isn't good enough. Other times we have to create more hair-brained solutions.

In upcoming MessagePort work (Next step is https://bugs.webkit.org/show_bug.cgi?id=181172)
there was no truly workable solution for this.

By introducing a new ProcessIdentifier to each WK2 child processes that is guaranteed to be
unique over the run of a given UI process, we can easily create an object in any process and
identify it uniquely across all processes.

Obviously "process identifier" brings to mind a processes PID but that isn't good enough.
The number of PIDs on the system is fairly low and they are global across all
processes on the system. It is easy to see how a given UI process that runs for long enough
(such as a web browser that the user rarely quits) will start to run in to recycled PIDs,
therefore breaking the uniqueness guarantee that is required.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/Process.cpp: Added.

(WebCore::Process::setIdentifier): Sets the process-wise identifier (to be used during WK2

child process initialization)

(WebCore::Process::identifier): Get the process-wide identifier.

  • platform/Process.h: Added.

Source/WebKit:

  • Shared/ChildProcess.cpp:

(WebKit::ChildProcess::initialize): Set the process-wide identifier if the initialization

parameters have it. Cocoa ASSERTS it exists; non-Cocoa platforms will have to figure this
out soon.

  • Shared/ChildProcess.h:
  • Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:

(WebKit::XPCServiceInitializer):

  • Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:

(WebKit::XPCServiceInitializerDelegate::getProcessIdentifier):

  • UIProcess/ChildProcessProxy.cpp:

(WebKit::ChildProcessProxy::getLaunchOptions):

  • UIProcess/ChildProcessProxy.h:

(WebKit::ChildProcessProxy::coreProcessIdentifier const):

  • UIProcess/Launcher/ProcessLauncher.h:
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::launchProcess):

5:41 PM Changeset in webkit [226307] by Yusuke Suzuki
  • 19 edits in trunk/Source

Remove std::chrono if it is not used for ArgumentCoder or PersistentCoder
https://bugs.webkit.org/show_bug.cgi?id=181174

Reviewed by Konstantin Tokarev.

Source/WebCore:

We would like to remove std::chrono as much as possible due to the danger of
its overflow unawareness. This patch removes std::chrono if it is not used
for ArgumentCoder or PersistentCoder.

No behavior change.

  • fileapi/FileReader.cpp:

(WebCore::FileReader::didReceiveData):

  • fileapi/FileReader.h:
  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::showPaintRect):
(WebCore::InspectorOverlay::updatePaintRectsTimerFired):

  • inspector/InspectorOverlay.h:
  • page/ResourceUsageThread.cpp:

(WebCore::ResourceUsageThread::threadBody):

  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::jettisonExpensiveObjectsOnTopLevelNavigation):

  • platform/network/curl/SocketStreamHandleImpl.h:
  • platform/network/curl/SocketStreamHandleImplCurl.cpp:

(WebCore::SocketStreamHandleImpl::waitForAvailableData):
(WebCore::SocketStreamHandleImpl::startThread):

Source/WebKit:

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::retrieve):

  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::Statistics::initialize):

  • UIProcess/Cocoa/ViewGestureController.cpp:

(WebKit::ViewGestureController::SnapshotRemovalTracker::log const):
(WebKit::ViewGestureController::SnapshotRemovalTracker::start):

  • UIProcess/Cocoa/ViewGestureController.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::loadCommitTime const):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::registerWithStateDumper):

Source/WTF:

Make WallTime more constexpr friendly. This change is already applied to MonoTonicTime.

We would like to move std::{isfinite,isinf,isnan} overloadings from std:: to each class scope in a separate patch[1].

[1]: https://bugs.webkit.org/show_bug.cgi?id=181183

  • wtf/WallTime.h:

(WTF::WallTime::WallTime):
(WTF::WallTime::fromRawSeconds):
(WTF::WallTime::infinity):
(WTF::WallTime::secondsSinceEpoch const):
(WTF::WallTime::operator bool const):
(WTF::WallTime::operator+ const):
(WTF::WallTime::operator- const):
(WTF::WallTime::operator== const):
(WTF::WallTime::operator!= const):
(WTF::WallTime::operator< const):
(WTF::WallTime::operator> const):
(WTF::WallTime::operator<= const):
(WTF::WallTime::operator>= const):

2:06 PM Changeset in webkit [226306] by commit-queue@webkit.org
  • 12 edits in trunk

[Win][CMake] Use add_custom_command to copy each forwarding header files
https://bugs.webkit.org/show_bug.cgi?id=180921

Patch by Fujii Hironori <Fujii Hironori> on 2017-12-28
Reviewed by Brent Fulgham.

.:

Modifying WTF header files didn't trigger the recompilation of
TestWTF because Ninja doesn't know which command generates the
forwarding header.

Use add_custom_command to copy each forwarding header files.

  • Source/cmake/WebKitMacros.cmake: Added a new function WEBKIT_MAKE_FORWARDING_HEADERS.

Source/JavaScriptCore:

  • PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

Source/WebCore:

No new tests because there is no behavior change.

  • PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

Source/WebKitLegacy:

  • PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

Source/WTF:

  • wtf/PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

Tools:

TestWTFLib needs forwarding headers of WebCore. Use
add_dependencies instead of invoking the DerivedSources/WebCore/preBuild.cmd.

  • TestWebKitAPI/PlatformWin.cmake:
10:13 AM Changeset in webkit [226305] by sbarati@apple.com
  • 3 edits
    1 add in trunk

Assertion used to determine if something is an async generator is wrong
https://bugs.webkit.org/show_bug.cgi?id=181168
<rdar://problem/35640560>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/async-generator-assertion.js: Added.

Source/JavaScriptCore:

Previous assertions were doing a get on the base value for @@asyncIterator.
This symbol is defined on AsyncGeneratorPrototype. The base value may change
its prototype, but it's still an async generator as far as our system is
concerned. This patch updates the assertion to check for a private property
on the base value.

  • builtins/AsyncGeneratorPrototype.js:

(globalPrivate.asyncGeneratorReject):
(globalPrivate.asyncGeneratorResolve):
(globalPrivate.asyncGeneratorResumeNext):

6:17 AM Changeset in webkit [226304] by Yusuke Suzuki
  • 2 edits in trunk/Source/WTF

[WTF] Add clock_gettime based monotonicallyIncreasingTime implementation for Linux and BSDs
https://bugs.webkit.org/show_bug.cgi?id=181175

Reviewed by Michael Catanzaro.

Use platform-provided POSIX APIs to get monotonic time.

  • wtf/CurrentTime.cpp:

(WTF::monotonicallyIncreasingTime):

Dec 27, 2017:

2:55 PM Changeset in webkit [226303] by Dewei Zhu
  • 2 edits in trunk/Websites/perf.webkit.org

Test freshness page should use build time instead of commit time to determine the freshness of the data point.
https://bugs.webkit.org/show_bug.cgi?id=181156

Reviewed by Alexey Proskuryakov.

Build time is a better data point freshness indicator. Test freshness page is designed to highlight test failures.
Using commit time will result in including the compiling and test running time which does not quite match the
definition of data point fresshness.

  • public/v3/pages/test-freshness-page.js:

(TestFreshnessPage.prototype._fetchTestResults): Use build time instead of commit time.

9:41 AM Changeset in webkit [226302] by clopez@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

Build fix after r226299 (3)
https://bugs.webkit.org/show_bug.cgi?id=181160

Unreviewed build fix.

  • API/tests/TypedArrayCTest.cpp: fix typo in header name.
9:38 AM Changeset in webkit [226301] by clopez@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

Build fix after r226299 (2)
https://bugs.webkit.org/show_bug.cgi?id=181160

Unreviewed build fix.

  • API/tests/TypedArrayCTest.cpp: Add missing header include.
9:29 AM Changeset in webkit [226300] by clopez@igalia.com
  • 4 edits in trunk/Source

Build fix after r226299
https://bugs.webkit.org/show_bug.cgi?id=181160

Unreviewed build fix.

Source/JavaScriptCore:

  • API/tests/TypedArrayCTest.cpp:

(assertEqualsAsNumber): Disambiguate usage of isnan.

Source/WebCore:

No new tests, its a build fix.

  • platform/graphics/FontSelectionAlgorithm.h: Add missing include.
8:46 AM Changeset in webkit [226299] by clopez@igalia.com
  • 10 edits in trunk/Source

REGRESSION(r225769): Build error with constexpr std::max std::min in libdstdc++4
https://bugs.webkit.org/show_bug.cgi?id=181160

Reviewed by Myles C. Maxfield.

Source/JavaScriptCore:

Disambiguate usage of min and max (Use the version from stdlib).

  • runtime/JSArray.cpp:

(JSC::JSArray::unshiftCountSlowCase):
(JSC::JSArray::setLengthWithArrayStorage):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::fillArgList):
(JSC::JSArray::copyToArguments):

Source/WebCore:

No new tests, its a build fix.

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::currentMediaTime const): Disambiguate usage of max (Use the version from stdlib).

  • platform/graphics/FontSelectionAlgorithm.h:

(WebCore::FontSelectionValue::clampFloat): Use WTF::min and WTF::max for constexpr result.

  • platform/graphics/win/UniscribeController.cpp:

(WebCore::UniscribeController::shapeAndPlaceItem): Disambiguate usage of min and max (Use the version from stdlib).

Source/WebKitLegacy/win:

  • Plugins/PluginView.cpp:

(WebCore::PluginView::handlePost): Disambiguate usage of min (Use the version from stdlib).

Source/WTF:

In libstdc++-4 std::max and std::min are not annotated with constexpr.
This patch adds a WTF::min and WTF::max for using where a constexpr result is expected.
Related: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60271

  • wtf/StdLibExtras.h:

(WTF::min):
(WTF::max):

2:52 AM Changeset in webkit [226298] by zandobersek@gmail.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r225913): about 30 JSC test failures on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=181162

Reviewed by Michael Catanzaro.

Fast case in DFG::SpeculativeJIT::compileArraySlice() was enabled in
r225913 on all but 32-bit x86 platform. Other 32-bit platforms have the
same lack of GP registers, so the conditional is changed here to only
enable this optimization explicitly on ARM64 and x86-64.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArraySlice):

Dec 26, 2017:

6:12 PM Changeset in webkit [226297] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/update.https.html as failing on macOS and iOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=181167

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
5:52 PM Changeset in webkit [226296] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https.html as flaky on macOS and iOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=181166

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
4:33 PM Changeset in webkit [226295] by Yusuke Suzuki
  • 13 edits in trunk/Source

[JSC] Remove std::chrono completely
https://bugs.webkit.org/show_bug.cgi?id=181165

Reviewed by Konstantin Tokarev.

Source/JavaScriptCore:

This patch removes std::chrono use completely from JSC.

  • API/JSContextRef.cpp:

(JSContextGroupSetExecutionTimeLimit):

  • API/tests/ExecutionTimeLimitTest.cpp:

(currentCPUTimeAsJSFunctionCallback):
(testExecutionTimeLimit):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::timeToLive):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::timeSinceCreation):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::timerLoop):
(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):

  • runtime/SamplingProfiler.h:

(JSC::SamplingProfiler::setTimingInterval):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/Watchdog.cpp:

(JSC::Watchdog::Watchdog):
(JSC::Watchdog::setTimeLimit):
(JSC::Watchdog::shouldTerminate):
(JSC::Watchdog::startTimer):
(JSC::currentWallClockTime): Deleted.

  • runtime/Watchdog.h:

Source/WTF:

WTF::currentCPUTime now returns WTF::Seconds.
We also add the implementaiton for Linux and FreeBSD.

  • wtf/CurrentTime.cpp:

(WTF::currentCPUTime):

  • wtf/CurrentTime.h:
10:54 AM Changeset in webkit [226294] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r226269): 60 JSC test failures on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=181163

Patch by Zan Dobersek <zdobersek@igalia.com> on 2017-12-26
Reviewed by Yusuke Suzuki.

In r226269, DFG::SpeculativeJIT::compile() changed behavior for the
GetDirectPname operation on non-x86 platforms, switching to using
GPRFlushedCallResult registers for the payload and tag pair of the
return value (through the JSValueRegsFlushedCallResult struct). This
tripped about 60 test cases on ARMv7.

As before this change, GPRTemporary registers should be used, but this
can now be done through a JSValueRegsTemporary object.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

10:21 AM Changeset in webkit [226293] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed GTK test gardening

  • platform/gtk/TestExpectations:
8:24 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)

Dec 25, 2017:

3:35 PM Changeset in webkit [226292] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

[macOS] On Retina displays, icon used as drag image for large image is scaled down
https://bugs.webkit.org/show_bug.cgi?id=181154

Reviewed by Wenson Hsieh.

  • page/DragController.cpp:

(WebCore::DragController::doImageDrag): When using an icon for the drag image, also adjust

its size for the device scale factor, like we do in the not-icon case.

Dec 24, 2017:

1:34 PM Changeset in webkit [226291] by ddkilzer@apple.com
  • 12 edits in trunk/Source

WebKit fixes to enable -Wstrict-prototypes for Safari
<https://webkit.org/b/181146>

Reviewed by Dan Bernstein.

Source/WebCore:

  • platform/ios/wak/WebCoreThread.h:

(WebThreadLockFromAnyThread):
(WebThreadLockFromAnyThreadNoLog):
(WebThreadUnlockFromAnyThread):
(WebThreadUnlockGuardForMail):
(WebThreadSetShouldYield):

  • Add 'void' to C function declarations.
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadLockFromAnyThread):
(WebThreadLockFromAnyThreadNoLog):
(WebThreadUnlockFromAnyThread):
(WebThreadUnlockGuardForMail):

  • Add 'void' to C function implementations.
  • platform/ios/wak/WebCoreThreadRun.cpp:

(class WebThreadBlock): Add 'void' to block declarations.
Rename 'task' to 'block' for consistency.
(_WebThreadRun): Add 'void' to block declaration. Make
argument name match declaration by changing 'task' to 'block'.
(WebThreadRun): Ditto.

  • platform/ios/wak/WebCoreThreadRun.h:

(WebThreadRun): Add 'void' to block declaration.

Source/WebKit:

  • Shared/API/c/WKGeometry.cpp:

(WKSizeGetTypeID):
(WKPointGetTypeID):
(WKRectGetTypeID):

  • Shared/API/c/WKGeometry.h:

(WKSizeGetTypeID):
(WKPointGetTypeID):
(WKRectGetTypeID):

  • Shared/API/c/WKImage.cpp:

(WKImageGetTypeID):

  • Shared/API/c/WKImage.h:

(WKImageGetTypeID):

  • Add 'void' to C function declarations and implementations as necessary.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView applyAutocorrection:toString:withCompletionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • Add 'void' to block declarations as necessary.
11:07 AM Changeset in webkit [226290] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r224313): Fix build warning when compiling WebKit.xcassets
<https://webkit.org/b/181148>

Reviewed by Dan Bernstein.

Fixes the following build warning:

Opensource/Source/WebKit/WebKit.xcassets: warning: Failed to read file attributes for "Opensource/Source/WebKit/WebKit.xcassets"

Failure Reason: No such file or directory

  • WebKit.xcodeproj/project.pbxproj: Fix relative path with

case-insensitive filesystem and repository name assumptions.

5:57 AM Changeset in webkit [226289] by graouts@webkit.org
  • 73 edits
    13 copies
    1 add
    1 delete in trunk

[Web Animations] Implement Element.animate()
https://bugs.webkit.org/show_bug.cgi?id=180402
<rdar://problem/35851353>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Rebaselining a few tests using Element.animate(). They still fail, but no longer on
the Element.animate() calls.

  • web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt:
  • web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt:
  • web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt:

Source/WebCore:

Now that we have added support for play() (webkit.org/b/178932) on Animation and parsing of multiple keyframes
(webkit.org/b/179708), we can add support Element.animate(). To support this simple task, we must add a series
of new IDL interfaces to support option parameters for Element.animate() (KeyframeAnimationOptions),
AnimationEffect (AnimationEffectTimingProperties), KeyframeEffect (KeyframeEffectOptions) and supporting
types CompositeOperation, FillMode, IterationCompositeOperation and PlaybackDirection. While we do not support
most parameters of those types, we at least define them for future support.

To support the most used form of the Element.animate() constructor across the WPT tests, we add support for
specifying the duration of an animation when constructing both a KeyframeEffect and calling Element.animate(),
either via a property on an options dictionary or as a double value.

The implementation of Element.animate() itself is relatively straightforward, we just need to create a supporting
KeyframeEffect based on the options provided, then an Animation with that effect set on it, and finally call play().

We also fix one crash that came up in WPT tests where we would try to access the DOMWindow when none was available
in http/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context.html.

  • CMakeLists.txt: Add new IDL files.
  • DerivedSources.make: Add new IDL files.
  • Sources.txt: Add new generated JS bindings.
  • WebCore.xcodeproj/project.pbxproj: Add new IDL, header and C++ files.
  • animation/Animatable.idl: Expose the animate() method.
  • animation/AnimationEffectTiming.cpp:

(WebCore::AnimationEffectTiming::setBindingsDuration): Make the duration property spec-compliant and expect the right
kind of type (unrestricted double or DOMString).

  • animation/AnimationEffectTiming.h:
  • animation/AnimationEffectTiming.idl:
  • animation/AnimationEffectTimingProperties.h: Added.
  • animation/AnimationEffectTimingProperties.idl: Added.
  • animation/CompositeOperation.h: Added.
  • animation/CompositeOperation.idl: Added.
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::currentTime): Check that there is DOMWindow before proceeding to querying the current time
through it, fixes a newly-apparent crash.

  • animation/FillMode.h: Added.
  • animation/FillMode.idl: Added.
  • animation/IterationCompositeOperation.h: Added.
  • animation/IterationCompositeOperation.idl: Added.
  • animation/KeyframeAnimationOptions.h: Added.
  • animation/KeyframeAnimationOptions.idl: Added.
  • animation/KeyframeEffect.cpp: Update types that are no longer defined under KeyframeEffect.

(WebCore::processIterableKeyframes):
(WebCore::processPropertyIndexedKeyframes):
(WebCore::KeyframeEffect::create): Add support for duration provided either directly as a double or through KeyframeEffectOptions.

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffect.idl:
  • animation/KeyframeEffectOptions.h: Added.
  • animation/KeyframeEffectOptions.idl: Added.
  • animation/PlaybackDirection.h: Added.
  • animation/PlaybackDirection.idl: Added.
  • dom/Element.cpp:

(WebCore::Element::animate): Implement Element.animate().

  • dom/Element.h:

LayoutTests:

Turning on Element.animate() means that a ton of WPT tests that would immediately fail when Element.animate()
was used now progressed to either PASS, FAIL or TIMEOUT. We update the output to match the updated behavior
and TestExpectations for some cases of flaky outputs due to incomplete implementations that had not surfaced
until now.

We're also removing a Blink test that uses Web Animations to animate a bogus "rotate" property.

  • TestExpectations:
  • http/wpt/web-animations/animation-model/animation-types/discrete-animation-expected.txt:
  • http/wpt/web-animations/animation-model/combining-effects/effect-composition-expected.txt:
  • http/wpt/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt:
  • http/wpt/web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes-expected.txt:
  • http/wpt/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance-expected.txt:
  • http/wpt/web-animations/animation-model/keyframe-effects/effect-value-visibility-expected.txt:
  • http/wpt/web-animations/interfaces/Animatable/animate-expected.txt:
  • http/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context-expected.txt:
  • http/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/cancel-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/effect-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/finish-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/finished-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/id-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/oncancel-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/onfinish-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/pause-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/play-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/playState-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/playbackRate-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/ready-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/startTime-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/delay-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/direction-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/duration-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/easing-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/endDelay-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/fill-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/getAnimations-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/getComputedStyle-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/iterationStart-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/iterations-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationTimeline/document-timeline-expected.txt:
  • http/wpt/web-animations/interfaces/Document/getAnimations-expected.txt:
  • http/wpt/web-animations/interfaces/KeyframeEffect/composite-expected.txt:
  • http/wpt/web-animations/interfaces/KeyframeEffect/iterationComposite-expected.txt:
  • http/wpt/web-animations/interfaces/KeyframeEffect/setTarget-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/active-time-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/current-iteration-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/local-time-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/phases-and-states-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/simple-iteration-progress-expected.txt:
  • http/wpt/web-animations/timing-model/animations/canceling-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/finishing-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/pausing-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/playing-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/reversing-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-target-effect-of-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/updating-the-finished-state-expected.txt:
  • http/wpt/web-animations/timing-model/time-transformations/transformed-progress-expected.txt:
  • imported/blink/virtual/threaded/animations/compositor-rotate-zero-degrees-expected.html: Removed.
  • imported/blink/virtual/threaded/animations/compositor-rotate-zero-degrees.html: Removed.
Note: See TracTimeline for information about the timeline view.