WebKit-https.git
18 months ago[WPE] Enable WOFF2 support
aperez@igalia.com [Thu, 22 Mar 2018 21:56:18 +0000 (21:56 +0000)]
[WPE] Enable WOFF2 support
https://bugs.webkit.org/show_bug.cgi?id=178158

Reviewed by Frédéric Wang.

.:

* Source/cmake/OptionsWPE.cmake: Add needed logic to detect the Brotli and WOFF2 libraries.

Tools:

* wpe/jhbuild.modules: Add "brotli" and "woff2" to the JHBuild moduleset.

LayoutTests:

* platform/wpe/TestExpectations: Unskip the fast/text/woff2.html and fast/text/woff2-totalsfntsize.html

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

18 months agoDo not export web-platform-test files generated by the wpt importer to assist the...
commit-queue@webkit.org [Thu, 22 Mar 2018 21:52:51 +0000 (21:52 +0000)]
Do not export web-platform-test files generated by the wpt importer to assist the webkit test runner
https://bugs.webkit.org/show_bug.cgi?id=183916

Patch by Brendan McLoughlin <brendan@bocoup.com> on 2018-03-22
Reviewed by Youenn Fablet.

* Scripts/webkitpy/w3c/test_exporter.py:
(TestExporter.create_branch_with_patch):
* Scripts/webkitpy/w3c/test_exporter_unittest.py:
(TestExporterTest.test_export):
(TestExporterTest.test_export_with_specific_branch):

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

18 months ago[Web Animations] Make imported/mozilla/css-animations/test_event-dispatch.html pass...
graouts@webkit.org [Thu, 22 Mar 2018 21:33:53 +0000 (21:33 +0000)]
[Web Animations] Make imported/mozilla/css-animations/test_event-dispatch.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183845

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Add test expectations for previously crashing tests, update other expectations with progressions, including
the two event dispatch tests which now pass all assertions.

* css-animations/test_animation-finish-expected.txt:
* css-animations/test_animation-pausing-expected.txt:
* css-animations/test_animation-playstate-expected.txt:
* css-animations/test_animation-ready-expected.txt:
* css-animations/test_animation-starttime-expected.txt:
* css-animations/test_event-dispatch-expected.txt:
* css-animations/test_event-order-expected.txt:
* css-animations/test_setting-effect-expected.txt: Added.
* css-transitions/test_animation-cancel-expected.txt:
* css-transitions/test_animation-computed-timing-expected.txt:
* css-transitions/test_animation-currenttime-expected.txt:
* css-transitions/test_animation-pausing-expected.txt:
* css-transitions/test_animation-starttime-expected.txt:
* css-transitions/test_event-dispatch-expected.txt:
* css-transitions/test_setting-effect-expected.txt: Added.

Source/WebCore:

Finish the work to get DOM events for CSS Animations and CSS Transitions dispatching as specified.

* animation/AnimationEffectReadOnly.cpp: Move timeEpsilon to be shared as part of WebAnimationUtilities.h since we now need it in
WebAnimation::timeToNextRequiredTick().
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::updateCSSAnimationsForElement): We add a pre-emptive return clause when we know that the AnimationList
for previous and current styles are a match.
* animation/CSSTransition.cpp:
(WebCore::CSSTransition::matchesBackingAnimationAndStyles const): Ensure we have a valid effect before downcasting it.
* animation/DeclarativeAnimation.cpp:
(WebCore::DeclarativeAnimation::initialize): We need to call pause() for declarative animations that aren't playing so that the animation's
playState is set correctly and the animation is not idle.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::updateAnimationSchedule): We no longer need to pass the current time to timeToNextRequiredTick() since the method has
been reworked to use the animation's current time, which is based on the timeline's current time.
(WebCore::DocumentTimeline::updateAnimations): Avoid creating a copy when iterating over pending hardware animations.
* animation/KeyframeEffectReadOnly.cpp:
(WebCore::KeyframeEffectReadOnly::stylesWouldYieldNewCSSTransitionsBlendingKeyframes const): We should never generate new blending keyframes if the
old and new styles contain the same value, since there would be no transition between two equal values, and we should only look at whether the new
style value and the recorded target value differ to determine if new blending keyframes are necessary.
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::timeToNextRequiredTick const): We correct our scheduling code which was shown to be broken in several of the newly-imported
Mozilla tests. Any running animation is now scheduled to invalidate again on the next tick, and we use timeEpsilon from WebAnimationUtilities.h to
correctly check if we're right at the active threshold, when we also invalidate on the next tick. If our current time is negative, in other words
when the animation has not yet started, we schedule this animation's next tick to be the negative of that value. In all other cases, no invalidation
needs to be scheduled.
* animation/WebAnimation.h: We move updateFinishedState() to private since this method is not actually used outside of WebAnimation.cpp.
* animation/WebAnimationUtilities.h: Move timeEpsilon to be shared as part of WebAnimationUtilities.h.

LayoutTests:

A couple of crashing tests no longer crash and a couple are now reliably passing.

* TestExpectations:

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

18 months agoAdd placeholder call and jump MacroAssembler emitters that take PtrTag in a register.
mark.lam@apple.com [Thu, 22 Mar 2018 21:24:15 +0000 (21:24 +0000)]
Add placeholder call and jump MacroAssembler emitters that take PtrTag in a register.
https://bugs.webkit.org/show_bug.cgi?id=183914
<rdar://problem/38763536>

Reviewed by Saam Barati and JF Bastien.

This is in preparation for supporting pointer profiling work.

* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::jump):
(JSC::MacroAssemblerARM::call):
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::call):
(JSC::MacroAssemblerARM64::jump):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::jump):
(JSC::MacroAssemblerARMv7::call):
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::jump):
(JSC::MacroAssemblerMIPS::call):
* assembler/MacroAssemblerX86.h:
(JSC::MacroAssemblerX86::call):
(JSC::MacroAssemblerX86::jump):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::jump):
(JSC::MacroAssemblerX86Common::call):
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::call):
(JSC::MacroAssemblerX86_64::jump):

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

18 months agoUnreviewed gardening. Update WinCairo TestExpectations and drop the unnecessary suffix.
ross.kirsling@sony.com [Thu, 22 Mar 2018 21:17:47 +0000 (21:17 +0000)]
Unreviewed gardening. Update WinCairo TestExpectations and drop the unnecessary suffix.

* platform/wincairo-win10/TestExpectations: Removed.
* platform/wincairo/TestExpectations: Added.

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

18 months agoImprove readability of WebCore's OTHER_LDFLAGS
timothy_horton@apple.com [Thu, 22 Mar 2018 20:54:06 +0000 (20:54 +0000)]
Improve readability of WebCore's OTHER_LDFLAGS
https://bugs.webkit.org/show_bug.cgi?id=183909
<rdar://problem/38760992>

Reviewed by Dan Bernstein.

* .../Configurations/Base.xcconfig:
* .../Configurations/FeatureDefines.xcconfig:

* WebCore/Configurations/WebCore.xcconfig:

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

18 months agoAdopt USE(OPENGL[_ES]) in more places
timothy_horton@apple.com [Thu, 22 Mar 2018 18:37:17 +0000 (18:37 +0000)]
Adopt USE(OPENGL[_ES]) in more places
https://bugs.webkit.org/show_bug.cgi?id=183882
<rdar://problem/37912195>

Reviewed by Dan Bernstein.

Source/WebCore:

* platform/graphics/GraphicsContext3D.h:
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::hasMuxableGPU):
(WebCore::GraphicsContext3DManager::updateHighPerformanceState):
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::checkGPUStatus):
(WebCore::GraphicsContext3D::texImageIOSurface2D):
* platform/graphics/cocoa/WebGLLayer.h:
* platform/graphics/cocoa/WebGLLayer.mm:
(-[WebGLLayer initWithGraphicsContext3D:]):
(-[WebGLLayer copyImageSnapshotWithColorSpace:]):
(-[WebGLLayer display]):
* platform/graphics/ios/GraphicsContext3DIOS.h:
* platform/graphics/opengl/Extensions3DOpenGL.cpp:
(WebCore::Extensions3DOpenGL::blitFramebuffer):
(WebCore::Extensions3DOpenGL::createVertexArrayOES):
(WebCore::Extensions3DOpenGL::deleteVertexArrayOES):
(WebCore::Extensions3DOpenGL::isVertexArrayOES):
(WebCore::Extensions3DOpenGL::bindVertexArrayOES):
* platform/graphics/opengl/Extensions3DOpenGL.h:
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::resolveMultisamplingIfNecessary):
(WebCore::GraphicsContext3D::renderbufferStorage):
(WebCore::GraphicsContext3D::getIntegerv):
(WebCore::GraphicsContext3D::texImage2D):
(WebCore::GraphicsContext3D::depthRange):
(WebCore::GraphicsContext3D::clearDepth):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::paintRenderingResultsToCanvas):
Make it a bit more clear which code is platform-dependent and which code is GL/GLES-dependent.

Source/WTF:

* wtf/Platform.h:

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

18 months ago[TexMap] Make TextureMapperContextAttributes thread-specific
zandobersek@gmail.com [Thu, 22 Mar 2018 18:07:05 +0000 (18:07 +0000)]
[TexMap] Make TextureMapperContextAttributes thread-specific
https://bugs.webkit.org/show_bug.cgi?id=183895

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Store the TextureMapperContextAttributes in a thread-specific manner.
The TextureMapperContextAttributes::get() method is now used to retrieve
a reference to that thread-specific object. If it's not been initialized
yet, then the current GL context is used for the initialization, as it
used to be done in the now-removed initialize() method.

TextureMapperPlatformLayerBuffer::clone() method now doesn't need to
be passed a TextureMapperGL object, since the texture can be created
directly by calling BitmapTextureGL::create(), passing the
TextureMapperContextAttributes object that's retrieved from the
thread-specific storage. This further simplifies the
TextureMapperPlatformLayerProxy::Compositor interface, removing the
texmapGL() getter from it.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
* platform/graphics/texmap/TextureMapperContextAttributes.cpp:
(WebCore::threadSpecificAttributes):
(WebCore::TextureMapperContextAttributes::get):
(WebCore::TextureMapperContextAttributes::initialize): Deleted.
* platform/graphics/texmap/TextureMapperContextAttributes.h:
* platform/graphics/texmap/TextureMapperGL.cpp:
(WebCore::TextureMapperGL::TextureMapperGL):
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
(WebCore::TextureMapperPlatformLayerBuffer::clone):
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:

Source/WebKit:

CoordinatedGraphicsScene, as an implementor of the
TextureMapperPlatformLayerProxy::Compositor interface, doesn't have to
implement the texmapGL() method anymore.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::onNewBufferAvailable):
(WebKit::CoordinatedGraphicsScene::texmapGL): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:

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

18 months ago[ARM] Thumb: Do not decorate bottom bit twice
commit-queue@webkit.org [Thu, 22 Mar 2018 18:03:36 +0000 (18:03 +0000)]
[ARM] Thumb: Do not decorate bottom bit twice
https://bugs.webkit.org/show_bug.cgi?id=183906

Patch by Dominik Infuehr <dinfuehr@igalia.com> on 2018-03-22
Reviewed by Mark Lam.

Use MacroAssemblerCodePtr::createFromExecutableAddress instead of
MacroAssemblerCodePtr(void*) to avoid decorating the pointer twice as
a thumb pointer.

* jit/Repatch.cpp:
(JSC::linkPolymorphicCall):

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

18 months ago[JSC] Clear MustGenerate for ToString(Number) converted from NumberToStringWithRadix
utatane.tea@gmail.com [Thu, 22 Mar 2018 17:07:26 +0000 (17:07 +0000)]
[JSC] Clear MustGenerate for ToString(Number) converted from NumberToStringWithRadix
https://bugs.webkit.org/show_bug.cgi?id=183559

Reviewed by Mark Lam.

JSTests:

* stress/double-to-string-in-loop-removed.js: Added.
(test):
* stress/int32-to-string-in-loop-removed.js: Added.
(test):
* stress/int52-to-string-in-loop-removed.js: Added.
(test):

Source/JavaScriptCore:

When converting NumberToStringWithRadix to ToString(Int52/Int32/Double), we forget
to clear NodeMustGenerate for this ToString. It should be since it does not have
any user-observable side effect. This patch clears NodeMustGenerate.

* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):

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

18 months ago[JSC] List up all candidates in DFGCapabilities and FTLCapabilities
utatane.tea@gmail.com [Thu, 22 Mar 2018 15:58:59 +0000 (15:58 +0000)]
[JSC] List up all candidates in DFGCapabilities and FTLCapabilities
https://bugs.webkit.org/show_bug.cgi?id=183897

Reviewed by Mark Lam.

We should not use `default:` clause here since it accidentally catches
the opcode and DFG nodes which should be optimized. For example,
op_super_sampler_begin and op_super_sampler_end are not listed while
they have DFG and FTL backend.

This patch lists up all candiates in DFGCapabilities and FTLCapabilities.
And we also clean up unnecessary checks in FTLCapabilities. Since we
already handles all the possible array types for these nodes (which can
be checked in DFG's code), we do not need to check array types.

We also fix FTLLowerDFGToB3' PutByVal code to use modeForPut.

* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):

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

18 months agoUnreviewed gardening.
zalan@apple.com [Thu, 22 Mar 2018 15:46:36 +0000 (15:46 +0000)]
Unreviewed gardening.

Unskipping imported/blink/svg/css/path-layout-crash.html (should have been unskipped with r229782).

* TestExpectations:

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

18 months ago[JSC] Drop op_put_by_index
utatane.tea@gmail.com [Thu, 22 Mar 2018 15:40:57 +0000 (15:40 +0000)]
[JSC] Drop op_put_by_index
https://bugs.webkit.org/show_bug.cgi?id=183899

Reviewed by Mark Lam.

This patch drops op_put_by_index.

1. This functionality can be just covered by direct put_by_val.
2. put_by_index is not well optimized. It is just calling a C
function. And it does not have DFG handling.

* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::dumpBytecode):
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitPutByIndex): Deleted.
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::ArrayNode::emitBytecode):
(JSC::ArrayPatternNode::emitDirectBinding):
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_put_by_index): Deleted.
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_put_by_index): Deleted.
* llint/LLIntSlowPaths.cpp:
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter.asm:

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

18 months agoUnreviewed GTK+ gardening after r229847.
magomez@igalia.com [Thu, 22 Mar 2018 15:26:38 +0000 (15:26 +0000)]
Unreviewed GTK+ gardening after r229847.

* platform/gtk/TestExpectations:
* platform/gtk/http/tests/loading/simple-subframe-expected.txt:
* platform/gtk/http/tests/navigation/redirect-to-fragment2-expected.txt: Added.
* platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:

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

18 months agoRace Condition in arrayProtoFuncReverse() causes wrong results or crash
msaboff@apple.com [Thu, 22 Mar 2018 15:12:44 +0000 (15:12 +0000)]
Race Condition in arrayProtoFuncReverse() causes wrong results or crash
https://bugs.webkit.org/show_bug.cgi?id=183901

Reviewed by Keith Miller.

JSTests:

New test.

* stress/array-reverse-doesnt-clobber.js: Added.
(testArrayReverse):
(createArrayOfArrays):
(createArrayStorage):

