WebKit-https.git
2 years ago[Web Animations] Tests using the new animation engine may crash under WebCore::FrameV...
graouts@webkit.org [Mon, 14 May 2018 18:19:30 +0000 (18:19 +0000)]
[Web Animations] Tests using the new animation engine may crash under WebCore::FrameView::didDestroyRenderTree when using internals methods
https://bugs.webkit.org/show_bug.cgi?id=185612
<rdar://problem/39579344>

Reviewed by Dean Jackson.

Source/WebCore:

Add a new internals.pseudoElement() method to obtain a pseudo element matching a given pseudo-id. This is necessary to be able to move off
internals.pauseTransitionAtTimeOnPseudoElement() and internals.pauseAnimationAtTimeOnPseudoElement() for Web Animations testing.

* testing/Internals.cpp:
(WebCore::Internals::pseudoElement):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

Some tests that were opting into the new animation engine were using internals methods (pauseAnimationAtTimeOnElement, pauseTransitionAtTimeOnElement, etc.)
that enforce the creation of animations in the old animation engine. Meanwhile, the code that toggles the animation engine used based on HTML comments is run
prior to teardown of the previous test and so a test running with the new engine would run with the legacy engine during teardown. These two factors would
cause `ASSERT(!frame().animation().hasAnimations())` to fail under FrameView::didDestroyRenderTree().

We update tests that use these internals method to use the Web Animations API instead and opt into the new animation engine if they didn't already do that.

* animations/animation-hit-test-transform.html:
* animations/keyframes-dynamic-expected.txt:
* animations/keyframes-dynamic.html:
* animations/missing-from-to-expected.txt:
* animations/missing-from-to-transforms-expected.txt:
* animations/missing-from-to-transforms.html:
* animations/missing-from-to.html:
* fast/css-generated-content/pseudo-animation.html:
* transitions/transition-hit-test-transform.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231766 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION (r230574): Interrupted hardware transitions don't behave correctly
graouts@webkit.org [Mon, 14 May 2018 18:15:57 +0000 (18:15 +0000)]
REGRESSION (r230574): Interrupted hardware transitions don't behave correctly
https://bugs.webkit.org/show_bug.cgi?id=185299
<rdar://problem/39630230>

Reviewed by Simon Fraser.

Source/WebCore:

In r230574, the fix for webkit.org/b/184518, we changed the processing order in GraphicsLayerCA::updateAnimations() to first
process m_uncomittedAnimations and then m_animationsToProcess, so we are guaranteed animations exist before we attempt to pause
or seek them. This broke interrupting and resuming hardware animations (such as an interrupted CSS Transition or an animation
running in a non-visible tab) since a pause operation recorded _before_ an animation was added would be paused anyway since
the animation was now first added, and then paused. The fix is simply to clear any pending AnimationProcessingAction for a
newly-uncommitted animation.

Test: transitions/interrupted-transition-hardware.html

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::createAnimationFromKeyframes):
(WebCore::GraphicsLayerCA::appendToUncommittedAnimations):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* platform/graphics/ca/GraphicsLayerCA.h:
(WebCore::GraphicsLayerCA::LayerPropertyAnimation::LayerPropertyAnimation):

LayoutTests:

Add a new test where we interrupt a transition and check that upon returning to the original value,
an animated value is still used and not the initial value. This test fails prior to this patch.

* transitions/interrupted-transition-hardware-expected.html: Added.
* transitions/interrupted-transition-hardware.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231765 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix a legacy CRLF eol from Test262
commit-queue@webkit.org [Mon, 14 May 2018 17:39:16 +0000 (17:39 +0000)]
Fix a legacy CRLF eol from Test262
https://bugs.webkit.org/show_bug.cgi?id=185565

Patch by Leo Balter <leonardo.balter@gmail.com> on 2018-05-14
Reviewed by Yusuke Suzuki.

* test262/config.yaml:
* test262/test/built-ins/Math/cbrt/prop-desc.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231764 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoNSEvent event trackers don't work from WebKitTestRunner
commit-queue@webkit.org [Mon, 14 May 2018 17:26:25 +0000 (17:26 +0000)]
NSEvent event trackers don't work from WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=185383
rdar://problem/40025045

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-05-14
Reviewed by Simon Fraser.

Tools:

Post simulated wheel events to _sendEventToObservers: so they can be handled by NSEvent observers.
NSEvent swipe tracking is used for webkit swipe navigation.

* WebKitTestRunner/mac/EventSenderProxy.mm:
(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases):

LayoutTests:

This test initiates back navigation with wheel events.

* swipe/wheel-event-initiated-back-navigation-expected.txt: Added.
* swipe/wheel-event-initiated-back-navigation.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231763 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[JSC] timeClip(-0) should produce +0
utatane.tea@gmail.com [Mon, 14 May 2018 17:18:05 +0000 (17:18 +0000)]
[JSC] timeClip(-0) should produce +0
https://bugs.webkit.org/show_bug.cgi?id=185589

Reviewed by Saam Barati.

JSTests:

Fix several test262 failures.

* stress/date-negative-zero.js: Added.
(shouldBe):
* test262/expectations.yaml:

Source/WTF:

According to the spec[1], timeClip(-0) should produce +0.
We achieve this by adding 0.0 to the result of trunc(t).

[1]: https://tc39.github.io/ecma262/#sec-timeclip

* wtf/DateMath.cpp:
(WTF::timeClip):

LayoutTests:

* sputnik/Implementation_Diagnostics/S15.9.1.14_D1-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231762 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[JSC] Tweak LiteralParser to improve lexing performance
utatane.tea@gmail.com [Mon, 14 May 2018 16:47:35 +0000 (16:47 +0000)]
[JSC] Tweak LiteralParser to improve lexing performance
https://bugs.webkit.org/show_bug.cgi?id=185541

Reviewed by Saam Barati.

This patch attemps to improve LiteralParser performance.

This patch improves Kraken/json-parse-financial by roughly ~10%.
                                   baseline                  patched

    json-parse-financial        65.810+-1.591      ^      59.943+-1.784         ^ definitely 1.0979x faster

* parser/Lexer.cpp:
(JSC::Lexer<T>::Lexer):
* runtime/ArgList.h:
(JSC::MarkedArgumentBuffer::takeLast):
Add takeLast() for idiomatic last() + removeLast() calls.

* runtime/LiteralParser.cpp:
(JSC::LiteralParser<CharType>::Lexer::lex):
Do not have mode in its template parameter. While lex function is large, this mode is not used in a critical path.
We should not include this mode in its template parameter to reduce the code size.
And we do not use template parameter for a terminator since duplicating ' and " code for lexString is not good.
Also, we construct TokenType table to remove bunch of unnecessary switch cases.

(JSC::LiteralParser<CharType>::Lexer::next):
(JSC::isSafeStringCharacter):
Take mode in its template parameter. But do not take terminator character in its template parameter.

(JSC::LiteralParser<CharType>::Lexer::lexString):
(JSC::LiteralParser<CharType>::Lexer::lexStringSlow):
Duplicate while statements manually since this is a critical path.

(JSC::LiteralParser<CharType>::parse):
Use takeLast().

* runtime/LiteralParser.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231761 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoSimplified Mach exception handling
ggaren@apple.com [Mon, 14 May 2018 16:45:09 +0000 (16:45 +0000)]
Simplified Mach exception handling
https://bugs.webkit.org/show_bug.cgi?id=185595

Reviewed by Keith Miller.

* wtf/threads/Signals.cpp:
(WTF::startMachExceptionHandlerThread): Use mach_msg_server_once instead
of duplicating its functionality. Separate error handling logic from
program logic to help program logic stand out. Use
DISPATCH_TARGET_QUEUE_* instead of explicitly fetching a queue.

Also, we don't need the high priority queue. The kernel donates a
priority voucher from the exception thread to the receiver thread, and
mach_msg_server_once takes care to forward that voucher.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231760 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GStreamer] Fix style issue in MediaPlayerPrivateGStreamerBase
commit-queue@webkit.org [Mon, 14 May 2018 16:18:36 +0000 (16:18 +0000)]
[GStreamer] Fix style issue in MediaPlayerPrivateGStreamerBase
https://bugs.webkit.org/show_bug.cgi?id=185510

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-05-14
Reviewed by Philippe Normand.

ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:629:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:684:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:807:  More than one command on the same line  [whitespace/newline] [4]

Indentation and style issue fixed only.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::volumeChangedCallback):
(WebCore::MediaPlayerPrivateGStreamerBase::muteChangedCallback):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231759 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[LFC] Implement height computation for non-replaced out of flow elements.
zalan@apple.com [Mon, 14 May 2018 15:59:56 +0000 (15:59 +0000)]
[LFC] Implement height computation for non-replaced out of flow elements.
https://bugs.webkit.org/show_bug.cgi?id=185585

Reviewed by Antti Koivisto.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeHeight const):
(WebCore::Layout::FormattingContext::computeOutOfFlowHeight const):
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
(WebCore::Layout::FormattingContext::computeOutOfFlowNonReplacedHeight const):
(WebCore::Layout::FormattingContext::computeHeightForBlockFormattingContextRootWithAutoHeight const):
* layout/FormattingContext.h:
* layout/blockformatting/BlockFormattingContext.h:
* layout/displaytree/DisplayBox.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231758 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoRenaming of overrides in LayoutBox
rego@igalia.com [Mon, 14 May 2018 15:20:47 +0000 (15:20 +0000)]
Renaming of overrides in LayoutBox
https://bugs.webkit.org/show_bug.cgi?id=185609

Reviewed by Javier Fernandez.

The names of the methods for the overrides were not consistent,
this patch fixes it by using the same structure in all the cases.

No new tests, no change of behavior.

* rendering/GridLayoutFunctions.cpp:
(WebCore::GridLayoutFunctions::hasOverrideContainingBlockContentSizeForChild):
* rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithmStrategy::logicalHeightForChild const):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::computeChildPreferredLogicalWidths const):
(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::fitBorderToLinesIfNeeded):
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::updateRubyForJustifiedText):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::willBeDestroyed):
(WebCore::RenderBox::hasOverrideContentLogicalHeight const):
(WebCore::RenderBox::hasOverrideContentLogicalWidth const):
(WebCore::RenderBox::setOverrideContentLogicalHeight):
(WebCore::RenderBox::setOverrideContentLogicalWidth):
(WebCore::RenderBox::clearOverrideContentLogicalHeight):
(WebCore::RenderBox::clearOverrideContentLogicalWidth):
(WebCore::RenderBox::clearOverrideContentSize):
(WebCore::RenderBox::overrideContentLogicalWidth const):
(WebCore::RenderBox::overrideContentLogicalHeight const):
(WebCore::RenderBox::overrideContainingBlockContentLogicalWidth const):
(WebCore::RenderBox::overrideContainingBlockContentLogicalHeight const):
(WebCore::RenderBox::hasOverrideContainingBlockContentLogicalWidth const):
(WebCore::RenderBox::hasOverrideContainingBlockContentLogicalHeight const):
(WebCore::RenderBox::setOverrideContainingBlockContentLogicalWidth):
(WebCore::RenderBox::setOverrideContainingBlockContentLogicalHeight):
(WebCore::RenderBox::clearOverrideContainingBlockContentSize):
(WebCore::RenderBox::clearOverrideContainingBlockContentLogicalHeight):
(WebCore::RenderBox::containingBlockLogicalWidthForContent const):
(WebCore::RenderBox::containingBlockLogicalHeightForContent const):
(WebCore::RenderBox::perpendicularContainingBlockLogicalHeight const):
(WebCore::RenderBox::computeLogicalWidthInFragment const):
(WebCore::RenderBox::computeLogicalHeight const):
(WebCore::RenderBox::computePercentageLogicalHeight const):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing const):
(WebCore::RenderBox::availableLogicalHeightUsing const):
(WebCore::RenderBox::containingBlockLogicalWidthForPositioned const):
(WebCore::RenderBox::containingBlockLogicalHeightForPositioned const):
* rendering/RenderBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight const):
* rendering/RenderDeprecatedFlexibleBox.cpp:
(WebCore::contentWidthForChild):
(WebCore::contentHeightForChild):
(WebCore::gatherFlexChildrenInfo):
(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
(WebCore::RenderDeprecatedFlexibleBox::clearLineClamp):
* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild):
(WebCore::RenderFlexibleBox::crossSizeForPercentageResolution):
(WebCore::RenderFlexibleBox::mainSizeForPercentageResolution):
(WebCore::RenderFlexibleBox::constructFlexItem):
(WebCore::RenderFlexibleBox::setOverrideMainAxisContentSizeForChild):
(WebCore::RenderFlexibleBox::applyStretchAlignmentToChild):
* rendering/RenderFullScreen.cpp:
(WebCore::RenderFullScreen::unwrapRenderer):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::layoutBlock):
(WebCore::RenderGrid::layoutGridItems):
(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):
* rendering/RenderRubyBase.cpp:
(WebCore::RenderRubyBase::adjustInlineDirectionLineBounds const):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::setOverrideContentLogicalHeightFromRowHeight):
* rendering/RenderTableCell.h:
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::calcRowLogicalHeight):
(WebCore::RenderTableSection::relayoutCellIfFlexed):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231757 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[LFC] Implement width computation for non-replaced out of flow elements.
zalan@apple.com [Mon, 14 May 2018 14:52:50 +0000 (14:52 +0000)]
[LFC] Implement width computation for non-replaced out of flow elements.
https://bugs.webkit.org/show_bug.cgi?id=185598

Reviewed by Antti Koivisto.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeWidth const):
(WebCore::Layout::FormattingContext::computeOutOfFlowWidth const):
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
(WebCore::Layout::FormattingContext::computeOutOfFlowNonReplacedWidth const):
(WebCore::Layout::FormattingContext::shrinkToFitWidth const):
* layout/FormattingContext.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout const):
* layout/displaytree/DisplayBox.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231756 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago-Wmemset-elt-size warning in LibWebRTCSocket constructor
mcatanzaro@igalia.com [Mon, 14 May 2018 14:39:18 +0000 (14:39 +0000)]
-Wmemset-elt-size warning in LibWebRTCSocket constructor
https://bugs.webkit.org/show_bug.cgi?id=185555

Reviewed by Youenn Fablet.

Add missing multiplication.

* WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
(WebKit::LibWebRTCSocket::LibWebRTCSocket):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231755 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoDrop the m_compositorTexture member variable in TextureMapperGC3DPlatformLayer.
zandobersek@gmail.com [Mon, 14 May 2018 12:57:56 +0000 (12:57 +0000)]
Drop the m_compositorTexture member variable in TextureMapperGC3DPlatformLayer.
It's not used at all inside the class or outside it.

Rubber-stamped by Michael Catanzaro.

* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231754 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GTK] REGRESSION(r231170) Build broken with Clang 5.0
zandobersek@gmail.com [Mon, 14 May 2018 12:52:25 +0000 (12:52 +0000)]
[GTK] REGRESSION(r231170) Build broken with Clang 5.0
https://bugs.webkit.org/show_bug.cgi?id=185198

Reviewed by Michael Catanzaro.

.:

* Source/cmake/WebKitCompilerFlags.cmake: Fall back to the -std=c++1z
compiler flag if -std=c++17 is not supported. If that flag is not
supported either, bail with an error message.

Source/WebCore:

Avoid gperf files using the register keyword which has been made
reserved and as such unusable in C++17.

* css/makeSelectorPseudoClassAndCompatibilityElementMap.py:
* css/makeSelectorPseudoElementsMap.py:
* css/makeprop.pl:
* css/makevalues.pl:
* platform/ColorData.gperf:
* platform/ReferrerPolicy.h: With std::optional forward declaration
gone, explicitly include the WTF Optional.h header.
* platform/Theme.h: Ditto.
* platform/network/create-http-header-name-table:

Source/WebKit:

* Shared/RTCNetwork.h: With std::optional forward declaration gone,
explicitly include the WTF Optional.h header.

Source/WTF:

* wtf/Compiler.h:
* wtf/Forward.h: Delete the std::optional forward declaration that is
potentially incompatible with definition provided by the standard library.
* wtf/Hasher.h:
* wtf/StdLibExtras.h: In addition to the remaining C++14 configurations,
also use custom std::in_place_t implementation when compiling with
libstdc++ 6.x, which doesn't provide its own.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231753 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoEnable service-worker/navigation-redirect-body.https.html and service-worker/postmess...
youenn@apple.com [Mon, 14 May 2018 10:41:07 +0000 (10:41 +0000)]
Enable service-worker/navigation-redirect-body.https.html and service-worker/postmessage.https.html
https://bugs.webkit.org/show_bug.cgi?id=185605

Unreviewed.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/postmessage.https-expected.txt:

LayoutTests:

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231752 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[MIPS] Use btpz to compare against 0 instead of bpeq
commit-queue@webkit.org [Mon, 14 May 2018 10:20:24 +0000 (10:20 +0000)]
[MIPS] Use btpz to compare against 0 instead of bpeq
https://bugs.webkit.org/show_bug.cgi?id=185607

Patch by Dominik Infuehr <dinfuehr@igalia.com> on 2018-05-14
Reviewed by Yusuke Suzuki.

Fixes build on MIPS since MIPS doesn't have an instruction to
compare a register against an immediate. Since the immediate is just 0
in this case the simplest solution is just to use btpz instead of bpeq
to compare to 0.

* llint/LowLevelInterpreter.asm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231751 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMark imported/w3c/web-platform-tests/service-workers/service-worker/redirected-respon...
youenn@apple.com [Mon, 14 May 2018 08:32:43 +0000 (08:32 +0000)]
Mark imported/w3c/web-platform-tests/service-workers/service-worker/redirected-response.https.html as slow in debug
https://bugs.webkit.org/show_bug.cgi?id=185604

Unreviewed.

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231750 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUnreviewed, rolling out r219515.
commit-queue@webkit.org [Mon, 14 May 2018 07:33:55 +0000 (07:33 +0000)]
Unreviewed, rolling out r219515.
https://bugs.webkit.org/show_bug.cgi?id=185603