Source/JavaScriptCore:

Added write barriers to ensure the reversed contents are properly marked.

* runtime/ArrayPrototype.cpp:
(JSC::arrayProtoFuncReverse):

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

18 months agoSVG root is skipped while marking percentage height descendants dirty.
zalan@apple.com [Thu, 22 Mar 2018 14:54:12 +0000 (14:54 +0000)]
SVG root is skipped while marking percentage height descendants dirty.
https://bugs.webkit.org/show_bug.cgi?id=183877

Reviewed by Antti Koivisto.

Source/WebCore:

Calling continingBlock() to get to the correct container works as long as the ancestor inline element
renderers are wrapped in anonymous blocks (continuation for example).

While the SVG root renderer is an inline renderer, it is not wrapped or normalized in any way,
so containingBlock() will elegantly skip it and return an SVG root ancestor.
dirtyForLayoutFromPercentageHeightDescendants calls containingBlock() to walk up
on the ancestor chain to mark elements dirty. This fails when there's an SVG subtree in the block chain.
This patch marks the SVG subtree chain dirty to ensure that layout will get to all the dirty leaf renderers
(note that the SVG subtree is supposed to have only statically positioned elements so parent == containing block).

Covered by existing tests.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::dirtyForLayoutFromPercentageHeightDescendants):

LayoutTests:

* TestExpectations:

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

18 months ago[WPE][GTK] Build failure when ENABLE_VIDEO, ENABLE_WEB_AUDIO and ENABLE_XSLT are...
aperez@igalia.com [Thu, 22 Mar 2018 13:48:34 +0000 (13:48 +0000)]
[WPE][GTK] Build failure when ENABLE_VIDEO, ENABLE_WEB_AUDIO and ENABLE_XSLT are disabled
https://bugs.webkit.org/show_bug.cgi?id=183896

Reviewed by Yusuke Suzuki.

No new tests needed.

* bindings/js/JSWebAnimationCustom.cpp: Add missing #include of Document.h

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

18 months ago[MathML] Import WPT test to replace mathml/opentype/large-operators-italic-correction...
fred.wang@free.fr [Thu, 22 Mar 2018 11:31:47 +0000 (11:31 +0000)]
[MathML] Import WPT test to replace mathml/opentype/large-operators-italic-correction.html
https://bugs.webkit.org/show_bug.cgi?id=183891

Patch by Frederic Wang <fwang@igalia.com> on 2018-03-22
Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

Import WPT test added in https://github.com/w3c/web-platform-tests/pull/9993.

* web-platform-tests/fonts/math/largeop-displayoperatorminheight2000-2AFF-italiccorrection3000.woff: Added.
* web-platform-tests/fonts/math/w3c-import.log:
* web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2-expected.txt: Added.
* web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2.html: Added.
* web-platform-tests/mathml/presentation-markup/scripts/w3c-import.log:
* web-platform-tests/mathml/tools/largeop.py:

LayoutTests:

Remove large-operators-italic-correction.html. Italic correction is tested more completely by
a new WPT test that does not require Latin Modern Math to be installed on the try bots.

* mathml/opentype/large-operators-italic-correction-expected.txt: Removed.
* mathml/opentype/large-operators-italic-correction.html: Removed.
* platform/ios/TestExpectations: Remove test expectation.
* platform/mac/TestExpectations: Ditto.
* platform/win/TestExpectations: Ditto.

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

18 months agoUnreviewed, update comment added in r229801.
fred.wang@free.fr [Thu, 22 Mar 2018 06:48:43 +0000 (06:48 +0000)]
Unreviewed, update comment added in r229801.

Patch by Frederic Wang <fwang@igalia.com> on 2018-03-21

* WebProcess/WebPage/ios/FindControllerIOS.mm:
(WebKit::FindController::didFindString): Remove "On Mobile" and mention bug 183889.

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

18 months agoCreate an assertion mechanism to ensure proper WebCore use in each WebKit Process
bfulgham@apple.com [Thu, 22 Mar 2018 04:35:13 +0000 (04:35 +0000)]
Create an assertion mechanism to ensure proper WebCore use in each WebKit Process
https://bugs.webkit.org/show_bug.cgi?id=183806
<rdar://problem/38694251>

Reviewed by Ryosuke Niwa.

Part of our security improvements involve better isolation between the different WebKit
processes (UIProcess, WebContent, Networking, Storage, etc.).

We need an assertion language we can use to protect certain critical APIs and code paths
against accidental misuse.

This patch adds a new enum type meant to represent different categories of program logic
that we do not want used in the wrong process.

This first patch just creates these types and makes them available. New assertions using
these values will be added as we complete our work ensuring proper process isolation.

In a method we want to protect, we can add an assertion describing the process privileges
needed to execute the code. For example, for cookie access we might use this:

    ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies);

At the launch of the UIProcess we would use this method to ensure all privileges are available:

    setProcessPrivileges(allPrivileges());

In the network process, during platform initialization, we would use something like this:

    setProcessPrivileges({ ProcessPrivilege::CanAccessRawCookies, ProcessPrivilege::CanAccessCredentials });

In the WebContent process, we would not set any privileges. We could just leave it as the
default initialization, or use this:

    setProcessPrivileges({ });

Later, when we attempt to execute the initial code, we would expect an assertion for the
WebContent process, while Network and UIProcess pass the assertion.

* WTF.xcodeproj/project.pbxproj: Add new files.
* wtf/CMakeLists.txt: Ditto.
* wtf/ProcessPrivilege.cpp: Added.
(WTF::processPrivileges):
(WTF::setProcessPrivileges):
(WTF::hasProcessPrivilege):
* wtf/ProcessPrivilege.h: Added.

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

18 months agoUnreviewed. Marked myself as a committer.
Hironori.Fujii@sony.com [Thu, 22 Mar 2018 04:20:28 +0000 (04:20 +0000)]
Unreviewed. Marked myself as a committer.

* Scripts/webkitpy/common/config/contributors.json:

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

18 months agoRegression(r229828): WebKit.NoHistoryItemScrollToFragment API test is failing on iOS
cdumez@apple.com [Thu, 22 Mar 2018 03:14:14 +0000 (03:14 +0000)]
Regression(r229828): WebKit.NoHistoryItemScrollToFragment API test is failing on iOS
https://bugs.webkit.org/show_bug.cgi?id=183886

Reviewed by Wenson Hsieh.

Since r229828, the FrameLoader needs to call FrameLoaderClient::didDecidePolicyForNavigationAction()
whenever a navigation policy decision is made. I added such a call r229828 to
FrameLoader::continueLoadAfterNavigationPolicy() but forgot to add one to
FrameLoader::continueFragmentScrollAfterNavigationPolicy(), which is the equivalent
for fragment navigations.

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

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

18 months agoScopedArguments should do poisoning and index masking
fpizlo@apple.com [Thu, 22 Mar 2018 02:15:44 +0000 (02:15 +0000)]
ScopedArguments should do poisoning and index masking
https://bugs.webkit.org/show_bug.cgi?id=183863

Reviewed by Mark Lam.

JSTests:

Adds another stress test of scoped arguments.

* stress/scoped-arguments-test.js: Added.
(foo):

Source/JavaScriptCore:

This outlines the ScopedArguments overflow storage and adds poisoning.

* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateWithGuard):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnScopedArguments):
(JSC::DFG::SpeculativeJIT::compileGetArrayLength):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetArrayLength):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitScopedArgumentsGetByVal):
* runtime/JSCPoison.h:
* runtime/ScopedArguments.cpp:
(JSC::ScopedArguments::ScopedArguments):
(JSC::ScopedArguments::createUninitialized):
(JSC::ScopedArguments::visitChildren):
* runtime/ScopedArguments.h:

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

18 months agoRegression(r229831): ProcessSwap.Basic API test is crashing
cdumez@apple.com [Thu, 22 Mar 2018 01:49:27 +0000 (01:49 +0000)]
Regression(r229831): ProcessSwap.Basic API test is crashing
https://bugs.webkit.org/show_bug.cgi?id=183884

Reviewed by Brady Eidson.

This code should only be called for navigation policy decisions.
It used to work without this check because of an early return, which
was dropped in r229831.

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

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

18 months agoRegression(r229831): fast/loader/javascript-url-iframe-remove-on-navigate-async-deleg...
cdumez@apple.com [Thu, 22 Mar 2018 01:47:43 +0000 (01:47 +0000)]
Regression(r229831): fast/loader/javascript-url-iframe-remove-on-navigate-async-delegate.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=183885

Unreviewed, temporarily mark the test as flaky while I investigate.

* TestExpectations:

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

18 months agoUnreviewed, make the email address of Yoshiaki Jitsukawa all lower case.
yoshiaki.jitsukawa@sony.com [Thu, 22 Mar 2018 01:24:37 +0000 (01:24 +0000)]
Unreviewed, make the email address of Yoshiaki Jitsukawa all lower case.

* Scripts/webkitpy/common/config/contributors.json:

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

18 months agoUnreviewed, add myself as a WebKit committer.
yoshiaki.jitsukawa@sony.com [Thu, 22 Mar 2018 00:59:17 +0000 (00:59 +0000)]
Unreviewed, add myself as a WebKit committer.

* Scripts/webkitpy/common/config/contributors.json:

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

18 months ago[Extra zoom mode] Add new SPI hooks for clients to vend an input session context...
wenson_hsieh@apple.com [Thu, 22 Mar 2018 00:22:37 +0000 (00:22 +0000)]
[Extra zoom mode] Add new SPI hooks for clients to vend an input session context view
https://bugs.webkit.org/show_bug.cgi?id=183866
<rdar://problem/38692256>

Reviewed by Tim Horton.

Add new SPI hooks to _WKInputDelegate allowing internal clients to provide a view that gives additional context
when editing form controls, on top of the default label or placeholder text displayed by WebKit. The height
delegate is invoked first, giving the client an opportunity to lay out the context view to fit the given size;
the actual view is then queried.

If the view changes, clients may tell WebKit to reload the context view via SPI on WKFormInputSession; this call
to reload is plumbed through to the currently presented list view controller (at the moment, this is only the
text input list view controller).

* UIProcess/API/Cocoa/_WKFormInputSession.h:
* UIProcess/API/Cocoa/_WKInputDelegate.h:

Add the new SPI hooks, described above.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFormInputSession reloadFocusedElementContextView]):

Plumb the context view reload hook through WKContentView to WKTextInputListViewController.

(-[WKContentView setupInteraction]):
(-[WKContentView _stopAssistingNode]):
(-[WKContentView reloadContextViewForPresentedListViewController]):
(-[WKContentView focusedFormControllerDidUpdateSuggestions:]):

Slight tweak to only reload text suggestions if we are not blurring the focused element. Without this extra
condition, the list view controller's inner table view would get reloaded when the form input session's text
suggestions are set to nil when the list view controller is dismissed, causing a visible stutter in the
dismissal animation of view controller.

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

18 months agoMark fast/scrolling/latching/scroll-div-no-latching.html as flaky.
ryanhaddad@apple.com [Thu, 22 Mar 2018 00:05:44 +0000 (00:05 +0000)]
Mark fast/scrolling/latching/scroll-div-no-latching.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=183879

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

18 months agoMark inspector/console/messageAdded-from-named-evaluations.html as slow.
ryanhaddad@apple.com [Wed, 21 Mar 2018 23:58:41 +0000 (23:58 +0000)]
Mark inspector/console/messageAdded-from-named-evaluations.html as slow.
https://bugs.webkit.org/show_bug.cgi?id=183880

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

18 months agoMark media/modern-media-controls/seek-backward-support/seek-backward-support.html...
ryanhaddad@apple.com [Wed, 21 Mar 2018 23:58:39 +0000 (23:58 +0000)]
Mark media/modern-media-controls/seek-backward-support/seek-backward-support.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=183869

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

18 months agoWebKitTestRunner crashed in com.apple.WebKit: WebKit::WebProcessPool::terminateServic...
cdumez@apple.com [Wed, 21 Mar 2018 23:11:38 +0000 (23:11 +0000)]
WebKitTestRunner crashed in com.apple.WebKit: WebKit::WebProcessPool::terminateServiceWorkerProcesses
https://bugs.webkit.org/show_bug.cgi?id=183875

Reviewed by Brent Fulgham.

Protect |this| while we're iterating over m_serviceWorkerProcesses and terminating
each service worker process. It is possible for the WebProcess pool to get destroyed
as a result of terminating a service worker process.

This change is covered by layout tests that are currently crashing on the ASAN bots.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::terminateServiceWorkerProcesses):

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

18 months agoFix typo in inactive media stream timeout default value
eric.carlson@apple.com [Wed, 21 Mar 2018 22:37:37 +0000 (22:37 +0000)]
Fix typo in inactive media stream timeout default value
https://bugs.webkit.org/show_bug.cgi?id=183872
<rdar://problem/38723903>

Reviewed by Jer Noble.

* Shared/WebPreferences.yaml: Fix typo.
* Shared/WebPreferencesDefaultValues.h: Ditto.

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

18 months agoMake policy decisions asynchronous
cdumez@apple.com [Wed, 21 Mar 2018 22:28:50 +0000 (22:28 +0000)]
Make policy decisions asynchronous
https://bugs.webkit.org/show_bug.cgi?id=180568
<rdar://problem/37131297>

Reviewed by Alex Christensen.

Source/WebKit:

Get rid of synchronous IPC and synchronous code paths for policy delegates.
Policy decisions are now all made asynchronously and rely on asynchronous
IPC.

This code change is based on work by Alex Christensen.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

LayoutTests:

Rebaseline tests for WebKit2. The issue is that some tests dump policy delegate calls
and things now happen in a slightly different order now that those delegates are
asynchronous.

* TestExpectations:
* http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt:
* platform/ios/http/tests/loading/simple-subframe-expected.txt:
* platform/mac-wk2/http/tests/loading/simple-subframe-expected.txt: Copied from LayoutTests/platform/ios/http/tests/loading/simple-subframe-expected.txt.
* platform/wk2/fast/loader/fragment-navigation-base-blank-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/fast/loader/iframe-meta-refresh-base-blank-expected.txt: Copied from LayoutTests/platform/wk2/http/tests/loading/authentication-after-redirect-stores-wrong-credentials/authentication-after-redirect-stores-wrong-credentials-expected.txt.
* platform/wk2/fast/loader/iframe-set-location-base-blank-expected.txt: Copied from LayoutTests/platform/wk2/http/tests/loading/authentication-after-redirect-stores-wrong-credentials/authentication-after-redirect-stores-wrong-credentials-expected.txt.
* platform/wk2/fast/loader/main-document-url-for-non-http-loads-expected.txt: Added.
* platform/wk2/fast/loader/refresh-iframe-base-blank-expected.txt: Copied from LayoutTests/platform/wk2/http/tests/loading/authentication-after-redirect-stores-wrong-credentials/authentication-after-redirect-stores-wrong-credentials-expected.txt.
* platform/wk2/fast/loader/subframe-removes-itself-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/contentdispositionattachmentsandbox/cross-origin-frames-disabled-expected.txt: Added.
* platform/wk2/http/tests/contentextensions/block-everything-unless-domain-expected.txt: Added.
* platform/wk2/http/tests/loading/authentication-after-redirect-stores-wrong-credentials/authentication-after-redirect-stores-wrong-credentials-expected.txt:
* platform/wk2/http/tests/loading/bad-server-subframe-expected.txt: Added.
* platform/wk2/http/tests/loading/basic-auth-load-URL-with-consecutive-slashes-expected.txt:
* platform/wk2/http/tests/loading/redirect-with-no-location-crash-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/loading/server-redirect-for-provisional-load-caching-expected.txt: Added.
* platform/wk2/http/tests/loading/slow-parsing-subframe-expected.txt: Added.
* platform/wk2/http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt: Added.
* platform/wk2/http/tests/misc/window-dot-stop-expected.txt: Added.
* platform/wk2/http/tests/navigation/redirect-preserves-fragment-expected.txt: Added.
* platform/wk2/http/tests/navigation/redirect-to-fragment-expected.txt: Added.
* platform/wk2/http/tests/navigation/redirect-to-invalid-url-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-allowall-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-deny-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-ignore-deny-meta-tag-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-ignore-deny-meta-tag-in-body-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-ignore-deny-meta-tag-parent-same-origin-allow-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-ignore-deny-meta-tag-parent-same-origin-deny-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-invalid-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-conflict-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-allow-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-allow-expected.txt: Added.
* platform/wk2/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny-expected.txt: Added.
* platform/wk2/http/tests/security/blocked-on-redirect-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/data-url-iframe-in-main-frame-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-inherited-policy-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-javascript-url-iframe-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-main-frame-expected.txt: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-xslt-document-in-iframe-with-inherited-policy-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-main-frame-expected.txt: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-with-inherited-policy-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-main-frame-expected.txt: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/secure-image-after-upgrade-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/secure-image-after-upgrade-redirect-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/iframe-upgrade.https-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades-expected.txt: Added.
* platform/wk2/http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-css-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-http-to-https-script-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-https-to-http-script-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/http-0.9/iframe-blocked-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/about-blank-iframe-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/data-url-iframe-in-main-frame-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/mixedContent/data-url-script-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/mixedContent/empty-url-plugin-in-frame-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/mixedContent/insecure-css-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/mixedContent/insecure-css-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/insecure-css-with-secure-cookies-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/insecure-executable-css-with-secure-cookies-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/insecure-form-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/mixedContent/insecure-form-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/insecure-iframe-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/insecure-iframe-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/insecure-image-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/mixedContent/javascript-url-form-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/redirect-http-to-https-iframe-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/redirect-http-to-https-script-in-iframe-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/redirect-https-to-http-image-secure-cookies-block-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/redirect-https-to-http-image-secure-cookies-expected.txt: Added.
* platform/wk2/http/tests/security/mixedContent/redirect-https-to-http-script-in-iframe-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/http/tests/security/xssAuditor/script-tag-with-callbacks-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/inspector/page/frameScheduledNavigation-expected.txt: Added.
* platform/wk2/loader/go-back-cached-main-resource-expected.txt: Added.
* platform/wk2/webarchive/loading/mainresource-null-mimetype-crash-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/webarchive/loading/test-loading-archive-expected.txt: Copied from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.
* platform/wk2/webarchive/loading/video-in-webarchive-expected.txt: Renamed from LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt.

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

18 months agoDisconnect the SVGPathSegList items from their SVGPathElement before rebuilding a...
commit-queue@webkit.org [Wed, 21 Mar 2018 22:22:45 +0000 (22:22 +0000)]
Disconnect the SVGPathSegList items from their SVGPathElement before rebuilding a new list
https://bugs.webkit.org/show_bug.cgi?id=183723
<rdar://problem/38517871>

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-03-21
Reviewed by Daniel Bates.

Source/WebCore:

When setting the "d" attribute directly on a path, we rebuild the list
of path segments held for creating the property tear off. The old path
segments need to get disconnected from the path element. We already do
that when a path segment is replaced or removed.

Test: svg/dom/reuse-pathseg-after-changing-d.html

* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::svgAttributeChanged):
* svg/SVGPathSegList.cpp:
(WebCore::SVGPathSegList::clear): SVGPathSegListValues::clearContextAndRoles()
will now be called from SVGPathSegListValues::clear() via SVGListProperty::clearValues().
(WebCore::SVGPathSegList::replaceItem):
(WebCore::SVGPathSegList::removeItem):
(WebCore::SVGPathSegList::clearContextAndRoles): Deleted.
* svg/SVGPathSegList.h: SVGPathSegListValues::clearContextAndRoles() will
now be called from SVGPathSegListValues::clear() via SVGListProperty::initializeValues().
* svg/SVGPathSegListValues.cpp:
(WebCore::SVGPathSegListValues::clearItemContextAndRole):
(WebCore::SVGPathSegListValues::clearContextAndRoles):
* svg/SVGPathSegListValues.h:
(WebCore::SVGPathSegListValues::operator=):
(WebCore::SVGPathSegListValues::clear):

LayoutTests:

* svg/dom/reuse-pathseg-after-changing-d-expected.txt: Added.
* svg/dom/reuse-pathseg-after-changing-d.html: Added.

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

18 months ago[Web Animations] Ensure animationcancel and transitioncancel events are dispatched
graouts@webkit.org [Wed, 21 Mar 2018 21:49:02 +0000 (21:49 +0000)]
[Web Animations] Ensure animationcancel and transitioncancel events are dispatched
https://bugs.webkit.org/show_bug.cgi?id=183864

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Record progressions of Mozilla tests.

* css-animations/test_animation-cancel-expected.txt:
* css-animations/test_animation-currenttime-expected.txt:
* css-animations/test_animation-finished-expected.txt:
* css-animations/test_animation-reverse-expected.txt:
* css-transitions/test_animation-cancel-expected.txt:
* css-transitions/test_animation-pausing-expected.txt:
* css-transitions/test_animation-ready-expected.txt:

Source/WebCore:

In order to correctly dispatch animationcancel and transitioncancel events, we must call cancel() on CSSAnimation and CSSTransitions
objects that are removed while in a play or pause phase. Additionally, we cancel declarative animations that are moving from a valid
to a null timeline. Finally, when cancel() is called on a declarative animation, we record the timestamp and manually call
invalidateDOMEvents() passing that timestamp in to ensure that the right phase change is recorded and results in the queuing of
animationcancel and transitioncancel events.

* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::updateCSSAnimationsForElement): Make sure we cancel all recorded CSS Animations when we newly get a
"display: none" style. We also call the new cancelOrRemoveDeclarativeAnimation() method, instead of removing animations outright,
for all animations that previously existed but are no longer listed in the current style.
(WebCore::AnimationTimeline::updateCSSTransitionsForElement): Like in updateCSSAnimationsForElement(), we cancel all recorded CSS
Transitions when we newly get a "display: none" style. We now use the refactored removeDeclarativeAnimation() method to remove an
a transition for a property that was already transitioned in the previous style but has a new backing Animation object. Finally,
like in updateCSSAnimationsForElement(), we call the new cancelOrRemoveDeclarativeAnimation() method, instead of removing transitions
outright, for all transitions that previously existed but are no longer listed in the current style.
(WebCore::AnimationTimeline::removeDeclarativeAnimation): Refactor code into this new method to remove a declarative animation.
(WebCore::AnimationTimeline::cancelOrRemoveDeclarativeAnimation): Cancels a DeclarativeAnimation if it's active or removes it right away.
* animation/AnimationTimeline.h:
* animation/DeclarativeAnimation.cpp:
(WebCore::DeclarativeAnimation::setTimeline): If we're moving from a valid timeline to a null timeline, call cancel() on this animation
such that an animationcancel or transitioncancel event can be dispatched.
(WebCore::DeclarativeAnimation::cancel): Cancelations require the computation of the time at which a declarative animation was canceled,
so we record the animation's active time as it's canceled and manually call invalidateDOMEvents() with that time after the general cancel()
code has run.
(WebCore::DeclarativeAnimation::invalidateDOMEvents): Accept an explicit timestamp for cancel events.
* animation/DeclarativeAnimation.h:
* animation/WebAnimation.h:

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

18 months agoScrollViewInsetTests.RestoreInitialContentOffsetAfterCrash API test is failing with...
cdumez@apple.com [Wed, 21 Mar 2018 21:19:06 +0000 (21:19 +0000)]
ScrollViewInsetTests.RestoreInitialContentOffsetAfterCrash API test is failing with async delegates
https://bugs.webkit.org/show_bug.cgi?id=183787

Reviewed by Wenson Hsieh.

Source/WebCore:

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
* loader/FrameLoaderClient.h:

Source/WebKit:

Without asynchronous policy delegates, when the client requests a navigation, we would:
1. Do a synchronous navigation policy check
2. If the client allows the navigation, start the provisional load

Starting the provisional load would freeze the layer tree until first meaningful
layout via WebFrameLoaderClient::provisionalLoadStarted() -> WebPage::didStartPageTransition().

When constructing a WebView and then requesting a load right away. This would make sure
we do not commit a layer tree for the initial about:blank page because the layer tree
would be frozen until we have something meaningful to show for the following load.

However, with asynchronous policy delegates, we are able to do a layer tree commit
during the asynchronous navigation policy check because the layer tree is not frozen
yet (provisional load has not started) and the process is not stuck on synchronous
IPC. When constructing a WebView and then requesting a load right away, this would
allow a layer tree commit for about:blank to happen before we've even started the
load. This would cause some API tests to fail on iOS.

To address the issue, we try and maintain pre-existing behavior by freezing the
layer tree during navigation policy decision.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebKit::WebFrameLoaderClient::didDecidePolicyForNavigationAction):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didStartNavigationPolicyCheck):
(WebKit::WebPage::didCompleteNavigationPolicyCheck):
* WebProcess/WebPage/WebPage.h:

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/ios/ScrollViewInsetTests.mm:
(-[AsyncPolicyDelegateForInsetTest webView:didFinishNavigation:]):
(-[AsyncPolicyDelegateForInsetTest webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[AsyncPolicyDelegateForInsetTest webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[AsyncPolicyDelegateForInsetTest webViewWebContentProcessDidTerminate:]):
(TestWebKitAPI::TEST):

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

18 months agoSkip imported/w3c/web-platform-tests/service-workers/service-worker/appcache-ordering...
ryanhaddad@apple.com [Wed, 21 Mar 2018 21:16:36 +0000 (21:16 +0000)]
Skip imported/w3c/web-platform-tests/service-workers/service-worker/appcache-ordering-main.https.html.
https://bugs.webkit.org/show_bug.cgi?id=182176

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

18 months agoSkip http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown.html.
ryanhaddad@apple.com [Wed, 21 Mar 2018 21:16:34 +0000 (21:16 +0000)]
Skip http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown.html.
https://bugs.webkit.org/show_bug.cgi?id=183093

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

18 months agoMark media/track/track-css-matching-timestamps.html as flaky.
ryanhaddad@apple.com [Wed, 21 Mar 2018 21:16:32 +0000 (21:16 +0000)]
Mark media/track/track-css-matching-timestamps.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=183220

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

18 months agoClean up platform VideoFullscreenLayerManager
eric.carlson@apple.com [Wed, 21 Mar 2018 21:13:58 +0000 (21:13 +0000)]
Clean up platform VideoFullscreenLayerManager
https://bugs.webkit.org/show_bug.cgi?id=183859
<rdar://problem/38715419>

Reviewed by Jer Noble.

No new tests, no functional change.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/VideoFullscreenLayerManager.h: Copied from Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.h.
(WebCore::VideoFullscreenLayerManager::~VideoFullscreenLayerManager):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyVideoLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformLayer const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenFrame):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoLayerGravity):
(WebCore::MediaPlayerPrivateAVFoundationObjC::requiresTextTrackRepresentation const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::syncTextTrackBounds):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setTextTrackRepresentation):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::platformLayer const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenFrame):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::requiresTextTrackRepresentation const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::syncTextTrackBounds):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setTextTrackRepresentation):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::platformLayer const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenFrame):
* platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.h: Renamed from Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.h.
* platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm: Renamed from Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.mm.
(-[WebVideoContainerLayer setBounds:]):
(-[WebVideoContainerLayer setPosition:]):
(WebCore::VideoFullscreenLayerManagerObjC::VideoFullscreenLayerManagerObjC):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoLayer):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenLayer):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenFrame):
(WebCore::VideoFullscreenLayerManagerObjC::didDestroyVideoLayer):
(WebCore::VideoFullscreenLayerManagerObjC::requiresTextTrackRepresentation const):
(WebCore::VideoFullscreenLayerManagerObjC::syncTextTrackBounds):
(WebCore::VideoFullscreenLayerManagerObjC::setTextTrackRepresentation):

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

18 months agoAllow the WebContent process to read ViewBridge preferences
bfulgham@apple.com [Wed, 21 Mar 2018 21:10:01 +0000 (21:10 +0000)]
Allow the WebContent process to read ViewBridge preferences
https://bugs.webkit.org/show_bug.cgi?id=183862
<rdar://problem/38459456>

Reviewed by Eric Carlson.

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

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

18 months agoREGRESSION (r226059?): [macOS WK2] Layout Test fast/mediastream/MediaStream-MediaElem...
jer.noble@apple.com [Wed, 21 Mar 2018 21:07:55 +0000 (21:07 +0000)]
REGRESSION (r226059?): [macOS WK2] Layout Test fast/mediastream/MediaStream-MediaElement-setObject-null.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=181069
<rdar://problem/36188221>

Reviewed by Youenn Fablet.

Pass the function into the play() promise handler rather than calling it immediately.

* fast/mediastream/MediaStream-MediaElement-setObject-null.html:
* platform/mac-wk2/TestExpectations:

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

18 months ago[Web Animations] Dispatch DOM events for CSS Transitions and CSS Animations implement...
graouts@webkit.org [Wed, 21 Mar 2018 19:41:26 +0000 (19:41 +0000)]
[Web Animations] Dispatch DOM events for CSS Transitions and CSS Animations implemented as Web Animations
https://bugs.webkit.org/show_bug.cgi?id=183781

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Some of the Mozilla tests no longer time out and partially pass, marking the progression.

* css-animations/test_animation-starttime-expected.txt:
* css-animations/test_element-get-animations-expected.txt:

Source/WebCore:

Now that we've implemented CSS Animations and CSS Transitions as Web Animations (webkit.org/b/183504) we can dispatch DOM events
for targets of DeclarativeAnimation objects. To do that, we add a new invalidateDOMEvents() method on DeclarativeAnimations which
is called when the timer scheduled after the timing model has been invalidated fires in DocumentTimeline::performInvalidationTask().
When we check for DOM events to dispatch, we look at the last recorded phase and iteration and determine whether the state of the
animation has changed. We use a GenericEventQueue to enqueue the events such that they are dispatched asynchronously at a moment
when it is safe to evaluate script.