It sometimes makes AudioUnitInitialize call to fail in
CoreAudioCaptureSource (Requested by youenn on #webkit).

Reverted changeset:

"Remove CoreAudioCaptureSource speaker configuration"
https://bugs.webkit.org/show_bug.cgi?id=174512
https://trac.webkit.org/changeset/219515

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231749 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWebKit2_Sim-7606.1.17.4 introduced dep cycle
dino@apple.com [Sun, 13 May 2018 19:29:38 +0000 (19:29 +0000)]
WebKit2_Sim-7606.1.17.4 introduced dep cycle
https://bugs.webkit.org/show_bug.cgi?id=185588
<rdar://problem/40196581>

Reviewed by Tim Horton.

Soft link AssetViewer.framework to avoid a dependency cycle.

* Configurations/WebKit.xcconfig:
* UIProcess/ios/WKSystemPreviewView.mm:
(-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231744 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoDisable pointer poisoning
fpizlo@apple.com [Sun, 13 May 2018 18:57:03 +0000 (18:57 +0000)]
Disable pointer poisoning
https://bugs.webkit.org/show_bug.cgi?id=185586

Reviewed by Yusuke Suzuki.

This seems like a 0.3% speed-up on microbenchmarks. It seems like it may be a small speed-up on
other tests, too.

* wtf/Platform.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231743 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[BigInt] stress/big-int-spec-to-primitive.js test is failing
ticaiolima@gmail.com [Sun, 13 May 2018 18:16:20 +0000 (18:16 +0000)]
[BigInt] stress/big-int-spec-to-primitive.js test is failing
https://bugs.webkit.org/show_bug.cgi?id=185582

Reviewed by Yusuke Suzuki.

This patch is removing the use of ```numberOfDFGCompiles``` from
stress/big-int-spec-to-primitive.js because it makes this est fail
sometimes.

* stress/big-int-spec-to-primitive.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231742 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoCachedCall::call() should be faster
fpizlo@apple.com [Sun, 13 May 2018 16:54:55 +0000 (16:54 +0000)]
CachedCall::call() should be faster
https://bugs.webkit.org/show_bug.cgi?id=185583

Reviewed by Yusuke Suzuki.

CachedCall is an optimization for String.prototype.replace(r, f) where f is a function.
Unfortunately, because of a combination of abstraction and assertions, this code path had a
lot of overhead. This patch reduces this overhead by:

- Turning off some assertions. These assertions don't look to have security value; they're
  mostly for sanity. I turned off stack alignment checks and VM state checks having to do
  with whether the JSLock is held. The JSLock checks are not relevant when doing a cached
  call, considering that the caller would have already been strongly assuming that the JSLock
  is held.

- Making more things inlineable.

This looks like a small (4% ish) speed-up on SunSpider/string-unpack-code.

* JavaScriptCore.xcodeproj/project.pbxproj:
* interpreter/CachedCall.h:
(JSC::CachedCall::call):
* interpreter/Interpreter.cpp:
(JSC::checkedReturn): Deleted.
* interpreter/Interpreter.h:
(JSC::Interpreter::checkedReturn):
* interpreter/InterpreterInlines.h:
(JSC::Interpreter::execute):
* jit/JITCode.cpp:
(JSC::JITCode::execute): Deleted.
* jit/JITCodeInlines.h: Added.
(JSC::JITCode::execute):
* llint/LowLevelInterpreter.asm:
* runtime/StringPrototype.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231741 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[INTL] Improve spec & test262 compliance for Intl APIs
commit-queue@webkit.org [Sun, 13 May 2018 14:28:39 +0000 (14:28 +0000)]
[INTL] Improve spec & test262 compliance for Intl APIs
https://bugs.webkit.org/show_bug.cgi?id=185578

Patch by Andy VanWagoner <andy@vanwagoner.family> on 2018-05-13
Reviewed by Yusuke Suzuki.

JSTests:

Remove intl402 failures that have been fixed.

* test262/expectations.yaml:
* stress/regress-178385.js: toStringTag is configurable, but not writable.

Source/JavaScriptCore:

Use putDirectIndex over push for lists to arrays.
Update default options to construct with a null prototype.
Define constructor and toStringTag on prototypes.
Add proper time clipping.
Remove some outdated comment spec text, use url instead.

* runtime/IntlCollator.cpp:
(JSC::IntlCollator::initializeCollator):
* runtime/IntlCollatorConstructor.cpp:
(JSC::IntlCollatorConstructor::finishCreation):
* runtime/IntlCollatorPrototype.cpp:
(JSC::IntlCollatorPrototype::finishCreation):
* runtime/IntlDateTimeFormatConstructor.cpp:
(JSC::IntlDateTimeFormatConstructor::finishCreation):
* runtime/IntlDateTimeFormatPrototype.cpp:
(JSC::IntlDateTimeFormatPrototype::finishCreation):
(JSC::IntlDateTimeFormatFuncFormatDateTime):
(JSC::IntlDateTimeFormatPrototypeFuncFormatToParts):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
* runtime/IntlNumberFormatConstructor.cpp:
(JSC::IntlNumberFormatConstructor::finishCreation):
* runtime/IntlNumberFormatPrototype.cpp:
(JSC::IntlNumberFormatPrototype::finishCreation):
* runtime/IntlObject.cpp:
(JSC::lookupSupportedLocales):
(JSC::supportedLocales):
(JSC::intlObjectFuncGetCanonicalLocales):
* runtime/IntlPluralRules.cpp:
(JSC::IntlPluralRules::resolvedOptions):
* runtime/IntlPluralRulesConstructor.cpp:
(JSC::IntlPluralRulesConstructor::finishCreation):

LayoutTests:

Update Intl tests for prototype changes.

* js/intl-collator-expected.txt:
* js/intl-datetimeformat-expected.txt:
* js/intl-numberformat-expected.txt:
* js/script-tests/intl-collator.js:
* js/script-tests/intl-datetimeformat.js:
* js/script-tests/intl-numberformat.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231740 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoImplement SVGGeometryElement's isPointInFill and isPointInStroke
krit@webkit.org [Sun, 13 May 2018 09:25:44 +0000 (09:25 +0000)]
Implement SVGGeometryElement's isPointInFill and isPointInStroke
https://bugs.webkit.org/show_bug.cgi?id=185580

Reviewed by Antti Koivisto.

Implement isPointInFill and isPointInStroke methods for
SVGGeometryElement interface from SVG2.

https://svgwg.org/svg2-draft/types.html#InterfaceSVGGeometryElement

Source/WebCore:

Tests: svg/dom/SVGGeometry-isPointInFill.xhtml
       svg/dom/SVGGeometry-isPointInStroke.xhtml

* rendering/svg/RenderSVGEllipse.cpp:
(WebCore::RenderSVGEllipse::shapeDependentStrokeContains): Flag
        to switch between local and "global" coordinate space for hit testing.
* rendering/svg/RenderSVGEllipse.h:
* rendering/svg/RenderSVGPath.cpp:
(WebCore::RenderSVGPath::shapeDependentStrokeContains): Flag
        to switch between local and "global" coordinate space for hit testing.
* rendering/svg/RenderSVGPath.h:
* rendering/svg/RenderSVGRect.cpp:
(WebCore::RenderSVGRect::shapeDependentStrokeContains): Flag
        to switch between local and "global" coordinate space for hit testing.
* rendering/svg/RenderSVGRect.h:
* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::shapeDependentStrokeContains): Flag
        to switch between local and "global" coordinate space for hit testing.
(WebCore::RenderSVGShape::isPointInFill): Take the winding rule given by
        `fill-rule` to test if a given point is in the fill area of a path.
(WebCore::RenderSVGShape::isPointInStroke): Take stroke properties into
        account to check if a point is on top of the stroke area.
* rendering/svg/RenderSVGShape.h:
* svg/SVGGeometryElement.cpp:
(WebCore::SVGGeometryElement::isPointInFill):
(WebCore::SVGGeometryElement::isPointInStroke):
(WebCore::SVGGeometryElement::createElementRenderer): Deleted. This is getting implemented
        by inheriting classes. No need to create RenderSVGPath here.
* svg/SVGGeometryElement.h:
* svg/SVGGeometryElement.idl:

LayoutTests:

* svg/dom/SVGGeometry-isPointInFill-expected.txt: Added.
* svg/dom/SVGGeometry-isPointInFill.xhtml: Added.
* svg/dom/SVGGeometry-isPointInStroke-expected.txt: Added.
* svg/dom/SVGGeometry-isPointInStroke.xhtml: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231739 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUnreviewed, rebaseline a layout test after r231717
wenson_hsieh@apple.com [Sun, 13 May 2018 00:03:28 +0000 (00:03 +0000)]
Unreviewed, rebaseline a layout test after r231717

* fast/events/extrazoom/change-focus-during-change-event-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231737 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUse WeakPtr for m_enclosingPaginationLayer in RenderLayer
zalan@apple.com [Sat, 12 May 2018 17:10:30 +0000 (17:10 +0000)]
Use WeakPtr for m_enclosingPaginationLayer in RenderLayer
https://bugs.webkit.org/show_bug.cgi?id=185566
<rdar://problem/36486052>

Reviewed by Simon Fraser.

Since RenderLayer does not own the enclosing pagination layout, it should
construct a weak pointer instead of holding on to a raw pointer.

Unable to create a reliably reproducible test case.

* page/mac/EventHandlerMac.mm:
(WebCore::scrollableAreaForEventTarget):
(WebCore::scrollableAreaForContainerNode):
(WebCore::EventHandler::platformPrepareForWheelEvents):
* platform/ScrollableArea.h:
(WebCore::ScrollableArea::weakPtrFactory const):
(WebCore::ScrollableArea::createWeakPtr): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::updatePagination):
* rendering/RenderLayer.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231735 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[ESNext][BigInt] Implement support for "*" operation
ticaiolima@gmail.com [Sat, 12 May 2018 04:32:12 +0000 (04:32 +0000)]
[ESNext][BigInt] Implement support for "*" operation
https://bugs.webkit.org/show_bug.cgi?id=183721

Reviewed by Yusuke Suzuki.

JSTests:

* bigIntTests.yaml:
* stress/big-int-mul-jit.js: Added.
* stress/big-int-mul-to-primitive-precedence.js: Added.
* stress/big-int-mul-to-primitive.js: Added.
* stress/big-int-mul-type-error.js: Added.
* stress/big-int-mul-wrapped-value.js: Added.
* stress/big-int-multiplication.js: Added.
* stress/big-int-multiply-memory-stress.js: Added.

Source/JavaScriptCore:

Added BigInt support into times binary operator into LLInt and on
JITOperations profiledMul and unprofiledMul. We are also replacing all
uses of int to unsigned when there is no negative values for
variables.

* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* jit/JITOperations.cpp:
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/JSBigInt.cpp:
(JSC::JSBigInt::JSBigInt):
(JSC::JSBigInt::allocationSize):
(JSC::JSBigInt::createWithLength):
(JSC::JSBigInt::toString):
(JSC::JSBigInt::multiply):
(JSC::JSBigInt::digitDiv):
(JSC::JSBigInt::internalMultiplyAdd):
(JSC::JSBigInt::multiplyAccumulate):
(JSC::JSBigInt::equals):
(JSC::JSBigInt::absoluteDivSmall):
(JSC::JSBigInt::calculateMaximumCharactersRequired):
(JSC::JSBigInt::toStringGeneric):
(JSC::JSBigInt::rightTrim):
(JSC::JSBigInt::allocateFor):
(JSC::JSBigInt::parseInt):
(JSC::JSBigInt::digit):
(JSC::JSBigInt::setDigit):
* runtime/JSBigInt.h:
* runtime/JSCJSValue.h:
* runtime/JSCJSValueInlines.h:
(JSC::JSValue::toNumeric const):
* runtime/Operations.h:
(JSC::jsMul):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231733 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFollow-up build fix to r231721.
mitz@apple.com [Sat, 12 May 2018 04:19:10 +0000 (04:19 +0000)]
Follow-up build fix to r231721.

* pal/cf/CoreMediaSoftLink.cpp:
* pal/cf/CoreMediaSoftLink.h:
  Unify the conditions between the header and the implementation files, and have watchOS and
  tvOS keyed off iOS.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231731 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoX-Frame-Options: SAMEORIGIN needs to check all ancestor frames
dbates@webkit.org [Sat, 12 May 2018 04:11:16 +0000 (04:11 +0000)]
X-Frame-Options: SAMEORIGIN needs to check all ancestor frames
https://bugs.webkit.org/show_bug.cgi?id=185567
<rdar://problem/40175008>

Reviewed by Brent Fulgham.

Source/WebCore:

Change the behavior of "X-Frame-Options: SAMEORIGIN" to ensure that all ancestors frames
are same-origin with the document that delivered this header. This prevents an intermediary
malicious frame from clickjacking a child frame whose document is same-origin with the top-
level frame. It also makes the behavior of X-Frame-Options in WebKit more closely match
the behavior of X-Frame-Options in other browsers, including Chrome and Firefox.

Currently a document delivered with "X-Frame-Options: SAMEORIGIN" must only be same-origin
with the top-level frame's document in order to be displayed. This prevents clickjacking by
a malicious page that embeds a page delivered with "X-Frame-Options: SAMEORIGIN". However,
it does not protect against clickjacking of the "X-Frame-Options: SAMEORIGIN" page (victim)
if embedded by an intermediate malicious iframe, say a "rogue ad", that was embedded in a
document same origin with the victim page. We should protect against such attacks.

Tests: http/tests/security/XFrameOptions/x-frame-options-ancestors-same-origin-allow.html
       http/tests/security/XFrameOptions/x-frame-options-ancestors-same-origin-deny.html

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::shouldInterruptLoadForXFrameOptions):

Source/WebKit:

Change the behavior of "X-Frame-Options: SAMEORIGIN" to ensure that all ancestors frames
are same-origin with the document that delivered this header. This prevents an intermediary
malicious frame from clickjacking a child frame whose document is same-origin with the top-
level frame. It also makes the behavior of X-Frame-Options in WebKit more closely match
the behavior of X-Frame-Options in other browsers, including Chrome and Firefox.

Currently a document delivered with "X-Frame-Options: SAMEORIGIN" must only be same-origin
with the top-level frame's document in order to be displayed. This prevents clickjacking by
a malicious page that embeds a page delivered with "X-Frame-Options: SAMEORIGIN". However,
it does not protect against clickjacking of the "X-Frame-Options: SAMEORIGIN" page (victim)
if embedded by an intermediate malicious iframe, say a "rogue ad", that was embedded in a
document same origin with the victim page. We should protect against such attacks.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::shouldInterruptLoadForXFrameOptions):

LayoutTests:

Add tests to ensure that "X-Frame-Options: SAMEORIGIN" checks ancestor frames.

* http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page.html:
* http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html:
* http/tests/cookies/same-site/fetch-in-cross-origin-iframe.html:
* http/tests/resources/echo-iframe-src.php: Copied from LayoutTests/http/tests/cookies/same-site/resources/echo-iframe-src.php.
* http/tests/security/XFrameOptions/resources/x-frame-options-ancestors-same-origin-deny.html: Added.
* http/tests/security/XFrameOptions/resources/x-frame-options-frame-ancestors-same-origin-allow.cgi: Added.
* http/tests/security/XFrameOptions/resources/x-frame-options-frame-ancestors-same-origin-deny.cgi: Added.
* http/tests/security/XFrameOptions/x-frame-options-ancestors-same-origin-allow-expected.txt: Added.
* http/tests/security/XFrameOptions/x-frame-options-ancestors-same-origin-allow.html: Added.
* http/tests/security/XFrameOptions/x-frame-options-ancestors-same-origin-deny-expected.txt: Added.
* http/tests/security/XFrameOptions/x-frame-options-ancestors-same-origin-deny.html: Renamed from LayoutTests/http/tests/cookies/same-site/resources/echo-iframe-src.php.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231730 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWKWebViewContentProvider should know what MIME type it was created to handle
dino@apple.com [Sat, 12 May 2018 02:11:05 +0000 (02:11 +0000)]
WKWebViewContentProvider should know what MIME type it was created to handle
https://bugs.webkit.org/show_bug.cgi?id=185574
<rdar://problem/40183049>

Reviewed by Tim Horton.

Pass the MIME type of the downloaded asset into the WKWebViewContentProvider's
init method, so it can choose to do something based on that information. The
PDF and LegacyPDF views don't care because they, clearly, only handle PDF. But
a WKSystemPreviewView can handle multiple types.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setHasCustomContentView:loadedMIMEType:]): Send the MIME type on
to the WKWebViewContentProvider.
* UIProcess/Cocoa/WKWebViewContentProvider.h: Add a new parameter to web_initWithFrame.
* UIProcess/ios/WKLegacyPDFView.mm:
(-[WKLegacyPDFView web_initWithFrame:webView:mimeType:]):
(-[WKLegacyPDFView web_initWithFrame:webView:]): Deleted.
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView web_initWithFrame:webView:mimeType:]):
(-[WKPDFView web_initWithFrame:webView:]): Deleted.
* UIProcess/ios/WKSystemPreviewView.mm:
(-[WKSystemPreviewView web_initWithFrame:webView:mimeType:]):
(-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]): Actually use
the MIME type to tell QuickLook what it will be getting, rather than basing it on
the file extension.
(-[WKSystemPreviewView web_initWithFrame:webView:]): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231729 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAllow the WebContent process to read global ViewBridge preferences
bfulgham@apple.com [Sat, 12 May 2018 00:39:09 +0000 (00:39 +0000)]
Allow the WebContent process to read global ViewBridge preferences
https://bugs.webkit.org/show_bug.cgi?id=185569
<rdar://problem/40164339>

Reviewed by Eric Carlson.

Allow reads of the global /Library/Preferences/com.apple.ViewBridge.plist preference file.

* WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231728 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUnreviewed. Update W3C WebDriver imported tests.
bburg@apple.com [Fri, 11 May 2018 23:03:36 +0000 (23:03 +0000)]
Unreviewed. Update W3C WebDriver imported tests.

This includes upstream PR #10968, which has a fix for XSSAuditor
blocking scripts loaded via inline.py. Test expectations for
webkitgtkdriver may need to be updated with progressions and new tests.

* imported/w3c/importer.json:
* imported/w3c/tools/webdriver/webdriver/client.py:
* imported/w3c/tools/wptrunner/requirements_chrome.txt:
* imported/w3c/tools/wptrunner/requirements_chrome_android.txt: Copied from WebDriverTests/imported/w3c/tools/wptrunner/requirements_opera.txt.
* imported/w3c/tools/wptrunner/requirements_edge.txt:
* imported/w3c/tools/wptrunner/requirements_firefox.txt:
* imported/w3c/tools/wptrunner/requirements_ie.txt:
* imported/w3c/tools/wptrunner/requirements_opera.txt:
* imported/w3c/tools/wptrunner/requirements_safari.txt:
* imported/w3c/tools/wptrunner/requirements_sauce.txt:
* imported/w3c/tools/wptrunner/wptrunner/browsers/firefox.py:
* imported/w3c/tools/wptrunner/wptrunner/browsers/sauce.py:
* imported/w3c/tools/wptrunner/wptrunner/environment.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/base.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py:
* imported/w3c/tools/wptrunner/wptrunner/formatters.py:
* imported/w3c/tools/wptrunner/wptrunner/reduce.py:
* imported/w3c/tools/wptrunner/wptrunner/testrunner.py:
* imported/w3c/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py: Added.
* imported/w3c/tools/wptrunner/wptrunner/tests/test_products.py:
* imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py:
* imported/w3c/tools/wptrunner/wptrunner/wptrunner.py:
* imported/w3c/tools/wptrunner/wptrunner/wpttest.py:
* imported/w3c/webdriver/tests/accept_alert/__init__.py: Added.
* imported/w3c/webdriver/tests/accept_alert/accept.py: Added.
* imported/w3c/webdriver/tests/add_cookie/__init__.py: Added.
* imported/w3c/webdriver/tests/add_cookie/add.py: Added.
* imported/w3c/webdriver/tests/close_window/__init__.py: Added.
* imported/w3c/webdriver/tests/close_window/close.py: Added.
* imported/w3c/webdriver/tests/close_window/user_prompts.py: Added.
* imported/w3c/webdriver/tests/delete_cookie/__init__.py: Added.
* imported/w3c/webdriver/tests/delete_cookie/delete.py: Added.
* imported/w3c/webdriver/tests/delete_cookie/user_prompts.py: Added.
* imported/w3c/webdriver/tests/dismiss_alert/__init__.py: Added.
* imported/w3c/webdriver/tests/dismiss_alert/dismiss.py: Added.
* imported/w3c/webdriver/tests/element_clear/__init__.py: Added.
* imported/w3c/webdriver/tests/element_clear/clear.py: Added.
* imported/w3c/webdriver/tests/element_click/bubbling.py:
* imported/w3c/webdriver/tests/element_click/stale.py:
* imported/w3c/webdriver/tests/element_send_keys/content_editable.py: Added.
* imported/w3c/webdriver/tests/element_send_keys/form_controls.py:
* imported/w3c/webdriver/tests/element_send_keys/interactability.py:
* imported/w3c/webdriver/tests/element_send_keys/scroll_into_view.py:
* imported/w3c/webdriver/tests/execute_async_script/collections.py:
* imported/w3c/webdriver/tests/execute_async_script/user_prompts.py:
* imported/w3c/webdriver/tests/execute_script/collections.py:
* imported/w3c/webdriver/tests/execute_script/cyclic.py:
* imported/w3c/webdriver/tests/execute_script/json_serialize_windowproxy.py: Added.
* imported/w3c/webdriver/tests/execute_script/user_prompts.py:
* imported/w3c/webdriver/tests/find_element/__init__.py: Added.
* imported/w3c/webdriver/tests/find_element/find.py: Added.
* imported/w3c/webdriver/tests/find_element_from_element/__init__.py: Added.
* imported/w3c/webdriver/tests/find_element_from_element/find.py: Added.
* imported/w3c/webdriver/tests/find_elements/__init__.py: Added.
* imported/w3c/webdriver/tests/find_elements/find.py: Added.
* imported/w3c/webdriver/tests/find_elements_from_element/__init__.py: Added.
* imported/w3c/webdriver/tests/find_elements_from_element/find.py: Added.
* imported/w3c/webdriver/tests/fullscreen_window/__init__.py: Added.
* imported/w3c/webdriver/tests/fullscreen_window/fullscreen.py: Added.
* imported/w3c/webdriver/tests/fullscreen_window/user_prompts.py: Added.
* imported/w3c/webdriver/tests/get_active_element/__init__.py: Added.
* imported/w3c/webdriver/tests/get_active_element/get.py: Added.
* imported/w3c/webdriver/tests/get_alert_text/__init__.py: Added.
* imported/w3c/webdriver/tests/get_alert_text/get.py: Added.
* imported/w3c/webdriver/tests/get_current_url/__init__.py: Added.
* imported/w3c/webdriver/tests/get_current_url/get.py: Added.
* imported/w3c/webdriver/tests/get_current_url/user_prompts.py: Added.
* imported/w3c/webdriver/tests/get_element_attribute/get.py: Added.
* imported/w3c/webdriver/tests/get_element_property/__init__.py: Added.
* imported/w3c/webdriver/tests/get_element_property/get.py: Added.
* imported/w3c/webdriver/tests/get_element_property/user_prompts.py: Added.
* imported/w3c/webdriver/tests/get_element_tag_name/__init__.py: Added.
* imported/w3c/webdriver/tests/get_element_tag_name/get.py: Added.
* imported/w3c/webdriver/tests/get_element_tag_name/user_prompts.py: Added.
* imported/w3c/webdriver/tests/get_element_text/__init__.py: Added.
* imported/w3c/webdriver/tests/get_element_text/get.py: Added.
* imported/w3c/webdriver/tests/get_named_cookie/__init__.py: Added.
* imported/w3c/webdriver/tests/get_named_cookie/get.py: Added.
* imported/w3c/webdriver/tests/get_timeouts/__init__.py: Added.
* imported/w3c/webdriver/tests/get_timeouts/get.py: Added.
* imported/w3c/webdriver/tests/get_title/__init__.py: Added.
* imported/w3c/webdriver/tests/get_title/get.py: Added.
* imported/w3c/webdriver/tests/get_title/user_prompts.py: Added.
* imported/w3c/webdriver/tests/get_window_rect/__init__.py: Added.
* imported/w3c/webdriver/tests/get_window_rect/get.py: Added.
* imported/w3c/webdriver/tests/get_window_rect/user_prompts.py: Added.
* imported/w3c/webdriver/tests/is_element_selected/__init__.py: Added.
* imported/w3c/webdriver/tests/is_element_selected/selected.py: Added.
* imported/w3c/webdriver/tests/is_element_selected/user_prompts.py: Added.
* imported/w3c/webdriver/tests/maximize_window/__init__.py: Added.
* imported/w3c/webdriver/tests/maximize_window/maximize.py: Added.
* imported/w3c/webdriver/tests/maximize_window/user_prompts.py: Added.
* imported/w3c/webdriver/tests/minimize_window/__init__.py: Added.
* imported/w3c/webdriver/tests/minimize_window/minimize.py: Added.
* imported/w3c/webdriver/tests/minimize_window/user_prompts.py: Added.
* imported/w3c/webdriver/tests/new_session/__init__.py: Added.
* imported/w3c/webdriver/tests/new_session/conftest.py: Added.
* imported/w3c/webdriver/tests/new_session/create_alwaysMatch.py: Added.
* imported/w3c/webdriver/tests/new_session/create_firstMatch.py: Added.
* imported/w3c/webdriver/tests/new_session/default_values.py: Added.
* imported/w3c/webdriver/tests/new_session/invalid_capabilities.py: Added.
* imported/w3c/webdriver/tests/new_session/merge.py: Added.
* imported/w3c/webdriver/tests/new_session/response.py: Added.
* imported/w3c/webdriver/tests/new_session/support/__init__.py: Added.
* imported/w3c/webdriver/tests/new_session/support/create.py: Added.
* imported/w3c/webdriver/tests/page_source/__init__.py: Added.
* imported/w3c/webdriver/tests/page_source/source.py: Added.
* imported/w3c/webdriver/tests/send_alert_text/__init__.py: Added.
* imported/w3c/webdriver/tests/send_alert_text/send.py: Added.
* imported/w3c/webdriver/tests/set_window_rect/__init__.py: Added.
* imported/w3c/webdriver/tests/set_window_rect/resizing_and_positioning.py: Added.
* imported/w3c/webdriver/tests/set_window_rect/set.py: Added.
* imported/w3c/webdriver/tests/set_window_rect/user_prompts.py: Added.
* imported/w3c/webdriver/tests/status/__init__.py: Added.
* imported/w3c/webdriver/tests/status/status.py: Added.
* imported/w3c/webdriver/tests/support/fixtures.py:
* imported/w3c/webdriver/tests/support/inline.py:
* imported/w3c/webdriver/tests/switch_to_parent_frame/__init__.py: Added.
* imported/w3c/webdriver/tests/switch_to_parent_frame/switch.py: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231727 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoCleanup canPerformActionForWebView in relation to the webSelectionAssistant being...
megan_gardner@apple.com [Fri, 11 May 2018 23:03:00 +0000 (23:03 +0000)]
Cleanup canPerformActionForWebView in relation to the webSelectionAssistant being removed
https://bugs.webkit.org/show_bug.cgi?id=185536

Reviewed by Tim Horton.

The _webSelectionAssistant is now always nil, therefor many of these checks are unnecessary.
Remove the check for a webSelection and clean up the logic surrounding those checks.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView canPerformActionForWebView:withSender:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231726 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[iOS] Text decoration of dragged content does not paint with opacity
dbates@webkit.org [Fri, 11 May 2018 23:01:37 +0000 (23:01 +0000)]
[iOS] Text decoration of dragged content does not paint with opacity
https://bugs.webkit.org/show_bug.cgi?id=185551
<rdar://problem/40166867>

Reviewed by Wenson Hsieh.

Respect alpha when painting the text decoration for dragged content.

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::MarkedTextStyle::areDecorationMarkedTextStylesEqual): Consider alpha when
comparing decoration styles for equality so that we do not coalesce styles with differing alpha.
(WebCore::InlineTextBox::paintMarkedTextDecoration): Respect alpha when painting dragged content.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231725 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFollowup to: Make sure history navigations reuse the existing process when necessary.
beidson@apple.com [Fri, 11 May 2018 22:30:45 +0000 (22:30 +0000)]
Followup to: Make sure history navigations reuse the existing process when necessary.
https://bugs.webkit.org/show_bug.cgi?id=185532

Reviewed by Andy Estes.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigationInternal): When re-using the same process,
  don't change the policy action.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231723 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoTest262 Runner should search for the Debug JSC by default
commit-queue@webkit.org [Fri, 11 May 2018 22:19:03 +0000 (22:19 +0000)]
Test262 Runner should search for the Debug JSC by default
https://bugs.webkit.org/show_bug.cgi?id=185562

Patch by Leo Balter <leonardo.balter@gmail.com> on 2018-05-11
Reviewed by Michael Saboff.

The Test262 Runner is now searching for the Debug build of JSC by
default, not the Release build.

This fix allows a similar call from the previous runner, making
it compatible with the current build bot configuration parameters.

This patch also adds some minor improvements the verbose mode output.

* Scripts/test262/Runner.pm:
(processCLI):
(main):
(getBuildPath):
(processResult):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231722 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAdd CF_NOESCAPE decorators for tvOS and watchOS
jer.noble@apple.com [Fri, 11 May 2018 22:03:06 +0000 (22:03 +0000)]
Add CF_NOESCAPE decorators for tvOS and watchOS
https://bugs.webkit.org/show_bug.cgi?id=185560

Reviewed by Dan Bernstein.

* pal/cf/CoreMediaSoftLink.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231721 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAX: In role=dialog elements with aria-modal=true VoiceOver iOS/macOS can't manually...
n_wang@apple.com [Fri, 11 May 2018 21:58:19 +0000 (21:58 +0000)]
AX: In role=dialog elements with aria-modal=true VoiceOver iOS/macOS can't manually focus or read dialog paragraph description text inside the modal.
https://bugs.webkit.org/show_bug.cgi?id=185219
<rdar://problem/39920009>

Reviewed by Chris Fleizach.

Source/WebCore:

The text node descendants of a modal dialog are ignored. Fixed it by using AccessibilityObject's
node() to determine if it's the descendant of the modal dialog node.

Test: accessibility/aria-modal-text-descendants.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isModalDescendant const):

LayoutTests:

* accessibility/aria-modal-text-descendants-expected.txt: Added.
* accessibility/aria-modal-text-descendants.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231720 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUnreviewed, rolling out r231316 and r231332.
commit-queue@webkit.org [Fri, 11 May 2018 21:16:05 +0000 (21:16 +0000)]
Unreviewed, rolling out r231316 and r231332.
https://bugs.webkit.org/show_bug.cgi?id=185564

Appears to be a Speedometer2/MotionMark regression (Requested
by keith_miller on #webkit).

Reverted changesets:

"Remove the prototype caching for get_by_id in the LLInt"
https://bugs.webkit.org/show_bug.cgi?id=185226
https://trac.webkit.org/changeset/231316

"Unreviewed, fix 32-bit profile offset for change in bytecode"
https://trac.webkit.org/changeset/231332

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231719 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWebHTMLView is not setting aside subviews when drawing.
timothy@apple.com [Fri, 11 May 2018 20:59:54 +0000 (20:59 +0000)]
WebHTMLView is not setting aside subviews when drawing.

https://bugs.webkit.org/show_bug.cgi?id=185561
rdar://problem/40172894

Reviewed by Simon Fraser.

Use the new method signature for _recursive:displayRectIgnoringOpacity:shouldChangeFontReferenceColor:.

* WebView/WebHTMLView.mm:
(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:]): Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231718 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoTapping after CSS-based table casues an infinite loop in wordRangeFromPosition
rniwa@webkit.org [Fri, 11 May 2018 20:39:30 +0000 (20:39 +0000)]
Tapping after CSS-based table casues an infinite loop in wordRangeFromPosition
https://bugs.webkit.org/show_bug.cgi?id=185465
<rdar://problem/35263057>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaselined the tests. h2

* web-platform-tests/dom/nodes/getElementsByClassName-30-expected.txt: table is generating a new line as expected.
* web-platform-tests/html/syntax/parsing/html5lib_menuitem-element-expected.txt: h2 is generating an extra line
to emulate its margin as expected.
* web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt: Ditto.
* web-platform-tests/html/syntax/parsing/html5lib_tests21-expected.txt: Ditto.
* web-platform-tests/html/syntax/parsing/html5lib_tests25-expected.txt: Ditto.
* web-platform-tests/html/syntax/parsing/html5lib_webkit02-expected.txt: Ditto.

Source/WebCore:

The bug was caused by TextIterator not emitting a line break when exiting a CSS-based table when an element
with `display: table-row` has an invisible text node. Specifically, TextIterator::exitNode is never called on
an element with `table-cell: row` when m_node is a text node with whitespaces which appears after an element
with `display: table-cell`.

For example, for a tree structure like:
table-row (R)
  table-cell (C)
    "text" (1)
  " " (2)
Getting out of (C) would result in moving onto (2) without generating a line break for (R).

When this happens in nextBoundary as it tries to find the end of the last word in the table cell, we end up
finding the end of the document as the end of the word. As a result, nextWordBoundaryInDirection, the caller
of nextBoundary, ends up infinite looping between the positon at the end of the document and the position
immediately before the last word in the last table cell when it traverses words backwards.

This patch fixes the hang by addressing this root cause in TextIterator. Namely, TextIterator now generates
a line break when exiting a block while walking up ancestors in TextIterator::advance().

Tests: editing/selection/tapping-in-table-at-end-of-document.html
       editing/text-iterator/table-at-end-of-document.html

* editing/TextIterator.cpp:
(WebCore::TextIterator::advance): Fixed the bug.
(WebCore::shouldEmitNewlineAfterNode): Do generate a new line at the end of a document when we're trying to
generate every visible poitions even there are no renderers beyond this point. e.g. a position inside the
last cell of a table at the end of a document hits this condition.
(WebCore::shouldEmitExtraNewlineForNode): Don't emit a line break when the render box's height is 0px
to avoid generating many empty lines for empty paragraph and header elements (this function is used to generate
a blank line between p's and h1/h2/...'s).
(WebCore::TextIterator::exitNode):

LayoutTests:

Rebaselined the tests. Most of these are due to new extra line breaks being generated after table and
header elements as expected. See inline comments for some newly discovered bugs and rebaselines due to
other non-obvious reasons.

* accessibility/internal-link-anchors2-expected.txt: This test now demonstrates a bug that WebKit doesn't
generate an extra line break before h3 when it has a large margin-top since an extra line break is only
generated after a node at the moment.
* accessibility/mac/mathml-elements-expected.txt:
* accessibility/table-headers-expected.txt:
* compositing/layer-creation/overlap-transformed-preserved-3d-expected.txt:
* css3/flexbox/box-orient-button-expected.txt:
* css3/flexbox/flexitem-expected.txt:
* editing/execCommand/19087-expected.txt: The second blockquote which has the height of 0px no longer
generates an extra new line.
* editing/inserting/insert-list-in-table-cell-08-expected.txt: Selection is now being restored properly
using TextIterator in InsertListCommand.
* editing/selection/tapping-in-table-at-end-of-document-expected.txt: Added.
* editing/selection/tapping-in-table-at-end-of-document.html: Added.
* editing/text-iterator/table-at-end-of-document-expected.txt: Added.
* editing/text-iterator/table-at-end-of-document.html: Added.
* fast/block/positioning/insert-positioned-in-anonymous-crash-expected.txt:
* fast/css/css3-ch-unit-expected.txt: Line breaks are generated between block & inline-block elements
as expected.
* fast/css/percent-min-width-img-src-change-expected.txt:
* fast/css/percent-width-img-src-change-expected.txt:
* fast/css/pseudo-empty-display-none-expected.txt:
* fast/dom/HTMLAnchorElement/anchor-in-noscroll-iframe-crash-expected.txt:
* fast/dom/HTMLDivElement/align/getset-expected.txt:
* fast/dom/HTMLSelectElement/listbox-select-reset-expected.txt:
* fast/dom/HTMLTableElement/table-with-invalid-border-expected.txt:
* fast/forms/option-mouseevents-expected.txt:
* fast/history/multiple-classes-visited-expected.txt:
* fast/history/self-is-visited-expected.txt:
* fast/html/marquee-reparent-check-expected.txt:
* fast/inline-block/anonymous-block-crash-expected.txt: This test now demonstrates a bug that we're not
generating an empty line before a block in some cases.
* fast/inline/inline-position-top-align-expected.txt:
* fast/invalid/test-case-tr-th-td-should-not-close-dl-list-expected.txt:
* fast/overflow/scrollbar-click-retains-focus-expected.txt:
* fast/parser/comments-expected.txt:
* fast/parser/fragment-parser-doctype-expected.txt:
* fast/ruby/ruby-base-merge-block-children-crash-2-expected.txt:
* fast/spatial-navigation/snav-radio-group-expected.txt: A line break is generated after a nested table.
* fast/sub-pixel/table-cells-have-stable-width-expected.txt:
* fast/table/table-row-oveflow-crash-expected.txt: A line break is generated after a table as expected,
which is followed by a BR which creates a blank line.
* fast/table/table-with-borderattr-null-expected.txt:
* fast/table/table-with-borderattr-set-to-null-expected.txt:
* fast/text/international/dynamic-text-combine-crash-expected.txt:
* fast/xsl/mozilla-tests-expected.txt:
* http/tests/misc/large-js-program-expected.txt:
* imported/blink/plugins/empty-per-context-data-expected.txt:
* inspector/console/js-isLikelyStackTrace-expected.txt:
* inspector/console/js-source-locations-expected.txt:
* mathml/out-of-flow-in-token-crash-expected.txt:
* mathml/presentation/stretchy-depth-height-expected.txt:
* platform/mac/accessibility/table-cells-roles-expected.txt: Line breaks are generated after a block
followed by two two consecutive BRs.
* platform/mac/accessibility/table-roles-hierarchy-expected.txt: Ditto.
* svg/foreignObject/fO-fixed-position-crash-expected.txt:
* tiled-drawing/scrolling/non-fast-region/wheel-handler-region-basic-expected.txt:
* transforms/3d/hit-testing/coplanar-with-camera-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231717 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoSystem preview badge doesn't show on <picture> elements
dino@apple.com [Fri, 11 May 2018 20:18:27 +0000 (20:18 +0000)]
System preview badge doesn't show on <picture> elements
https://bugs.webkit.org/show_bug.cgi?id=185559
<rdar://problem/40150066>