* animation/AnimationEffectReadOnly.h: Make currentIteration() public since we now need it in DeclarativeAnimation::invalidateDOMEvents().
* animation/CSSAnimation.cpp:
(WebCore::CSSAnimation::create): Pass the animation target to the constructor instead of its document.
(WebCore::CSSAnimation::CSSAnimation): Pass the animation target to the superclass instead of its document.
* animation/CSSAnimation.h:
* animation/CSSTransition.cpp:
(WebCore::CSSTransition::create): Pass the animation target to the constructor instead of its document.
(WebCore::CSSTransition::CSSTransition): Pass the animation target to the superclass instead of its document.
* animation/CSSTransition.h:
* animation/DeclarativeAnimation.cpp:
(WebCore::DeclarativeAnimation::DeclarativeAnimation): Expect an Element instead of a Document and use that element as the target of the
GenericEventQueue that we initialize. We also register this element as our m_target.
(WebCore::DeclarativeAnimation::~DeclarativeAnimation): Close the GenericEventQueue member upon destruction.
(WebCore::DeclarativeAnimation::initialize): We need to call pause() for declarative animations that aren't playing so that the animation's
playState is set correctly and the animation is not idle.
(WebCore::DeclarativeAnimation::phaseWithoutEffect const): Because we may need to get an animation's current phase in invalidateDOMEvents()
after an animation's effect has been removed, we provide an alternate way to compute the phase just by looking at the animation's current time.
(WebCore::DeclarativeAnimation::invalidateDOMEvents): Based on the previous and current pending state, iteration and phase, we enqueue animation
and transition DOM events as specified by the CSS Animations Level 2 and CSS Transitions Level 2 specifications.
(WebCore::DeclarativeAnimation::enqueueDOMEvent): Enqueue an event on the GenericEventQueue based on the animation type.
* animation/DeclarativeAnimation.h:
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::performInvalidationTask): We call invalidateDOMEvents() on all declarative animations registered with this timeline
now that the timing model has been invalidated.
* dom/EventNames.h: Add the names of newly-implemented events (animationcancel, transitioncancel, transitionrun and transitionstart).
* dom/GlobalEventHandlers.idl: Add new attribute-based event handlers for the newly-implemented events.
* html/HTMLAttributeNames.in: Add new attribute-based event handlers for the newly-implemented events.
* html/HTMLElement.cpp:
(WebCore::HTMLElement::createEventHandlerNameMap): Add new attribute-based event handlers for the newly-implemented events.

LayoutTests:

New attribute-based event handlers are now exposed, update the expectations for those.

* js/dom/dom-static-property-for-in-iteration-expected.txt:

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

18 months agoRefactor the PtrTag list as a macro so that we can auto-generate code that enumerates...
mark.lam@apple.com [Wed, 21 Mar 2018 19:33:01 +0000 (19:33 +0000)]
Refactor the PtrTag list as a macro so that we can auto-generate code that enumerates each PtrTag.
https://bugs.webkit.org/show_bug.cgi?id=183861
<rdar://problem/38716822>

Reviewed by Filip Pizlo.

Also added ptrTagName() to aid debugging.  ptrTagName() is implemented using this
new PtrTag macro list.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* runtime/PtrTag.cpp: Added.
(JSC::ptrTagName):
* runtime/PtrTag.h:

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

18 months agoAdd support for an overridable byline in blog posts
jond@apple.com [Wed, 21 Mar 2018 18:44:35 +0000 (18:44 +0000)]
Add support for an overridable byline in blog posts
https://bugs.webkit.org/show_bug.cgi?id=183799

Reviewed by Timothy Hatcher.

* wp-content/themes/webkit/functions.php:

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

18 months agoUse CodeBlock::instructions()[] and CodeBlock::bytecodeOffset() instead of doing...
mark.lam@apple.com [Wed, 21 Mar 2018 18:23:30 +0000 (18:23 +0000)]
Use CodeBlock::instructions()[] and CodeBlock::bytecodeOffset() instead of doing own pointer math.
https://bugs.webkit.org/show_bug.cgi?id=183857
<rdar://problem/38712184>

Reviewed by JF Bastien.

We should avoid doing pointer math with CodeBlock::instructions().begin().
Instead, we should use the operator[] that comes with CodeBlock::instructions()
for computing an Instruction*, and use CodeBlock::bytecodeOffset() for computing
the bytecode offset of a given Instruction*.  These methods will do assertions
which helps catch bugs sooner, plus they are more descriptive of the operation
we're trying to do.

* bytecode/BytecodeKills.h:
(JSC::BytecodeKills::operandIsKilled const):
(JSC::BytecodeKills::forEachOperandKilledAt const):
* bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFromLLInt):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::arithProfileForBytecodeOffset):
(JSC::CodeBlock::bytecodeOffsetFromCallSiteIndex):
* bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFromLLInt):
* bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFromLLInt):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
* dfg/DFGOSRExit.cpp:
(JSC::DFG::reifyInlinedCallFrames):
* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::callSiteBitsAsBytecodeOffset const):
(JSC::CallFrame::currentVPC const):
(JSC::CallFrame::setCurrentVPC):
* jit/JITCall.cpp:
(JSC::JIT::compileOpCall):
* jit/JITInlines.h:
(JSC::JIT::updateTopCallFrame):
(JSC::JIT::copiedInstruction):
* jit/JITOpcodes.cpp:
(JSC::JIT::privateCompileHasIndexedProperty):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::privateCompileHasIndexedProperty):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::privateCompileGetByVal):
(JSC::JIT::privateCompileGetByValWithCachedId):
(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutByValWithCachedId):
* jit/SlowPathCall.h:
(JSC::JITSlowPathCall::call):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::llint_trace_operand):
(JSC::LLInt::llint_trace_value):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setupGetByIdPrototypeCache): Deleted.
(JSC::LLInt::getByVal): Deleted.
(JSC::LLInt::handleHostCall): Deleted.
(JSC::LLInt::setUpCall): Deleted.
(JSC::LLInt::genericCall): Deleted.
(JSC::LLInt::varargsSetup): Deleted.
(JSC::LLInt::llint_throw_stack_overflow_error): Deleted.
(JSC::LLInt::llint_stack_check_at_vm_entry): Deleted.
(JSC::LLInt::llint_write_barrier_slow): Deleted.
(JSC::LLInt::llint_crash): Deleted.
* runtime/SamplingProfiler.cpp:
(JSC::tryGetBytecodeIndex):

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

18 months agoCompile error when not using IOSurface canvas backing store.
pvollan@apple.com [Wed, 21 Mar 2018 17:52:44 +0000 (17:52 +0000)]
Compile error when not using IOSurface canvas backing store.
https://bugs.webkit.org/show_bug.cgi?id=183855

Reviewed by Brent Fulgham.

The method IOSurface::createFromImageBuffer is only referenced when IOSurface
is used as canvas backing store.

* platform/graphics/cocoa/IOSurface.h:
* platform/graphics/cocoa/IOSurface.mm:

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

18 months agoFix DataInteractionTests.InjectedBundleAllowPerformTwoStepDrop to use synchronouslyLo...
cdumez@apple.com [Wed, 21 Mar 2018 17:48:57 +0000 (17:48 +0000)]
Fix DataInteractionTests.InjectedBundleAllowPerformTwoStepDrop to use synchronouslyLoadTestPageNamed
https://bugs.webkit.org/show_bug.cgi?id=183858

Reviewed by Wenson Hsieh.

Fix DataInteractionTests.InjectedBundleAllowPerformTwoStepDrop to use synchronouslyLoadTestPageNamed
instead of loadTestPageNamed because injecting script.

* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(TestWebKitAPI::TEST):

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

18 months agobtjs should print the bytecode offset in the stack trace for JS frames
keith_miller@apple.com [Wed, 21 Mar 2018 17:38:32 +0000 (17:38 +0000)]
btjs should print the bytecode offset in the stack trace for JS frames
https://bugs.webkit.org/show_bug.cgi?id=183856

Reviewed by Filip Pizlo.

* interpreter/CallFrame.cpp:
(JSC::CallFrame::bytecodeOffset):
(JSC::CallFrame::dump):

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

18 months ago[Web Animations] Import CSS Animations and CSS Transitions as Web Animations tests...
graouts@webkit.org [Wed, 21 Mar 2018 17:33:08 +0000 (17:33 +0000)]
[Web Animations] Import CSS Animations and CSS Transitions as Web Animations tests from Mozilla
https://bugs.webkit.org/show_bug.cgi?id=183851

Reviewed by Jon Lee.

LayoutTests/imported/mozilla:

Import a series of tests created by Mozilla contributors for CSS Animations and CSS Transitions as Web Animations.

* css-animations/test_animation-cancel-expected.txt: Added.
* css-animations/test_animation-cancel.html: Added.
* css-animations/test_animation-computed-timing-expected.txt: Added.
* css-animations/test_animation-computed-timing.html: Added.
* css-animations/test_animation-currenttime-expected.txt: Added.
* css-animations/test_animation-currenttime.html: Added.
* css-animations/test_animation-finish-expected.txt: Added.
* css-animations/test_animation-finish.html: Added.
* css-animations/test_animation-finished-expected.txt: Added.
* css-animations/test_animation-finished.html: Added.
* css-animations/test_animation-id-expected.txt: Added.
* css-animations/test_animation-id.html: Added.
* css-animations/test_animation-pausing-expected.txt: Added.
* css-animations/test_animation-pausing.html: Added.
* css-animations/test_animation-playstate-expected.txt: Added.
* css-animations/test_animation-playstate.html: Added.
* css-animations/test_animation-ready-expected.txt: Added.
* css-animations/test_animation-ready.html: Added.
* css-animations/test_animation-reverse-expected.txt: Added.
* css-animations/test_animation-reverse.html: Added.
* css-animations/test_animation-starttime-expected.txt: Added.
* css-animations/test_animation-starttime.html: Added.
* css-animations/test_animations-dynamic-changes-expected.txt: Added.
* css-animations/test_animations-dynamic-changes.html: Added.
* css-animations/test_cssanimation-animationname-expected.txt: Added.
* css-animations/test_cssanimation-animationname.html: Added.
* css-animations/test_document-get-animations-expected.txt: Added.
* css-animations/test_document-get-animations.html: Added.
* css-animations/test_effect-target-expected.txt: Added.
* css-animations/test_effect-target.html: Added.
* css-animations/test_element-get-animations-expected.txt: Added.
* css-animations/test_element-get-animations.html: Added.
* css-animations/test_event-dispatch-expected.txt: Added.
* css-animations/test_event-dispatch.html: Added.
* css-animations/test_event-order-expected.txt: Added.
* css-animations/test_event-order.html: Added.
* css-animations/test_keyframeeffect-getkeyframes.html: Added.
* css-animations/test_pseudoElement-get-animations-expected.txt: Added.
* css-animations/test_pseudoElement-get-animations.html: Added.
* css-animations/test_setting-effect.html: Added.
* css-transitions/test_animation-cancel-expected.txt: Added.
* css-transitions/test_animation-cancel.html: Added.
* css-transitions/test_animation-computed-timing-expected.txt: Added.
* css-transitions/test_animation-computed-timing.html: Added.
* css-transitions/test_animation-currenttime-expected.txt: Added.
* css-transitions/test_animation-currenttime.html: Added.
* css-transitions/test_animation-finished-expected.txt: Added.
* css-transitions/test_animation-finished.html: Added.
* css-transitions/test_animation-pausing-expected.txt: Added.
* css-transitions/test_animation-pausing.html: Added.
* css-transitions/test_animation-ready-expected.txt: Added.
* css-transitions/test_animation-ready.html: Added.
* css-transitions/test_animation-starttime-expected.txt: Added.
* css-transitions/test_animation-starttime.html: Added.
* css-transitions/test_csstransition-transitionproperty-expected.txt: Added.
* css-transitions/test_csstransition-transitionproperty.html: Added.
* css-transitions/test_document-get-animations-expected.txt: Added.
* css-transitions/test_document-get-animations.html: Added.
* css-transitions/test_effect-target-expected.txt: Added.
* css-transitions/test_effect-target.html: Added.
* css-transitions/test_element-get-animations-expected.txt: Added.
* css-transitions/test_element-get-animations.html: Added.
* css-transitions/test_event-dispatch-expected.txt: Added.
* css-transitions/test_event-dispatch.html: Added.
* css-transitions/test_keyframeeffect-getkeyframes-expected.txt: Added.
* css-transitions/test_keyframeeffect-getkeyframes.html: Added.
* css-transitions/test_pseudoElement-get-animations-expected.txt: Added.
* css-transitions/test_pseudoElement-get-animations.html: Added.
* css-transitions/test_setting-effect.html: Added.
* resources/testcommon.js: Added.

LayoutTests:

Mark all imported tests as flaky failures or timeouts while we work on making them pass reliably.
Each test has a dedicated bug tracking progress.

* TestExpectations:

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

18 months agoRemove temporary build fix now that underlying issue is resolved
bfulgham@apple.com [Wed, 21 Mar 2018 16:32:15 +0000 (16:32 +0000)]
Remove temporary build fix now that underlying issue is resolved
https://bugs.webkit.org/show_bug.cgi?id=183854
<rdar://problem/37198715>

Reviewed by Eric Carlson.

The build environment issues that forced us to disable this setting
have been corrected, so this should be turned on for all builds.

* pal/spi/cf/CFNetworkSPI.h:

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

18 months ago[LayoutReloaded] Enable formatting state for InlineFormattingContext
zalan@apple.com [Wed, 21 Mar 2018 16:32:00 +0000 (16:32 +0000)]
[LayoutReloaded] Enable formatting state for InlineFormattingContext
https://bugs.webkit.org/show_bug.cgi?id=183853

Reviewed by Antti Koivisto.

* LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:
(BlockFormattingContext.prototype._contentHeight):
* LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:
(InlineFormattingContext):
(InlineFormattingContext.prototype.layout):
(InlineFormattingContext.prototype._createNewLine):
* LayoutReloaded/LayoutState.js:
(LayoutState.prototype.formattingState):
* LayoutReloaded/README.md:
* LayoutReloaded/Utils.js:
(Utils._dumpTree):
* LayoutReloaded/test/index.html:
* LayoutReloaded/test/simple-inline-text.html: Added.

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

18 months ago[LayoutReloaded] Move inline lines to InlineFormattingState.
zalan@apple.com [Wed, 21 Mar 2018 14:44:08 +0000 (14:44 +0000)]
[LayoutReloaded] Move inline lines to InlineFormattingState.
https://bugs.webkit.org/show_bug.cgi?id=183814

Reviewed by Antti Koivisto.

InlineFormattingContext is not supposed to hold state.

* LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:
(InlineFormattingContext):
(InlineFormattingContext.prototype._commitLine):
(InlineFormattingContext.prototype._createNewLine):
(InlineFormattingContext.prototype.lines): Deleted.
(InlineFormattingContext.prototype._initializeLine): Deleted.
* LayoutReloaded/FormattingState/InlineFormattingState.js:
(InlineFormattingState):
(InlineFormattingState.prototype.lines):
(InlineFormattingState.prototype.appendLine):

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

18 months ago[WPE] Disable most of TestWebKitFaviconDatabase.
Ms2ger@igalia.com [Wed, 21 Mar 2018 14:37:03 +0000 (14:37 +0000)]
[WPE] Disable most of TestWebKitFaviconDatabase.
https://bugs.webkit.org/show_bug.cgi?id=183813

Unreviewed test gardening.

The relevant APIs were mostly removed in r223953, making this test
time out consistently.

* TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:

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