Reviewed by Tim Horton.

We should also identify <img>s that are the child of a <picture>
contained inside the appropriate <a> element.

Tested internally, since the badge is platform specific.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::isSystemPreviewImage const): Add logic
to look for <picture> parents.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231716 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoCommitLogViewer._preceedingCommit should not always be null
dewei_zhu@apple.com [Fri, 11 May 2018 20:15:08 +0000 (20:15 +0000)]
CommitLogViewer._preceedingCommit should not always be null
https://bugs.webkit.org/show_bug.cgi?id=185540

Reviewed by Ryosuke Niwa.

Fix the bug introduced in r227746 that CommitLogViewer._preceedingCommit is always null.

* browser-tests/index.html: Fix expected measurement-set url.
* public/v3/components/commit-log-viewer.js:
(CommitLogViewer.prototype._fetchCommitLogs): CommitLogViewer._preceedingCommit should be set
when fetching for preceeding revision succeeds.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231715 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION (async policy delegate): Revoking an object URL immediately after triggeri...
cdumez@apple.com [Fri, 11 May 2018 19:22:34 +0000 (19:22 +0000)]
REGRESSION (async policy delegate): Revoking an object URL immediately after triggering download breaks file download
https://bugs.webkit.org/show_bug.cgi?id=185531
<rdar://problem/39909589>

Reviewed by Geoffrey Garen.

Source/WebCore:

Whenever we start an asynchronous navigation policy decision for a blob URL, create a temporary
blob URL pointing to the same data, and update the request's URL. This way, if the page's JS revokes
the URL during the policy decision, the load will still succeed.

Test: fast/dom/HTMLAnchorElement/anchor-file-blob-download-then-revoke.html

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::willSendRequest):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::loadPostRequest):
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::extendBlobURLLifetimeIfNecessary const):
(WebCore::PolicyChecker::checkNavigationPolicy):
(WebCore::PolicyChecker::checkNewWindowPolicy):
* loader/PolicyChecker.h:

Source/WTF:

Add a default constructor for CompletionHandlerCallingScope, for convenience.

* wtf/CompletionHandler.h:

LayoutTests:

* fast/dom/HTMLAnchorElement/anchor-file-blob-download-then-revoke-expected.txt: Added.
* fast/dom/HTMLAnchorElement/anchor-file-blob-download-then-revoke.html: Added.
Add layout test coverage.

* platform/ios-wk1/TestExpectations:
* platform/ios-wk2/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:
Skip new test on platforms that do not support the download attribute.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231714 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoLinkLoader fails to remove CachedResourceClient in some cases
antti@apple.com [Fri, 11 May 2018 19:05:36 +0000 (19:05 +0000)]
LinkLoader fails to remove CachedResourceClient in some cases
https://bugs.webkit.org/show_bug.cgi?id=185553
<rdar://problem/36879656>

Reviewed by Geoffrey Garen.

Source/WebCore:

Test: http/tests/preload/link-preload-client-remove.html

* loader/LinkLoader.cpp:
(WebCore::LinkLoader::loadLink):

If there is a link preload already in progress, we fail to clear the client for the ongoing load.
This may leave the CachedResource client map in a bad state.

LayoutTests:

* http/tests/preload/link-preload-client-remove-expected.txt: Added.
* http/tests/preload/link-preload-client-remove.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231713 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[DFG] Compiler uses incorrect output register for NumberIsInteger operation
msaboff@apple.com [Fri, 11 May 2018 18:39:06 +0000 (18:39 +0000)]
[DFG] Compiler uses incorrect output register for NumberIsInteger operation
https://bugs.webkit.org/show_bug.cgi?id=185328

Reviewed by Keith Miller.

JSTests:

New regression test.

* stress/isInteger-doesnt-overwrite-argument.js: Added.
(testIsInteger):

Source/JavaScriptCore:

Fixed a typo from when this code was added in r228968 where resultGPR
was assigned the input register instead of the result.gpr().

* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231710 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoRuntime feature flag for Server-Timing
commit-queue@webkit.org [Fri, 11 May 2018 18:33:43 +0000 (18:33 +0000)]
Runtime feature flag for Server-Timing
https://bugs.webkit.org/show_bug.cgi?id=184758

Patch by Charles Vazac <cvazac@gmail.com> on 2018-05-11
Reviewed by Youenn Fablet.

Source/WebCore:

* Source/WebCore/CMakeLists.txt: Added reference to PerformanceServerTiming.idl.
* Source/WebCore/DerivedSources.make: Added reference to PerformanceServerTiming.idl.
* Source/WebCore/Sources.txt: Added reference to PerformanceServerTiming.cpp and JSPerformanceServerTiming.cpp.
* Source/WebCore/WebCore.xcodeproj/project.pbxproj: Added references to PerformanceServerTiming.cpp, PerformanceServerTiming.h, and PerformanceServerTiming.idl.
* Source/WebCore/bindings/js/WebCoreBuiltinNames.h: Added PerformanceServerTiming.
* Source/WebCore/page/PerformanceResourceTiming.h: Added serverTiming member.
* Source/WebCore/page/PerformanceResourceTiming.idl: Added serverTiming attribute.
* Source/WebCore/page/PerformanceServerTiming.cpp: Added.
* Source/WebCore/page/PerformanceServerTiming.h: Added.
* Source/WebCore/page/PerformanceServerTiming.idl: Added.

Source/WebKit:

* Shared/WebPreferences.yaml: Added ServerTimingEnabled.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesGetServerTimingEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h: WK_EXPORT for WKPreferencesSetServerTimingEnabled.
* WebProcess/Storage/WebSWContextManagerConnection.cpp: Call setServerTimingEnabled.

Source/WebKitLegacy:

* mac/WebView/WebPreferenceKeysPrivate.h: Added server-timing preference.
* mac/WebView/WebPreferences.mm:
(WebKit::WebPreferences::serverTimingEnabled):
(WebKit::WebPreferences::setServerTimingEnabled):
* mac/WebView/WebPreferencesPrivate.h:
(WebKit::WebPreferences::setServerTimingEnabled):
(WebKit::WebPreferences::serverTimingEnabled):
* mac/WebView/WebView.mm: Set runtime enabled feature based on preference.
* win/Interfaces/IWebPreferencesPrivate.idl: define serverTimingEnabled and setServerTimingEnabled.
* win/WebPreferenceKeysPrivate.h: Added server-timing preference.
* win/WebPreferences.cpp: Initialize server-timing as false and define setter and getter.
(WebKit::WebPreferences::serverTimingEnabled):
(WebKit::WebPreferences::setServerTimingEnabled):
* win/WebPreferences.h: Define serverTimingEnabled and setServerTimingEnabled.
* win/WebView.cpp: Set runtime enabled feature based on preference.

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig: added ENABLE_SERVER_TIMING.
* DumpRenderTree/win/DumpRenderTree.cpp: enable Server Timing

LayoutTests:

* imported/w3c/resources/import-expectations.json: Import server-timing tests.
* imported/w3c/web-platform-tests/server-timing/resource_timing_idl.html: Added.
* imported/w3c/web-platform-tests/server-timing/resource_timing_idl-expected.txt: Added.
* platform/ios-wk1/TestExpectations: Skip service-worker test.
* platform/mac-wk1/TestExpectations: Skip service-worker test.
* platform/win/TestExpectations: Skip service-worker test.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231709 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoNetwork process should not stat() all cache files on startup to find their sizes
antti@apple.com [Fri, 11 May 2018 18:11:21 +0000 (18:11 +0000)]
Network process should not stat() all cache files on startup to find their sizes
https://bugs.webkit.org/show_bug.cgi?id=185542
<rdar://problem/40092953>

Reviewed by Chris Dumez.

This is done to compute how much disk space a cache is using. While the operation happens
in a background priority thread it is still quite a bit of work.

Large bodies are saved in separate blob files so record file sizes are capped. We can avoid work by
estimating their size instead of counting it exactly.

* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::estimateRecordsSize):
(WebKit::NetworkCache::Storage::synchronize):

    Use size estimation if blob storage is in use.
    Remove the code that would delete empty files. Normal cache shrinking handles this.

(WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231708 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Win][MiniBrowser] Move WK1 related code into MiniBrowser
Hironori.Fujii@sony.com [Fri, 11 May 2018 17:37:04 +0000 (17:37 +0000)]
[Win][MiniBrowser] Move WK1 related code into MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=185418

Reviewed by Alex Christensen.

All WK1 related code should be moved into MiniBrowser for the preparation
of Bug 184770.

This change moves the initilization code of MiniBrowse into MiniBrowser::init().

* MiniBrowser/win/Common.cpp:
(getAppDataFolder): Removed `static` keyword to be called from MiniBrowser.cpp.
(setCacheFolder): This is only for WK1. Moved into MiniBrowser.cpp.
* MiniBrowser/win/Common.h: Added.
* MiniBrowser/win/MiniBrowser.cpp:
(MiniBrowser::init): Moved the initilization code from wWinMain.
(MiniBrowser::setCacheFolder): Moved from Common.cpp and made it a method.
* MiniBrowser/win/MiniBrowser.h:
(MiniBrowser::setCacheFolder): Changed to a private method.
(MiniBrowser::subclassForLayeredWindow): Changed to a private method.
* MiniBrowser/win/WinMain.cpp:
(wWinMain): Moved MiniBrowse initilization code into MiniBrowser.cpp.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231707 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoLayout Test webrtc/addICECandidate-closed.html is a flaky failure
youenn@apple.com [Fri, 11 May 2018 17:29:42 +0000 (17:29 +0000)]
Layout Test webrtc/addICECandidate-closed.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=185384
<rdar://problem/40035167>

Reviewed by Eric Carlson.

* webrtc/addICECandidate-closed.html: Move more pc calls inside the try/catch.
This ensures that the test will be consistent as the pc might be closed sooner for some runs.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231706 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMake sure history navigations reuse the existing process when necessary.
beidson@apple.com [Fri, 11 May 2018 16:12:11 +0000 (16:12 +0000)]
Make sure history navigations reuse the existing process when necessary.
<rdar://problem/39746516> and https://bugs.webkit.org/show_bug.cgi?id=185532

Reviewed by Ryosuke Niwa.

Source/WebCore:

Covered by new API tests.

In WebCore-land, make sure *all* NavigationActions to a back/forward item are tagged with
the item identifier.

* history/HistoryItem.cpp:
(WebCore::HistoryItem::HistoryItem):
(WebCore::HistoryItem::logString const):
* history/HistoryItem.h:

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadDifferentDocumentItem):

* loader/NavigationAction.cpp:
(WebCore::NavigationAction::setTargetBackForwardItem):

* loader/NavigationAction.h:
(WebCore::NavigationAction::targetBackForwardItemIdentifier const):

Source/WebKit:

If a view navigates to either a data: or blob: URL, it reuses the existing process.

In such cases we need to also ensure that history navigations back will also reuse the existing process.

* Shared/NavigationActionData.cpp:
(WebKit::NavigationActionData::encode const):
(WebKit::NavigationActionData::decode):
* Shared/NavigationActionData.h:

* UIProcess/API/APINavigation.h:
(API::Navigation::setTargetItem):

* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration pageCacheEnabled]):
(-[_WKProcessPoolConfiguration setPageCacheEnabled:]):

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigationInternal): If the current and target back/forward items both
  came from the same process, then reuse the existing process.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231704 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoDon't use inferred types when the JIT is disabled
sbarati@apple.com [Fri, 11 May 2018 16:08:42 +0000 (16:08 +0000)]
Don't use inferred types when the JIT is disabled
https://bugs.webkit.org/show_bug.cgi?id=185539

Reviewed by Yusuke Suzuki.

There are many JSC API clients that run with the JIT disabled. They were
all allocating and tracking inferred types for no benefit. Inferred types
only benefit programs when they make it to the DFG/FTL. I was seeing cases
where the inferred type machinery used ~0.5MB. This patch makes is so we
don't allocate that machinery when the JIT is disabled.

* runtime/Structure.cpp:
(JSC::Structure::willStoreValueSlow):
* runtime/Structure.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231703 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION(r231057): Encrypted media content playback failures
bfulgham@apple.com [Fri, 11 May 2018 16:01:30 +0000 (16:01 +0000)]
REGRESSION(r231057): Encrypted media content playback failures
https://bugs.webkit.org/show_bug.cgi?id=185537
<rdar://problem/40038478>

Reviewed by Eric Carlson.

Put access to the SecurityServer back in the sandbox so we can validate the
signatures of media encoder/decoders.

* WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231702 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GTK][a11y] Newly added accessibility/scroll-to-make-visible-iframe-offscreen.html...
csaavedra@igalia.com [Fri, 11 May 2018 13:09:27 +0000 (13:09 +0000)]
[GTK][a11y] Newly added accessibility/scroll-to-make-visible-iframe-offscreen.html fails

Unreviewed gardening. Added the failure.
* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231701 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GTK] media/video-playbackrate.html intermittently crashing
csaavedra@igalia.com [Fri, 11 May 2018 11:38:25 +0000 (11:38 +0000)]
[GTK] media/video-playbackrate.html intermittently crashing
https://bugs.webkit.org/show_bug.cgi?id=185546

Mark thet test, unreviewed gardening.
* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231700 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[EME][GStreamer] Handle the protection event in MediaPlayerPrivate
commit-queue@webkit.org [Fri, 11 May 2018 10:50:37 +0000 (10:50 +0000)]
[EME][GStreamer] Handle the protection event in MediaPlayerPrivate
https://bugs.webkit.org/show_bug.cgi?id=185535

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-05-11
Reviewed by Xabier Rodriguez-Calvar.

This patch is based on this calvaris's commit
https://github.com/WebPlatformForEmbedded/WPEWebKit/commit/d966168b0d2b65f9ca9415426e26d3752c78b03e

It adds a handler for the protection event in MediaPalyerPrivateGStreamerBase, it extracts the InitData from the event
and sends the encrypted event to JS via HTMLMediaElement.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered):
(WebCore::MediaPlayerPrivateGStreamerBase::handleProtectionEvent):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h: Add a new type InitData.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231699 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoRebase some fetch API tests
youenn@apple.com [Fri, 11 May 2018 10:15:19 +0000 (10:15 +0000)]
Rebase some fetch API tests
https://bugs.webkit.org/show_bug.cgi?id=185544

Unreviewed.

LayoutTests/imported/w3c:

* web-platform-tests/fetch/api/basic/integrity-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-count-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-count-worker-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-location-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-location-worker-expected.txt:
* web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt:
* web-platform-tests/fetch/http-cache/partial-expected.txt:

LayoutTests:

* http/tests/fetch/fetching-same-resource-with-different-options-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231698 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoSkip http/tests/appcache/load-from-appcache-defer-resume-crash.html for iOS sim WK2
youenn@apple.com [Fri, 11 May 2018 08:55:38 +0000 (08:55 +0000)]
Skip http/tests/appcache/load-from-appcache-defer-resume-crash.html for iOS sim WK2
https://bugs.webkit.org/show_bug.cgi?id=185430
<rdar://problem/40065118>

Unreviewed.

* platform/ios-wk2/TestExpectations: Precising the WK1 testRunner API used by the test.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231697 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Curl] Make the cipher suites, the signing algorithms and the curve lists configurable.
commit-queue@webkit.org [Fri, 11 May 2018 08:31:48 +0000 (08:31 +0000)]
[Curl] Make the cipher suites, the signing algorithms and the curve lists configurable.
https://bugs.webkit.org/show_bug.cgi?id=185139

Add interface to configure the cipher suites, the signing algorithms and the curve lists
used by OpenSSL and libcurl to exchange, to sign or to verify keys.

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2018-05-11
Reviewed by Youenn Fablet.

No new tests in public. Have tested internally.

* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::setSslCipherList):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::setupTransfer):
(WebCore::CurlRequest::willSetupSslCtx):
* platform/network/curl/CurlSSLHandle.cpp:
(WebCore::CurlSSLHandle::getCACertPathEnv):
* platform/network/curl/CurlSSLHandle.h:
(WebCore::CurlSSLHandle::getCipherList const):
(WebCore::CurlSSLHandle::getSignatureAlgorithmsList const):
(WebCore::CurlSSLHandle::getCurvesList const):
(WebCore::CurlSSLHandle::setCipherList):
(WebCore::CurlSSLHandle::setSignatureAlgorithmsList):
(WebCore::CurlSSLHandle::setCurvesList):
(WebCore::CurlSSLHandle::getCACertPath const):
(WebCore::CurlSSLHandle::setCACertPath):
* platform/network/curl/CurlSSLVerifier.cpp:
(WebCore::CurlSSLVerifier::CurlSSLVerifier):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231696 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoDon't allocate value profiles when the JIT is disabled
sbarati@apple.com [Fri, 11 May 2018 07:57:21 +0000 (07:57 +0000)]
Don't allocate value profiles when the JIT is disabled
https://bugs.webkit.org/show_bug.cgi?id=185525

Reviewed by Michael Saboff.

Source/JavaScriptCore:

There are many JSC API clients that run with the JIT disabled. We were
still allocating a ton of value profiles in this use case even though
these clients get no benefit from doing value profiling. This patch makes
it so that we don't allocate value profiles or argument value profiles
when we're not using the JIT. We now just make all value profiles in
the instruction stream point to a global value profile that the VM owns.
And we make the argument value profile array have zero length and teach
the LLInt how to handle that. Heap clears the global value profile on each GC.