18 months ago[CoordGraphics] Track dirty rects that need update in CoordinatedGraphicsLayer
zandobersek@gmail.com [Wed, 21 Mar 2018 14:16:22 +0000 (14:16 +0000)]
[CoordGraphics] Track dirty rects that need update in CoordinatedGraphicsLayer
https://bugs.webkit.org/show_bug.cgi?id=175376

Reviewed by Carlos Garcia Campos.

Follow the GraphicsLayerCA class and track rectangles in need of display
in a Vector object. In case the whole layer needs updating, it's marked
separately, and further rects are ignored.

During layer flush, all the rects are used to invalidate the backing
store, or a single layer-sized rect is used in case the whole layer has
to be updated. We can also bail early from updateContentBuffers() if
there are no dirty rects recorded and there's no pending visible rect
adjustment.

At the end of updateContentBuffers() we now test for an existing
previous backing store before inquiring the backing store if the visible
area is already covered, enabling deletion of this backing store.

* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::setNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setNeedsDisplayInRect):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:

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

18 months ago[WPE] Build failure with ENABLE_VIDEO=OFF when GStreamer is not available
clopez@igalia.com [Wed, 21 Mar 2018 12:37:03 +0000 (12:37 +0000)]
[WPE] Build failure with ENABLE_VIDEO=OFF when GStreamer is not available
https://bugs.webkit.org/show_bug.cgi?id=183811

Reviewed by Philippe Normand.

Add build guards for USE_GSTREAMER.

No new tests, it is a build fix.

* platform/graphics/gstreamer/GStreamerUtilities.h:

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

18 months ago[GTK] Mark fast/forms/file/entries-api/webkitdirectory-open-panel.html as passing.
Ms2ger@igalia.com [Wed, 21 Mar 2018 10:32:25 +0000 (10:32 +0000)]
[GTK] Mark fast/forms/file/entries-api/webkitdirectory-open-panel.html as passing.
https://bugs.webkit.org/show_bug.cgi?id=176024

Unreviewed test gardening.

It has been passing since the test was changed not to rely on the order
of files in the list in r229642.

* platform/gtk/TestExpectations:

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

18 months ago[iOS] Text highlighted by the Find UI overlaps with NBC news header on google.com
fred.wang@free.fr [Wed, 21 Mar 2018 09:46:12 +0000 (09:46 +0000)]
[iOS] Text highlighted by the Find UI overlaps with NBC news header on google.com
https://bugs.webkit.org/show_bug.cgi?id=183658

Patch by Frederic Wang <fwang@igalia.com> on 2018-03-21
Reviewed by Tim Horton.

Source/WebKit:

On Mobile, many sites have overlay headers or footers that may overlap with the highlighted
text inside a scrollable overflow node. To workaround that issue, this commit changes the
behavior so that the text is revealed at the center of the overflow node.

* WebProcess/WebPage/ios/FindControllerIOS.mm:
(WebKit::FindController::didFindString): Use alignCenterAlways instead of alignToEdgeIfNeeded.

LayoutTests:

Improve the test added in r224284, so that we test when a result is revealed at
the center of the overflow node.

* platform/ios/fast/scrolling/find-text-in-overflow-node.html: Put some content after
'match 4' so that the overflow node can scroll and make the text appear at the center.
Perform more accurate testing of the scrollTop of the overflow node.
* platform/ios/fast/scrolling/find-text-in-overflow-node-expected.txt: Update expectation.

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

18 months agoUnreviewed. Fix GTK and WPE debug build after r229798.
carlosgc@webkit.org [Wed, 21 Mar 2018 08:53:03 +0000 (08:53 +0000)]
Unreviewed. Fix GTK and WPE debug build after r229798.

Fix a typo in an ASSERT. Also convert several RELEASE_ASSERT to ASSERT that I forgot to do before landing.

* API/glib/JSCCallbackFunction.cpp:
(JSC::JSCCallbackFunction::JSCCallbackFunction):
* API/glib/JSCContext.cpp:
(jscContextSetVirtualMachine):
(jscContextGetJSContext):
(wrapperMap):
(jscContextHandleExceptionIfNeeded):
* API/glib/JSCValue.cpp:
(jscValueCallFunction):
* API/glib/JSCVirtualMachine.cpp:
(addWrapper):
(removeWrapper):
(jscVirtualMachineSetContextGroup):
(jscVirtualMachineAddContext):
(jscVirtualMachineRemoveContext):
* API/glib/JSCWrapperMap.cpp:
(JSC::WrapperMap::gobjectWrapper):
(JSC::WrapperMap::unwrap):
(JSC::WrapperMap::registerClass):
(JSC::WrapperMap::createJSWrappper):
(JSC::WrapperMap::wrappedObject const):

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

18 months ago[GTK][WPE] JSC bindings not introspectable
carlosgc@webkit.org [Wed, 21 Mar 2018 08:44:03 +0000 (08:44 +0000)]
[GTK][WPE] JSC bindings not introspectable
https://bugs.webkit.org/show_bug.cgi?id=136989

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Make it possible to include individual headers when building WebKit layer.

* API/glib/JSCAutocleanups.h:
* API/glib/JSCClass.h:
* API/glib/JSCContext.h:
* API/glib/JSCException.h:
* API/glib/JSCValue.h:
* API/glib/JSCVersion.h.in:
* API/glib/JSCVirtualMachine.h:

Source/WebKit:

Deprecate the functions that are not introspectable due to JSC C API in GTK+ port and remove them in WPE
port. Add alternative functions using the new JSC GLib API. We no longer need to keep a global context attached
to every view. We can simply create a temporary global context on demand and release it after 1 second. This
also allows us to remove WebPageProxy::javascriptGlobalContext() and all the related code.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* UIProcess/API/glib/WebKitJavascriptResult.cpp:
(_WebKitJavascriptResult::_WebKitJavascriptResult):
(webkitJavascriptResultCreate):
(webkit_javascript_result_get_global_context):
(webkit_javascript_result_get_value):
(webkit_javascript_result_get_js_value):
* UIProcess/API/glib/WebKitJavascriptResultPrivate.h:
(SharedJavascriptContext::singleton):
(SharedJavascriptContext::SharedJavascriptContext):
(SharedJavascriptContext::getOrCreateContext):
(SharedJavascriptContext::releaseContext):
* UIProcess/API/glib/WebKitUserContentManager.cpp:
* UIProcess/API/glib/WebKitWebView.cpp:
(webkit_web_view_get_javascript_global_context):
(webkitWebViewRunJavaScriptCallback):
* UIProcess/API/gtk/PageClientImpl.cpp:
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/WebKitJavascriptResult.h:
* UIProcess/API/gtk/WebKitWebView.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/APIViewClient.h:
(API::ViewClient::handleDownloadRequest):
* UIProcess/API/wpe/PageClientImpl.cpp:
* UIProcess/API/wpe/PageClientImpl.h:
* UIProcess/API/wpe/WPEView.cpp:
* UIProcess/API/wpe/WPEView.h:
* UIProcess/API/wpe/WebKitJavascriptResult.h:
* UIProcess/API/wpe/WebKitWebView.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/gtk/WebPageProxyGtk.cpp:
* UIProcess/wpe/WebPageProxyWPE.cpp:
* WebProcess/InjectedBundle/API/glib/WebKitFrame.cpp:
(webkit_frame_get_js_context):
(webkit_frame_get_js_context_for_script_world):
* WebProcess/InjectedBundle/API/gtk/WebKitFrame.h:
* WebProcess/InjectedBundle/API/wpe/WebKitFrame.h:

Tools:

Use the new API instead of the deprecated one.

* MiniBrowser/gtk/main.c:
(aboutDataScriptMessageReceivedCallback):
* TestWebKitAPI/Tests/WebKitGLib/FrameTest.cpp:
(WebKitFrameTest::testJavaScriptContext):
* TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:
(testWebViewRunJavaScript):
* TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:
(consoleMessageSentCallback):
(echoCallback):
(windowObjectCleared):
(methodCallCallback):
* TestWebKitAPI/Tests/WebKitGLib/WebProcessTest.cpp:
(runTest):
(webProcessTestRunnerFinalize):
(windowObjectClearedCallback):
* TestWebKitAPI/glib/PlatformGTK.cmake:
* TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:
(WebViewTest::javascriptResultToCString):
(WebViewTest::javascriptResultToNumber):
(WebViewTest::javascriptResultToBoolean):
(WebViewTest::javascriptResultIsNull):
(WebViewTest::javascriptResultIsUndefined):

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

18 months ago[GTK][WPE] Initial implementation of JavaScriptCore glib bindings
carlosgc@webkit.org [Wed, 21 Mar 2018 08:42:08 +0000 (08:42 +0000)]
[GTK][WPE] Initial implementation of JavaScriptCore glib bindings
https://bugs.webkit.org/show_bug.cgi?id=164061

Reviewed by Michael Catanzaro.

.:

Set global variables used by the makefiles.

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/JavaScriptCore:

Add initial GLib API for JavaScriptCore.

* API/JSAPIWrapperObject.h:
* API/glib/JSAPIWrapperObjectGLib.cpp: Added.
(jsAPIWrapperObjectHandleOwner):
(JSAPIWrapperObjectHandleOwner::finalize):
(JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots):
(JSC::JSCallbackObject<JSAPIWrapperObject>::createStructure):
(JSC::JSAPIWrapperObject::JSAPIWrapperObject):
(JSC::JSAPIWrapperObject::finishCreation):
(JSC::JSAPIWrapperObject::setWrappedObject):
(JSC::JSAPIWrapperObject::visitChildren):
* API/glib/JSCAutocleanups.h: Added.
* API/glib/JSCCallbackFunction.cpp: Added.
(JSC::callAsFunction):
(JSC::callAsConstructor):
(JSC::JSCCallbackFunction::create):
(JSC::JSCCallbackFunction::JSCCallbackFunction):
(JSC::JSCCallbackFunction::call):
(JSC::JSCCallbackFunction::construct):
(JSC::JSCCallbackFunction::destroy):
* API/glib/JSCCallbackFunction.h: Added.
(JSC::JSCCallbackFunction::createStructure):
(JSC::JSCCallbackFunction::functionCallback):
(JSC::JSCCallbackFunction::constructCallback):
* API/glib/JSCClass.cpp: Added.
(jscClassGetProperty):
(jscClassSetProperty):
(jscClassDispose):
(jscClassConstructed):
(jsc_class_class_init):
(jscClassCreate):
(jscClassGetJSClass):
(jscClassGetOrCreateJSWrapper):
(jscClassInvalidate):
(jsc_class_get_name):
(jsc_class_get_parent):
(jsc_class_add_constructor):
(jsc_class_add_method):
(jsc_class_add_property):
* API/glib/JSCClass.h: Added.
* API/glib/JSCClassPrivate.h: Added.
* API/glib/JSCContext.cpp: Added.
(ExceptionHandler::ExceptionHandler):
(ExceptionHandler::~ExceptionHandler):
(jscContextSetVirtualMachine):
(jscContextGetProperty):
(jscContextSetProperty):
(jscContextConstructed):
(jscContextDispose):
(jsc_context_class_init):
(jscContextGetOrCreate):
(jscContextGetJSContext):
(wrapperMap):
(jscContextGetOrCreateValue):
(jscContextValueDestroyed):
(jscContextGetJSWrapper):
(jscContextGetOrCreateJSWrapper):
(jscContextWrappedObject):
(jscContextPushCallback):
(jscContextPopCallback):
(jscContextGArrayToJSArray):
(jscContextJSArrayToGArray):
(jscContextGValueToJSValue):
(jscContextJSValueToGValue):
(jsc_context_new):
(jsc_context_new_with_virtual_machine):
(jsc_context_get_virtual_machine):
(jsc_context_get_exception):
(jsc_context_throw):
(jsc_context_throw_exception):
(jsc_context_push_exception_handler):
(jsc_context_pop_exception_handler):
(jscContextHandleExceptionIfNeeded):
(jsc_context_get_current):
(jsc_context_evaluate):
(jsc_context_evaluate_with_source_uri):
(jsc_context_set_value):
(jsc_context_get_value):
(jsc_context_register_class):
* API/glib/JSCContext.h: Added.
* API/glib/JSCContextPrivate.h: Added.
* API/glib/JSCDefines.h: Copied from Source/JavaScriptCore/API/JSAPIWrapperObject.h.
* API/glib/JSCException.cpp: Added.
(jscExceptionDispose):
(jsc_exception_class_init):
(jscExceptionCreate):
(jscExceptionGetJSValue):
(jscExceptionEnsureProperties):
(jsc_exception_new):
(jsc_exception_get_message):
(jsc_exception_get_line_number):
(jsc_exception_get_source_uri):
* API/glib/JSCException.h: Added.
* API/glib/JSCExceptionPrivate.h: Added.
* API/glib/JSCGLibWrapperObject.h: Added.
(JSC::JSCGLibWrapperObject::JSCGLibWrapperObject):
(JSC::JSCGLibWrapperObject::~JSCGLibWrapperObject):
(JSC::JSCGLibWrapperObject::object const):
* API/glib/JSCValue.cpp: Added.
(jscValueGetProperty):
(jscValueSetProperty):
(jscValueDispose):
(jsc_value_class_init):
(jscValueGetJSValue):
(jscValueCreate):
(jsc_value_get_context):
(jsc_value_new_undefined):
(jsc_value_is_undefined):
(jsc_value_new_null):
(jsc_value_is_null):
(jsc_value_new_number):
(jsc_value_is_number):
(jsc_value_to_double):
(jsc_value_to_int32):
(jsc_value_new_boolean):
(jsc_value_is_boolean):
(jsc_value_to_boolean):
(jsc_value_new_string):
(jsc_value_is_string):
(jsc_value_to_string):
(jsc_value_new_array):
(jsc_value_new_array_from_garray):
(jsc_value_is_array):
(jsc_value_new_object):
(jsc_value_is_object):
(jsc_value_object_is_instance_of):
(jsc_value_object_set_property):
(jsc_value_object_get_property):
(jsc_value_object_set_property_at_index):
(jsc_value_object_get_property_at_index):
(jscValueCallFunction):
(jsc_value_object_invoke_method):
(jsc_value_object_define_property_data):
(jsc_value_object_define_property_accessor):
(jsc_value_new_function):
(jsc_value_is_function):
(jsc_value_function_call):
(jsc_value_is_constructor):
(jsc_value_constructor_call):
* API/glib/JSCValue.h: Added.
* API/glib/JSCValuePrivate.h: Added.
* API/glib/JSCVersion.cpp: Added.
(jsc_get_major_version):
(jsc_get_minor_version):
(jsc_get_micro_version):
* API/glib/JSCVersion.h.in: Added.
* API/glib/JSCVirtualMachine.cpp: Added.
(addWrapper):
(removeWrapper):
(jscVirtualMachineSetContextGroup):
(jscVirtualMachineEnsureContextGroup):
(jscVirtualMachineDispose):
(jsc_virtual_machine_class_init):
(jscVirtualMachineGetOrCreate):
(jscVirtualMachineGetContextGroup):
(jscVirtualMachineAddContext):
(jscVirtualMachineRemoveContext):
(jscVirtualMachineGetContext):
(jsc_virtual_machine_new):
* API/glib/JSCVirtualMachine.h: Added.
* API/glib/JSCVirtualMachinePrivate.h: Added.
* API/glib/JSCWrapperMap.cpp: Added.
(JSC::WrapperMap::WrapperMap):
(JSC::WrapperMap::~WrapperMap):
(JSC::WrapperMap::gobjectWrapper):
(JSC::WrapperMap::unwrap):
(JSC::WrapperMap::registerClass):
(JSC::WrapperMap::createJSWrappper):
(JSC::WrapperMap::jsWrapper const):
(JSC::WrapperMap::wrappedObject const):
* API/glib/JSCWrapperMap.h: Added.
* API/glib/docs/jsc-glib-4.0-sections.txt: Added.
* API/glib/docs/jsc-glib-4.0.types: Added.
* API/glib/docs/jsc-glib-docs.sgml: Added.
* API/glib/jsc.h: Added.
* CMakeLists.txt:
* GLib.cmake: Added.
* JavaScriptCore.gir.in: Removed.
* PlatformGTK.cmake:
* PlatformWPE.cmake:
* heap/Heap.cpp:
(JSC::Heap::releaseDelayedReleasedObjects):
* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::releaseSoon):
* javascriptcoregtk.pc.in:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
(JSC::JSGlobalObject::setWrapperMap):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::glibCallbackFunctionStructure const):
(JSC::JSGlobalObject::glibWrapperObjectStructure const):
(JSC::JSGlobalObject::wrapperMap const):

Source/WebKit:

Set decorator and deprecation_guard options in API docs config files, since they are no longer common to all
libraries.

* PlatformGTK.cmake:

Tools:

Add unit tests for the new API and generate the API documentation with generate-gtkdoc.

* Scripts/webkitpy/style/checker.py: Ignore some style errors in public GLib API headers.
* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/PlatformWPE.cmake:
* TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp: Added.
(LeakChecker::~LeakChecker):
(LeakChecker::watch):
(ExceptionHandler::ExceptionHandler):
(ExceptionHandler::~ExceptionHandler):
(ExceptionHandler::push):
(ExceptionHandler::pop):
(jscContextGarbageCollect):
(testJSCBasic):
(testJSCTypes):
(foo):
(callback):
(doubleAndSetInResult):
(sumFunction):
(testJSCFunction):
(testJSCObject):
(fooCreate):
(fooCreateWithFoo):
(fooFree):
(setFoo):
(getFoo):
(setSibling):
(getSibling):
(multiplyFoo):
(getMultiplyFoo):
(getMultiplyFooAsync):
(bazCreate):
(testJSCClass):
(barCreate):
(barFree):
(setBar):
(getBar):
(testJSCPrototypes):
(createError):
(testJSCExceptions):
(testJSCPromises):
(fooFreeAndLog):
(testJSCGarbageCollector):
(testsJSCVirtualMachine):
(testsJSCAutocleanups):
(main):
* gtk/generate-gtkdoc:
(get_generator_for_config):

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

18 months agoWindows 64-bit build fix after r229767
commit-queue@webkit.org [Wed, 21 Mar 2018 07:25:04 +0000 (07:25 +0000)]
Windows 64-bit build fix after r229767
https://bugs.webkit.org/show_bug.cgi?id=183810

Patch by Christopher Reid <chris.reid@sony.com> on 2018-03-21
Reviewed by Mark Lam.

Removing an extra parameter in the call to m_assember::call.

* assembler/MacroAssemblerX86_64.h:

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

18 months ago[Cairo] Draw Cairo patterns with cairo_paint_with_alpha()
zandobersek@gmail.com [Wed, 21 Mar 2018 07:17:23 +0000 (07:17 +0000)]
[Cairo] Draw Cairo patterns with cairo_paint_with_alpha()
https://bugs.webkit.org/show_bug.cgi?id=183774

Reviewed by Carlos Garcia Campos.

In the drawPatternToCairoContext() helper in CairoOperations.cpp source
file, always clip the painting region to the specified rectangle and
then use cairo_paint_with_alpha() to paint the passed-in pattern object,
not relaying rasterization to cairo_fill() when using opaque alpha. We
still clamp the alpha value to the 0.0 - 1.0 range.

No new tests -- no change in behavior.

* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::drawPatternToCairoContext):

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

18 months ago[CoordGraphics] Simplify CoordinatedGraphicsScene activation
zandobersek@gmail.com [Wed, 21 Mar 2018 07:16:46 +0000 (07:16 +0000)]
[CoordGraphics] Simplify CoordinatedGraphicsScene activation
https://bugs.webkit.org/show_bug.cgi?id=183772

Reviewed by Carlos Garcia Campos.

Simplify CoordinatedGraphicsScene::setActive() into a simple setter of
the m_isActive member variable. We don't have to call renderNextFrame()
anymore as that was only necessary to unblock CoordinatedLayerTreeHost,
but that can be avoided if m_isWaitingForRenderer in that class is
initialized to false.

CoordinatedGraphicsSceneClient::renderNextFrame() virtual method and its
ThreadedCompositor implementation are removed. renderNextFrame() in the
CoordinatedGraphicsScene class can also be removed, along with the
unused dispatchOnMainThread() and dispatchOnClientRunLoop() methods and
the associated m_clientRunLoop member variable.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::CoordinatedGraphicsScene):
(WebKit::CoordinatedGraphicsScene::dispatchOnMainThread): Deleted.
(WebKit::CoordinatedGraphicsScene::dispatchOnClientRunLoop): Deleted.
(WebKit::CoordinatedGraphicsScene::renderNextFrame): Deleted.
(WebKit::CoordinatedGraphicsScene::setActive): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
(WebKit::CoordinatedGraphicsSceneClient::~CoordinatedGraphicsSceneClient):
(WebKit::CoordinatedGraphicsScene::setActive):
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::m_displayRefreshMonitor):
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing):
(WebKit::ThreadedCompositor::renderNextFrame): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:

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

18 months ago[TexMap] Have TextureMapperLayer::applyAnimationsRecursively() return running animati...
zandobersek@gmail.com [Wed, 21 Mar 2018 07:16:07 +0000 (07:16 +0000)]
[TexMap] Have TextureMapperLayer::applyAnimationsRecursively() return running animation status
https://bugs.webkit.org/show_bug.cgi?id=183771

Reviewed by Carlos Garcia Campos.

Source/WebCore:

TextureMapperLayer::applyAnimationsRecursively() should return true when
the TextureMapperLayer tree has currently-running animations that
require continuous scene update.

TextureMapperAnimation::ApplicationResult gains the hasRunningAnimation
member that's set to true if any of the applied animations are still in
playing state. That information is then returned in syncAnimations(),
and the result is accumulated in the top applyAnimationsRecursively()
call and returned there to the caller.

No new tests -- no change in behavior.

* platform/graphics/texmap/TextureMapperAnimation.cpp:
(WebCore::TextureMapperAnimation::apply):
* platform/graphics/texmap/TextureMapperAnimation.h:
* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::applyAnimationsRecursively):
(WebCore::TextureMapperLayer::syncAnimations):
* platform/graphics/texmap/TextureMapperLayer.h:

Source/WebKit:

In CoordinatedGraphicsScene::paintToCurrentGLContext(), retrieve
information about any running animation in the scene via the
TextureMapperLayer::applyAnimationsRecursively() call. Use that boolean
value at the end up the method, instead of again traversing the
TextureMapperLayer tree to determine whether any running animations are
present.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):

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

18 months agoUse-after-move in SWContextManager::terminateWorker() with Linux x86_64 calling conve...
zandobersek@gmail.com [Wed, 21 Mar 2018 07:15:23 +0000 (07:15 +0000)]
Use-after-move in SWContextManager::terminateWorker() with Linux x86_64 calling convention
https://bugs.webkit.org/show_bug.cgi?id=183783

Reviewed by Chris Dumez.

In SWContextManager::terminateWorker(), some calling conventions can
end up moving the ServiceWorkerThreadProxy RefPtr into the lambda struct
before that proxy's thread (on which the lambda is bound to execute) is
retrieved.

Avoid this by taking a reference to the thread in a separate earlier
expression, before the RefPtr is moved into the lambda in the following
one.

* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::terminateWorker):

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

18 months agoFix the build
timothy_horton@apple.com [Wed, 21 Mar 2018 07:08:25 +0000 (07:08 +0000)]
Fix the build

* platform/network/cf/FormDataStreamCFNet.cpp:

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

18 months ago[Xcode] JSVALUE_MODEL is unused
mitz@apple.com [Wed, 21 Mar 2018 06:44:12 +0000 (06:44 +0000)]
[Xcode] JSVALUE_MODEL is unused
https://bugs.webkit.org/show_bug.cgi?id=183809

Reviewed by Tim Horton.

* Configurations/JavaScriptCore.xcconfig: Removed the unused definition.

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

18 months agoIntroduce HAVE_MEDIA_PLAYER and HAVE_CORE_VIDEO
timothy_horton@apple.com [Wed, 21 Mar 2018 06:26:49 +0000 (06:26 +0000)]
Introduce HAVE_MEDIA_PLAYER and HAVE_CORE_VIDEO
https://bugs.webkit.org/show_bug.cgi?id=183803
<rdar://problem/38690487>

Reviewed by Sam Weinig.

Source/WebCore:

* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring):
(WebCore::MediaSessionManageriOS::updateNowPlayingInfo):
(-[WebMediaSessionHelper initWithCallback:]):
(-[WebMediaSessionHelper dealloc]):
(-[WebMediaSessionHelper hasWirelessTargetsAvailable]):
* platform/cocoa/CoreVideoSoftLink.cpp:
* platform/cocoa/CoreVideoSoftLink.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::hasAvailableVideoFrame const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
* platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
(WebCore::MediaSampleAVFObjC::getRGBAImageData const):
* platform/graphics/cv/PixelBufferConformerCV.cpp:
* platform/graphics/cv/PixelBufferConformerCV.h:
* platform/graphics/cv/TextureCacheCV.h:
* platform/graphics/cv/TextureCacheCV.mm:
* platform/graphics/cv/VideoTextureCopierCV.cpp:
* platform/graphics/cv/VideoTextureCopierCV.h:
Make it possible to disable our dependency on MediaPlayer and CoreVideo.

Source/WTF:

* wtf/Platform.h:

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

18 months agoUpdate the install name for JavaScriptCore when built with WK_ALTERNATE_FRAMEWORKS_DIR
timothy_horton@apple.com [Wed, 21 Mar 2018 06:26:26 +0000 (06:26 +0000)]
Update the install name for JavaScriptCore when built with WK_ALTERNATE_FRAMEWORKS_DIR
https://bugs.webkit.org/show_bug.cgi?id=183808
<rdar://problem/38692079>

Reviewed by Dan Bernstein.

* Configurations/JavaScriptCore.xcconfig:

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

18 months agoEnable the minimal simulator feature flag when appropriate
timothy_horton@apple.com [Wed, 21 Mar 2018 05:17:02 +0000 (05:17 +0000)]
Enable the minimal simulator feature flag when appropriate
https://bugs.webkit.org/show_bug.cgi?id=183807

Reviewed by Dan Bernstein.

* .../Configurations/FeatureDefines.xcconfig:

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

18 months agoWeb Inspector: Styles: Loses focus when editing a property while page is being loaded
nvasilyev@apple.com [Wed, 21 Mar 2018 04:47:45 +0000 (04:47 +0000)]
Web Inspector: Styles: Loses focus when editing a property while page is being loaded
https://bugs.webkit.org/show_bug.cgi?id=182619
<rdar://problem/37363185>

Reviewed by Matt Baker.

Adding or removing a stylesheet causes SpreadsheetRulesStyleDetailsPanel to refresh, triggering a layout
of all SpreadsheetCSSStyleDeclarationSection child views. This resets the focus, selection, and
auto-completion state.

This patch prevents SpreadsheetCSSStyleDeclarationSection from performing a layout when a property is being edited.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
Allow re-layout after creating a blank CSS property and pasting CSS code.
- _pendingAddBlankPropertyIndexOffset is a number after pasting CSS rules.
- _propertyPendingStartEditing is a property model after creating a new property.

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

18 months ago[LayoutReloaded] Disconnect Display.Box from Layout.Box
zalan@apple.com [Wed, 21 Mar 2018 04:42:32 +0000 (04:42 +0000)]
[LayoutReloaded] Disconnect Display.Box from Layout.Box
https://bugs.webkit.org/show_bug.cgi?id=183805

Reviewed by Antti Koivisto.

Display.Box is only accessed through the FormattingState.

* LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:
(BlockFormattingContext):
(BlockFormattingContext.prototype.layout):
(BlockFormattingContext.prototype._placeInFlowPositionedChildren):
(BlockFormattingContext.prototype._layoutOutOfFlowDescendants):
(BlockFormattingContext.prototype._adjustBottomWithFIXME):
(BlockFormattingContext.prototype._computeOutOfFlowPosition):
* LayoutReloaded/FormattingContext/FormattingContext.js:
(FormattingContext):
(FormattingContext.prototype.formattingRoot):
(FormattingContext.prototype.formattingState):
(FormattingContext.prototype.layoutState):
(FormattingContext.prototype._toAbsolutePosition):
(FormattingContext.prototype._toRootAbsolutePosition):
(FormattingContext.prototype._addToLayoutQueue):
(FormattingContext.prototype.displayBox):
(FormattingContext.prototype._outOfFlowDescendants):
(FormattingContext.prototype.rootContainer): Deleted.
(FormattingContext.prototype.layoutContext): Deleted.
* LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:
(InlineFormattingContext):
(InlineFormattingContext.prototype.layout):
(InlineFormattingContext.prototype._initializeLine):
* LayoutReloaded/FormattingState/BlockFormattingState.js:
(BlockFormattingState):
* LayoutReloaded/FormattingState/FormattingState.js:
(FormattingState):
(FormattingState.prototype.formattingRoot):
(FormattingState.prototype.layoutState):
(FormattingState.prototype.createDisplayBox):
(FormattingState.prototype.displayBoxMap):
(FormattingState.prototype.displayBox):
(FormattingState.prototype.layoutContext): Deleted.
* LayoutReloaded/FormattingState/InlineFormattingState.js:
(InlineFormattingState):
* LayoutReloaded/Layout.js:
(layout):
* LayoutReloaded/LayoutReloaded.xcworkspace/contents.xcworkspacedata:
* LayoutReloaded/LayoutState.js: Renamed from Tools/LayoutReloaded/LayoutContext.js.
(LayoutState):
(LayoutState.prototype.layout):
(LayoutState.prototype._createFormattingState):
(LayoutState.prototype.formattingStates):
(LayoutState.prototype.initialDisplayBox):
* LayoutReloaded/LayoutTree/Box.js:
(Layout.Box.prototype.isOutOfFlowPositioned):
(Layout.Box.prototype.containingBlock):
(Layout.Box.prototype.setDisplayBox): Deleted.
(Layout.Box.prototype.displayBox): Deleted.
* LayoutReloaded/Utils.js:
(Utils.layoutTreeDump):
(Utils._findDisplayBox):
(Utils._dumpBox):
(Utils._dumpTree):
* LayoutReloaded/misc/headers/BlockFormattingContext.h:
* LayoutReloaded/misc/headers/FormattingContext.h:
* LayoutReloaded/misc/headers/LayoutContext.h:
* LayoutReloaded/test/index.html:

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