In an app that I'm testing this against, this saves ~1MB of memory.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setNumParameters):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::numberOfArgumentValueProfiles):
(JSC::CodeBlock::valueProfileForArgument):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitProfiledOpcode):
* heap/Heap.cpp:
(JSC::Heap::runEndPhase):
* llint/LowLevelInterpreter.asm:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WTF:

* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231695 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoNetworkCORSPreflightChecker should proceed when having a ProtectionSpaceAuthenticatio...
youenn@apple.com [Fri, 11 May 2018 07:22:12 +0000 (07:22 +0000)]
NetworkCORSPreflightChecker should proceed when having a ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested challenge
https://bugs.webkit.org/show_bug.cgi?id=185522
<rdar://problem/39987152>

Reviewed by Brent Fulgham.

In case of such challenge, refuse to proceed with authentication since preflight is not using credentials.
Previously, we were failing right away which is not right in case preflight is the request triggering the connection.

Manually tested.

* NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231694 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[JSC][GLIB] Add introspectable alternatives to functions using vargars
carlosgc@webkit.org [Fri, 11 May 2018 06:56:57 +0000 (06:56 +0000)]
[JSC][GLIB] Add introspectable alternatives to functions using vargars
https://bugs.webkit.org/show_bug.cgi?id=185508

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

* API/glib/JSCClass.cpp:
(jscClassCreateConstructor):
(jsc_class_add_constructor):
(jsc_class_add_constructorv):
(jscClassAddMethod):
(jsc_class_add_method):
(jsc_class_add_methodv):
* API/glib/JSCClass.h:
* API/glib/JSCValue.cpp:
(jsObjectCall):
(jscValueCallFunction):
(jsc_value_object_invoke_methodv):
(jscValueFunctionCreate):
(jsc_value_new_function):
(jsc_value_new_functionv):
(jsc_value_function_callv):
(jsc_value_constructor_callv):
* API/glib/JSCValue.h:
* API/glib/docs/jsc-glib-4.0-sections.txt:

Tools:

Add test cases for the new API.

* TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:
(testJSCFunction):
(testJSCObject):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231693 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUse PlatformStrategies to switch between WebKit and WebKitLegacy checking of CSP...
dbates@webkit.org [Fri, 11 May 2018 05:34:20 +0000 (05:34 +0000)]
Use PlatformStrategies to switch between WebKit and WebKitLegacy checking of CSP frame-ancestors and X-Frame-Options
https://bugs.webkit.org/show_bug.cgi?id=185412

Reviewed by Ryosuke Niwa.

Source/WebCore:

Consolidate the knowledge on how to determine whether security checks were performed on a ResourceResponse
into LoaderStrategy::havePerformedSecurityChecks() (default implementation returns false) and query it
to determine whether CSP frame-ancestors and X-Frame-Options need to be checked for a ResourceResponse.

Additionally, rename LoaderStrategy::isDoingLoadingSecurityChecks() to shouldPerformSecurityChecks()
for consistency with havePerformedSecurityChecks(). Querying shouldPerformSecurityChecks() answers the
question of whether the loader strategy is responsible for performing security checks when building up
a ResourceRequest to have the loader strategy load. And LoaderStrategy::havePerformedSecurityChecks()
is used to determine whether the loader strategy performed these security checks for a given ResourceResponse.

* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::didReceiveResponse):
(WebCore::InspectorNetworkAgent::didFinishLoading):
(WebCore::isResponseProbablyComingFromNetworkProcess): Deleted.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::responseReceived):
* loader/DocumentThreadableLoader.cpp:
(WebCore::shouldPerformSecurityChecks):
(WebCore::DocumentThreadableLoader::shouldSetHTTPHeadersToKeep const):
(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
(WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest):
(WebCore::DocumentThreadableLoader::redirectReceived):
(WebCore::DocumentThreadableLoader::didFail):
(WebCore::DocumentThreadableLoader::loadRequest):
(WebCore::isDoingSecurityChecksInNetworkProcess): Deleted.
(WebCore::isResponseComingFromNetworkProcess): Deleted.
* loader/LoaderStrategy.cpp:
* loader/LoaderStrategy.h:
* page/Settings.yaml: Remove setting networkProcessCSPFrameAncestorsCheckingEnabled as we now make
use of the loader strategy to determine whether to perform CSP frame-ancestors and X-Frame-Options
checking in DocumentLoader.
* platform/network/ResourceResponseBase.h:
(WebCore::ResourceResponseBase::setSource): Added an ASSERT to catch the programming error of setting
source to ResourceResponse::Source::Unknown. This source type represents an uninitialized ResourceResponse.

Source/WebKit:

Update code for renaming and write in terms of WebLoaderStrategy::shouldPerformSecurityChecks()
instead of explicitly querying RuntimeEnabledFeatures::sharedFeatures().restrictedHTTPResponseAccess().

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
(WebKit::WebLoaderStrategy::startPingLoad):
(WebKit::WebLoaderStrategy::preconnectTo):
(WebKit::WebLoaderStrategy::shouldPerformSecurityChecks const):
(WebKit::WebLoaderStrategy::havePerformedSecurityChecks const):
(WebKit::WebLoaderStrategy::isDoingLoadingSecurityChecks const): Deleted.
* WebProcess/Network/WebLoaderStrategy.h:
* WebProcess/WebPage/WebPage.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231692 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoLookup sometimes shows a second yellow highlight on top of WebKit's TextIndicator
timothy_horton@apple.com [Fri, 11 May 2018 05:30:43 +0000 (05:30 +0000)]
Lookup sometimes shows a second yellow highlight on top of WebKit's TextIndicator
https://bugs.webkit.org/show_bug.cgi?id=185538
<rdar://problem/38817825>

Reviewed by Sam Weinig.

* editing/mac/DictionaryLookup.mm:
(WebCore::showPopupOrCreateAnimationController):
Options can be nil, in which case we can't mutableCopy it and add
LUTermOptionDisableSearchTermIndicator. Instead, create a new dictionary,
and add the items from options, if it's not nil.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231691 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION(r227983): fast/dom/adopt-node-crash-2.html is flaky
rniwa@webkit.org [Fri, 11 May 2018 05:00:23 +0000 (05:00 +0000)]
REGRESSION(r227983): fast/dom/adopt-node-crash-2.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=182589

Reviewed by Wenson Hsieh.

This is a speculative fix for the test since I can't reproduce the flakiness locally. Because r227983 makes
the layout update async, I suspect the focus change which occurs to the keygen having autofocus attribute
isn't updating the layout in time for notifyDone call. Manually update the layout before/after the test.

Also wait for the load event to figure before starting the test since layout, etc... may not be updated
immediately after DOMContentLoaded.

* fast/dom/adopt-node-crash-2.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231690 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix the build after r231393
timothy_horton@apple.com [Fri, 11 May 2018 04:41:24 +0000 (04:41 +0000)]
Fix the build after r231393
​https://bugs.webkit.org/show_bug.cgi?id=185519
<rdar://problem/40131741>

* Configurations/WebKit.xcconfig:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231689 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[JSC] Make return types of construction functions tight
utatane.tea@gmail.com [Fri, 11 May 2018 04:38:56 +0000 (04:38 +0000)]
[JSC] Make return types of construction functions tight
https://bugs.webkit.org/show_bug.cgi?id=185509

Reviewed by Saam Barati.

Array and Object construction functions should return strict types instead of returning JSObject*/JSValue.

* runtime/ArrayConstructor.cpp:
(JSC::constructArrayWithSizeQuirk):
* runtime/ArrayConstructor.h:
* runtime/ObjectConstructor.h:
(JSC::constructEmptyObject):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231688 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[JSC] Object.assign for final objects should be faster
utatane.tea@gmail.com [Fri, 11 May 2018 03:38:10 +0000 (03:38 +0000)]
[JSC] Object.assign for final objects should be faster
https://bugs.webkit.org/show_bug.cgi?id=185348

Reviewed by Saam Barati.

JSTests:

* stress/object-assign-fast-path.js: Added.
(shouldBe):
(checkProperty):

Source/JavaScriptCore:

Object.assign is so heavily used to clone an object. For example, speedometer react-redux can be significantly
improved if Object.assign becomes fast. It is worth adding a complex fast path to accelerate the major use cases.

If enumerating properties of source objects and putting properties to target object are non observable,
we can avoid hash table looking up of source object properties. We can enumerate object property entries,
and put them to target object. This patch adds this fast path to Object.assign implementation.

When enumerating properties, we need to ensure that the given |source| object does not include "__proto__"
property since we cannot perform fast [[Put]] for the |target| object. We add a new flag
"HasUnderscoreProtoPropertyExcludingOriginalProto" to Structure to track this state.

This improves object-assign.es6 by 1.85x.

                                baseline                  patched

    object-assign.es6      368.6132+-8.3508     ^    198.8775+-4.9042        ^ definitely 1.8535x faster

And Speedometer2.0 React-Redux-TodoMVC's total time is improved from 490ms to 431ms.

* runtime/JSObject.h:
* runtime/JSObjectInlines.h:
(JSC::JSObject::canPerformFastPutInlineExcludingProto):
(JSC::JSObject::canPerformFastPutInline):
* runtime/ObjectConstructor.cpp:
(JSC::objectConstructorAssign):
* runtime/Structure.cpp:
(JSC::Structure::Structure):
* runtime/Structure.h:
* runtime/StructureInlines.h:
(JSC::Structure::forEachProperty):
(JSC::Structure::add):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231687 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Build Bot] Restore configuration options to the Test262 Runner
commit-queue@webkit.org [Fri, 11 May 2018 02:07:25 +0000 (02:07 +0000)]
[Build Bot] Restore configuration options to the Test262 Runner

During the switch from the previous Test262 runner to the new one,
a call for an extra configurations options got removed.

This call is important to inform the script to find the debug or
release build of JSC. It's being restored in this patch.

https://bugs.webkit.org/show_bug.cgi?id=185513

Patch by Leo Balter <leonardo.balter@gmail.com> on 2018-05-10
Reviewed by Yusuke Suzuki.

* BuildSlaveSupport/build.webkit.org-config/steps.py:
(RunTest262Tests):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231686 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoStorage Access API: Extend lifetime of cookies on successful user approval
wilander@apple.com [Fri, 11 May 2018 01:59:24 +0000 (01:59 +0000)]
Storage Access API: Extend lifetime of cookies on successful user approval
https://bugs.webkit.org/show_bug.cgi?id=185534
<rdar://problem/40064547>

Reviewed by Brent Fulgham.

* UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
(WebKit::WebResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):
    Picks up the experimental feature flag.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInternal):
    Now updates the domain's user interaction timestamp if the user was
    prompted for this access.
* UIProcess/WebResourceLoadStatisticsStore.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231684 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION (r230998): Cannot stream API test output
jbedard@apple.com [Fri, 11 May 2018 00:42:03 +0000 (00:42 +0000)]
REGRESSION (r230998): Cannot stream API test output
https://bugs.webkit.org/show_bug.cgi?id=185090

Reviewed by Ryosuke Niwa.

Change run-api-tests so that the stdout and stderr of a test will be printed
before it's result. If -v is passed, the output of single test runs will be
streamed.

* Scripts/webkitpy/api_tests/run_api_tests.py:
(run): Use print_timestamps flag.
(parse_args): Add timestamps option to print timestamps in the log.
* Scripts/webkitpy/api_tests/runner.py:
(Runner): Add running status.
(Runner.__init__): Add number of workers and a flag to detect if a newline
is needed at the beginning of a log line.
(Runner.run): Turn off most logging coming from server process since it is
not constructive for API tests.
(Runner.handle): Add new log message to stream stdout and stderr instead of
caching values until the test run finished.
(_Worker._run_single_test): Log stdout and stderr in real time.
(_Worker._run_shard_with_binary): Log stderr and stdout buffer before ending
the test.
(_Worker.post): Provide a post with explicitly enumerated argument names.
* Scripts/webkitpy/layout_tests/views/metered_stream.py:
(MeteredStream.__init__): Differentiate verbose logging and logging with timestamps.
(MeteredStream.write): Allow for verbose logging without timestamps.
* Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
(RegularTest): Add print_timestamps flag.
(RegularTest.setUp):
(RegularTest.test_logging_not_included):
(VerboseTest.test_log_args):
(VerboseWithOutTimestamp):
(VerboseWithOutTimestamp.test_basic): Add test for verbose logging without timestamps.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231679 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agobuild-webkit can erroneously warn about Xcode being too old
rniwa@webkit.org [Fri, 11 May 2018 00:06:32 +0000 (00:06 +0000)]
build-webkit can erroneously warn about Xcode being too old
https://bugs.webkit.org/show_bug.cgi?id=185533

Reviewed by Dan Bernstein.

Don't assume the version number is always a single digit.

* Scripts/webkitdirs.pm:
(determineXcodeVersion):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231677 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[iOS] Release page load process assertion if the screen is locked
cdumez@apple.com [Thu, 10 May 2018 23:35:32 +0000 (23:35 +0000)]
[iOS] Release page load process assertion if the screen is locked
https://bugs.webkit.org/show_bug.cgi?id=185333

Reviewed by Geoff Garen.

We normally take a background process assertion during page loads to allow them to complete
even if the tab / app is backgrounded. We should however avoid doing so when the backgrounding
is caused by the screen locking. Keeping the process assertion in this case would prevent the
whole device from sleeping longer than it should, thus negatively impacting power.

* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationState):
(WebKit::NavigationState::releaseNetworkActivityToken):
(WebKit::NavigationState::didChangeIsLoading):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::applicationDidEnterBackground):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231676 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[WinCairo][Buildbot] Test bots need to acquire WinCairoRequirements.
ross.kirsling@sony.com [Thu, 10 May 2018 23:14:53 +0000 (23:14 +0000)]
[WinCairo][Buildbot] Test bots need to acquire WinCairoRequirements.
https://bugs.webkit.org/show_bug.cgi?id=185528

Reviewed by Lucas Forschler.

* BuildSlaveSupport/build.webkit.org-config/factories.py:
(TestFactory.__init__):
* BuildSlaveSupport/build.webkit.org-config/steps.py:
(InstallWinCairoDependencies):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231673 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUpdate Test262 tests through the new import script - 20180509
commit-queue@webkit.org [Thu, 10 May 2018 22:29:29 +0000 (22:29 +0000)]
Update Test262 tests through the new import script - 20180509
https://bugs.webkit.org/show_bug.cgi?id=185482

Patch by Leo Balter <leonardo.balter@gmail.com> on 2018-05-10
Reviewed by Michael Saboff.

Also update the test262/expecatations.yaml with the recent imported files.

* test262/expectations.yaml:
* test262/harness/compareIterator.js: Added.
(assert.compareIterator):
* test262/harness/nativeFunctionMatcher.js:
(const.assertToStringOrNativeFunction):
(const.assertNativeFunction):
* test262/harness/regExpUtils.js:
* test262/harness/testIntl.js:
(getInvalidLanguageTags):
* test262/harness/testTypedArray.js:
* test262/harness/wellKnownIntrinsicObjects.js: Added.
(WellKnownIntrinsicObjects.forEach.wkio.catch):
* test262/latest-changes-summary.txt: Added.
* test262/test/annexB/language/eval-code/direct/block-decl-nostrict.js: Copied from JSTests/test262/test/language/eval-code/direct/block-decl-strict-caller.js.
(catch):
* test262/test/annexB/language/eval-code/direct/switch-case-decl-nostrict.js: Copied from JSTests/test262/test/language/eval-code/direct/switch-case-decl-strict-source.js.
(catch):
* test262/test/annexB/language/eval-code/direct/switch-dflt-decl-nostrict.js: Copied from JSTests/test262/test/language/eval-code/direct/switch-dflt-decl-strict-caller.js.
(catch):
* test262/test/annexB/language/function-code/block-decl-nested-blocks-with-fun-decl.js: Added.
(g.f):
(g):
* test262/test/annexB/language/function-code/block-decl-nostrict.js: Copied from JSTests/test262/test/language/function-code/block-decl-strict.js.
(catch):
(f):
* test262/test/annexB/language/function-code/switch-case-decl-nostrict.js: Copied from JSTests/test262/test/language/function-code/switch-case-decl-strict.js.
(catch):
(switch.case.1):
(switch):
* test262/test/annexB/language/function-code/switch-dflt-decl-nostrict.js: Copied from JSTests/test262/test/language/function-code/switch-dflt-decl-strict.js.
(catch):
(switch.default):
(switch):
* test262/test/built-ins/Array/prototype/filter/target-array-with-non-writable-property.js: Added.
(a.Symbol.species):
(r.a.filter):
* test262/test/built-ins/Array/prototype/indexOf/calls-only-has-on-prototype-after-length-zeroed.js: Added.
(allowProxyTraps.has):
(fromIndex.valueOf):
* test262/test/built-ins/Array/prototype/lastIndexOf/calls-only-has-on-prototype-after-length-zeroed.js: Added.
(allowProxyTraps.has):
(fromIndex.valueOf):
* test262/test/built-ins/Array/prototype/map/target-array-with-non-writable-property.js: Added.
(a.Symbol.species):
(r.a.map):
* test262/test/built-ins/Array/prototype/slice/target-array-with-non-writable-property.js: Added.
(a.Symbol.species):
* test262/test/built-ins/Array/prototype/splice/property-traps-order-with-species.js: Added.
(a.Symbol.species):
* test262/test/built-ins/Array/prototype/splice/target-array-with-non-writable-property.js: Added.
(a.Symbol.species):
* test262/test/built-ins/Atomics/Symbol.toStringTag.js:
* test262/test/built-ins/Atomics/add/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/add/good-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/add/non-views.js:
* test262/test/built-ins/Atomics/add/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/add/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/and/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/and/good-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/and/non-views.js:
* test262/test/built-ins/Atomics/and/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/and/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/compareExchange/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/compareExchange/good-views.js:
(testWithTypedArrayConstructors):
(view): Deleted.
* test262/test/built-ins/Atomics/compareExchange/non-views.js:
* test262/test/built-ins/Atomics/compareExchange/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/compareExchange/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/exchange/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/exchange/good-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/exchange/non-views.js:
* test262/test/built-ins/Atomics/exchange/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/exchange/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/isLockFree/corner-cases.js:
(hide):
* test262/test/built-ins/Atomics/isLockFree/value.js:
(testIsLockFree): Deleted.
* test262/test/built-ins/Atomics/load/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/load/good-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/load/non-views.js:
* test262/test/built-ins/Atomics/load/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/load/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/or/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/or/good-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/or/non-views.js:
* test262/test/built-ins/Atomics/or/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/or/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/prop-desc.js:
* test262/test/built-ins/Atomics/proto.js:
* test262/test/built-ins/Atomics/store/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/store/good-views.js:
(testWithTypedArrayConstructors):
(ToInteger):
* test262/test/built-ins/Atomics/store/non-views.js:
* test262/test/built-ins/Atomics/store/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/store/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/sub/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/sub/good-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/sub/non-views.js:
* test262/test/built-ins/Atomics/sub/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/sub/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/wait/bad-range.js: Copied from JSTests/test262/test/built-ins/Atomics/wake/bad-range.js.
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/wait/cannot-suspend-throws.js:
* test262/test/built-ins/Atomics/wait/did-timeout.js:
(getReport):
* test262/test/built-ins/Atomics/wait/false-for-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/false-for-timeout.js.
(getReport):
(262.agent.start.valueOf.valueOf):
(toPrimitive.Symbol.toPrimitive):
(262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/false-for-timeout.js:
(valueOf.valueOf):
(toPrimitive.Symbol.toPrimitive):
(getReport): Deleted.
(262.agent.start.262.agent.receiveBroadcast): Deleted.
* test262/test/built-ins/Atomics/wait/good-views.js:
(r.getReport):
(getReport):
* test262/test/built-ins/Atomics/wait/nan-for-timeout.js:
(getReport):
* test262/test/built-ins/Atomics/wait/negative-index-throws.js:
* test262/test/built-ins/Atomics/wait/negative-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/negative-timeout.js.
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/negative-timeout.js:
(262.agent.start.262.agent.receiveBroadcast): Deleted.
(getReport): Deleted.
* test262/test/built-ins/Atomics/wait/no-spurious-wakeup.js:
(getReport):
* test262/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js:
* test262/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/nonshared-bufferdata-throws.js.
* test262/test/built-ins/Atomics/wait/not-a-typedarray-throws.js:
* test262/test/built-ins/Atomics/wait/not-an-object-throws.js:
* test262/test/built-ins/Atomics/wait/null-bufferdata-throws.js:
* test262/test/built-ins/Atomics/wait/null-for-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/false-for-timeout.js.
(getReport):
(262.agent.start.valueOf.valueOf):
(toPrimitive.Symbol.toPrimitive):
(262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/null-for-timeout.js:
(valueOf.valueOf):
(toPrimitive.Symbol.toPrimitive):
(getReport): Deleted.
(262.agent.start.262.agent.receiveBroadcast): Deleted.
* test262/test/built-ins/Atomics/wait/object-for-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/false-for-timeout.js.
(getReport):
(262.agent.start.valueOf.valueOf):
(toString.toString):
(toPrimitive.Symbol.toPrimitive):
(262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/object-for-timeout.js:
(valueOf.valueOf):
(toString.toString):
(toPrimitive.Symbol.toPrimitive):
(getReport): Deleted.
(262.agent.start.262.agent.receiveBroadcast): Deleted.
* test262/test/built-ins/Atomics/wait/out-of-range-index-throws.js:
* test262/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js: Added.
(getReport):
(262.agent.start.poisonedValueOf.valueOf):
(poisonedToPrimitive.Symbol.toPrimitive):
(262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js:
(poisonedValueOf.valueOf):
(poisonedToPrimitive.Symbol.toPrimitive):
(getReport): Deleted.
(262.agent.start.262.agent.receiveBroadcast): Deleted.
* test262/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js: Added.
(getReport):
(262.agent.start.poisonedValueOf.valueOf):
(poisonedToPrimitive.Symbol.toPrimitive):
(262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/symbol-for-index-throws.js:
(poisonedToPrimitive.Symbol.toPrimitive):
(poisoned.valueOf): Deleted.
(poisonedWithString.get valueOf): Deleted.
(poisonedToPrimitive.get Symbol): Deleted.
* test262/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js: Added.
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js:
(poisonedValueOf.valueOf):
(poisonedToPrimitive.Symbol.toPrimitive):
(getReport): Deleted.
(262.agent.start.262.agent.receiveBroadcast): Deleted.
* test262/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js: Added.
(getReport):
(262.agent.start.poisonedValueOf.valueOf):
(poisonedToPrimitive.Symbol.toPrimitive):
(262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/symbol-for-value-throws.js: Added.
(poisonedValueOf.valueOf):
(poisonedToPrimitive.Symbol.toPrimitive):
* test262/test/built-ins/Atomics/wait/true-for-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/null-for-timeout.js.
(getReport):
(262.agent.start.valueOf.valueOf):
(toPrimitive.Symbol.toPrimitive):
(262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/true-for-timeout.js:
(valueOf.valueOf):
(toPrimitive.Symbol.toPrimitive):
(getReport): Deleted.
(262.agent.start.262.agent.receiveBroadcast): Deleted.
* test262/test/built-ins/Atomics/wait/undefined-for-timeout.js:
(getReport):
* test262/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js:
(262.agent.start.262.agent.receiveBroadcast):
(getReport):
* test262/test/built-ins/Atomics/wait/value-not-equal.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/wait-index-value-not-equal.js.
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/wait-index-value-not-equal.js:
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js: Added.
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js: Added.
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/was-woken-before-timeout.js:
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wait/was-woken.js:
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wake/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/wake/count-boundary-cases.js: Renamed from JSTests/test262/test/built-ins/Atomics/wake/counts.js.
* test262/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js: Added.
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js: Added.
(getReport):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wake/count-from-nans.js: Added.
* test262/test/built-ins/Atomics/wake/count-symbol-throws.js: Added.
* test262/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js: Added.
(poisoned.valueOf):
* test262/test/built-ins/Atomics/wake/good-views.js:
* test262/test/built-ins/Atomics/wake/negative-count.js: Renamed from JSTests/test262/test/built-ins/Atomics/wake/wake-negative.js.
* test262/test/built-ins/Atomics/wake/negative-index-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/negative-index-throws.js.
(poisoned.valueOf):
* test262/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js.
(poisoned.valueOf):
* test262/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js: Renamed from JSTests/test262/test/built-ins/Atomics/wait/nonshared-bufferdata-throws.js.
(poisoned.valueOf):
* test262/test/built-ins/Atomics/wake/non-views.js:
* test262/test/built-ins/Atomics/wake/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/wake/not-a-typedarray-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/not-a-typedarray-throws.js.
(poisoned.valueOf):
* test262/test/built-ins/Atomics/wake/not-an-object-throws.js: Added.
(poisoned.valueOf):
* test262/test/built-ins/Atomics/wake/null-bufferdata-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/null-bufferdata-throws.js.
(poisoned.valueOf):
* test262/test/built-ins/Atomics/wake/out-of-range-index-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/out-of-range-index-throws.js.
(poisoned.valueOf):
* test262/test/built-ins/Atomics/wake/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/wake/symbol-for-index-throws.js: Added.
(poisonedValueOf.valueOf):
(poisonedToPrimitive.Symbol.toPrimitive):
* test262/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js.
(262.agent.start.262.agent.receiveBroadcast):
(getReport):
* test262/test/built-ins/Atomics/wake/wake-all-on-loc.js:
(262.agent.start.262.agent.receiveBroadcast):
(getReport):
(waitUntil):
* test262/test/built-ins/Atomics/wake/wake-all.js:
(262.agent.start.262.agent.receiveBroadcast):
(getReport):
(waitUntil):
* test262/test/built-ins/Atomics/wake/wake-in-order.js:
(getReport):
(waitUntil):
* test262/test/built-ins/Atomics/wake/wake-nan.js:
(getReport):
* test262/test/built-ins/Atomics/wake/wake-one.js:
(getReport):
(waitUntil):
* test262/test/built-ins/Atomics/wake/wake-rewake-noop.js: Added.
(getReport):
(waitUntil):
(262.agent.start.262.agent.receiveBroadcast):
* test262/test/built-ins/Atomics/wake/wake-two.js:
(getReport):
* test262/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js: Added.
(262.agent.start.262.agent.receiveBroadcast):
(waitUntil):
* test262/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js: Added.
(262.agent.start.262.agent.receiveBroadcast):
(waitUntil):
* test262/test/built-ins/Atomics/wake/wake-zero.js:
(i.262.agent.start.262.agent.receiveBroadcast):
(getReport):
(waitUntil):
* test262/test/built-ins/Atomics/xor/bad-range.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/xor/good-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/xor/non-views.js:
* test262/test/built-ins/Atomics/xor/nonshared-int-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/Atomics/xor/shared-nonint-views.js:
(testWithTypedArrayConstructors):
* test262/test/built-ins/BigInt/asIntN/bigint-tobigint-errors.js:
* test262/test/built-ins/BigInt/asIntN/bigint-tobigint-toprimitive.js:
* test262/test/built-ins/BigInt/asIntN/bigint-tobigint-wrapped-values.js:
* test262/test/built-ins/BigInt/asIntN/bits-toindex-errors.js:
* test262/test/built-ins/BigInt/asIntN/bits-toindex-toprimitive.js:
* test262/test/built-ins/BigInt/asIntN/bits-toindex-wrapped-values.js:
* test262/test/built-ins/BigInt/asUintN/bigint-tobigint-errors.js:
* test262/test/built-ins/BigInt/asUintN/bigint-tobigint-toprimitive.js:
* test262/test/built-ins/BigInt/asUintN/bigint-tobigint-wrapped-values.js:
* test262/test/built-ins/BigInt/asUintN/bits-toindex-errors.js:
* test262/test/built-ins/BigInt/asUintN/bits-toindex-toprimitive.js:
* test262/test/built-ins/BigInt/asUintN/bits-toindex-wrapped-values.js:
* test262/test/built-ins/BigInt/constructor-empty-string.js:
* test262/test/built-ins/BigInt/constructor-from-binary-string.js:
* test262/test/built-ins/BigInt/constructor-from-decimal-string.js:
* test262/test/built-ins/BigInt/constructor-from-hex-string.js:
* test262/test/built-ins/BigInt/constructor-from-octal-string.js:
* test262/test/built-ins/BigInt/constructor-from-string-syntax-errors.js:
* test262/test/built-ins/BigInt/constructor-integer.js: Added.
* test262/test/built-ins/BigInt/constructor-trailing-leading-spaces.js:
* test262/test/built-ins/BigInt/issafeinteger-true.js: Removed.
* test262/test/built-ins/BigInt/out-of-bounds-integer-rangeerror.js: Removed.
* test262/test/built-ins/BigInt/prototype/Symbol.toStringTag.js:
* test262/test/built-ins/BigInt/prototype/toString/default-radix.js: Added.
* test262/test/built-ins/BigInt/prototype/toString/thisbigintvalue-not-valid-throws.js:
* test262/test/built-ins/BigInt/prototype/valueOf/cross-realm.js: Added.
* test262/test/built-ins/BigInt/tostring-throws.js: Copied from JSTests/test262/test/built-ins/BigInt/value-of-throws.js.
* test262/test/built-ins/BigInt/valueof-throws.js: Renamed from JSTests/test262/test/built-ins/BigInt/value-of-throws.js.
(BigInt.valueOf):
* test262/test/built-ins/DataView/prototype/setBigInt64/set-values-return-undefined.js:
(values.forEach):
* test262/test/built-ins/Function/prototype/bind/length-exceeds-int32.js: Added.
(f):
* test262/test/built-ins/Function/prototype/toString/anonymous-intrinsics.js: Removed.
* test262/test/built-ins/Function/prototype/toString/bound-function.js:
(assertNativeFunction):
(let.f): Deleted.
* test262/test/built-ins/Function/prototype/toString/built-in-function-object.js: Added.
* test262/test/built-ins/Function/prototype/toString/intrinsics.js: Removed.
* test262/test/built-ins/Function/prototype/toString/proxy-arrow-function.js: Added.
(assertNativeFunction.new.Proxy):
* test262/test/built-ins/Function/prototype/toString/proxy-async-function.js: Added.
(assertNativeFunction.new.Proxy.async):
* test262/test/built-ins/Function/prototype/toString/proxy-async-generator-function.js: Added.
(assertNativeFunction.new.Proxy.async):
* test262/test/built-ins/Function/prototype/toString/proxy-async-generator-method-definition.js: Added.
(assertNativeFunction.new.Proxy.async.method):
(apply):
* test262/test/built-ins/Function/prototype/toString/proxy-async-method-definition.js: Added.
(assertNativeFunction.new.Proxy.async.method):
(apply):
* test262/test/built-ins/Function/prototype/toString/proxy-bound-function.js: Added.
(assertNativeFunction.new.Proxy):
(bind):
* test262/test/built-ins/Function/prototype/toString/proxy-class.js: Added.
(assertNativeFunction):
* test262/test/built-ins/Function/prototype/toString/proxy-function-expression.js: Added.
(assertNativeFunction.new.Proxy):
* test262/test/built-ins/Function/prototype/toString/proxy-generator-function.js: Added.
(assertNativeFunction.new.Proxy):
* test262/test/built-ins/Function/prototype/toString/proxy-method-definition.js: Added.
(assertNativeFunction.new.Proxy.method):
(apply):
* test262/test/built-ins/Function/prototype/toString/proxy-non-callable-throws.js: Added.
* test262/test/built-ins/Function/prototype/toString/proxy.js: Removed.
* test262/test/built-ins/Function/prototype/toString/well-known-intrinsic-object-functions.js: Added.
(WellKnownIntrinsicObjects.forEach):
* test262/test/built-ins/JSON/prop-desc.js: Added.
* test262/test/built-ins/Math/acosh/nan-returns.js:
* test262/test/built-ins/Math/asinh/asinh-specialVals.js:
* test262/test/built-ins/Math/atanh/atanh-specialVals.js:
* test262/test/built-ins/Math/cbrt/cbrt-specialValues.js:
* test262/test/built-ins/Math/cbrt/prop-desc.js:
* test262/test/built-ins/Math/cosh/cosh-specialVals.js:
* test262/test/built-ins/Math/expm1/expm1-specialVals.js:
* test262/test/built-ins/Math/log10/Log10-specialVals.js:
* test262/test/built-ins/Math/log2/log2-basicTests.js:
* test262/test/built-ins/Math/prop-desc.js:
* test262/test/built-ins/Math/sign/sign-specialVals.js:
* test262/test/built-ins/Math/sinh/sinh-specialVals.js:
* test262/test/built-ins/Math/tanh/tanh-specialVals.js:
* test262/test/built-ins/Math/trunc/trunc-sampleTests.js:
* test262/test/built-ins/Math/trunc/trunc-specialVals.js:
* test262/test/built-ins/Object/assign/strings-and-symbol-order.js: Added.
* test262/test/built-ins/Object/keys/property-traps-order-with-proxied-array.js: Added.
(get t):
* test262/test/built-ins/Reflect/Reflect.js: Removed.
* test262/test/built-ins/Reflect/prop-desc.js: Added.
* test262/test/built-ins/Reflect/properties.js: Removed.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/internal-regexp-lastindex-not-zero.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-internal-regexp-is-false.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-internal-regexp-throws.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js: Added.
(obj.get Symbol):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/length.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/name.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/prop-desc.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/regexpcreate-this-throws.js: Added.
(obj.toString):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-constructor-throws.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js: Added.
(regexp.get Symbol):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-not-object-throws.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-not-constructor.js: Added.
(callMatchAll):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-null-or-undefined.js: Added.
(TestWithConstructor):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-throws.js: Added.
(regexp.Symbol.species):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor.js: Added.
(regexp.Symbol.species):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-global-throws.js: Added.
(regexp.Symbol.species):
(get assert):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-unicode-throws.js: Added.
(regexp.Symbol.species):
(get assert):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring-throws.js: Added.
(obj.valueOf):
(obj.toString):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring.js: Added.
(obj.toString):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags-throws.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags.js: Added.
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-lastindex-cached.js: Added.
(regexp.lastIndex.valueOf):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-not-object-throws.js: Added.
(callMatchAll):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-tolength-lastindex-throws.js: Added.
(regexp.lastIndex.valueOf):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags-throws.js: Added.
(value.valueOf):
(value.toString):
* test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags.js: Added.
(value.toString):
* test262/test/built-ins/RegExpStringIteratorPrototype/Symbol.toStringTag.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/ancestry.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-call-throws.js: Added.
(RegExp.prototype.exec):
* test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-get-throws.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-throws.js: Added.
(return.get string_appeared_here):
(RegExp.prototype.exec):
* test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-tostring-throws.js: Added.
(return.toString):
(RegExp.prototype.exec):
* test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-tostring.js: Added.
(execResult.get string_appeared_here):
(RegExp.prototype.exec):
* test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-not-callable.js: Added.
(TestWithRegExpExec):
* test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec.js: Added.
(callNextWithExecReturnValue.RegExp.prototype.exec):
(callNextWithExecReturnValue):
* test262/test/built-ins/RegExpStringIteratorPrototype/next/length.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/next/name.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/next/next-iteration-global.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/next/next-iteration.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/next/next-missing-internal-slots.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/next/prop-desc.js: Added.
* test262/test/built-ins/RegExpStringIteratorPrototype/next/regexp-tolength-lastindex-throws.js: Added.
(RegExp.prototype.exec):
* test262/test/built-ins/RegExpStringIteratorPrototype/next/this-is-not-object-throws.js: Added.
(callNext):
* test262/test/built-ins/String/prototype/matchAll/length.js: Added.
* test262/test/built-ins/String/prototype/matchAll/name.js: Added.
* test262/test/built-ins/String/prototype/matchAll/prop-desc.js: Added.
* test262/test/built-ins/String/prototype/matchAll/regexp-get-matchAll-throws.js: Added.
* test262/test/built-ins/String/prototype/matchAll/regexp-is-null.js: Added.
* test262/test/built-ins/String/prototype/matchAll/regexp-is-undefined.js: Added.
* test262/test/built-ins/String/prototype/matchAll/regexp-matchAll-invocation.js: Added.
(obj.Symbol.matchAll):
* test262/test/built-ins/String/prototype/matchAll/regexp-matchAll-throws.js: Added.
(regexp.Symbol.matchAll):
* test262/test/built-ins/String/prototype/matchAll/regexp-prototype-get-matchAll-throws.js: Added.
* test262/test/built-ins/String/prototype/matchAll/regexp-prototype-has-no-matchAll.js: Added.
* test262/test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-invocation.js: Added.
(RegExp.prototype.Symbol.matchAll):
* test262/test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-throws.js: Added.
(RegExp.prototype.Symbol.matchAll):
* test262/test/built-ins/String/prototype/matchAll/this-val-non-obj-coercible.js: Added.
* test262/test/built-ins/Symbol/matchAll/cross-realm.js: Added.
* test262/test/built-ins/Symbol/matchAll/prop-desc.js: Added.
* test262/test/harness/testTypedArray.js:
* test262/test/intl402/Array/prototype/toLocaleString/calls-toLocaleString-number-elements.js: Added.
* test262/test/intl402/Intl/getCanonicalLocales/invalid-tags.js:
* test262/test/intl402/Locale/constructor-newtarget-undefined.js: Added.
* test262/test/intl402/Locale/constructor-options-calendar-invalid.js: Added.
(const.invalidCalendarOption.of.invalidCalendarOptions.new.Intl.Locale):
* test262/test/intl402/Locale/constructor-options-calendar-valid.js: Added.
* test262/test/intl402/Locale/constructor-options-language-invalid.js: Added.
(const.invalidLanguageOption.of.invalidLanguageOptions.new.Intl.Locale):
* test262/test/intl402/Locale/constructor-options-language-valid.js: Added.
(toString):
* test262/test/intl402/Locale/constructor-options-region-invalid.js: Added.
(const.invalidRegionOption.of.invalidRegionOptions.new.Intl.Locale):
* test262/test/intl402/Locale/constructor-options-region-valid.js: Added.
* test262/test/intl402/Locale/constructor-options-script-invalid.js: Added.
(const.invalidScriptOption.of.invalidScriptOptions.new.Intl.Locale):
* test262/test/intl402/Locale/constructor-options-script-valid.js: Added.
(toString):
* test262/test/intl402/Locale/function-prototype.js: Added.
* test262/test/intl402/Locale/instance-extensibility.js: Added.
* test262/test/intl402/Locale/instance.js: Added.
* test262/test/intl402/Locale/invalid-tag-throws-boolean.js: Added.
* test262/test/intl402/Locale/invalid-tag-throws-null.js: Added.
* test262/test/intl402/Locale/invalid-tag-throws-number.js: Added.
* test262/test/intl402/Locale/invalid-tag-throws-symbol.js: Added.
* test262/test/intl402/Locale/invalid-tag-throws-undefined.js: Added.
* test262/test/intl402/Locale/invalid-tag-throws.js: Added.
(const.invalidTag.of.getInvalidLanguageTags):
* test262/test/intl402/Locale/length.js: Added.
* test262/test/intl402/Locale/name.js: Added.
* test262/test/intl402/Locale/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/constructor.js: Added.
* test262/test/intl402/Locale/prototype/maximize/length.js: Added.
* test262/test/intl402/Locale/prototype/maximize/name.js: Added.
* test262/test/intl402/Locale/prototype/maximize/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/toStringTag.js: Added.
* test262/test/intl402/TypedArray/prototype/toLocaleString/calls-toLocaleString-number-elements.js: Added.
(testWithTypedArrayConstructors):
* test262/test/language/asi/S7.9_A11_T8.js:
(else.x.1): Deleted.
* test262/test/language/asi/S7.9_A4.js:
(catch):
* test262/test/language/asi/S7.9_A5.1_T1.js:
* test262/test/language/asi/S7.9_A5.3_T1.js:
* test262/test/language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration-nested-in-function.js: Added.
(g.f):
(g):
* test262/test/language/destructuring/binding/initialization-requires-object-coercible-null.js:
* test262/test/language/destructuring/binding/initialization-requires-object-coercible-undefined.js:
* test262/test/language/destructuring/binding/initialization-returns-normal-completion-for-empty-objects.js:
* test262/test/language/destructuring/binding/syntax/array-elements-with-initializer.js:
* test262/test/language/destructuring/binding/syntax/array-elements-with-object-patterns.js:
* test262/test/language/destructuring/binding/syntax/array-elements-without-initializer.js:
* test262/test/language/destructuring/binding/syntax/array-pattern-with-elisions.js:
* test262/test/language/destructuring/binding/syntax/array-pattern-with-no-elements.js:
* test262/test/language/destructuring/binding/syntax/array-rest-elements.js:
* test262/test/language/destructuring/binding/syntax/object-pattern-with-no-property-list.js:
* test262/test/language/destructuring/binding/syntax/property-list-bindings-elements.js:
* test262/test/language/destructuring/binding/syntax/property-list-followed-by-a-single-comma.js:
* test262/test/language/destructuring/binding/syntax/property-list-single-name-bindings.js:
* test262/test/language/destructuring/binding/syntax/property-list-with-property-list.js:
* test262/test/language/destructuring/binding/syntax/recursive-array-and-object-patterns.js:
* test262/test/language/eval-code/direct/block-decl-eval-source-is-strict-nostrict.js: Copied from JSTests/test262/test/language/eval-code/direct/block-decl-strict-source.js.
* test262/test/language/eval-code/direct/block-decl-eval-source-is-strict-onlystrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/block-decl-strict-source.js.
(catch):
* test262/test/language/eval-code/direct/block-decl-onlystrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/block-decl-strict-caller.js.
* test262/test/language/eval-code/direct/switch-case-decl-eval-source-is-strict-nostrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/switch-case-decl-strict-source.js.
* test262/test/language/eval-code/direct/switch-case-decl-eval-source-is-strict-onlystrict.js: Copied from JSTests/test262/test/language/eval-code/direct/switch-case-decl-strict-caller.js.
(catch):
* test262/test/language/eval-code/direct/switch-case-decl-onlystrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/switch-case-decl-strict-caller.js.
* test262/test/language/eval-code/direct/switch-dflt-decl-eval-source-is-strict-nostrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/switch-dflt-decl-strict-source.js.
* test262/test/language/eval-code/direct/switch-dflt-decl-eval-source-is-strict-onlystrict.js: Copied from JSTests/test262/test/language/eval-code/direct/switch-dflt-decl-strict-caller.js.
(catch):
* test262/test/language/eval-code/direct/switch-dflt-decl-onlystrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/switch-dflt-decl-strict-caller.js.
* test262/test/language/expressions/async-arrow-function/await-as-param-ident-nested-arrow-parameter-position.js: Added.
(async):
* test262/test/language/expressions/async-arrow-function/await-as-param-nested-arrow-body-position.js: Added.
(async):
* test262/test/language/expressions/async-arrow-function/await-as-param-nested-arrow-parameter-position.js: Added.
(async.a):
* test262/test/language/expressions/async-arrow-function/await-as-param-rest-nested-arrow-parameter-position.js: Added.
(async.a):
* test262/test/language/expressions/async-arrow-function/escaped-async-line-terminator.js: Added.
* test262/test/language/expressions/async-generator/generator-created-after-decl-inst.js: Added.
(g.async.a):
* test262/test/language/expressions/class/class-name-ident-await-escaped-module.js: Added.
(C):
* test262/test/language/expressions/class/class-name-ident-await-escaped.js: Added.
(C):
* test262/test/language/expressions/class/class-name-ident-await-module.js: Added.
(C):
* test262/test/language/expressions/class/class-name-ident-await.js: Added.
(C):
* test262/test/language/expressions/class/class-name-ident-let-escaped.js: Added.
(C):
* test262/test/language/expressions/class/class-name-ident-let.js: Added.
(C):
* test262/test/language/expressions/class/class-name-ident-static-escaped.js: Added.
(C):
* test262/test/language/expressions/class/class-name-ident-static.js: Added.
* test262/test/language/expressions/class/class-name-ident-yield-escaped.js: Added.
(C):
* test262/test/language/expressions/class/class-name-ident-yield.js: Added.
(C):
* test262/test/language/expressions/class/constructor-this-tdz-during-initializers.js: Added.
(Base):
(C):
* test262/test/language/expressions/class/fields-run-once-on-double-super.js: Added.
(Base):
(C):
* test262/test/language/expressions/generators/generator-created-after-decl-inst.js: Added.
(g):
* test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js: Added.
* test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js: Added.
* test262/test/language/expressions/greater-than/bigint-and-boolean.js: Added.
* test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js: Added.
* test262/test/language/expressions/greater-than/bigint-and-string.js: Added.
* test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js: Added.
* test262/test/language/expressions/less-than-or-equal/bigint-and-string.js: Added.
* test262/test/language/expressions/less-than/bigint-and-boolean.js: Added.
* test262/test/language/expressions/less-than/bigint-and-incomparable-string.js: Added.
* test262/test/language/expressions/less-than/bigint-and-string.js: Added.
* test262/test/language/expressions/object/method-definition/generator-super-prop-param.js:
* test262/test/language/function-code/block-decl-onlystrict.js: Renamed from JSTests/test262/test/language/function-code/block-decl-strict.js.
* test262/test/language/function-code/switch-case-decl-onlystrict.js: Renamed from JSTests/test262/test/language/function-code/switch-case-decl-strict.js.
* test262/test/language/function-code/switch-dflt-decl-onlystrict.js: Renamed from JSTests/test262/test/language/function-code/switch-dflt-decl-strict.js.
* test262/test/language/line-terminators/S7.3_A2.3.js: Removed.
* test262/test/language/line-terminators/S7.3_A2.4.js: Removed.
* test262/test/language/literals/regexp/invalid-optional-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/invalid-optional-negative-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/invalid-range-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/invalid-range-negative-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/u-invalid-optional-lookahead.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/u-invalid-optional-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/u-invalid-optional-negative-lookahead.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/u-invalid-optional-negative-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/u-invalid-range-lookahead.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/u-invalid-range-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/u-invalid-range-negative-lookahead.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/regexp/u-invalid-range-negative-lookbehind.js: Renamed from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js.
* test262/test/language/literals/string/line-separator-eval.js: Added.
* test262/test/language/literals/string/line-separator.js: Added.
* test262/test/language/literals/string/paragraph-separator-eval.js: Added.
* test262/test/language/literals/string/paragraph-separator.js: Added.
* test262/test/language/module-code/early-strict-mode.js:
* test262/test/language/statements/async-generator/generator-created-after-decl-inst.js: Added.
(async.g):
* test262/test/language/statements/break/S12.8_A8_T1.js:
(catch):
* test262/test/language/statements/break/S12.8_A8_T2.js:
(catch):
* test262/test/language/statements/class/class-name-ident-await-escaped-module.js: Added.
(aw):
* test262/test/language/statements/class/class-name-ident-await-escaped.js: Added.
(aw):
* test262/test/language/statements/class/class-name-ident-await-module.js: Added.
(await):
* test262/test/language/statements/class/class-name-ident-await.js: Added.
(await):
* test262/test/language/statements/class/class-name-ident-let-escaped.js: Added.
(l):
* test262/test/language/statements/class/class-name-ident-let.js: Added.
(let):
* test262/test/language/statements/class/class-name-ident-static-escaped.js: Added.
(st):
* test262/test/language/statements/class/class-name-ident-static.js: Added.
* test262/test/language/statements/class/class-name-ident-yield-escaped.js: Added.
(yi):
* test262/test/language/statements/class/class-name-ident-yield.js: Added.
(yield):
* test262/test/language/statements/continue/S12.7_A8_T1.js:
(catch):
* test262/test/language/statements/continue/S12.7_A8_T2.js:
(catch):
* test262/test/language/statements/generators/generator-created-after-decl-inst.js: Added.
(g):
* test262/test/language/statements/try/early-catch-duplicates.js:
* test262/test/language/statements/try/early-catch-function.js: Added.
(f.catch.e):
(f):
* test262/test/language/statements/try/early-catch-lex.js:
* test262/test/language/statements/try/early-catch-var.js:
* test262/test262-Revision.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231666 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoDFG CFA should pick the right time to inject OSR entry data
fpizlo@apple.com [Thu, 10 May 2018 22:23:12 +0000 (22:23 +0000)]
DFG CFA should pick the right time to inject OSR entry data
https://bugs.webkit.org/show_bug.cgi?id=185530

Reviewed by Saam Barati.

Previously, we would do a bonus run of CFA to inject OSR entry data. This patch makes us inject
OSR entry data as part of the normal flow of CFA, which reduces the total number of CFA
reexecutions while minimizing the likelihood that we have CFA execute constants in paths that
would eventually LUB to non-constant.

This looks like almost a 1% speed-up on SunSpider-CompileTime. All of the logic for preventing
execution over constants is for V8Spider-CompileTime/regexp, which would otherwise do a lot of
useless regexp/string execution in the compiler.

* dfg/DFGBlockSet.h:
(JSC::DFG::BlockSet::remove):
* dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::run):
(JSC::DFG::CFAPhase::injectOSR):
(JSC::DFG::CFAPhase::performBlockCFA):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231665 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoRemove Unused Chinese/Japanese Reanalyze code
megan_gardner@apple.com [Thu, 10 May 2018 22:06:23 +0000 (22:06 +0000)]
Remove Unused Chinese/Japanese Reanalyze code
https://bugs.webkit.org/show_bug.cgi?id=185529

Reviewed by Wenson Hsieh.

The code for this has actually been completely removed from UIKit. This is unreachable
dead code that should be removed if just for cleanliness.

* Platform/spi/ios/UIKitSPI.h:
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView canPerformActionForWebView:withSender:]):
(-[WKContentView _reanalyzeForWebView:]): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231664 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[iOS] Apps that are not visible may not get suspended if they trigger page loads...
cdumez@apple.com [Thu, 10 May 2018 22:02:31 +0000 (22:02 +0000)]
[iOS] Apps that are not visible may not get suspended if they trigger page loads while in the background
https://bugs.webkit.org/show_bug.cgi?id=185318

Reviewed by Geoffrey Garen.

Whenever there is a page load going on, we take a background process assertion to delay process
suspension until this load completes. However, there is also a 3 seconds grace period after
a load is complete to allow the app to trigger a new load shortly after. This grace period was
introduced to support use cases where a visible app does loads in an offscreen view. However,
it can be abused by apps running in the background as they could trigger new page loads while
in the background to delay process suspension. This patch tightens the policy so that only
apps that are currently visible get to use this grace period. Apps that are in the background
get to finish their current load and will then get suspended.

* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::didChangeIsLoading):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231663 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Extra zoom mode] fast/visual-viewport/extrazoom/layout-viewport-after-scrolling...
wenson_hsieh@apple.com [Thu, 10 May 2018 21:56:58 +0000 (21:56 +0000)]
[Extra zoom mode] fast/visual-viewport/extrazoom/layout-viewport-after-scrolling-and-resizing.html sometimes fails
https://bugs.webkit.org/show_bug.cgi?id=185517
<rdar://problem/40112983>

Reviewed by Tim Horton.

Adjusts some existing layout tests — see below for more detail.

* fast/css/extrazoom/viewport-units-shrink-to-fit.html:

Remove calls to wait for the next presentation update which are no longer necessary after r231606.

* fast/viewport/extrazoom/viewport-change-min-device-width.html:

Wait for the next visible content rect update, when the unobscured content rect is guaranteed to be up to date.

* fast/visual-viewport/extrazoom/layout-viewport-after-scrolling-and-resizing.html:

Wait for the next visible content rect update rather than the next presentation update (i.e. remote layer tree
commit). This is because the layout viewport's custom fixed position rect is propagated in the visible content
rect update flow, and ensuring a presentation update is insufficient to guarantee that the layout viewport is up
to date.

* resources/ui-helper.js:
(window.UIHelper.ensureVisibleContentRectUpdate):

Add a new test helper to wait for the next presentation update.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231662 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix some -Wstring-op-truncation warnings
mcatanzaro@igalia.com [Thu, 10 May 2018 21:46:52 +0000 (21:46 +0000)]
Fix some -Wstring-op-truncation warnings
https://bugs.webkit.org/show_bug.cgi?id=185496

Reviewed by Alex Christensen.

Source/ThirdParty:

Disable this warning when building gtest.

* gtest/CMakeLists.txt:

Tools:

We have an off-by-one in the use of strncpy. The strings would not be null-terminated if
the input was too long. Ensure the buffers are zero-initialized so we don't need to manually
set the last bucket to NUL.

* TestWebKitAPI/Tests/WTF/AtomicString.cpp:
(TestWebKitAPI::testAtomicStringNumber):
* TestWebKitAPI/Tests/WTF/WTFString.cpp:
(TestWebKitAPI::testStringNumberFixedPrecision):
(TestWebKitAPI::testStringNumberFixedWidth):
(TestWebKitAPI::testStringNumber):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231661 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoInPlaceAbstractState::beginBasicBlock shouldn't copy all m_variables every time
fpizlo@apple.com [Thu, 10 May 2018 21:31:49 +0000 (21:31 +0000)]
InPlaceAbstractState::beginBasicBlock shouldn't copy all m_variables every time
https://bugs.webkit.org/show_bug.cgi?id=185452

Reviewed by Michael Saboff.

We were spending a lot of time in beginBasicBlock() just copying the state of all variables
from the block head to InPlaceAbstractState::m_variables. It is necessary for
InPlaceAbstractState to have its own copy since we need to mutate it separately from
block->valuesAtHead. But most variables are untouched by most basic blocks, so this was a lot
of superfluous work.

This change adds a bitvector called m_activeVariables that tracks which variables have been
copied. We lazily copy the variables on first use. Variables that were never copied also have
a simplified merging path, which just needs to consider if the variable got clobbered between
head and tail.

This is a 1.5% speed-up on SunSpider-CompileTime and a 1.7% speed-up on V8Spider-CompileTime.

* bytecode/Operands.h:
(JSC::Operands::argumentIndex const):
(JSC::Operands::localIndex const):
(JSC::Operands::argument):
(JSC::Operands::argument const):
(JSC::Operands::local):
(JSC::Operands::local const):
(JSC::Operands::operandIndex const):
* dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::fastForwardFromTo):
* dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::performForwardCFA):
* dfg/DFGInPlaceAbstractState.cpp:
(JSC::DFG::InPlaceAbstractState::beginBasicBlock):
(JSC::DFG::InPlaceAbstractState::variablesForDebugging):
(JSC::DFG::InPlaceAbstractState::activateAllVariables):
(JSC::DFG::InPlaceAbstractState::endBasicBlock):
(JSC::DFG::InPlaceAbstractState::activateVariable):
(JSC::DFG::InPlaceAbstractState::mergeStateAtTail): Deleted.
* dfg/DFGInPlaceAbstractState.h:
(JSC::DFG::InPlaceAbstractState::variableAt):
(JSC::DFG::InPlaceAbstractState::operand):
(JSC::DFG::InPlaceAbstractState::local):
(JSC::DFG::InPlaceAbstractState::argument):
(JSC::DFG::InPlaceAbstractState::activateVariableIfNecessary):
(JSC::DFG::InPlaceAbstractState::variablesForDebugging): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231660 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWeb Inspector: ASSERT_NOT_REACHED in PageDebuggerAgent::didAddEventListener when...
mattbaker@apple.com [Thu, 10 May 2018 20:59:07 +0000 (20:59 +0000)]
Web Inspector: ASSERT_NOT_REACHED in PageDebuggerAgent::didAddEventListener when page adds attribute event listener
https://bugs.webkit.org/show_bug.cgi?id=181580
<rdar://problem/36461309>