18 months agoWeb Inspector: Session dividers are not added when Console tab is not visible
webkit@devinrousso.com [Wed, 21 Mar 2018 03:40:17 +0000 (03:40 +0000)]
Web Inspector: Session dividers are not added when Console tab is not visible
https://bugs.webkit.org/show_bug.cgi?id=168622

Reviewed by Matt Baker.

Restructure `_pendingMessages` to be a `Map [ConsoleSession, ConsoleMessageView]`. Instead
of rendering to the `_currentConsoleGroup`, we now render to the saved `ConsoleSession`.
Also ensure that `_pendingMessages` is cleared when navigating and "Preserve Log" is off.

* UserInterface/Controllers/JavaScriptLogViewController.js:
(WI.JavaScriptLogViewController):
(WI.JavaScriptLogViewController.prototype.startNewSession):
(WI.JavaScriptLogViewController.prototype.consolePromptHistoryDidChange):
(WI.JavaScriptLogViewController.prototype._appendConsoleMessageView):
(WI.JavaScriptLogViewController.prototype.renderPendingMessages):
(WI.JavaScriptLogViewController.prototype.get prompt): Deleted.
(WI.JavaScriptLogViewController.prototype.get currentConsoleGroup): Deleted.

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

18 months agoExpose content attributes on _WKLinkIconParameters
rniwa@webkit.org [Wed, 21 Mar 2018 02:52:20 +0000 (02:52 +0000)]
Expose content attributes on _WKLinkIconParameters
https://bugs.webkit.org/show_bug.cgi?id=183768

Reviewed by Alex Christensen.

Source/WebCore:

Collect a vector of content attributes upon finding touch and fav-icons in order to expose it in a WebKit API.

Tests: IconLoading.DefaultFavicon

* html/LinkIconCollector.cpp:
(WebCore::LinkIconCollector::iconsOfTypes): Collect attributes.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::startIconLoading): Use an empty vector for /favicon.ico.
* platform/LinkIcon.h:
(WebCore::LinkIcon::encode const): Encode the vector of content attributes.
(WebCore::LinkIcon::decode): Ditto for decoding.

Source/WebKit:

Added _WKLinkIconParameters.attributes to expose content attributes of a link element
which defined a favicon, touch icon, or pre-compressed touch icon.

* UIProcess/API/Cocoa/_WKLinkIconParameters.h:
(_WKLinkIconParameters.attributes): Added.
* UIProcess/API/Cocoa/_WKLinkIconParameters.mm:
(_WKLinkIconParameters._attributes): Added.
(-[_WKLinkIconParameters _initWithLinkIcon:]): Convert the hash map from WebCore to a NSDictionary.
(-[_WKLinkIconParameters attributes]): Added.

Tools:

Expanded the basic test case for _WKLinkIconParameters's properties including newly added "attributes".

* TestWebKitAPI/Tests/WebKitCocoa/IconLoadingDelegate.mm:
(IconLoading.DefaultFavicon):

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

18 months agoAdd AssistedNodeInformation plumbing for form control placeholder text and label...
wenson_hsieh@apple.com [Wed, 21 Mar 2018 02:28:29 +0000 (02:28 +0000)]
Add AssistedNodeInformation plumbing for form control placeholder text and label text
https://bugs.webkit.org/show_bug.cgi?id=183802
<rdar://problem/38686273>

Reviewed by Tim Horton.

Source/WebKit:

Surfaces some additional information about the currently focused element to the input delegate in the UI process.
See comments below for more details.

Test: WebKit.FocusedElementInfo

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

Add `placeholder` and `label` to AssistedNodeInformation, which capture the value of the placeholder attribute
and the text of the first associated label element for the focused form control. Also add boilerplate encoder/
decoder support for these members.

* UIProcess/API/Cocoa/_WKFocusedElementInfo.h:

Augment _WKFocusedElementInfo to include placeholder and label.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
(-[WKFocusedElementInfo label]):
(-[WKFocusedElementInfo placeholder]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getAssistedNodeInformation):

For input elements and textareas, set the placeholder to the value of the placeholder attribute. For all
elements with associated labels, grab the inner text of the first label that is not empty, ignoring all labels
that are `display: none` (i.e. not being rendered).

Tools:

Adds a new API test to exercise new placeholder and label SPI on _WKFocusedFormElement.

* TestWebKitAPI/Tests/WebKitCocoa/_WKInputDelegate.mm:
(-[InputDelegate _webView:focusShouldStartInputSession:]):
(-[InputDelegate shouldStartInputSessionHandler]):
(-[InputDelegate setShouldStartInputSessionHandler:]):
(TEST):
(-[FormSubmissionDelegate webView:startURLSchemeTask:]): Deleted.
(-[FormSubmissionDelegate webView:stopURLSchemeTask:]): Deleted.
(-[FormSubmissionDelegate _webView:willSubmitFormValues:userObject:submissionHandler:]): Deleted.

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

18 months agoRenderTreeNeedsLayoutChecker fails with absolutely positioned svg and <use>
zalan@apple.com [Wed, 21 Mar 2018 01:31:09 +0000 (01:31 +0000)]
RenderTreeNeedsLayoutChecker fails with absolutely positioned svg and <use>
https://bugs.webkit.org/show_bug.cgi?id=183718

Reviewed by Antti Koivisto.

Source/WebCore:

This patch ensures after resolving the style for an SVG element with a corresponding element (<use>),
we adjust this style for the cloned SVG element too.

Test: svg/in-html/path-with-absolute-positioned-svg-and-use-crash.html

* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustSVGElementStyle):
(WebCore::StyleResolver::adjustRenderStyle):
* css/StyleResolver.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::resolveCustomStyle):

LayoutTests:

* svg/in-html/path-with-absolute-positioned-svg-and-use-crash-expected.txt: Added.
* svg/in-html/path-with-absolute-positioned-svg-and-use-crash.html: Added.

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

18 months ago[WinCairo] Fix to run-webkit-httpd from native Windows.
commit-queue@webkit.org [Wed, 21 Mar 2018 01:09:36 +0000 (01:09 +0000)]
[WinCairo] Fix to run-webkit-httpd from native Windows.
https://bugs.webkit.org/show_bug.cgi?id=183605

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2018-03-20
Reviewed by Daniel Bates.

This fix is to run Apache HTTP server from native Windows. The environment is different
from cygwin, which is used for AppleWin, in following points:
- A temporary file behaves differently. It cannot reopen by anybody when indicated as
  delete on close. To solve this situation, filesystem.mkdtemp() is used instead.
- It's not unix so that `tail` command is not available. Replaced with python equivalent
  function.

* Scripts/webkitpy/common/system/filesystem.py:
(FileSystem.mkdtemp.TemporaryDirectory.__init__):
(FileSystem.mkdtemp.TemporaryDirectory.__exit__): The existing contents would be deleted.
(FileSystem.mkdtemp):
* Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
(parse_args):
(run_server):
(run_server_with_log_file):
(follow_file):

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

18 months agoMark http/tests/appcache/abort-cache-onprogress.html as flaky.
ryanhaddad@apple.com [Wed, 21 Mar 2018 00:36:13 +0000 (00:36 +0000)]
Mark http/tests/appcache/abort-cache-onprogress.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=183684

Unreviewed test gardening.

* TestExpectations:

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

18 months agoMark http/wpt/webrtc/third-party-frame-ice-candidate-filtering.html as flaky.
ryanhaddad@apple.com [Wed, 21 Mar 2018 00:36:11 +0000 (00:36 +0000)]
Mark http/wpt/webrtc/third-party-frame-ice-candidate-filtering.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=183801

Unreviewed test gardening.

* platform/wk2/TestExpectations:

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

18 months agoFirst piece of process swapping on navigation.
beidson@apple.com [Wed, 21 Mar 2018 00:05:58 +0000 (00:05 +0000)]
First piece of process swapping on navigation.
https://bugs.webkit.org/show_bug.cgi?id=183665

Reviewed by Andy Estes.

Source/WebCore:

Covered by API test(s)

This patch:
- A new PolicyAction::Suspend for future use in this feature
- Makes sure that loads triggered as part of a process swap do *not* re-consult the policy delegate

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::continueAfterContentPolicy):

* loader/FrameLoadRequest.h:
(WebCore::FrameLoadRequest::setShouldCheckNavigationPolicy):
(WebCore::FrameLoadRequest::shouldCheckNavigationPolicy const):

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::loadWithDocumentLoader):
* loader/FrameLoader.h:

* loader/FrameLoaderTypes.h: Add a new Policy type "Suspend" to be used in the future
  by the process-swap-on-navigation mechanism.

* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy):
(WebCore::PolicyChecker::checkNewWindowPolicy):

Source/WebKit:

This patch adds the first pieces of the following feature:
"When a navigation originating inside a WKWebView goes to a different origin,
 swap to a new WebProcess for that navigation"

There are significant bugs to be resolved and significant optimizations to be made.
Which is why the feature is disabled by default.

Besides the core logic implementing the feature, this patch does a lot of related
work such as:
- Removing some now-invalid ASSERTs
- Adding some ASSERTs
- Update various switch states to handle the new "Suspend" policy and "NavigationSwap"
  process termination reason

* NetworkProcess/NetworkDataTaskBlob.cpp:
(WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):

* NetworkProcess/capture/NetworkDataTaskReplay.cpp:
(WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(toNSURLSessionResponseDisposition):

* Platform/Logging.h:

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

* Shared/ProcessTerminationReason.h: Add "NavigationSwap" as a process termination reason.

* UIProcess/API/APINavigation.h:

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):

* UIProcess/API/C/WKAPICast.h:
(WebKit::toAPI):

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

* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::WebFramePolicyListenerProxy):
* UIProcess/WebFramePolicyListenerProxy.h:
(WebKit::WebFramePolicyListenerProxy::create):
(WebKit::WebFramePolicyListenerProxy::policyListenerType const):

* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::setUpPolicyListenerProxy):
(WebKit::WebFrameProxy::activePolicyListenerProxy):
* UIProcess/WebFrameProxy.h:

* UIProcess/WebNavigationState.cpp:
(WebKit::WebNavigationState::navigation):
(WebKit::WebNavigationState::takeNavigation):

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::attachToProcessForNavigation): Pretend that the existing process
  terminated using the new "NavigationSwap" reason, then manually start the next load.
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadRequestWithNavigation):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
(WebKit::WebPageProxy::processDidTerminate):
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
* UIProcess/WebPageProxy.h:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation): Determine which process should be used
  for a proposed navigation, creating a new one if necessary.
* UIProcess/WebProcessPool.h:

* UIProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::SessionStorageNamespace::setAllowedConnection):

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

Tools:

Expose the "swaps processes on navigation" setting in MiniBrowser UI for testing:

* MiniBrowser/mac/AppDelegate.m:
(defaultConfiguration):
* MiniBrowser/mac/SettingsController.h:
* MiniBrowser/mac/SettingsController.m:
(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController processSwapOnNavigationEnabled]):
(-[SettingsController toggleProcessSwapOnNavigation:]):

Makes sure the current behavior is tested:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: Added.
(-[PSONNavigationDelegate webView:didFinishNavigation:]):
(-[PSONScheme webView:startURLSchemeTask:]):
(-[PSONScheme webView:stopURLSchemeTask:]):
(TEST):

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

18 months agoQuickLook.NavigationDelegate API test is failing on iOS with async policy delegates
cdumez@apple.com [Tue, 20 Mar 2018 22:54:21 +0000 (22:54 +0000)]
QuickLook.NavigationDelegate API test is failing on iOS with async policy delegates
https://bugs.webkit.org/show_bug.cgi?id=183791

Reviewed by Alex Christensen.

Source/WebCore:

Update PreviewLoader to not send data (or call finishFinishLoading) until
the resource response has been processed.

* loader/ios/PreviewLoader.mm:
(-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]):
(-[WebPreviewLoader connection:didReceiveData:lengthReceived:]):
(-[WebPreviewLoader connectionDidFinishLoading:]):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/QuickLook.mm:
(-[QuickLookAsyncNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[QuickLookAsyncNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]):
(-[QuickLookAsyncNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):
(-[QuickLookAsyncNavigationDelegate webView:didFinishNavigation:]):
(TEST):

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

18 months agoWe need to do proper bookkeeping of exitOK when inserting constants when sinking...
sbarati@apple.com [Tue, 20 Mar 2018 21:59:33 +0000 (21:59 +0000)]
We need to do proper bookkeeping of exitOK when inserting constants when sinking NewArrayBuffer
https://bugs.webkit.org/show_bug.cgi?id=183795
<rdar://problem/38298694>

Reviewed by JF Bastien.

JSTests:

* stress/sink-phantom-new-array-buffer-exit-ok.js: Added.
(foo):
(bar):

Source/JavaScriptCore:

We were just assuming that the constants we were inserting were
always exitOK=true. However, this breaks validation. The exitOK
we emit for the constants in the NewArrayBuffer should respect
the current exit state of the IR we've emitted. This is just IR
bookkeeping since JSConstant is a non-exiting node.

* dfg/DFGArgumentsEliminationPhase.cpp:

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

18 months agoServiceWorkerClientFetch::didReceiveData should check for m_encodedDataLength
youenn@apple.com [Tue, 20 Mar 2018 21:53:38 +0000 (21:53 +0000)]
ServiceWorkerClientFetch::didReceiveData should check for m_encodedDataLength
https://bugs.webkit.org/show_bug.cgi?id=183668

Reviewed by Chris Dumez.

Crash happens when releasing a RefPtr<SharedBuffer> buffer that is null.
It happens because ServiceWorkerClientFetch can call m_loader->didReceiveBuffer at two different places.
Either when receiving an IPC call or as part of completion handler for the response validation check.
At each call site, we release the buffer to pass it to the loader and we set m_encodedLength to zero.
The fix is to add the m_encodedLength check like done in the case of response validation check completion handler.

* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveData):

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

18 months agoExpose aggressiveTileRetentionEnabled in WKPreferences SPI to match C SPI
jeffm@apple.com [Tue, 20 Mar 2018 21:21:06 +0000 (21:21 +0000)]
Expose aggressiveTileRetentionEnabled in WKPreferences SPI to match C SPI
https://bugs.webkit.org/show_bug.cgi?id=183790

Reviewed by Alex Christensen.

Expose this property on macOS only.

* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setAggressiveTileRetentionEnabled:]):
(-[WKPreferences _aggressiveTileRetentionEnabled]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:

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

18 months agoMIPS+Armv7 builds are broken since r229391
guijemont@igalia.com [Tue, 20 Mar 2018 20:37:46 +0000 (20:37 +0000)]
MIPS+Armv7 builds are broken since r229391
https://bugs.webkit.org/show_bug.cgi?id=183474

Reviewed by Yusuke Suzuki.

Add missing armv7 and mips operations and fix arguments to a call to
operationGetByValCell. This should fix compilation on MIPS and Armv7
(though it does not implement the missing setupArguments stuff in
CCallHelpers).

* assembler/MacroAssembler.h:
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::swap):
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::swap):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* jit/FPRInfo.h:

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