Reviewed by Brian Burg.

Source/WebCore:

EventTarget should pass newly added EventListeners to InspectorInstrumentation,
instead of PageDebuggerAgent assuming the last item in the EventListenerVector
is the most recently added listener. This assumption does not hold when
the new listener replaces an existing listener.

* dom/EventTarget.cpp:
(WebCore::EventTarget::addEventListener):
(WebCore::EventTarget::setAttributeEventListener):

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didAddEventListenerImpl):

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didAddEventListener):

* inspector/agents/page/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::didAddEventListener):
* inspector/agents/page/PageDebuggerAgent.h:

LayoutTests:

Add new test covering the case where adding an attribute event listener
causes an existing attribute event listener to be replaced.

* inspector/debugger/async-stack-trace-expected.txt:
* inspector/debugger/async-stack-trace.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231659 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Win][MiniBrowser] Add a separate WndProc for the layered window
Hironori.Fujii@sony.com [Thu, 10 May 2018 20:54:12 +0000 (20:54 +0000)]
[Win][MiniBrowser] Add a separate WndProc for the layered window
https://bugs.webkit.org/show_bug.cgi?id=185460

Reviewed by Brent Fulgham.

All WK1 related code should be moved into MiniBrowser for the
preparation of Bug 184770.

The layered window was using WndProc of the main window. The
layered window is specific only for WK1. the main window will be
shared among WK1 and WK2.

This change add a new WndProc for the layer window.

* MiniBrowser/win/Common.cpp:
(WndProc): Removed code for the layered windows.
(subclassForLayeredWindow): Moved into MiniBrowser.cpp.
* MiniBrowser/win/MiniBrowser.cpp:
(MiniBrowser::prepareViews): Removed the fourth argument `viewHwnd`.
(viewWndProc): New WndProc for the layered windows.
(MiniBrowser::subclassForLayeredWindow): Moved from Common.cpp.
* MiniBrowser/win/MiniBrowser.h:
(MiniBrowser::hwnd):
* MiniBrowser/win/WinMain.cpp:
(wWinMain): Added m_viewWnd.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231658 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago'Cross-Origin-Options header implementation follow-up
cdumez@apple.com [Thu, 10 May 2018 20:42:01 +0000 (20:42 +0000)]
'Cross-Origin-Options header implementation follow-up
https://bugs.webkit.org/show_bug.cgi?id=185520

Reviewed by Ryosuke Niwa.

Source/WebCore:

* dom/Document.cpp:
* dom/Document.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::didBeginDocument):
Using isNull() check is sufficient here as the header parsing
function will do the right thing when passed the empty string.
Also set the options directly on the window instead of the
document. The window is guaranteed to have been constructed
by then because didBeginDocument() is called DocumentWriter::begin()
which calls Document::createDOMWindow() or Document::takeDOMWindowFrom().

* page/AbstractDOMWindow.cpp:
(WebCore::AbstractDOMWindow::AbstractDOMWindow):
* page/AbstractDOMWindow.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::DOMWindow):
(WebCore::DOMWindow::didSecureTransitionTo):
* page/RemoteDOMWindow.cpp:
(WebCore::RemoteDOMWindow::RemoteDOMWindow):
* page/RemoteDOMWindow.h:
CrossOriginOptions are now stored only on the Window, not the Document.

* platform/network/HTTPParsers.cpp:
(WebCore::parseCrossOriginOptionsHeader):
Drop strippedHeader local variable as it is not strictly needed.

Source/WebKit:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::frameBecameRemote):

LayoutTests:

Extend layout testing to cover mixed case, multiple values and no value.

* http/wpt/cross-origin-options/cross-origin-options-header-expected.txt:
* http/wpt/cross-origin-options/cross-origin-options-header.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231654 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoDrop-down Control borders missing.
pvollan@apple.com [Thu, 10 May 2018 19:38:05 +0000 (19:38 +0000)]
Drop-down Control borders missing.
https://bugs.webkit.org/show_bug.cgi?id=185500
<rdar://problem/40093461>

Reviewed by Brent Fulgham.

Open sandbox for reading of some files in temp folder.

* WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231653 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoSupport --verbose in run-javascriptcore-tests
commit-queue@webkit.org [Thu, 10 May 2018 19:11:47 +0000 (19:11 +0000)]
Support --verbose in run-javascriptcore-tests
https://bugs.webkit.org/show_bug.cgi?id=185492

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2018-05-10
Reviewed by Daniel Bates.

* Scripts/run-javascriptcore-tests:
(runJSCStressTests):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231652 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix the build after r231393
timothy_horton@apple.com [Thu, 10 May 2018 18:54:15 +0000 (18:54 +0000)]
Fix the build after r231393
https://bugs.webkit.org/show_bug.cgi?id=185519
<rdar://problem/40131741>

Reviewed by Simon Fraser.

Source/WebCore:

* Configurations/WebCore.xcconfig:

Source/WTF:

* wtf/Platform.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231651 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[MediaStream, iOS] Don't check authorizationStatusForMediaType when using mock captur...
eric.carlson@apple.com [Thu, 10 May 2018 18:36:57 +0000 (18:36 +0000)]
[MediaStream, iOS] Don't check authorizationStatusForMediaType when using mock capture devices
https://bugs.webkit.org/show_bug.cgi?id=185516
<rdar://problem/36328191>

Reviewed by Youenn Fablet.

* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Don't check
+[AVCaptureDevice authorizationStatusForMediaType:] when using mock capture devices.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231649 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION(r230323): UIProcess needs to notify WebContent process of Accessibility...
bfulgham@apple.com [Thu, 10 May 2018 18:31:59 +0000 (18:31 +0000)]
REGRESSION(r230323): UIProcess needs to notify WebContent process of Accessibility setting changes
https://bugs.webkit.org/show_bug.cgi?id=185515
<rdar://problem/39627764>

Reviewed by Chris Fleizach.

The UIProcess needs to register for relevant Accessibility preference updates so that it can notify the
WebContent processes that screen properties have changed.

This is represented by NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification.

Tested manually with the Accessibility preferences pane.

* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::registerNotificationObservers): Add notification observer. When the notification
is received, call 'screenPropertiesStateChanged' to message the information to the WebContent processes.
(WebKit::WebProcessPool::unregisterNotificationObservers): Clean up observer.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::screenPropertiesStateChanged): Added helper function.
* UIProcess/WebProcessPool.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231648 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[WinCairo] Unreviewed gardening.
ross.kirsling@sony.com [Thu, 10 May 2018 17:58:20 +0000 (17:58 +0000)]
[WinCairo] Unreviewed gardening.

* platform/wincairo/TestExpectations:
* platform/wincairo/editing/deleting/delete-emoji-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231647 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agotest262/Runner.pm: --failing-files uses results file not expectations
commit-queue@webkit.org [Thu, 10 May 2018 17:37:43 +0000 (17:37 +0000)]
test262/Runner.pm: --failing-files uses results file not expectations
https://bugs.webkit.org/show_bug.cgi?id=185395

Patch by Valerie R Young <valerie@bocoup.com> on 2018-05-10
Reviewed by Michael Saboff.

--failing-files arg now uses results file to find failing tests
to rerun. It will look in the test262-results directory from whereever
the script is run, or a results.yaml file can be supplied via command
line argument.
--expectations arg added for suppling expectation file.

* Scripts/test262/Runner.pm:
(processCLI):
(main):
(loadImportFile):
(findAllFailing):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231644 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoLog missing cues correctly
eric.carlson@apple.com [Thu, 10 May 2018 17:02:19 +0000 (17:02 +0000)]
Log missing cues correctly
https://bugs.webkit.org/show_bug.cgi?id=185499
<rdar://problem/40113821>

Reviewed by Daniel Bates.

No new tests, tested manually.

* html/track/InbandGenericTextTrack.cpp:
(WebCore::InbandGenericTextTrack::removeGenericCue): Log the cue we searched for, not
the NULL cue.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231643 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[LFC] Implement height computation for non-replaced inflow elements.
zalan@apple.com [Thu, 10 May 2018 16:46:54 +0000 (16:46 +0000)]
[LFC] Implement height computation for non-replaced inflow elements.
https://bugs.webkit.org/show_bug.cgi?id=185474

Reviewed by Antti Koivisto.

Initial implementation. Does not cover all the cases.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeHeight const):
* layout/FormattingContext.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout const):
(WebCore::Layout::BlockFormattingContext::computeInFlowHeight const):
(WebCore::Layout::BlockFormattingContext::computeInFlowNonReplacedHeight const):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::collapsedMarginBottomFromLastChild):
(WebCore::Layout::BlockMarginCollapse::isMarginBottomCollapsedWithParent):
(WebCore::Layout::BlockMarginCollapse::isMarginTopCollapsedWithParentMarginBottom):
(WebCore::Layout::isMarginBottomCollapsedWithParent): Deleted.
* layout/blockformatting/BlockMarginCollapse.h:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeInFlowHeight const):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isReplaced const):
* layout/layouttree/LayoutBox.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231642 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GTK] Implement ImageBuffer::toBGRAData
commit-queue@webkit.org [Thu, 10 May 2018 14:50:41 +0000 (14:50 +0000)]
[GTK] Implement ImageBuffer::toBGRAData
https://bugs.webkit.org/show_bug.cgi?id=185511

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-05-10
Reviewed by Michael Catanzaro.

This was never implemented but will be required for the MediaStream API
tests.

* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::toBGRAData const):
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::toBGRAData const):
* platform/graphics/gtk/ImageBufferGtk.cpp:
(WebCore::ImageBuffer::toBGRAData const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231638 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GTK] Add support for settings cookies policy and storage type in MiniBrowser
carlosgc@webkit.org [Thu, 10 May 2018 08:37:37 +0000 (08:37 +0000)]
[GTK] Add support for settings cookies policy and storage type in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=185506

Reviewed by Philippe Normand.

Useful for testing and debugging.

* MiniBrowser/gtk/main.c:
(main):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231637 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[EME][GStreamer] Add a handler for GStreamer protection event
commit-queue@webkit.org [Thu, 10 May 2018 07:41:36 +0000 (07:41 +0000)]
[EME][GStreamer] Add a handler for GStreamer protection event
https://bugs.webkit.org/show_bug.cgi?id=185245

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-05-10
Reviewed by Xabier Rodriguez-Calvar.

Qtdemux sends the protection event when encountered a new PSSH box (encrypted content).

The Decryptor is moved from AppendPipeline to PlaybackPipeline (see https://bugs.webkit.org/show_bug.cgi?id=181855),
thus the protection event is no longer handled because the Decryptor is not in the same pipeline as qtdemux.

AppendPipeline: httpsrc-->qtdemux-->appsink
PlaybackPipeline: appsrc-->parser--> decryptor-->decoder-->sink

This patch attaches a probe to the sink pad of the appsink in the appendPipeline in order to
catch and manage the protection event.

* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::~AppendPipeline):
(WebCore::appendPipelineAppsinkPadEventProbe):
* platform/graphics/gstreamer/mse/AppendPipeline.h:
(WebCore::AppendPipeline::playerPrivate):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231636 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION(r231622) [Win] Crashes for null dereference of prefsPrivate in WebView...
Hironori.Fujii@sony.com [Thu, 10 May 2018 07:15:42 +0000 (07:15 +0000)]
REGRESSION(r231622) [Win] Crashes for null dereference of prefsPrivate in WebView::notifyPreferencesChanged
https://bugs.webkit.org/show_bug.cgi?id=185505

Unreviewed serious crash fix

Windows port crashes soon since Bug 184996.

* WebPreferences.cpp:
(WebPreferences::QueryInterface): Added IID_IWebPreferencesPrivate7.
* WebPreferences.h: Inherit IWebPreferencesPrivate7 instead of IWebPreferencesPrivate6.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231635 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[wpe] update the TestExpectations for encrypted-media after some fixes
calvaris@igalia.com [Thu, 10 May 2018 07:11:43 +0000 (07:11 +0000)]
[wpe] update the TestExpectations for encrypted-media after some fixes
https://bugs.webkit.org/show_bug.cgi?id=185277

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-05-10
Reviewed by Xabier Rodriguez-Calvar.

Once the decryptor moved from AppendPipeline to Playbackpipeline and the patches 185242, 185244
are fixed, the encrypted-media WPT LayoutTests will no longer crash and some one will pass.

* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multisession.https-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231634 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[EME][GStreamer] Move the decryptor from AppendPipeline to PlaybackPipeline.
calvaris@igalia.com [Thu, 10 May 2018 07:11:19 +0000 (07:11 +0000)]
[EME][GStreamer] Move the decryptor from AppendPipeline to PlaybackPipeline.
https://bugs.webkit.org/show_bug.cgi?id=181855

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-05-10
Reviewed by Xabier Rodriguez-Calvar.

The goal of this move is to handle the limitation of SVP (Secure Video Path) memory size.

When the decryptor is in the AppendPipeline and we use SVP, we buffer in MediaSource queue
the decrypted GstBuffers that are in SVP memory.
This behavior cause an out-of-memory error, because we are limited in SVP memory size.

By moving the decryptor in PlaybackPipeline, we avoid to buffer the decrypted GstBuffers
which use the SVP memory and we buffer the encrypted GstBuffers that are in system memory.

This new architecture also allows to start the buffering before obtaining the DRM license
and it makes easier to manage dynamic change of the license or Key.

The decryptor is auto plugged by GStreamer playbin in PlaybackPipeline.

SVP: Secure Video Path also named trusted or protected video path, it is a memory which is
protected by a hardware access control engine, it is not accessible to other unauthorised
software or hardware components.

Tests:
    media/encrypted-media/clearKey/clearKey-cenc-audio-playback-mse.html
    media/encrypted-media/clearKey/clearKey-cenc-video-playback-mse.html

* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptSinkEventHandler):
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::dumpAppendState):
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::handleNeedContextSyncMessage):
(WebCore::AppendPipeline::handleAppsrcNeedDataReceived):
(WebCore::AppendPipeline::setAppendState):
(WebCore::AppendPipeline::parseDemuxerSrcPadCaps):
(WebCore::AppendPipeline::appsinkNewSample):
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread):
(WebCore::AppendPipeline::disconnectDemuxerSrcPadFromAppsinkFromAnyThread):
(WebCore::appendPipelineElementMessageCallback): Deleted.
(WebCore::AppendPipeline::handleElementMessage): Deleted.
(WebCore::AppendPipeline::dispatchPendingDecryptionStructure): Deleted.
(WebCore::AppendPipeline::dispatchDecryptionStructure): Deleted.
* platform/graphics/gstreamer/mse/AppendPipeline.h:
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithInstance):
* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231633 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWebDriver: implement advance user interactions
carlosgc@webkit.org [Thu, 10 May 2018 06:52:31 +0000 (06:52 +0000)]
WebDriver: implement advance user interactions
https://bugs.webkit.org/show_bug.cgi?id=174616

Reviewed by Brian Burg.

Source/WebDriver:

Add initial implementation of action commands.

* Actions.h: Added.
(WebDriver::Action::Action):
* CommandResult.cpp:
(WebDriver::CommandResult::CommandResult): Handle MoveTargetOutOfBounds error.
(WebDriver::CommandResult::httpStatusCode const): Ditto.
(WebDriver::CommandResult::errorString const): Ditto.
* CommandResult.h:
* Session.cpp:
(WebDriver::Session::webElementIdentifier): Helper to return the web element id.
(WebDriver::Session::createElement): Use webElementIdentifier().
(WebDriver::Session::extractElementID): Ditto.
(WebDriver::Session::virtualKeyForKeySequence): Add more kay codes includes in the spec.
(WebDriver::mouseButtonForAutomation): Helper to get the mouse button string to pass to automation.
(WebDriver::Session::performMouseInteraction): Use mouseButtonForAutomation().
(WebDriver::Session::getOrCreateInputSource): Ensure an input source for given id and add it to the active input
sources.
(WebDriver::Session::inputSourceState): Return the current input source state for the given id.
(WebDriver::Session::computeInViewCenterPointOfElements): Get the in view center point for the list of elements given.
(WebDriver::automationSourceType): Helper to get the input source type to pass to automation.
(WebDriver::Session::performActions): Process the list of action by tick and generate a list of states to pass
to automation.
(WebDriver::Session::releaseActions): Reset input sources and state table and send a message to automation.
* Session.h:
* WebDriverService.cpp:
(WebDriver::processPauseAction):
(WebDriver::processNullAction):
(WebDriver::processKeyAction):
(WebDriver::actionMouseButton):
(WebDriver::processPointerAction):
(WebDriver::processPointerParameters):
(WebDriver::processInputActionSequence):
(WebDriver::WebDriverService::performActions):
(WebDriver::WebDriverService::releaseActions):
* WebDriverService.h:

Source/WebKit:

Handle origin in case of mouse move transitions.

* UIProcess/Automation/Automation.json: Add MouseMoveOrigin enum and pass it as parameter of InputSourceState
together with optional node handle. Also pass the frame handle to performInteractionSequence command to find the
node in the current browsing context.
* UIProcess/Automation/SimulatedInputDispatcher.cpp:
(WebKit::SimulatedInputKeyFrame::keyFrameToResetInputSources): Ensure we reset the location.
(WebKit::SimulatedInputDispatcher::resolveLocation): Helper to resolve destination location based on current
location and mouse move origin.
(WebKit::SimulatedInputDispatcher::transitionInputSourceToState): Use resolveLocation() in mouse transitions.
(WebKit::SimulatedInputDispatcher::run): Receive and save the frame ID.
(WebKit::SimulatedInputDispatcher::finishDispatching): Reset the frame ID.
* UIProcess/Automation/SimulatedInputDispatcher.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::computeElementLayout): Use even numbers for the callback ID to not conflict with
viewportInViewCenterPointOfElement() callbacks.
(WebKit::WebAutomationSession::didComputeElementLayout): Handle computeElementLayout() or
viewportInViewCenterPointOfElement() requests by calling the right callback depending on whether the ID is odd
or even number.
(WebKit::WebAutomationSession::viewportInViewCenterPointOfElement): Send ComputeElementLayout message to the
WebProcess using odd numbers for the callback ID to not conflict with computeElementLayout() callbacks.
(WebKit::WebAutomationSession::performInteractionSequence): Handle the mouse origin and element handle.
(WebKit::WebAutomationSession::cancelInteractionSequence): Pass the frame ID to the input dispatcher.
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSessionMacros.h:

WebDriverTests:

Update test expectations.

* TestExpectations.json:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231632 268f45cc-cd09-0410-ab3c-d52691b4dbfc