18 months ago[Web Animations] Update the timing model when pending tasks schedule changes
commit-queue@webkit.org [Tue, 20 Mar 2018 20:29:57 +0000 (20:29 +0000)]
[Web Animations] Update the timing model when pending tasks schedule changes
https://bugs.webkit.org/show_bug.cgi?id=183785

Patch by Antoine Quint <graouts@apple.com> on 2018-03-20
Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Record a progression now that we correctly invalidate effects as their pending play
or pause task schedule changes. Setting an animation's effect resets pending tasks.

* web-platform-tests/web-animations/interfaces/Animation/effect-expected.txt:

Source/WebCore:

Changing the time at which a pending play or pause task is scheduled changes the pending
state of the animation and thus should notify that the timing model has changed and invalidate
the effect.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::setTimeToRunPendingPlayTask):
(WebCore::WebAnimation::setTimeToRunPendingPauseTask):
(WebCore::WebAnimation::updatePendingTasks):

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

18 months agoSLEEP_THREAD_FOR_DEBUGGER should not use fancy number literals
bburg@apple.com [Tue, 20 Mar 2018 20:26:17 +0000 (20:26 +0000)]
SLEEP_THREAD_FOR_DEBUGGER should not use fancy number literals
https://bugs.webkit.org/show_bug.cgi?id=183792

Reviewed by Timothy Hatcher.

* wtf/DebugUtilities.h: Remove the '_s' since this won't
compile when included by files compiled as Objective-C++.

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

18 months agoAdd and adopt WK_PLATFORM_NAME and adjust default feature defines
timothy_horton@apple.com [Tue, 20 Mar 2018 18:18:37 +0000 (18:18 +0000)]
Add and adopt WK_PLATFORM_NAME and adjust default feature defines
https://bugs.webkit.org/show_bug.cgi?id=183758
<rdar://problem/38017644>

Reviewed by Dan Bernstein.

* .../Configurations/Base.xcconfig:
* .../Configurations/FeatureDefines.xcconfig:
* WebCore.xcodeproj/project.pbxproj:
* wtf/FeatureDefines.h:

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

18 months agoImprove FunctionPtr and use it in the JIT CallRecord.
mark.lam@apple.com [Tue, 20 Mar 2018 18:10:16 +0000 (18:10 +0000)]
Improve FunctionPtr and use it in the JIT CallRecord.
https://bugs.webkit.org/show_bug.cgi?id=183756
<rdar://problem/38641335>

Reviewed by JF Bastien.

1. FunctionPtr hold a C/C++ function pointer by default.  Change its default
   PtrTag to reflect that.

2. Delete the FunctionPtr::value() method.  It is effectively a duplicate of
   executableAddress().

3. Fix the FunctionPtr constructor that takes arbitrary pointers to be able to
   take "any" pointer.  "any" in this case means that the pointer may not be typed
   as a C/C++ function to the C++ compiler (due to upstream casting or usage of
   void* as a storage type), but it is still expected to be pointing to a C/C++
   function.

4. Added a FunctionPtr constructor that takes another FunctionPtr.  This is a
   convenience constructor that lets us retag the underlying pointer.  The other
   FunctionPtr is still expected to point to a C/C++ function.

5. Added PtrTag assertion placeholder functions to be implemented later.

6. Change the JIT CallRecord to embed a FunctionPtr callee instead of a void* to
   pointer.  This improves type safety, and assists in getting pointer tagging
   right later.

7. Added versions of JIT callOperations methods that will take a PtrTag.
   This is preparation for more more pointer tagging work later.

* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::linkCall):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::linkCall):
* assembler/MacroAssemblerCodeRef.h:
(JSC::FunctionPtr::FunctionPtr):
(JSC::FunctionPtr::operator bool const):
(JSC::FunctionPtr::operator! const):
(JSC::ReturnAddressPtr::ReturnAddressPtr):
(JSC::MacroAssemblerCodePtr::retagged const):
(JSC::MacroAssemblerCodeRef::retaggedCode const):
(JSC::FunctionPtr::value const): Deleted.
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::linkCall):
* assembler/MacroAssemblerX86.h:
(JSC::MacroAssemblerX86::linkCall):
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::callWithSlowPathReturnType):
(JSC::MacroAssemblerX86_64::linkCall):
* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateImpl):
* ftl/FTLSlowPathCall.cpp:
(JSC::FTL::SlowPathCallContext::makeCall):
* ftl/FTLSlowPathCall.h:
(JSC::FTL::callOperation):
* ftl/FTLThunks.cpp:
(JSC::FTL::osrExitGenerationThunkGenerator):
(JSC::FTL::lazySlowPathGenerationThunkGenerator):
(JSC::FTL::slowPathCallThunkGenerator):
* jit/JIT.cpp:
(JSC::JIT::link):
(JSC::JIT::privateCompileExceptionHandlers):
* jit/JIT.h:
(JSC::CallRecord::CallRecord):
(JSC::JIT::appendCall):
(JSC::JIT::appendCallWithSlowPathReturnType):
(JSC::JIT::callOperation):
(JSC::JIT::callOperationWithProfile):
(JSC::JIT::callOperationWithResult):
(JSC::JIT::callOperationNoExceptionCheck):
(JSC::JIT::callOperationWithCallFrameRollbackOnException):
* jit/JITArithmetic.cpp:
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
* jit/JITInlines.h:
(JSC::JIT::emitNakedCall):
(JSC::JIT::emitNakedTailCall):
(JSC::JIT::appendCallWithExceptionCheck):
(JSC::JIT::appendCallWithExceptionCheckAndSlowPathReturnType):
(JSC::JIT::appendCallWithCallFrameRollbackOnException):
(JSC::JIT::appendCallWithExceptionCheckSetJSValueResult):
(JSC::JIT::appendCallWithExceptionCheckSetJSValueResultWithProfile):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::privateCompileGetByValWithCachedId):
(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutByValWithCachedId):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emitSlow_op_put_by_val):
* jit/Repatch.cpp:
(JSC::linkPolymorphicCall):
* jit/SlowPathCall.h:
(JSC::JITSlowPathCall::JITSlowPathCall):
(JSC::JITSlowPathCall::call):
* jit/ThunkGenerators.cpp:
(JSC::nativeForGenerator):
* runtime/PtrTag.h:
(JSC::nextPtrTagID):
(JSC::assertIsCFunctionPtr):
(JSC::assertIsNullOrCFunctionPtr):
(JSC::assertIsNotTagged):
(JSC::assertIsTagged):
(JSC::assertIsNullOrTagged):
(JSC::assertIsTaggedWith):
(JSC::assertIsNullOrTaggedWith):
(JSC::uniquePtrTagID): Deleted.

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

18 months ago[MIPS] Optimize generated JIT code for loads/stores
commit-queue@webkit.org [Tue, 20 Mar 2018 17:53:59 +0000 (17:53 +0000)]
[MIPS] Optimize generated JIT code for loads/stores
https://bugs.webkit.org/show_bug.cgi?id=183243

Patch by Stanislav Ocovaj <stanislav.ocovaj@rt-rk.com> on 2018-03-20
Reviewed by Yusuke Suzuki.

JIT generates three MIPS instructions for a load/store from/to an absolute address:

  lui adrTmpReg, address >> 16
  ori adrTmpReg, address & 0xffff
  lw dataReg, 0(adrTmpReg)

Since load/store instructions on MIPS have a 16-bit offset, lower 16 bits of the address can
be encoded into the load/store and ori instruction can be removed:

  lui adrTmpReg, (address + 0x8000) >> 16
  lw dataReg, (address & 0xffff)(adrTmpReg)

Also, in loads/stores with BaseIndex address, the left shift can be omitted if address.scale is 0.

* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::add32):
(JSC::MacroAssemblerMIPS::add64):
(JSC::MacroAssemblerMIPS::or32):
(JSC::MacroAssemblerMIPS::sub32):
(JSC::MacroAssemblerMIPS::convertibleLoadPtr):
(JSC::MacroAssemblerMIPS::load8):
(JSC::MacroAssemblerMIPS::load8SignedExtendTo32):
(JSC::MacroAssemblerMIPS::load32):
(JSC::MacroAssemblerMIPS::store8):
(JSC::MacroAssemblerMIPS::store32):
(JSC::MacroAssemblerMIPS::branchTest8):
(JSC::MacroAssemblerMIPS::branchAdd32):
(JSC::MacroAssemblerMIPS::loadDouble):
(JSC::MacroAssemblerMIPS::storeDouble):

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

18 months agoUnreviewed, rolling out r229726 and r229763.
cdumez@apple.com [Tue, 20 Mar 2018 17:08:05 +0000 (17:08 +0000)]
Unreviewed, rolling out r229726 and r229763.

Caused some API test failures on iOS

Reverted changesets:

"Make policy decisions asynchronous"
https://bugs.webkit.org/show_bug.cgi?id=180568
https://trac.webkit.org/changeset/229726

"Rebaseline three webarchive tests for WK2 after r229726."
https://bugs.webkit.org/show_bug.cgi?id=180568
https://trac.webkit.org/changeset/229763

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

18 months agoRebaseline three webarchive tests for WK2 after r229726.
ryanhaddad@apple.com [Tue, 20 Mar 2018 16:52:00 +0000 (16:52 +0000)]
Rebaseline three webarchive tests for WK2 after r229726.
https://bugs.webkit.org/show_bug.cgi?id=180568

Unreviewed test gardening.

* platform/wk2/webarchive/loading/missing-data-expected.txt: Added.
* platform/wk2/webarchive/loading/object-expected.txt: Added.
* platform/wk2/webarchive/loading/test-loading-archive-subresource-null-mimetype-expected.txt: Added.

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

18 months agoRebaseline three forms tests after r229730.
ryanhaddad@apple.com [Tue, 20 Mar 2018 16:25:32 +0000 (16:25 +0000)]
Rebaseline three forms tests after r229730.

Unreviewed test gardening.

* platform/mac/fast/forms/basic-selects-expected.txt:
* platform/mac/fast/forms/disabled-select-change-index-expected.txt:
* platform/mac/fast/forms/select-disabled-appearance-expected.txt:

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

18 months agoRebaseline a test after the case of the 'Strong Password' localized string was change...
ryanhaddad@apple.com [Tue, 20 Mar 2018 16:25:30 +0000 (16:25 +0000)]
Rebaseline a test after the case of the 'Strong Password' localized string was changed in r229724.

Unreviewed test gardening.

* platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:
* platform/mac/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:

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

18 months agoSkip http/tests/storageAccess/grant-storage-access-under-opener.html on iOS debug.
ryanhaddad@apple.com [Tue, 20 Mar 2018 16:25:27 +0000 (16:25 +0000)]
Skip http/tests/storageAccess/grant-storage-access-under-opener.html on iOS debug.
https://bugs.webkit.org/show_bug.cgi?id=183714

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

18 months ago[LayoutReloaded] Move Display.Box handling from FormattingContext to FormattingState
zalan@apple.com [Tue, 20 Mar 2018 16:14:28 +0000 (16:14 +0000)]
[LayoutReloaded] Move Display.Box handling from FormattingContext to FormattingState
https://bugs.webkit.org/show_bug.cgi?id=183779

Reviewed by Antti Koivisto.

* LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:
(BlockFormattingContext.prototype._computeStaticPosition):
(BlockFormattingContext.prototype._computeOutOfFlowWidth):
(BlockFormattingContext.prototype._computeFloatingWidth):
(BlockFormattingContext.prototype._computeInFlowWidth):
(BlockFormattingContext.prototype._computeOutOfFlowHeight):
(BlockFormattingContext.prototype._computeFloatingHeight):
(BlockFormattingContext.prototype._computeInFlowHeight):
(BlockFormattingContext.prototype._horizontalConstraint):
(BlockFormattingContext.prototype._contentHeight):
(BlockFormattingContext.prototype._adjustBottomWithFIXME):
(BlockFormattingContext.prototype._computeInFlowPositionedPosition):
(BlockFormattingContext.prototype._computeOutOfFlowPosition):
* LayoutReloaded/FormattingContext/FloatingContext.js:
(FloatingContext.prototype.computePosition):
(FloatingContext.prototype._positionForClear):
(FloatingContext.prototype._computePositionToAvoidIntrudingFloats):
(FloatingContext.prototype._availableSpace):
(FloatingContext.prototype._adjustedFloatingPosition):
* LayoutReloaded/FormattingContext/FormattingContext.js:
(FormattingContext):
(FormattingContext.prototype.absoluteMarginBox):
(FormattingContext.prototype.absoluteBorderBox):
(FormattingContext.prototype.absolutePaddingBox):
(FormattingContext.prototype.absoluteContentBox):
(FormattingContext.prototype._toAbsolutePosition):
(FormattingContext.prototype._toRootAbsolutePosition):
(FormattingContext.prototype._addToLayoutQueue):
(FormattingContext.prototype.displayBox):
(FormattingContext.prototype._createDisplayBox): Deleted.
(FormattingContext.prototype.toDisplayBox): Deleted.
(FormattingContext.prototype.toLayoutBox): Deleted.
* LayoutReloaded/FormattingState/FormattingState.js:
(FormattingState):
(FormattingState.prototype.createDisplayBox):
(FormattingState.prototype.displayBox):

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

18 months ago[iOS] Grant IOKit preference access for the Home button
bfulgham@apple.com [Tue, 20 Mar 2018 15:34:30 +0000 (15:34 +0000)]
[iOS] Grant IOKit preference access for the Home button
https://bugs.webkit.org/show_bug.cgi?id=183754
<rdar://problem/38179704>

Reviewed by Eric Carlson.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

18 months ago[LayoutReloaded] Introduce FormattingState (Block/Inline/etc)
zalan@apple.com [Tue, 20 Mar 2018 15:12:33 +0000 (15:12 +0000)]
[LayoutReloaded] Introduce FormattingState (Block/Inline/etc)
https://bugs.webkit.org/show_bug.cgi?id=183777

Reviewed by Antti Koivisto.

This is in preparation for moving out states from the formatting contexts.

* LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:
(BlockFormattingContext):
* LayoutReloaded/FormattingContext/FormattingContext.js:
(FormattingContext):
(FormattingContext.prototype.layoutState):
(FormattingContext.prototype.layoutContext):
(FormattingContext.prototype.layout):
* LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:
(InlineFormattingContext):
* LayoutReloaded/FormattingState/BlockFormattingState.js: Copied from Tools/LayoutReloaded/LayoutContext.js.
(BlockFormattingState):
* LayoutReloaded/FormattingState/FormattingState.js: Copied from Tools/LayoutReloaded/LayoutContext.js.
(FormattingState):
(FormattingState.prototype.formattingContext):
(FormattingState.prototype.layoutContext):
(FormattingState.prototype._setFormattingContext):
* LayoutReloaded/FormattingState/InlineFormattingState.js: Copied from Tools/LayoutReloaded/LayoutContext.js.
(InlineFormattingState):
* LayoutReloaded/LayoutContext.js:
(LayoutContext):
(LayoutContext.prototype.layout):
(LayoutContext.prototype._createFormattingState):
(LayoutContext.prototype._createFormattingContext): Deleted.
* LayoutReloaded/LayoutReloaded.xcworkspace/contents.xcworkspacedata:
* LayoutReloaded/test/index.html:

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