WebKit-https.git
8 weeks agoSource/WebCore:
commit-queue@webkit.org [Thu, 19 Sep 2019 20:52:30 +0000 (20:52 +0000)]
Source/WebCore:
[SVG2]: Add auto behavior for rx and ry to the SVG <ellipse> and<rect> elements
https://bugs.webkit.org/show_bug.cgi?id=199843

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-09-19
Reviewed by Simon Fraser, Nikolas Zimmermann.

The specification is: https://www.w3.org/TR/SVG2/geometry.html#RxProperty.

Change the initial value of rx and ry to be "auto". Change the parser to
parse LengthOrAuto for these properties. Handle the case if one of them
is missing.

Tests: svg/custom/ellipse-radius-auto-dynamic.svg
       svg/custom/ellipse-radius-auto-initial.svg
       svg/custom/ellipse-radius-length-initial.svg
       svg/custom/rect-radius-auto-dynamic.svg
       svg/custom/rect-radius-auto-initial.svg
       svg/custom/rect-radius-length-initial.svg

* css/CSSProperties.json:
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeRxOrRy):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::initialRadius):
* rendering/style/SVGRenderStyleDefs.cpp:
(WebCore::StyleLayoutData::StyleLayoutData):
* rendering/svg/RenderSVGEllipse.cpp:
(WebCore::RenderSVGEllipse::calculateRadiiAndCenter):

LayoutTests:
[SVG2]: Add auto behavior for rx and ry to the SVG <ellipse> and <rect> elements
https://bugs.webkit.org/show_bug.cgi?id=199843

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-09-19
Reviewed by Simon Fraser, Nikolas Zimmermann.

Add tests which exercise the initial setting for rx and ry: length, 'auto'.
Add tests to dynamically change the values of these properties from length
to 'auto'.

Skip the tests with dynamic changes till webkit.org/b/201918 is fixed.

* TestExpectations:
* svg/css/parse-length-expected.txt:
* svg/css/parse-length.html:
* svg/custom/ellipse-radius-auto-dynamic-expected.svg: Added.
* svg/custom/ellipse-radius-auto-dynamic.svg: Added.
* svg/custom/ellipse-radius-auto-initial-expected.svg: Added.
* svg/custom/ellipse-radius-auto-initial.svg: Added.
* svg/custom/ellipse-radius-length-initial-expected.svg: Added.
* svg/custom/ellipse-radius-length-initial.svg: Added.
* svg/custom/rect-radius-auto-dynamic-expected.svg: Added.
* svg/custom/rect-radius-auto-dynamic.svg: Added.
* svg/custom/rect-radius-auto-initial-expected.svg: Added.
* svg/custom/rect-radius-auto-initial.svg: Added.
* svg/custom/rect-radius-length-initial-expected.svg: Added.
* svg/custom/rect-radius-length-initial.svg: Added.

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

8 weeks ago[ews] Fix platform for JSC EWS
aakash_jain@apple.com [Thu, 19 Sep 2019 20:07:44 +0000 (20:07 +0000)]
[ews] Fix platform for JSC EWS
https://bugs.webkit.org/show_bug.cgi?id=201997

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/config.json:

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

8 weeks ago[WebGPU] Update messaging to reflect STP 92 requirement for demos
justin_fan@apple.com [Thu, 19 Sep 2019 19:36:35 +0000 (19:36 +0000)]
[WebGPU] Update messaging to reflect STP 92 requirement for demos
https://bugs.webkit.org/show_bug.cgi?id=201931

Reviewed by Jon Lee.

Demos don't work anymore on versions of Safari older than STP 92,
so update WebGPU feature detection to reflect that.

* demos/webgpu/babylon/babylonWebGpu.max.js:
* demos/webgpu/babylon/oneHelmetWebGPU.html:
* demos/webgpu/babylon/oneSphereWebGPU.html:
* demos/webgpu/compute-blur.html:
* demos/webgpu/compute-boids-compile.html:
* demos/webgpu/compute-boids.html:
* demos/webgpu/hello-cube.html:
* demos/webgpu/hello-triangle.html:
* demos/webgpu/scripts/compute-blur.js:
(async.init):
* demos/webgpu/scripts/compute-boids-compile.js:
* demos/webgpu/scripts/hello-triangle.js:
(async.helloTriangle):
* demos/webgpu/textured-cube.html:

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

8 weeks agoHTMLVideoElement with a broken poster image will take square dimension
commit-queue@webkit.org [Thu, 19 Sep 2019 19:19:37 +0000 (19:19 +0000)]
HTMLVideoElement with a broken poster image will take square dimension
https://bugs.webkit.org/show_bug.cgi?id=174122
<rdar://problem/33121806>

Patch by Peng Liu <peng.liu6@apple.com> on 2019-09-19
Reviewed by Daniel Bates.

Source/WebCore:

For a video element, if only the width attribute is given and the height attribute is missing,
an invalid poster image will make its aspect ratio to be 1, which is the historical WebKit behavior
if we're painting alt text and/or a broken image. This fix prevents that behavior to impact video elements.

We add a virtual function shouldDisplayBrokenImageIcon() to RenderImage and it will return true
only when the image source is given but cannot be downloaded. RenderMedia overrides this virtual function
and always return false because it never shows the broken image icon. RenderVideo inherits
that behavior from RenderMedia.

Then, in RenderImage::computeIntrinsicRatioInformation(), we only set the aspect ratio to 1
when we need to show the broken image icon. It is the historical WebKit behavior that we want to keep
for image element, but we also want to avoid its impact (this bug) on video elements.

We also replace the imageResource().errorOccurred() with shouldDisplayBrokenImageIcon() in
TreeBuilder::createLayoutBox() for the same reason.

The logic to display the broken image icon in RenderImage::renderReplaced() is also cleaned up.

Test: media/video-poster-not-found.html

* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::shouldDisplayBrokenImageIcon const):
(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::computeIntrinsicRatioInformation const):
* rendering/RenderImage.h:
* rendering/RenderMedia.h:

LayoutTests:

When only the width (no height) attribute of a video element is given
and the the poster image is missing (cannot be downloaded),
the aspect ratio of the video element should not be 1, which is the default behavior
of WebKit to paint a broken image. Instead, it should be the aspect ratio of the video content.

* media/video-poster-not-found-expected.txt: Added.
* media/video-poster-not-found.html: Added.

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

8 weeks agoRefactoring: fix broken indentation in JSNonDestructibleProxy.h.
mark.lam@apple.com [Thu, 19 Sep 2019 19:02:06 +0000 (19:02 +0000)]
Refactoring: fix broken indentation in JSNonDestructibleProxy.h.
https://bugs.webkit.org/show_bug.cgi?id=201989

Reviewed by Saam Barati.

This patch only unindent the code to get it back to compliant formatting.
There is no actual code change.

* runtime/JSNonDestructibleProxy.h:
(JSC::JSNonDestructibleProxy::subspaceFor):
(JSC::JSNonDestructibleProxy::create):
(JSC::JSNonDestructibleProxy::createStructure):
(JSC::JSNonDestructibleProxy::JSNonDestructibleProxy):

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

8 weeks agoSyntax checker should report duplicate __proto__ properties
tzagallo@apple.com [Thu, 19 Sep 2019 18:45:12 +0000 (18:45 +0000)]
Syntax checker should report duplicate __proto__ properties
https://bugs.webkit.org/show_bug.cgi?id=201897
<rdar://problem/53201788>

Reviewed by Mark Lam.

JSTests:

* stress/syntax-checker-duplicate-underscore-proto.js: Added.
(catch):

Source/JavaScriptCore:

Currently we have two ways of parsing object literals:
- parseObjectLiteral: this is called in sloppy mode, and as an optimization for syntax checking,
  it doesn't allocate string literals while parsing properties. It does still allocate identifiers,
  but it won't store them in the Property object that it creates for each parsed property. This
  method backtracks and calls parseObjectStrictLiteral if it finds any getters or setters.
- parseObjectStrictLiteral: this is called in strict mode, or when the object contains getters/setters
  as stated above. This will always allocate string literals as well as identifiers and store them in
  the Property object, even during syntax checking.

From looking at the history, it seems that there was a distinction between these two methods:
parseStrictObjectLiteral was introduced in r62848 and contained an extra check for duplicate
getters/setters or properties defined as both getters/setters and constants. That distinction
was removed and the only distinction that remained was whether we build strings and store the
strings and properties as part of the Property object created by SyntaxChecker::createProperty.
However, this optimization is no longer valid, since we need to throw a SyntaxError for duplicate
__proto__ properties in object literals even in sloppy mode, which means that we do need to build
the strings and identifiers and store them as part of the Property objects.

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseObjectLiteral):
(JSC::Parser<LexerType>::parsePrimaryExpression):
(JSC::Parser<LexerType>::parseStrictObjectLiteral): Deleted.
* parser/Parser.h:

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

8 weeks agoRemove a now unnecessary hack to work around static const needing external linkage.
mark.lam@apple.com [Thu, 19 Sep 2019 18:28:19 +0000 (18:28 +0000)]
Remove a now unnecessary hack to work around static const needing external linkage.
https://bugs.webkit.org/show_bug.cgi?id=201988

Reviewed by Saam Barati.

MacroAssembler::dataTempRegister is now a constexpr, thereby ensuring that it's
inlinable.

* b3/B3Common.cpp:
(JSC::B3::pinnedExtendedOffsetAddrRegister):

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

8 weeks agoReplace JSValue #defines with static constexpr values.
mark.lam@apple.com [Thu, 19 Sep 2019 16:14:47 +0000 (16:14 +0000)]
Replace JSValue #defines with static constexpr values.
https://bugs.webkit.org/show_bug.cgi?id=201966

Reviewed by Yusuke Suzuki.

static constexpr is the modern C++ way to define these constants.

Some of the values are typed int64_t and some are int32_t.  The original #define
values are int64_t.  Hence, we adopt int64_t as the default type to use here.

However, some of these constants are being used as 32-bit values, and the code
was static_cast'ing them into int32_t.  This set of constants are all the small
values that fit in an int32_t anyway.  So, we're putting these in int32_t instead
so that we don't have to keep casting them.  In the few places where they are
used as int64_t, they will automatically get up-casted anyway.

In this patch, we also did the following:

1. Renamed TagMask to NotCellMask, because everywhere in the code, we're
   basically using it to filter out cells like this:

      if (value & NotCellMask) then goto handleNotCellCase;

2. Renamed TagTypeNumber to NumberTag for a shorter name.

   Ditto for TagBitTypeOther, TagBitBool, TagBitUndefined, TagBitsWasm, and TagWasmMask.
   They are now OtherTag, BoolTag, UndefinedTag, WasmTag, and WasmMask.

3. Introduced DoubleEncodeOffsetBit so that client code do not embed this value
   as a literal constant.  We now define DoubleEncodeOffset based on
   DoubleEncodeOffsetBit ensuring consistency.

4. Introduced MiscTag so that clients don't have to put this set of tags together
   themselves.

5. Removed static asserts for tags in LLIntData.cpp because the offlineasm now
   captures these values correctly with constexpr statements.  These static
   asserts were holdovers from the old days back when we had to define LLInt
   constant values manually, and we needed a mechanism to detect when the values
   have changed in the source.

6. Replaced some runtime asserts in RegisterSet.cpp with static_asserts.

7. In Wasm::wasmToJS(), we were constructing the value of JSValue::DoubleEncodeOffset
   constant by left shifting 1 by JSValue::DoubleEncodeOffsetBit.  There's no need
   to do this for ARM64 because the constant can be loaded efficiently with a single
   MOVZ instruction.  So, we add a CPU(ARM64) case to just move the constant into
   the target register.

* assembler/AbortReason.h:
* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateWithGuard):
* dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::OSRExit::compileExit):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::silentFill):
(JSC::DFG::SpeculativeJIT::checkArgumentTypes):
(JSC::DFG::SpeculativeJIT::compileValueToInt32):
(JSC::DFG::SpeculativeJIT::compileDoubleRep):
(JSC::DFG::SpeculativeJIT::getIntTypedArrayStoreOperand):
(JSC::DFG::SpeculativeJIT::speculateMisc):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::spill):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillJSValue):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
(JSC::DFG::SpeculativeJIT::compileObjectStrictEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compileInt52Compare):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::emitBranch):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::moveTrueTo):
(JSC::DFG::SpeculativeJIT::moveFalseTo):
(JSC::DFG::SpeculativeJIT::blessBoolean):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::lower):
(JSC::FTL::DFG::LowerDFGToB3::compileDoubleRep):
(JSC::FTL::DFG::LowerDFGToB3::compileBooleanToNumber):
(JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compilePutById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayIndexOf):
(JSC::FTL::DFG::LowerDFGToB3::compileGetArgument):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileCallEval):
(JSC::FTL::DFG::LowerDFGToB3::compileInById):
(JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf):
(JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorStructurePname):
(JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorGenericPname):
(JSC::FTL::DFG::LowerDFGToB3::getById):
(JSC::FTL::DFG::LowerDFGToB3::getByIdWithThis):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
(JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter):
(JSC::FTL::DFG::LowerDFGToB3::emitBinarySnippet):
(JSC::FTL::DFG::LowerDFGToB3::emitBinaryBitOpSnippet):
(JSC::FTL::DFG::LowerDFGToB3::emitRightShiftSnippet):
(JSC::FTL::DFG::LowerDFGToB3::equalNullOrUndefined):
(JSC::FTL::DFG::LowerDFGToB3::buildTypeOf):
(JSC::FTL::DFG::LowerDFGToB3::isInt32):
(JSC::FTL::DFG::LowerDFGToB3::isNotInt32):
(JSC::FTL::DFG::LowerDFGToB3::boxInt32):
(JSC::FTL::DFG::LowerDFGToB3::isCellOrMisc):
(JSC::FTL::DFG::LowerDFGToB3::isNotCellOrMisc):
(JSC::FTL::DFG::LowerDFGToB3::unboxDouble):
(JSC::FTL::DFG::LowerDFGToB3::boxDouble):
(JSC::FTL::DFG::LowerDFGToB3::isNotCell):
(JSC::FTL::DFG::LowerDFGToB3::isCell):
(JSC::FTL::DFG::LowerDFGToB3::isNotMisc):
(JSC::FTL::DFG::LowerDFGToB3::isNotBoolean):
(JSC::FTL::DFG::LowerDFGToB3::boxBoolean):
(JSC::FTL::DFG::LowerDFGToB3::isNotOther):
(JSC::FTL::DFG::LowerDFGToB3::isOther):
* ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::reboxAccordingToFormat):
(JSC::FTL::compileStub):
* interpreter/CalleeBits.h:
(JSC::CalleeBits::boxWasm):
(JSC::CalleeBits::isWasm const):
(JSC::CalleeBits::asWasmCallee const):
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::jitAssertIsJSInt32):
(JSC::AssemblyHelpers::jitAssertIsJSNumber):
(JSC::AssemblyHelpers::jitAssertIsJSDouble):
(JSC::AssemblyHelpers::jitAssertIsCell):
(JSC::AssemblyHelpers::jitAssertTagsInPlace):
(JSC::AssemblyHelpers::emitConvertValueToBoolean):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitSaveThenMaterializeTagRegisters):
(JSC::AssemblyHelpers::emitRestoreSavedTagRegisters):
(JSC::AssemblyHelpers::emitMaterializeTagCheckRegisters):
(JSC::AssemblyHelpers::branchIfNotCell):
(JSC::AssemblyHelpers::branchIfCell):
(JSC::AssemblyHelpers::branchIfOther):
(JSC::AssemblyHelpers::branchIfNotOther):
(JSC::AssemblyHelpers::branchIfInt32):
(JSC::AssemblyHelpers::branchIfNotInt32):
(JSC::AssemblyHelpers::branchIfNumber):
(JSC::AssemblyHelpers::branchIfNotNumber):
(JSC::AssemblyHelpers::branchIfNotDoubleKnownNotInt32):
(JSC::AssemblyHelpers::branchIfBoolean):
(JSC::AssemblyHelpers::branchIfNotBoolean):
(JSC::AssemblyHelpers::boxDouble):
(JSC::AssemblyHelpers::unboxDoubleWithoutAssertions):
(JSC::AssemblyHelpers::boxInt52):
(JSC::AssemblyHelpers::boxBooleanPayload):
(JSC::AssemblyHelpers::boxInt32):
* jit/CallFrameShuffleData.h:
* jit/CallFrameShuffler.cpp:
(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::dump const):
(JSC::CallFrameShuffler::prepareAny):
* jit/CallFrameShuffler.h:
(JSC::CallFrameShuffler::getFreeRegister const):
* jit/CallFrameShuffler64.cpp:
(JSC::CallFrameShuffler::emitBox):
(JSC::CallFrameShuffler::tryAcquireNumberTagRegister):
(JSC::CallFrameShuffler::tryAcquireTagTypeNumber): Deleted.
* jit/GPRInfo.h:
(JSC::GPRInfo::reservedRegisters):
* jit/JITArithmetic.cpp:
(JSC::JIT::emit_compareAndJumpSlow):
* jit/JITBitAndGenerator.cpp:
(JSC::JITBitAndGenerator::generateFastPath):
* jit/JITBitOrGenerator.cpp:
(JSC::JITBitOrGenerator::generateFastPath):
* jit/JITBitXorGenerator.cpp:
(JSC::JITBitXorGenerator::generateFastPath):
* jit/JITCall.cpp:
(JSC::JIT::compileTailCall):
* jit/JITDivGenerator.cpp:
(JSC::JITDivGenerator::generateFastPath):
* jit/JITInlines.h:
(JSC::JIT::emitPatchableJumpIfNotInt):
* jit/JITLeftShiftGenerator.cpp:
(JSC::JITLeftShiftGenerator::generateFastPath):
* jit/JITMulGenerator.cpp:
(JSC::JITMulGenerator::generateFastPath):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_is_undefined):
(JSC::JIT::emit_op_is_undefined_or_null):
(JSC::JIT::emit_op_is_boolean):
(JSC::JIT::emit_op_is_number):
(JSC::JIT::emit_op_is_cell_with_type):
(JSC::JIT::emit_op_is_object):
(JSC::JIT::emit_op_not):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jundefined_or_null):
(JSC::JIT::emit_op_jnundefined_or_null):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitGenericContiguousPutByVal):
(JSC::JIT::emitFloatTypedArrayPutByVal):
* jit/JITRightShiftGenerator.cpp:
(JSC::JITRightShiftGenerator::generateFastPath):
* jit/RegisterSet.cpp:
(JSC::RegisterSet::runtimeTagRegisters):
(JSC::RegisterSet::llintBaselineCalleeSaveRegisters):
(JSC::RegisterSet::dfgCalleeSaveRegisters):
(JSC::RegisterSet::ftlCalleeSaveRegisters):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::returnDouble):
(JSC::SpecializedThunkJIT::tagReturnAsInt32):
* jit/ThunkGenerators.cpp:
(JSC::virtualThunkFor):
(JSC::nativeForGenerator):
(JSC::arityFixupGenerator):
(JSC::absThunkGenerator):
* llint/LLIntData.cpp:
(JSC::LLInt::Data::performAssertions):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter.cpp:
(JSC::CLoop::execute):
* llint/LowLevelInterpreter64.asm:
* offlineasm/arm64.rb:
* offlineasm/cloop.rb:
* offlineasm/x86.rb:
* runtime/JSCJSValue.h:
* runtime/JSCJSValueInlines.h:
(JSC::JSValue::isUndefinedOrNull const):
(JSC::JSValue::isCell const):
(JSC::JSValue::isInt32 const):
(JSC::JSValue::JSValue):
(JSC::JSValue::asDouble const):
(JSC::JSValue::isNumber const):
* wasm/js/WasmToJS.cpp:
(JSC::Wasm::wasmToJS):
* wasm/js/WebAssemblyFunction.cpp:
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

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

8 weeks agoCreate InjectedBundle SPI to better support NSSecureCoding
bfulgham@apple.com [Thu, 19 Sep 2019 16:11:31 +0000 (16:11 +0000)]
Create InjectedBundle SPI to better support NSSecureCoding
https://bugs.webkit.org/show_bug.cgi?id=201810
<rdar://problem/55265713>

The encoding/decoding routines used by WebKit’s InjectedBundles are based on NSCoding.
While we have changed WebKit internals to use NSSecureCoding, there are a number of
injected bundles that need to serialize custom classes between the InjectedBundle and
the relevant WebKit UIProcess.

We need to lock down this communications channel by enforcing NSSecureCoding.

This patch creates new SPI to allow the UIProcess to specify classes that it will accept
in messages from the WebContet Process (and Injected Bundle).

It adds the following property to the WKProcessPoolConfiguration:

    @property (nonatomic, copy) NSSet<Class> *customClassesForParameterCoder;

If no custom classes are specified, the standard serialization primitives are supported:
    NSArray, NSData, NSDate, NSDictionary, NSNull, NSNumber, NSSet, NSString,
    NSTimeZone, NSURL, and NSUUID.

Reviewed by Brady Eidson.

Source/WebKit:

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy): Copy any custom classes.
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCopyCustomClassesForParameterCoder): Added.
(WKContextConfigurationSetCustomClassesForParameterCoder): Added.
* UIProcess/API/C/WKContextConfigurationRef.h:
* UIProcess/API/Cocoa/WKProcessGroup.h:
* UIProcess/API/Cocoa/WKProcessGroup.mm:
(toStringVector): Added.
(-[WKProcessGroup initWithInjectedBundleURL:andCustomClassesForParameterCoder:]):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setInputDelegate:]): Restrict serialization to allowed classes.
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration customClassesForParameterCoder]): Added.
(-[_WKProcessPoolConfiguration setCustomClassesForParameterCoder:]): Added.
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitialize): Register any custom classes
provided in the configuraton.
(WebKit::WebProcessPool::initializeClassesForParameterCoding): Added.
(WebKit::WebProcessPool::allowedClassesForParameterCoding const): Added.
* UIProcess/WebProcessPool.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::elementDidFocus): Restrict serialization to allowed
classes only.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegate.mm: Added.
(-[BundleFormDelegateRemoteObject didGetFocus]):
(-[FormInputDelegate _webView:decidePolicyForFocusedElement:]):
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegatePlugIn.mm: Added.
(-[BundleFormDelegatePlugIn webProcessPlugIn:didCreateBrowserContextController:]):
(-[BundleFormDelegatePlugIn _webProcessPlugInBrowserContextController:willBeginInputSessionForElement:inFrame:userIsInteracting:]):
(-[BundleFormDelegatePlugIn _webProcessPlugInBrowserContextController:didFocusTextField:inFrame:]):
* TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegateProtocol.h: Copied from Tools/TestWebKitAPI/WKWebViewConfigurationExtras.h.
* TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:
(TEST):
* TestWebKitAPI/WKWebViewConfigurationExtras.h:
* TestWebKitAPI/WKWebViewConfigurationExtras.mm:
(+[WKWebViewConfiguration _test_configurationWithTestPlugInClassName:configureJSCForTesting:]):
(+[WKWebViewConfiguration _test_configurationWithTestPlugInClassName:configureJSCForTesting:andCustomParameterClasses:]):

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

8 weeks agoTurn static DocumentRuleSets::s_isInvalidatingStyleWithRuleSets assertion bit into...
antti@apple.com [Thu, 19 Sep 2019 15:52:43 +0000 (15:52 +0000)]
Turn static DocumentRuleSets::s_isInvalidatingStyleWithRuleSets assertion bit into a member
https://bugs.webkit.org/show_bug.cgi?id=201985
<rdar://problem/54851871>

Reviewed by Zalan Bujtas.

This assert bit was catching cases that are not dangerous. Turn it into a member to narrow the scope.

* css/DocumentRuleSets.cpp:
(WebCore::DocumentRuleSets::~DocumentRuleSets):
(WebCore::DocumentRuleSets::collectFeatures const):
(): Deleted.
* css/DocumentRuleSets.h:
(WebCore::DocumentRuleSets::isInvalidatingStyleWithRuleSets):
* style/AttributeChangeInvalidation.cpp:
(WebCore::Style::AttributeChangeInvalidation::invalidateStyleWithRuleSets):
* style/ClassChangeInvalidation.cpp:
(WebCore::Style::ClassChangeInvalidation::invalidateStyleWithRuleSets):

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

8 weeks ago[LFC] Remove redundant Layout::Box::ElementTypes
zalan@apple.com [Thu, 19 Sep 2019 15:35:30 +0000 (15:35 +0000)]
[LFC] Remove redundant Layout::Box::ElementTypes
https://bugs.webkit.org/show_bug.cgi?id=201963

Reviewed by Antti Koivisto.

These types can be solved through RenderStyle.

* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isPaddingApplicable const):
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::isTableHeader const):
(WebCore::Layout::Box::isTableBody const):
(WebCore::Layout::Box::isTableFooter const):
(WebCore::Layout::Box::isTableRow const):
(WebCore::Layout::Box::isTableColumnGroup const):
(WebCore::Layout::Box::isTableColumn const):
(WebCore::Layout::Box::isTableCell const):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):

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

8 weeks ago[WPE][GTK] Gardening after r250087
magomez@igalia.com [Thu, 19 Sep 2019 15:19:30 +0000 (15:19 +0000)]
[WPE][GTK] Gardening after r250087
https://bugs.webkit.org/show_bug.cgi?id=201984

Unreviewed WPE and GTK+ gardening after r250087.

* platform/gtk/TestExpectations:
* platform/wpe/TestExpectations:

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

8 weeks ago[LFC][IFC] InlineFormattingContext::InlineLayout should not need to call LayoutState...
zalan@apple.com [Thu, 19 Sep 2019 14:58:43 +0000 (14:58 +0000)]
[LFC][IFC] InlineFormattingContext::InlineLayout should not need to call LayoutState::establishedFormattingState
https://bugs.webkit.org/show_bug.cgi?id=201972
<rdar://problem/55505869>

Reviewed by Antti Koivisto.

InlineLayout has access to InlineFormattingContext, so it should just query it instead of calling LayoutState::establishedFormattingState.

* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingContext const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingState):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const): Deleted.

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

8 weeks ago[LFC] FloatingContext should take the root container.
zalan@apple.com [Thu, 19 Sep 2019 13:25:46 +0000 (13:25 +0000)]
[LFC] FloatingContext should take the root container.
https://bugs.webkit.org/show_bug.cgi?id=201968
<rdar://problem/55505090>

Reviewed by Antti Koivisto.

Now FormattingContext::root() does not need to be public anymore.

* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::root const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::FloatingContext):
(WebCore::Layout::FloatingContext::mapPointFromFormattingContextRootToFloatingStateRoot const):
* layout/floats/FloatingContext.h:
(WebCore::Layout::FloatingContext::root const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):

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

8 weeks agoWeb Inspector: Better handling for large arrays and collections in Object Trees
drousso@apple.com [Thu, 19 Sep 2019 05:58:27 +0000 (05:58 +0000)]
Web Inspector: Better handling for large arrays and collections in Object Trees
https://bugs.webkit.org/show_bug.cgi?id=143589
<rdar://problem/16135388>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Adds two buttons before the "Prototype" item in expanded object/collection previews:
 - Show %d More
 - Show All (%d More)

The default `fetchCount` increment is `100`. The first button will only be shown if there
are more than `100` items remaining (haven't been shown).

* inspector/InjectedScriptSource.js:
(InjectedScript.prototype.getProperties):
(InjectedScript.prototype.getDisplayableProperties):
(InjectedScript.prototype.getCollectionEntries):
(InjectedScript.prototype._getProperties):
(InjectedScript.prototype._internalPropertyDescriptors):
(InjectedScript.prototype._propertyDescriptors):
(InjectedScript.prototype._propertyDescriptors.createFakeValueDescriptor):
(InjectedScript.prototype._propertyDescriptors.processProperties):
(InjectedScript.prototype._getSetEntries):
(InjectedScript.prototype._getMapEntries):
(InjectedScript.prototype._getWeakMapEntries):
(InjectedScript.prototype._getWeakSetEntries):
(InjectedScript.prototype._getIteratorEntries):
(InjectedScript.prototype._entries):
(RemoteObject.prototype._generatePreview):
(InjectedScript.prototype._propertyDescriptors.arrayIndexPropertyNames): Deleted.
Don't include boolean property descriptor values if they are `false.

* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):

* inspector/InjectedScript.h:
* inspector/InjectedScript.cpp:
(Inspector::InjectedScript::getProperties):
(Inspector::InjectedScript::getDisplayableProperties):
(Inspector::InjectedScript::getCollectionEntries):

* inspector/agents/InspectorRuntimeAgent.h:
* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::asInt): Added.
(Inspector::InspectorRuntimeAgent::getProperties):
(Inspector::InspectorRuntimeAgent::getDisplayableProperties):
(Inspector::InspectorRuntimeAgent::getCollectionEntries):

* inspector/protocol/Runtime.json:
Add `fetchStart`/`fetchCount` to `getProperties`/`getDisplayableProperties`/`getCollectionEntries`.
Mark boolean properties as optional so they can be omitted if `false`.

Source/WebInspectorUI:

Adds two buttons before the "Prototype" item in expanded object/collection previews:
 - Show %d More
 - Show All (%d More)

The default `fetchCount` increment is `100`. The first button will only be shown if there
are more than `100` items remaining (haven't been shown).

* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.prototype.getPropertyDescriptors):
(WI.RemoteObject.prototype.getDisplayablePropertyDescriptors):
(WI.RemoteObject.prototype.getCollectionEntries):
(WI.RemoteObject.prototype.getOwnPropertyDescriptor.wrappedCallback):
(WI.RemoteObject.prototype._getProperties): Added.
(WI.RemoteObject.prototype._getDisplayableProperties): Added.

* UserInterface/Views/ObjectTreeView.js:
(WI.ObjectTreeView):
(WI.ObjectTreeView.showMoreFetchCount): Added.
(WI.ObjectTreeView.addShowMoreIfNeeded): Added.
(WI.ObjectTreeView.prototype.update):
(WI.ObjectTreeView.prototype._updateChildren):
(WI.ObjectTreeView.prototype._updateEntries):
(WI.ObjectTreeView.prototype._updateProperties):
* UserInterface/Views/ObjectTreeView.css:
(.tree-outline.object li > button[disabled] + .indeterminate-progress-spinner): Added.
Avoid duplicating the button creation logic in `WI.ObjectTreePropertyTreeElement` by using a
`static` function. This expects the existence of and requires access to "private" values.

* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WI.ObjectTreePropertyTreeElement):
(WI.ObjectTreePropertyTreeElement.prototype.onpopulate):
(WI.ObjectTreePropertyTreeElement.prototype._updateChildren):
(WI.ObjectTreePropertyTreeElement.prototype._updateEntries):
(WI.ObjectTreePropertyTreeElement.prototype._updateProperties):
(WI.ObjectTreePropertyTreeElement.prototype._updateChildrenInternal): Deleted.

* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.evaluated):
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedArrayPropertyNames): Deleted.

* UserInterface/Controllers/RuntimeManager.js:
(WI.RuntimeManager.prototype.getPropertiesForRemoteObject): Deleted.
Remove unused function.
* Localizations/en.lproj/localizedStrings.js:

LayoutTests:

* inspector/runtime/getCollectionEntries.html: Added.
* inspector/runtime/getCollectionEntries-expected.txt: Added.
* inspector/runtime/getDisplayableProperties.html: Added.
* inspector/runtime/getDisplayableProperties-expected.txt: Added.
* inspector/runtime/getProperties.html:
* inspector/runtime/getProperties-expected.txt:
* inspector/runtime/resources/property-descriptor-utilities.js: Added.
(makeArray):
(makeObject):
(makeMap):
(makeSet):
(makeWeakMap):
(makeWeakSet):
(TestPage.registerInitializer.ProtocolTest.PropertyDescriptorUtilities.logForEach):
(TestPage.registerInitializer.ProtocolTest.PropertyDescriptorUtilities.stringifyRemoteObject):

* inspector/model/remote-object-weak-collection.html:

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

8 weeks agoUnreviewed. Remove build warning since r249976.
jh718.park@samsung.com [Thu, 19 Sep 2019 05:45:38 +0000 (05:45 +0000)]
Unreviewed. Remove build warning since r249976.

No new tests, no behavioral changes.

This patch removes the build warning below.
warning: control reaches end of non-void function [-Wreturn-type]

* dfg/DFGArrayMode.cpp:
(JSC::DFG::ArrayMode::alreadyChecked const):

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

8 weeks ago[FTW] Correct ImageBufferData and clear operations
bfulgham@apple.com [Thu, 19 Sep 2019 04:53:49 +0000 (04:53 +0000)]
[FTW] Correct ImageBufferData and clear operations
https://bugs.webkit.org/show_bug.cgi?id=201862

Reviewed by Fujii Hironori.

This patch corrects several problems in the canvas implementation:
1. The implementation of ImageBufferDataDirect2D did not properly handle the case of a
   'getData' request for less than the size of the full bitmap.
2. The implementation of 'Clear' was not correct when the size of the region to be
   cleared is less than the size of the render target.
3. 'endDraw' fails if any clip regions are active at the end of the operation. The
   stack needs to be unwound when endDraw is called.

This patch corrects all three problems.

Tested by canvas LayoutTests.

* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::clearRect): Correct partial render target case.
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::getData const): Correct partial buffer case.
(WebCore::ImageBufferData::putData): Ditto.
(WebCore::ImageBufferData::readDataFromBitmapIfNeeded): Added.
(WebCore::copyRectFromSourceToDest): Added.
(WebCore::ImageBufferData::copyRectFromSourceToData): Added.
* platform/graphics/win/PlatformContextDirect2D.cpp:
(WebCore::PlatformContextDirect2D::endDraw): Correct failures caused by
dangling clip regions when 'endDraw' is called.
(WebCore::PlatformContextDirect2D::flush): Don't call post-draw observer;
this is already handled in the draw operations, and endDraw.
(WebCore::PlatformContextDirect2D::restore): Recognize that the clip
and transparency stack might be empty when restore is called.

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

8 weeks agoAddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPC should not need...
cdumez@apple.com [Thu, 19 Sep 2019 04:36:22 +0000 (04:36 +0000)]
AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPC should not need to pass a SessionID
https://bugs.webkit.org/show_bug.cgi?id=201962

Reviewed by Geoffrey Garen.

AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPC from the WebProcess to the UIProcess
should not need to pass a SessionID, since the UIProcess already knows the SessionID of a given WebProcess.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::addPlugInAutoStartOriginHash): Deleted.
(WebKit::WebProcessPool::plugInDidReceiveUserInteraction): Deleted.
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessPool.messages.in:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::addPlugInAutoStartOriginHash):
(WebKit::WebProcessProxy::plugInDidReceiveUserInteraction):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::plugInDidStartFromOrigin):
(WebKit::WebProcess::plugInDidReceiveUserInteraction):

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

8 weeks agoWebStorageNamespaceProvider / StorageNamespaceImpl no longer need SessionIDs
cdumez@apple.com [Thu, 19 Sep 2019 04:18:58 +0000 (04:18 +0000)]
WebStorageNamespaceProvider / StorageNamespaceImpl no longer need SessionIDs
https://bugs.webkit.org/show_bug.cgi?id=201922

Reviewed by Geoffrey Garen.

WebStorageNamespaceProvider / StorageNamespaceImpl no longer need SessionIDs, now that
we have a single session per WebProcess.

* WebProcess/WebStorage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::connect):
* WebProcess/WebStorage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
(WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::StorageNamespaceImpl):
(WebKit::StorageNamespaceImpl::sessionID const):
(WebKit::StorageNamespaceImpl::copy):
* WebProcess/WebStorage/StorageNamespaceImpl.h:
(): Deleted.
* WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
(WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace):
(WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):
(WebKit::WebStorageNamespaceProvider::createTransientLocalStorageNamespace):

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

8 weeks agoDecrease use of sessionID in WebLoaderStrategy
cdumez@apple.com [Thu, 19 Sep 2019 04:02:13 +0000 (04:02 +0000)]
Decrease use of sessionID in WebLoaderStrategy
https://bugs.webkit.org/show_bug.cgi?id=201961

Reviewed by Geoffrey Garen.

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::loadResource):
(WebKit::WebLoaderStrategy::scheduleLoad):
(WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler):
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
* WebProcess/Network/WebLoaderStrategy.h:

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

8 weeks agoUnreviewed, fixed a crash in ssl/applepay/ApplePayCancelEvent.https.html
aestes@apple.com [Thu, 19 Sep 2019 03:51:48 +0000 (03:51 +0000)]
Unreviewed, fixed a crash in ssl/applepay/ApplePayCancelEvent.https.html

After r250060 (which landed very shortly after the patch that introduced ApplePayCancelEvent),
all Events must be IsoHeap-ed. ApplePayCancelEvent was not IsoHeap-ed, and so this caused
assertion failures in ssl/applepay/ApplePayCancelEvent.https.html.

Added the WTF_MAKE_ISO_ALLOCATED macros to ApplePayCancelEvent without a review to stop the
test from failing in EWS.

* Modules/applepay/ApplePayCancelEvent.cpp:
* Modules/applepay/ApplePayCancelEvent.h:

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

8 weeks agoWebSocketStream does not need a SessionID
cdumez@apple.com [Thu, 19 Sep 2019 03:45:06 +0000 (03:45 +0000)]
WebSocketStream does not need a SessionID
https://bugs.webkit.org/show_bug.cgi?id=201960

Reviewed by Geoffrey Garen.

WebSocketStream does not need a SessionID, now that we have a single session per WebProcess.

Source/WebCore:

* platform/network/cf/SocketStreamHandleImpl.h:
* platform/network/cf/SocketStreamHandleImplCFNet.cpp:
(WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl):

Source/WebKit:

* WebProcess/Network/WebSocketProvider.cpp:
(WebKit::WebSocketProvider::createSocketStreamHandle):
* WebProcess/Network/WebSocketStream.cpp:
(WebKit::WebSocketStream::create):
(WebKit::WebSocketStream::WebSocketStream):
* WebProcess/Network/WebSocketStream.h:

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

8 weeks agoLibWebRTCProvider does not need sessionIDs anymore
cdumez@apple.com [Thu, 19 Sep 2019 03:27:00 +0000 (03:27 +0000)]
LibWebRTCProvider does not need sessionIDs anymore
https://bugs.webkit.org/show_bug.cgi?id=201959

Reviewed by Geoffrey Garen.

LibWebRTCProvider does not need sessionIDs anymore, now that we have a single session per WebProcess.

Source/WebCore:

* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::registerMDNSName):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::setConfiguration):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:

Source/WebKit:

* WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
(WebKit::LibWebRTCProvider::registerMDNSName):
(WebKit::LibWebRTCProvider::createSocketFactory):
* WebProcess/Network/webrtc/LibWebRTCProvider.h:

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

8 weeks ago[GTK] Compilation errors when GL is disabled
commit-queue@webkit.org [Thu, 19 Sep 2019 02:34:49 +0000 (02:34 +0000)]
[GTK] Compilation errors when GL is disabled
https://bugs.webkit.org/show_bug.cgi?id=200223

Fix following compilation error when building with ENABLE_OPENGL=OFF
../../Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp:123:51: error: use of undeclared identifier 'WaylandCompositor'
parameters.waylandCompositorDisplayName = WaylandCompositor::singleton().displayName();
                                          ^
Patch by Yury Semikhatsky <yurys@chromium.org> on 2019-09-18
Reviewed by Philippe Normand.

* UIProcess/glib/WebProcessPoolGLib.cpp:
(WebKit::WebProcessPool::platformInitializeWebProcess): only make a call when using EGL, this matches
guards in WaylandCompositor.h. The condition was changed in r245807.

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

8 weeks agoWeb Inspector: console assertion when pressing up/down in empty console log view
joepeck@webkit.org [Thu, 19 Sep 2019 01:45:35 +0000 (01:45 +0000)]
Web Inspector: console assertion when pressing up/down in empty console log view
https://bugs.webkit.org/show_bug.cgi?id=201948

Reviewed by Devin Rousso.

* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype._upArrowWasPressed):
(WI.LogContentView.prototype._downArrowWasPressed):
Ensure that a message exists before calling `_updateMessagesSelection`, which
would assert if given a bad message. Additionally, only perform preventDefault
when selecting a message. This allows us to fall back to a system beep if
this key event does nothing.

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

8 weeks ago[results.webkit.org] fix missing col classes
zhifei_fang@apple.com [Thu, 19 Sep 2019 00:23:20 +0000 (00:23 +0000)]
[results.webkit.org] fix missing col classes
https://bugs.webkit.org/show_bug.cgi?id=201949

Reviewed by Jonathan Bedard.

* resultsdbpy/resultsdbpy/view/static/library/css/webkit.css:
(@media screen and (min-width: 768px)):
(.row):
(.col-1):
(.col-2):
(.col-3):
(.col-4):
(.col-5):
(.col-6):
(.col-7):
(.col-8):
(.col-9):
(.col-10):
(.col-11):
(.col-12):
(@media screen and (min-width: 600px)):

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

8 weeks agoEagerly create and add the m_layerHostingView to WKWebView.
timothy@apple.com [Thu, 19 Sep 2019 00:07:32 +0000 (00:07 +0000)]
Eagerly create and add the m_layerHostingView to WKWebView.
https://bugs.webkit.org/show_bug.cgi?id=201942

Reviewed by Tim Horton.

Some apps will add subviews to WKWebView, and by the time we add our m_layerHostingView view we might be
adding it behind a view that should have been added behind our layer hosting view subview. This affected
the Spark email app, due to changes in order of loading delegate calls and when compositing is enabled.
Instead of delayed creation of m_layerHostingView, always create it and add it to to the WKWebView.
This ensures proper ordering of subviews when clients add a view behind all existing subviews.

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::WebViewImpl): Create and add m_layerHostingView here.
(WebKit::WebViewImpl::setAcceleratedCompositingRootLayer): Remove creation and removal of m_layerHostingView.
Just set the sublayers of m_layerHostingView's layer here.

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

8 weeks agoAdd -suspend and -resumeAllMediaPlayback to WebView
jer.noble@apple.com [Wed, 18 Sep 2019 23:49:42 +0000 (23:49 +0000)]
Add -suspend and -resumeAllMediaPlayback to WebView
https://bugs.webkit.org/show_bug.cgi?id=201951

Reviewed by Eric Carlson.

* WebView/WebView.mm:
(-[WebView suspendAllMediaPlayback]):
(-[WebView resumeAllMediaPlayback]):
* WebView/WebViewPrivate.h:

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

8 weeks agoTOCTOU bug in havingABadTime related assertion in DFGSpeculativeJIT
sbarati@apple.com [Wed, 18 Sep 2019 23:43:09 +0000 (23:43 +0000)]
TOCTOU bug in havingABadTime related assertion in DFGSpeculativeJIT
https://bugs.webkit.org/show_bug.cgi?id=201953
<rdar://problem/53803524>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/toctou-having-a-bad-time-new-array.js: Added.
(let.code):

Source/JavaScriptCore:

We had code in DFGSpeculativeJIT like:

if (!globalObject->isHavingABadTime()) {
    <-- here -->
    Structure* s = globalObject->arrayStructureForIndexingTypeDuringAllocation(node->indexingType()));
    assert 's' has expected indexing type
}

The problem is, we may have a bad time before we actually load the structure
inside the if. We may have a bad time while we're at the "<-- here -->" in the
above program. The fix is to first load the structure, then check if we're
having a bad time. If we're still not having a bad time, it's valid to assert
things about the structure.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewArray):

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

8 weeks ago[LFC] FormattingContext::Geometry/MarginCollapse/Quirk classes should not need to...
zalan@apple.com [Wed, 18 Sep 2019 23:33:08 +0000 (23:33 +0000)]
[LFC] FormattingContext::Geometry/MarginCollapse/Quirk classes should not need to access non-const Display::Box
https://bugs.webkit.org/show_bug.cgi?id=201944
<rdar://problem/55493279>

Reviewed by Antti Koivisto.

This patch improves const correctness so that the Geometry/MarginCollapse/Quirk objects could not access non-const Display::Boxes (to mutate the display tree).
(The MarginCollapse::Update* functions are about updating the margin values on previously processed boxes so strictly speaking they are not margin collapsing related, but they somewhat belong to the MarginCollapse class -since they deal with margins.)

* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::formattingState const):
(WebCore::Layout::FormattingContext::formattingState):
* layout/FormattingState.cpp:
(WebCore::Layout::FormattingState::displayBox):
(WebCore::Layout::FormattingState::displayBox const): Deleted.
* layout/FormattingState.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::formattingState const):
(WebCore::Layout::BlockFormattingContext::formattingState):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter): Deleted.
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::collectInlineContent):
(WebCore::Layout::InlineFormattingContext::collectInlineContent const): Deleted.
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::formattingState const):
(WebCore::Layout::InlineFormattingContext::formattingState):
* layout/tableformatting/TableFormattingContext.h:
(WebCore::Layout::TableFormattingContext::formattingState const):
(WebCore::Layout::TableFormattingContext::formattingState):

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

8 weeks agoWeb Inspector: Can't drag undocked Inspector window by its title text
pecoraro@apple.com [Wed, 18 Sep 2019 23:16:48 +0000 (23:16 +0000)]
Web Inspector: Can't drag undocked Inspector window by its title text
https://bugs.webkit.org/show_bug.cgi?id=190886
<rdar://problem/44574547>

Reviewed by Tim Horton.

* UIProcess/mac/WKInspectorWKWebView.mm:
(-[WKInspectorWKWebView _opaqueRectForWindowMoveWhenInTitlebar]):
Legendary.

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

8 weeks agoStop calling WTF::initializeMainThread() in JSGlobalContextCreate*()
cdumez@apple.com [Wed, 18 Sep 2019 22:56:19 +0000 (22:56 +0000)]
Stop calling WTF::initializeMainThread() in JSGlobalContextCreate*()
https://bugs.webkit.org/show_bug.cgi?id=201947
<rdar://problem/55453612>

Reviewed by Mark Lam.

Stop calling WTF::initializeMainThread() in JSGlobalContextCreate*(). I started doing so in <https://trac.webkit.org/changeset/248533>
but it is causing crashes for apps using this JS API on background threads. It is also no longer necessary as of
<https://trac.webkit.org/changeset/249064>.

* API/JSContextRef.cpp:
(JSContextGroupCreate):
(JSGlobalContextCreate):
(JSGlobalContextCreateInGroup):

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

8 weeks agoBlobRegistry no longer needs SessionIDs
cdumez@apple.com [Wed, 18 Sep 2019 22:30:39 +0000 (22:30 +0000)]
BlobRegistry no longer needs SessionIDs
https://bugs.webkit.org/show_bug.cgi?id=201936

Reviewed by Geoffrey Garen.

BlobRegistry no longer needs SessionIDs, now that we have a single session per WebProcess.

Source/WebCore:

* Modules/entriesapi/DOMFileSystem.cpp:
(WebCore::DOMFileSystem::getFile):
* Modules/entriesapi/DOMFileSystem.h:
* Modules/entriesapi/FileSystemFileEntry.cpp:
(WebCore::FileSystemFileEntry::file):
* Modules/entriesapi/FileSystemFileEntry.h:
* Modules/entriesapi/FileSystemFileEntry.idl:
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::fromFormData):
* Modules/fetch/FetchBody.h:
* Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::blobFromData):
(WebCore::resolveWithTypeAndData):
(WebCore::FetchBodyConsumer::resolve):
(WebCore::FetchBodyConsumer::takeAsBlob):
* Modules/fetch/FetchBodyConsumer.h:
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::blob):
* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::~FetchLoader):
(WebCore::FetchLoader::startLoadingBlobURL):
* Modules/fetch/FetchLoader.h:
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::putOrAddOnServer):
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::createRecordingDataBlob):
* Modules/mediasource/MediaSourceRegistry.cpp:
(WebCore::MediaSourceRegistry::unregisterURL):
* Modules/mediasource/MediaSourceRegistry.h:
* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::didReceiveRawData):
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::didReceiveBinaryData):
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readFile):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDBSynchronously):
* bindings/js/SerializedScriptValue.h:
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::DataTransfer):
(WebCore::DataTransfer::createForCopyAndPaste):
(WebCore::DataTransfer::filesFromPasteboardAndItemList const):
(WebCore::DataTransfer::createForInputEvent):
(WebCore::DataTransfer::createForDrag):
(WebCore::DataTransfer::createForDragStartEvent):
(WebCore::DataTransfer::createForDrop):
(WebCore::DataTransfer::createForUpdatingDropTarget):
* dom/DataTransfer.h:
* editing/ReplaceRangeWithTextCommand.cpp:
(WebCore::ReplaceRangeWithTextCommand::inputEventDataTransfer const):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::inputEventDataTransfer const):
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::inputEventDataTransfer const):
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::inputEventDataTransfer const):
* editing/WebCorePasteboardFileReader.cpp:
(WebCore::WebCorePasteboardFileReader::readFilename):
(WebCore::WebCorePasteboardFileReader::readBuffer):
* editing/WebCorePasteboardFileReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::createFragmentForImageAttachment):
(WebCore::replaceRichContentWithAttachments):
(WebCore::createFragmentAndAddResources):
(WebCore::sanitizeMarkupWithArchive):
(WebCore::WebContentReader::readImage):
(WebCore::attachmentForFilePath):
(WebCore::attachmentForData):
* editing/markup.cpp:
(WebCore::restoreAttachmentElementsInFragment):
* fileapi/Blob.cpp:
(WebCore::BlobURLRegistry::registerURL):
(WebCore::BlobURLRegistry::unregisterURL):
(WebCore::Blob::Blob):
(WebCore::Blob::~Blob):
* fileapi/Blob.h:
(WebCore::Blob::create):
(WebCore::Blob::deserialize):
(WebCore::Blob::slice const):
* fileapi/Blob.idl:
* fileapi/File.cpp:
(WebCore::File::createWithRelativePath):
(WebCore::File::create):
(WebCore::File::File):
* fileapi/File.h:
* fileapi/File.idl:
* fileapi/FileReaderLoader.cpp:
(WebCore::FileReaderLoader::~FileReaderLoader):
(WebCore::FileReaderLoader::start):
* fileapi/FileReaderLoader.h:
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::registerFileBlobURL):
(WebCore::ThreadableBlobRegistry::registerBlobURL):
(WebCore::ThreadableBlobRegistry::registerBlobURLOptionallyFileBacked):
(WebCore::ThreadableBlobRegistry::registerBlobURLForSlice):
(WebCore::ThreadableBlobRegistry::unregisterBlobURL):
* fileapi/ThreadableBlobRegistry.h:
* html/FileInputType.cpp:
(WebCore::FileInputType::appendFormData const):
(WebCore::FileInputType::filesChosen):
* html/FileListCreator.cpp:
(WebCore::appendDirectoryFiles):
(WebCore::FileListCreator::FileListCreator):
(WebCore::FileListCreator::createFileList):
* html/FileListCreator.h:
(WebCore::FileListCreator::create):
* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::updateEnclosingImageWithData):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::toBlob):
* html/PublicURLManager.cpp:
(WebCore::PublicURLManager::revoke):
(WebCore::PublicURLManager::stop):
* html/URLRegistry.h:
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::extendBlobURLLifetimeIfNecessary const):
* page/EventHandler.cpp:
(WebCore::EventHandler::handleDrag):
* platform/network/BlobRegistry.h:
* testing/Internals.cpp:
(WebCore::Internals::createFile):
* testing/ServiceWorkerInternals.cpp:
(WebCore::ServiceWorkerInternals::createOpaqueWithBlobBodyResponse):
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createResponseBlob):

Source/WebKit:

* NetworkProcess/NetworkProcessPlatformStrategies.cpp:
(WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::registerFileBlobURL):
(WebKit::BlobRegistryProxy::registerBlobURL):
(WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked):
(WebKit::BlobRegistryProxy::unregisterBlobURL):
(WebKit::BlobRegistryProxy::registerBlobURLForSlice):
(WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):
* WebProcess/FileAPI/BlobRegistryProxy.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebPlatformStrategies.mm:

Source/WebKitLegacy/win:

* WebCoreSupport/WebPlatformStrategies.cpp:

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

8 weeks agoMake all ScriptWrappable IsoHeap-ed
ysuzuki@apple.com [Wed, 18 Sep 2019 22:10:00 +0000 (22:10 +0000)]
Make all ScriptWrappable IsoHeap-ed
https://bugs.webkit.org/show_bug.cgi?id=201846
<rdar://problem/55407535>

Reviewed by Mark Lam.

This patch puts Event and derived classes under IsoHeap to make all ScriptWrappable classes IsoHeap-ed.

* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp:
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.h:
(WebCore::WebKitPlaybackTargetAvailabilityEvent::create): Deleted.
(WebCore::WebKitPlaybackTargetAvailabilityEvent::availability const): Deleted.
* Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp:
* Modules/applepay/ApplePayPaymentAuthorizedEvent.h:
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp:
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.h:
(WebCore::ApplePayPaymentMethodSelectedEvent::create): Deleted.
(WebCore::ApplePayPaymentMethodSelectedEvent::paymentMethod): Deleted.
* Modules/applepay/ApplePayShippingContactSelectedEvent.cpp:
* Modules/applepay/ApplePayShippingContactSelectedEvent.h:
* Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp:
* Modules/applepay/ApplePayShippingMethodSelectedEvent.h:
* Modules/applepay/ApplePayValidateMerchantEvent.cpp:
* Modules/applepay/ApplePayValidateMerchantEvent.h:
(WebCore::ApplePayValidateMerchantEvent::create): Deleted.
(WebCore::ApplePayValidateMerchantEvent::validationURL const): Deleted.
* Modules/encryptedmedia/MediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/MediaKeyMessageEvent.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.h:
(WebCore::WebKitMediaKeyMessageEvent::create): Deleted.
(WebCore::WebKitMediaKeyMessageEvent::message const): Deleted.
(WebCore::WebKitMediaKeyMessageEvent::destinationURL const): Deleted.
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.h:
(WebCore::WebKitMediaKeyNeededEvent::create): Deleted.
(WebCore::WebKitMediaKeyNeededEvent::initData const): Deleted.
* Modules/gamepad/GamepadEvent.cpp:
* Modules/gamepad/GamepadEvent.h:
(WebCore::GamepadEvent::create): Deleted.
(WebCore::GamepadEvent::gamepad const): Deleted.
* Modules/indexeddb/IDBRequestCompletionEvent.cpp:
* Modules/indexeddb/IDBRequestCompletionEvent.h:
(WebCore::IDBRequestCompletionEvent::create): Deleted.
* Modules/indexeddb/IDBVersionChangeEvent.cpp:
* Modules/indexeddb/IDBVersionChangeEvent.h:
* Modules/mediarecorder/BlobEvent.cpp:
* Modules/mediarecorder/BlobEvent.h:
* Modules/mediarecorder/MediaRecorderErrorEvent.cpp:
* Modules/mediarecorder/MediaRecorderErrorEvent.h:
* Modules/mediastream/MediaStreamTrackEvent.cpp:
* Modules/mediastream/MediaStreamTrackEvent.h:
* Modules/mediastream/OverconstrainedErrorEvent.cpp: Copied from Source/WebCore/Modules/mediarecorder/BlobEvent.h.
* Modules/mediastream/OverconstrainedErrorEvent.h:
(WebCore::OverconstrainedErrorEvent::create): Deleted.
(WebCore::OverconstrainedErrorEvent::error const): Deleted.
(WebCore::OverconstrainedErrorEvent::OverconstrainedErrorEvent): Deleted.
* Modules/mediastream/RTCDTMFToneChangeEvent.cpp:
* Modules/mediastream/RTCDTMFToneChangeEvent.h:
* Modules/mediastream/RTCDataChannelEvent.cpp:
* Modules/mediastream/RTCDataChannelEvent.h:
* Modules/mediastream/RTCPeerConnectionIceEvent.cpp:
* Modules/mediastream/RTCPeerConnectionIceEvent.h:
(WebCore::RTCPeerConnectionIceEvent::url const): Deleted.
* Modules/mediastream/RTCTrackEvent.cpp:
* Modules/mediastream/RTCTrackEvent.h:
(WebCore::RTCTrackEvent::receiver const): Deleted.
(WebCore::RTCTrackEvent::track const): Deleted.
(WebCore::RTCTrackEvent::streams const): Deleted.
(WebCore::RTCTrackEvent::transceiver const): Deleted.
(WebCore::RTCTrackEvent::eventInterface const): Deleted.
* Modules/paymentrequest/MerchantValidationEvent.cpp:
* Modules/paymentrequest/MerchantValidationEvent.h:
* Modules/paymentrequest/PaymentMethodChangeEvent.cpp:
* Modules/paymentrequest/PaymentMethodChangeEvent.h:
* Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:
* Modules/paymentrequest/PaymentRequestUpdateEvent.h:
* Modules/speech/SpeechSynthesisEvent.cpp:
* Modules/speech/SpeechSynthesisEvent.h:
(WebCore::SpeechSynthesisEvent::charIndex const): Deleted.
(WebCore::SpeechSynthesisEvent::elapsedTime const): Deleted.
(WebCore::SpeechSynthesisEvent::name const): Deleted.
(WebCore::SpeechSynthesisEvent::eventInterface const): Deleted.
* Modules/webaudio/AudioProcessingEvent.cpp:
* Modules/webaudio/AudioProcessingEvent.h:
* Modules/webaudio/OfflineAudioCompletionEvent.cpp:
* Modules/webaudio/OfflineAudioCompletionEvent.h:
* Modules/webgpu/GPUUncapturedErrorEvent.cpp:
* Modules/webgpu/GPUUncapturedErrorEvent.h:
* Modules/websockets/CloseEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* Modules/websockets/CloseEvent.h:
(WebCore::CloseEvent::create): Deleted.
(WebCore::CloseEvent::wasClean const): Deleted.
(WebCore::CloseEvent::code const): Deleted.
(WebCore::CloseEvent::reason const): Deleted.
(WebCore::CloseEvent::CloseEvent): Deleted.
* Modules/webvr/VRDisplayEvent.cpp:
* Modules/webvr/VRDisplayEvent.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* accessibility/AccessibleSetValueEvent.cpp:
* accessibility/AccessibleSetValueEvent.h:
(WebCore::AccessibleSetValueEvent::create): Deleted.
(WebCore::AccessibleSetValueEvent::value const): Deleted.
* animation/AnimationPlaybackEvent.cpp:
* animation/AnimationPlaybackEvent.h:
* bindings/js/ScriptWrappable.cpp: Copied from Source/WebCore/html/canvas/WebGLContextEvent.cpp.
* bindings/js/ScriptWrappable.h:
* dom/AnimationEvent.cpp:
* dom/AnimationEvent.h:
* dom/BeforeLoadEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/BeforeLoadEvent.h:
* dom/BeforeTextInsertedEvent.cpp:
* dom/BeforeTextInsertedEvent.h:
* dom/BeforeUnloadEvent.cpp:
* dom/BeforeUnloadEvent.h:
* dom/ClipboardEvent.cpp:
* dom/ClipboardEvent.h:
* dom/CompositionEvent.cpp:
* dom/CompositionEvent.h:
* dom/CustomEvent.cpp:
* dom/CustomEvent.h:
* dom/DeviceMotionEvent.cpp:
* dom/DeviceMotionEvent.h:
* dom/DeviceOrientationEvent.cpp:
* dom/DeviceOrientationEvent.h:
* dom/ErrorEvent.cpp:
* dom/ErrorEvent.h:
* dom/Event.cpp:
* dom/Event.h:
* dom/FocusEvent.cpp:
* dom/FocusEvent.h:
* dom/HashChangeEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/HashChangeEvent.h:
* dom/InputEvent.cpp:
* dom/InputEvent.h:
* dom/KeyboardEvent.cpp:
* dom/KeyboardEvent.h:
* dom/MessageEvent.cpp:
* dom/MessageEvent.h:
* dom/MouseEvent.cpp:
* dom/MouseEvent.h:
* dom/MouseRelatedEvent.cpp:
* dom/MouseRelatedEvent.h:
* dom/MutationEvent.cpp:
* dom/MutationEvent.h:
* dom/OverflowEvent.cpp:
* dom/OverflowEvent.h:
* dom/PageTransitionEvent.cpp:
* dom/PageTransitionEvent.h:
* dom/PointerEvent.cpp:
* dom/PointerEvent.h:
* dom/PopStateEvent.cpp:
* dom/PopStateEvent.h:
* dom/ProgressEvent.cpp:
* dom/ProgressEvent.h:
* dom/PromiseRejectionEvent.cpp:
* dom/PromiseRejectionEvent.h:
* dom/SecurityPolicyViolationEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/SecurityPolicyViolationEvent.h:
* dom/TextEvent.cpp:
* dom/TextEvent.h:
* dom/TouchEvent.cpp:
* dom/TouchEvent.h:
* dom/TransitionEvent.cpp:
* dom/TransitionEvent.h:
* dom/UIEvent.cpp:
* dom/UIEvent.h:
* dom/UIEventWithKeyState.cpp:
* dom/UIEventWithKeyState.h:
* dom/WebKitAnimationEvent.cpp:
* dom/WebKitAnimationEvent.h:
* dom/WebKitTransitionEvent.cpp:
* dom/WebKitTransitionEvent.h:
* dom/WheelEvent.cpp:
* dom/WheelEvent.h:
* html/MediaEncryptedEvent.cpp:
* html/MediaEncryptedEvent.h:
* html/canvas/WebGLContextEvent.cpp:
* html/canvas/WebGLContextEvent.h:
* html/shadow/ProgressShadowElement.h:
* html/track/TrackEvent.cpp:
* html/track/TrackEvent.h:
* storage/StorageEvent.cpp:
* storage/StorageEvent.h:
(WebCore::StorageEvent::key const): Deleted.
(WebCore::StorageEvent::oldValue const): Deleted.
(WebCore::StorageEvent::newValue const): Deleted.
(WebCore::StorageEvent::url const): Deleted.
(WebCore::StorageEvent::storageArea const): Deleted.
* svg/SVGFEDistantLightElement.h:
* svg/SVGFEFuncAElement.h:
* svg/SVGFEFuncBElement.h:
* svg/SVGFEFuncGElement.h:
* svg/SVGFEFuncRElement.h:
* svg/SVGFEPointLightElement.h:
* svg/SVGFESpotLightElement.h:
* svg/SVGZoomEvent.cpp:
* svg/SVGZoomEvent.h:
* workers/service/ExtendableEvent.cpp:
* workers/service/ExtendableEvent.h:
* workers/service/ExtendableMessageEvent.cpp:
* workers/service/ExtendableMessageEvent.h:
* workers/service/FetchEvent.cpp:
* workers/service/FetchEvent.h:
* xml/XMLHttpRequestProgressEvent.cpp: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeyMessageEvent.cpp.
* xml/XMLHttpRequestProgressEvent.h:
(WebCore::XMLHttpRequestProgressEvent::create): Deleted.
(WebCore::XMLHttpRequestProgressEvent::position const): Deleted.
(WebCore::XMLHttpRequestProgressEvent::totalSize const): Deleted.
(WebCore::XMLHttpRequestProgressEvent::XMLHttpRequestProgressEvent): Deleted.

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

8 weeks agoUpdate flakiness dashboard configuration for iOS 13 queues
ryanhaddad@apple.com [Wed, 18 Sep 2019 22:08:13 +0000 (22:08 +0000)]
Update flakiness dashboard configuration for iOS 13 queues
https://bugs.webkit.org/show_bug.cgi?id=201711

Reviewed by Jonathan Bedard.

* TestResultServer/static-dashboards/builders.jsonp:

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

8 weeks agoPhantom insertion phase may disagree with arguments forwarding about live ranges
sbarati@apple.com [Wed, 18 Sep 2019 22:03:20 +0000 (22:03 +0000)]
Phantom insertion phase may disagree with arguments forwarding about live ranges
https://bugs.webkit.org/show_bug.cgi?id=200715
<rdar://problem/54301717>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/phantom-insertion-live-range-should-agree-with-arguments-forwarding.js: Added.
(main.v23):
(main.try.v43):
(main.):
(main):

Source/JavaScriptCore:

The issue is that Phantom insertion phase was disagreeing about live ranges
from the arguments forwarding phase. The effect is that Phantom insertion
would insert a Phantom creating a longer live range than what arguments
forwarding was analyzing. Arguments forwarding will look for the last DFG
use or the last bytecode use of a variable it wants to eliminate. It then
does an interference analysis to ensure that nothing clobbers other variables
it needs to recover the sunken allocation during OSR exit.

Phantom insertion works by ordering the program into OSR exit epochs. If a value was used
in the current epoch, there is no need to insert a phantom for it. We
determine where we might need a Phantom by looking at bytecode kills. In this
analysis, we have a mapping from bytecode local to DFG node. However, we
sometimes forgot to remove the entry when a local is killed. So, if the first
kill of a variable is in the same OSR exit epoch, we won't insert a Phantom by design.
However, if the variable gets killed again, we might errantly insert a Phantom
for the prior variable which should've already been killed. The solution is to
clear the entry in our mapping when a variable is killed.

The program in question was like this:

1: DirectArguments
...
2: MovHint(@1, loc1) // arguments forwarding treats this as the final kill for @1
...
clobber things needed for recovery
...

Arguments elimination would transform the program since between @1 and
@2, nothing clobbers values needed for exit and nothing escapes @1. The
program becomes:

1: PhantomDirectArguments
...
2: MovHint(@1, loc1) // arguments forwarding treats this as the final kill for @1
...
clobber things needed for recovery of @1
...

Phantom insertion would then transform the program into:

1: PhantomDirectArguments
...
2: MovHint(@1, loc1) // arguments forwarding treats this as the final kill for @1
...
clobber things needed for recovery of @1
...
3: Phantom(@1)
...

This is wrong because Phantom insertion and arguments forwarding must agree on live
ranges, otherwise the interference analysis performed by arguments forwarding will
not correctly analyze up until where the value might be recovered.

* dfg/DFGPhantomInsertionPhase.cpp:

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

8 weeks agoTry to fix the macOS High Sierra build after r250048.
aestes@apple.com [Wed, 18 Sep 2019 22:02:24 +0000 (22:02 +0000)]
Try to fix the macOS High Sierra build after r250048.

* pal/spi/cocoa/PassKitSPI.h:

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

8 weeks ago[LFC] Introduce UsedVerticalValues::Constraints
zalan@apple.com [Wed, 18 Sep 2019 21:48:03 +0000 (21:48 +0000)]
[LFC] Introduce UsedVerticalValues::Constraints
https://bugs.webkit.org/show_bug.cgi?id=201933
<rdar://problem/55487485>

Reviewed by Antti Koivisto.

UsedVerticalValues::Constraints holds the constraint values ((optional)containing block height and contentbox top) for a particular box geometry computation.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795

* layout/FormattingContext.cpp:
(WebCore::Layout::outOfFlowHorizontalConstraints):
(WebCore::Layout::outOfFlowVerticalConstraints):
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
(WebCore::Layout::outOfFlowConstraints): Deleted.
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
* layout/LayoutUnits.cpp:
(WebCore::Layout::UsedVerticalValues::Constraints::Constraints):
* layout/LayoutUnits.h:
(WebCore::Layout::UsedVerticalValues::Constraints::Constraints):
(WebCore::Layout::UsedVerticalValues::UsedVerticalValues):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):

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

8 weeks agoUnreviewed test gardening for iOS.
ryanhaddad@apple.com [Wed, 18 Sep 2019 21:35:08 +0000 (21:35 +0000)]
Unreviewed test gardening for iOS.

* platform/ios/TestExpectations: Mark quicklook/numbers-09.html as failing.

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

8 weeks agoUnreviewed, WinCairo build fix after r250045.
cdumez@apple.com [Wed, 18 Sep 2019 21:33:06 +0000 (21:33 +0000)]
Unreviewed, WinCairo build fix after r250045.

* platform/network/curl/CurlFormDataStream.cpp:
(WebCore::CurlFormDataStream::computeContentLength):

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

8 weeks agoNetworkLoadParameters shouldn't store sessionID
commit-queue@webkit.org [Wed, 18 Sep 2019 21:31:27 +0000 (21:31 +0000)]
NetworkLoadParameters shouldn't store sessionID
https://bugs.webkit.org/show_bug.cgi?id=201921

Patch by Benjamin Nham <nham@apple.com> on 2019-09-18
Reviewed by Chris Dumez.

Now that there's a single session id per WebProcess, we don't need to
store the session id in NetworkLoadParameters anymore. Clients can just
directly ask NetworkConnectionToWebProcess for the WebProcess's session
ID instead.

* NetworkProcess/AdClickAttributionManager.cpp:
(WebKit::AdClickAttributionManager::fireConversionRequest):
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::startDownload):
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::startPreflight):
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::preconnectTo):
* NetworkProcess/NetworkLoadParameters.h:
* NetworkProcess/NetworkResourceLoadMap.h:
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::convertToDownload):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::NetworkSession):
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::PingLoad):
(WebKit::PingLoad::loadRequest):
(WebKit::PingLoad::didReceiveChallenge):
* NetworkProcess/PingLoad.h:
* NetworkProcess/PreconnectTask.cpp:
(WebKit::PreconnectTask::PreconnectTask):
* NetworkProcess/PreconnectTask.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
(WebKit::WebLoaderStrategy::startPingLoad):
(WebKit::WebLoaderStrategy::preconnectTo):

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

8 weeks agoUnreviewed, rolling out r250002.
commit-queue@webkit.org [Wed, 18 Sep 2019 21:13:26 +0000 (21:13 +0000)]
Unreviewed, rolling out r250002.
https://bugs.webkit.org/show_bug.cgi?id=201943

Patching of the callee and call is not atomic (Requested by
tadeuzagallo on #webkit).

Reverted changeset:

"Change WebAssembly calling conventions"
https://bugs.webkit.org/show_bug.cgi?id=201799
https://trac.webkit.org/changeset/250002

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

8 weeks ago[LFC] Add contentbox left constraint to UsedHorizontalValues::Constraints
zalan@apple.com [Wed, 18 Sep 2019 21:12:06 +0000 (21:12 +0000)]
[LFC] Add contentbox left constraint to UsedHorizontalValues::Constraints
https://bugs.webkit.org/show_bug.cgi?id=201923
<rdar://problem/55485796>

Reviewed by Antti Koivisto.

Pass in the contentbox left constraint value to the FormattingContext::compute*() functions so that they don't need to read the containg block's geometry.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795

* layout/FormattingContext.cpp:
(WebCore::Layout::outOfFlowConstraints):
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
* layout/LayoutUnits.cpp:
(WebCore::Layout::UsedHorizontalValues::Constraints::Constraints):
* layout/LayoutUnits.h:
(WebCore::Layout::UsedHorizontalValues::Constraints::Constraints):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeStaticHorizontalPosition):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):

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

8 weeks ago[LFC] Introduce UsedHorizontalValues::Constraints
zalan@apple.com [Wed, 18 Sep 2019 19:56:14 +0000 (19:56 +0000)]
[LFC] Introduce UsedHorizontalValues::Constraints
https://bugs.webkit.org/show_bug.cgi?id=201919
<rdar://problem/55481927>

Reviewed by Antti Koivisto.

UsedHorizontalValues::Constraints holds the constraint values for a particular box geometry computation (currently it only has the horizontal width constraint)

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::computeBorderAndPadding):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
(WebCore::Layout::FormattingContext::Geometry::computedPadding const):
(WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin const):
(WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin const):
* layout/FormattingContextQuirks.cpp:
(WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
* layout/LayoutUnits.h:
(WebCore::Layout::UsedHorizontalValues::Constraints::Constraints):
(WebCore::Layout::UsedHorizontalValues::UsedHorizontalValues):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
* layout/floats/FloatingContext.h:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):

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

8 weeks agoRemove alternate declaration of CCECCryptorImportKey
krollin@apple.com [Wed, 18 Sep 2019 19:39:53 +0000 (19:39 +0000)]
Remove alternate declaration of CCECCryptorImportKey
https://bugs.webkit.org/show_bug.cgi?id=201903
<rdar://problem/55466589>

Reviewed by Chris Dumez.

In macOS 10.15 and iOS 13.0 SDKs, the keyPackage parameter of
CCECCryptorImportKey() was changed from "void*" to "const void*". This
change was accounted for in Bug 195754 by making the same change to
the parallel declarations in CommonCryptoSPI.h. But since this header
also needed to be used in macOS 10.14 contexts, the old declaration
was also kept.

But since this function is a "C" function, the types of parameters are
not included in the function signature, and it doesn't really matter
what parameter types are, so long as the right values are sent to the
called function. This means that we don't need two versions of the
function, one with a "const" parameter and one without. We only really
need one. In this case, it makes sense to keep the more-restrictive
one -- the with a "const void*" parameter. Therefore, remove the one
taking just "void*".

* pal/spi/cocoa/CommonCryptoSPI.h:

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

8 weeks ago[Apple Pay] Tell websites why a session was cancelled
aestes@apple.com [Wed, 18 Sep 2019 19:13:33 +0000 (19:13 +0000)]
[Apple Pay] Tell websites why a session was cancelled
https://bugs.webkit.org/show_bug.cgi?id=201912
Source/WebCore:

Reviewed by Brady Eidson.

Added ApplePayCancelEvent as the interface for ApplePaySession's cancel event. This event
object includes a `sessionError` attribute that exposes a Web-safe version of the PassKit
domain error we received from PKPaymentAuthorization(View)Controller. Currently, we report
all errors with code "unknown", but more codes will be added in future patches.

Test: http/tests/ssl/applepay/ApplePayCancelEvent.https.html

* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/applepay/ApplePayCancelEvent.cpp: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
(WebCore::ApplePayCancelEvent::ApplePayCancelEvent):
(WebCore::ApplePayCancelEvent::sessionError const):
(WebCore::ApplePayCancelEvent::eventInterface const):
* Modules/applepay/ApplePayCancelEvent.h: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
(WebCore::ApplePayCancelEvent::create):
* Modules/applepay/ApplePayCancelEvent.idl: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
* Modules/applepay/ApplePaySession.cpp:
(WebCore::ApplePaySession::didCancelPaymentSession):
* Modules/applepay/ApplePaySession.h:
* Modules/applepay/ApplePaySessionError.h: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
* Modules/applepay/ApplePaySessionError.idl: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::didCancelPaymentSession):
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/PaymentHeaders.h:
* Modules/applepay/PaymentSession.cpp:
* Modules/applepay/PaymentSession.h:
* Modules/applepay/PaymentSessionError.h: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
* Modules/applepay/cocoa/PaymentSessionErrorCocoa.mm: Copied from Source/WebCore/Modules/applepay/PaymentSession.h.
(WebCore::additionalError):
(WebCore::PaymentSessionError::PaymentSessionError):
(WebCore::PaymentSessionError::sessionError const):
(WebCore::PaymentSessionError::platformError const):
(WebCore::PaymentSessionError::unknownError const):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::didCancelPaymentSession):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/EventNames.in:
* testing/MockPaymentCoordinator.cpp:
(WebCore::MockPaymentCoordinator::cancelPayment):

Source/WebCore/PAL:

<rdar://problem/55469706>

Reviewed by Brady Eidson.

Soft-linked PKPassKitErrorDomain and included PassKit headers more judiciously.

* pal/cocoa/PassKitSoftLink.h:
* pal/cocoa/PassKitSoftLink.mm:
* pal/spi/cocoa/PassKitSPI.h:

Source/WebKit:

<rdar://problem/55469706>

Reviewed by Brady Eidson.

Remembered the error passed to -[WKPaymentAuthorizationDelegate _willFinishWithError:] and
sent it to the WebContent process in Messages::WebPaymentCoordinator::DidCancelPaymentSession.

* Platform/cocoa/PaymentAuthorizationPresenter.h:
* Platform/cocoa/WKPaymentAuthorizationDelegate.mm:
(-[WKPaymentAuthorizationDelegate _didFinish]):
(-[WKPaymentAuthorizationDelegate _willFinishWithError:]):
* Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession):
(WebKit::WebPaymentCoordinatorProxy::presenterDidFinish):
* Shared/ApplePay/WebPaymentCoordinatorProxy.h:
(WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession):
* Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<WebCore::PaymentSessionError>::encode):
(IPC::ArgumentCoder<WebCore::PaymentSessionError>::decode):
* Shared/WebCoreArgumentCoders.h:
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::networkProcessConnectionClosed):
(WebKit::WebPaymentCoordinator::didCancelPaymentSession):
* WebProcess/ApplePay/WebPaymentCoordinator.h:
* WebProcess/ApplePay/WebPaymentCoordinator.messages.in:

LayoutTests:

Reviewed by Brady Eidson.

* http/tests/ssl/applepay/ApplePayCancelEvent.https-expected.txt: Added.
* http/tests/ssl/applepay/ApplePayCancelEvent.https.html: Added.

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

8 weeks agoWebSWContextManagerConnection::installServiceWorker IPC no longer need a sessionID
cdumez@apple.com [Wed, 18 Sep 2019 18:47:03 +0000 (18:47 +0000)]
WebSWContextManagerConnection::installServiceWorker IPC no longer need a sessionID
https://bugs.webkit.org/show_bug.cgi?id=201882

Reviewed by Geoffrey Garen.

WebSWContextManagerConnection::installServiceWorker IPC no longer need a sessionID now that we have a single
sessionID per WebProcess.

Source/WebCore:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::installContextData):
(WebCore::SWServer::runServiceWorker):
* workers/service/server/SWServerToContextConnection.h:

Source/WebKit:

* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::ServiceWorkerFrameLoaderClient::ServiceWorkerFrameLoaderClient):
(WebKit::ServiceWorkerFrameLoaderClient::sessionID const):
(WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
(WebKit::WebSWContextManagerConnection::installServiceWorker):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):

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

8 weeks agoStop passing sessionIDs to NetworkProcessConnection methods
cdumez@apple.com [Wed, 18 Sep 2019 18:38:25 +0000 (18:38 +0000)]
Stop passing sessionIDs to NetworkProcessConnection methods
https://bugs.webkit.org/show_bug.cgi?id=201886

Reviewed by Geoffrey Garen.

Stop passing sessionIDs to NetworkProcessConnection methods. This is no longer
necessary now that we have a single session per WebProcess.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
* WebProcess/Databases/WebDatabaseProvider.cpp:
(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
(WebKit::NetworkProcessConnection::didCacheResource):
(WebKit::NetworkProcessConnection::idbConnectionToServer):
(WebKit::NetworkProcessConnection::idbConnectionToServerForSession): Deleted.
* WebProcess/Network/NetworkProcessConnection.h:
* WebProcess/Network/NetworkProcessConnection.messages.in:

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

8 weeks agoCacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID
cdumez@apple.com [Wed, 18 Sep 2019 18:37:13 +0000 (18:37 +0000)]
CacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID
https://bugs.webkit.org/show_bug.cgi?id=201920

Reviewed by Geoffrey Garen.

CacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID.
This sessionID is no longer used now that we have a session per WebProcess.

Source/WebCore:

* Modules/cache/CacheStorageConnection.cpp:
(WebCore::formDataSize):
(WebCore::CacheStorageConnection::computeRealBodySize):
* Modules/cache/CacheStorageConnection.h:
* Modules/cache/DOMWindowCaches.cpp:
(WebCore::DOMWindowCaches::caches const):
* Modules/cache/WorkerCacheStorageConnection.cpp:
(WebCore::WorkerCacheStorageConnection::sessionID const): Deleted.
* Modules/cache/WorkerCacheStorageConnection.h:
* fileapi/Blob.cpp:
(WebCore::Blob::size const):
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::blobSize):
* fileapi/ThreadableBlobRegistry.h:
* loader/cache/KeepaliveRequestTracker.cpp:
(WebCore::KeepaliveRequestTracker::tryRegisterRequest):
(WebCore::KeepaliveRequestTracker::registerRequest):
(WebCore::KeepaliveRequestTracker::unregisterRequest):
* page/CacheStorageProvider.h:
(WebCore::CacheStorageProvider::createCacheStorageConnection):
* platform/network/BlobRegistry.h:
* platform/network/FormData.cpp:
(WebCore::FormDataElement::lengthInBytes const):
(WebCore::FormData::lengthInBytes const):
* platform/network/FormData.h:
* testing/Internals.cpp:
(WebCore::Internals::clearCacheStorageMemoryRepresentation):
(WebCore::Internals::cacheStorageEngineRepresentation):
(WebCore::Internals::updateQuotaBasedOnSpaceUsage):
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::createCacheStorageConnection):
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
(WebCore::ServiceWorkerThreadProxy::createCacheStorageConnection):
* workers/service/context/ServiceWorkerThreadProxy.h:
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):

Source/WebKit:

* NetworkProcess/NetworkProcessPlatformStrategies.cpp:
(WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::sessionID const): Deleted.
* WebProcess/Cache/WebCacheStorageConnection.h:
* WebProcess/Cache/WebCacheStorageProvider.cpp:
(WebKit::WebCacheStorageProvider::createCacheStorageConnection):
* WebProcess/Cache/WebCacheStorageProvider.h:
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::blobSize):
* WebProcess/FileAPI/BlobRegistryProxy.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebPlatformStrategies.mm:

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

8 weeks agoREGRESSION: (Catalina) fast/images/async-image-multiple-clients-repaint.html is a...
russell_e@apple.com [Wed, 18 Sep 2019 18:05:20 +0000 (18:05 +0000)]
REGRESSION: (Catalina) fast/images/async-image-multiple-clients-repaint.html is a flakey failure.
rdar://55484256

Unreviewed Test Gardening.

* platform/mac/TestExpectations:

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

8 weeks agoDrop FrameLoaderClient::sessionID()
cdumez@apple.com [Wed, 18 Sep 2019 17:14:15 +0000 (17:14 +0000)]
Drop FrameLoaderClient::sessionID()
https://bugs.webkit.org/show_bug.cgi?id=201916

Reviewed by Geoffrey Garen.

Drop FrameLoaderClient::sessionID(). The Frame can get the sessionID from its page (Which is
what the FrameLoaderClient::sessionID() ended up doing) and other call sites at WebKit2 layer
can get the sessionID from the WebProcess singleton.

Source/WebCore:

* loader/EmptyClients.cpp:
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* page/Frame.cpp:
(WebCore::Frame::sessionID const):

Source/WebKit:

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::ServiceWorkerFrameLoaderClient::ServiceWorkerFrameLoaderClient):
(WebKit::WebSWContextManagerConnection::installServiceWorker):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:

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

8 weeks agoWebServiceWorkerProvider::handleFetch() does not need to take in a sessionID
cdumez@apple.com [Wed, 18 Sep 2019 17:13:29 +0000 (17:13 +0000)]
WebServiceWorkerProvider::handleFetch() does not need to take in a sessionID
https://bugs.webkit.org/show_bug.cgi?id=201917

Reviewed by Geoffrey Garen.

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::WebServiceWorkerProvider::handleFetch):
* WebProcess/Storage/WebServiceWorkerProvider.h:

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

8 weeks agoWebSWServerToContextConnection::PostMessageToServiceWorkerClient IPC no longer needs...
cdumez@apple.com [Wed, 18 Sep 2019 17:12:46 +0000 (17:12 +0000)]
WebSWServerToContextConnection::PostMessageToServiceWorkerClient IPC no longer needs to take a sessionID
https://bugs.webkit.org/show_bug.cgi?id=201883

Reviewed by Geoffrey Garen.

WebSWServerToContextConnection::PostMessageToServiceWorkerClient IPC no longer needs to take a sessionID,
now that we have a single session per WebProcess.

Source/WebCore:

* workers/service/ServiceWorkerClient.cpp:
(WebCore::ServiceWorkerClient::postMessage):
* workers/service/context/SWContextManager.h:

Source/WebKit:

* NetworkProcess/NetworkProcess.cpp:
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::postMessageToServiceWorkerClient):
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient):
* WebProcess/Storage/WebSWContextManagerConnection.h:

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

8 weeks agoUnreviewed, rolling out r250030.
russell_e@apple.com [Wed, 18 Sep 2019 16:51:19 +0000 (16:51 +0000)]
Unreviewed, rolling out r250030.

Cause of Recent Build Failures.

Reverted changeset:

"Make all ScriptWrappable IsoHeap-ed"
https://bugs.webkit.org/show_bug.cgi?id=201846
https://trac.webkit.org/changeset/250030

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

8 weeks ago[WPE][GTK] Update build environments to use libwpe+WPEBackend-fdo 1.4.0
aperez@igalia.com [Wed, 18 Sep 2019 16:27:20 +0000 (16:27 +0000)]
[WPE][GTK] Update build environments to use libwpe+WPEBackend-fdo 1.4.0
https://bugs.webkit.org/show_bug.cgi?id=201915

Reviewed by Michael Catanzaro.

* flatpak/org.webkit.WPEModules.yaml: Bump versions of libwpe and WPEBackend-fdo to 1.4.0
* gtk/jhbuild.modules: Ditto.
* wpe/jhbuild.modules: Ditto.

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

8 weeks agoREGRESSION (macOS): Many webgpu/whlsl* tests are flaky failures.
russell_e@apple.com [Wed, 18 Sep 2019 16:11:03 +0000 (16:11 +0000)]
REGRESSION (macOS): Many webgpu/whlsl* tests are flaky failures.
https://bugs.webkit.org/show_bug.cgi?id=201877

Unreviewed Test Gardening.

Two additional tests are flaky, marking as such.

* platform/mac/TestExpectations:

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

8 weeks agoFollowup iOS 13 test gardening for r250023
tsavell@apple.com [Wed, 18 Sep 2019 15:55:08 +0000 (15:55 +0000)]
Followup iOS 13 test gardening for r250023

Unreviewed test gardening

* platform/ios-wk2/TestExpectations:

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

8 weeks ago[GTK][WPE] bubblewrap sandbox should be disabled when running inside docker
clopez@igalia.com [Wed, 18 Sep 2019 15:53:11 +0000 (15:53 +0000)]
[GTK][WPE] bubblewrap sandbox should be disabled when running inside docker
https://bugs.webkit.org/show_bug.cgi?id=201914

Reviewed by Michael Catanzaro.

Detect if running inside Docker by checking the file /.dockerenv
In that case, disable the sandbox.

* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
(WebKit::isInsideDocker):
(WebKit::ProcessLauncher::launchProcess):

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

8 weeks ago[LFC] FormattingContext::Geometry::computedHeight* functions need containingBlockHeig...
zalan@apple.com [Wed, 18 Sep 2019 15:53:06 +0000 (15:53 +0000)]
[LFC] FormattingContext::Geometry::computedHeight* functions need containingBlockHeight only.
https://bugs.webkit.org/show_bug.cgi?id=201880
<rdar://problem/55449623>

Reviewed by Antti Koivisto.

Let's tighten the incoming vertical parameter.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
(WebCore::Layout::FormattingContext::Geometry::computedMaxHeight const):
(WebCore::Layout::FormattingContext::Geometry::computedMinHeight const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):

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

8 weeks agoDocumentMarkerController should not invoke ensureLineBoxes during TextIterator traversal
antti@apple.com [Wed, 18 Sep 2019 15:41:09 +0000 (15:41 +0000)]
DocumentMarkerController should not invoke ensureLineBoxes during TextIterator traversal
https://bugs.webkit.org/show_bug.cgi?id=201911
<rdar://problem/55455458>

Reviewed by Zalan Bujtas.

DocumentMarkerController::addMarker may call ensureLineBoxes but TextIterator doesn't expect mutations during traversal.
Fix by doing range collection as a separate step.

* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::collectTextRanges):
(WebCore::DocumentMarkerController::addMarker):
(WebCore::DocumentMarkerController::addTextMatchMarker):
(WebCore::DocumentMarkerController::addDictationPhraseWithAlternativesMarker):
(WebCore::DocumentMarkerController::addDictationResultMarker):
(WebCore::DocumentMarkerController::addDraggedContentMarker):
(WebCore::DocumentMarkerController::addPlatformTextCheckingMarker):
(WebCore::DocumentMarkerController::removeMarkers):
(WebCore::DocumentMarkerController::filterMarkers):
* dom/DocumentMarkerController.h:

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

8 weeks ago[LFC] Shrink-to-fit-width needs the available width constraint value only
zalan@apple.com [Wed, 18 Sep 2019 15:38:17 +0000 (15:38 +0000)]
[LFC] Shrink-to-fit-width needs the available width constraint value only
https://bugs.webkit.org/show_bug.cgi?id=201896
<rdar://problem/55465382>

Reviewed by Antti Koivisto.

* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):

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

8 weeks ago[WebGPU] Update demos to work on STP 92
mmaxfield@apple.com [Wed, 18 Sep 2019 14:31:12 +0000 (14:31 +0000)]
[WebGPU] Update demos to work on STP 92
https://bugs.webkit.org/show_bug.cgi?id=201872

Reviewed by Dean Jackson.

Websites/browserbench.org:

GPUShaderStageBit => GPUShaderStage

* MotionMark1.1/tests/3d/resources/webgpu.js:
(Stage.call.initialize):

Websites/webkit.org:

Updating for new WSL buffer layouts.
Updating for new WSL compiler struct validation rules.
GPUShaderStageBit => GPUShaderStage
GPUColorWriteBits => GPUColorWrite
GPUBufferUsage.TRANSFER_DST => GPUBufferUsage.COPY_DST
GPUBufferUsage.TRANSFER_SRC => GPUBufferUsage.COPY_SRC

* demos/webgpu/babylon/babylonWebGpu.max.js:
* demos/webgpu/babylon/oneHelmetWebGPUWSLShaders.js:
(sampler.bumpSamplerSampler.register):
(sampler.reflectionSamplerSampler.register):
(float2.uv.attribute): Deleted.
(float3.normal.attribute): Deleted.
* demos/webgpu/compute-boids.html:
* demos/webgpu/hello-cube.html:
* demos/webgpu/scripts/compute-blur.js:
(setUpCompute):
(createShaderCode):
* demos/webgpu/scripts/compute-boids-compile.js:
* demos/webgpu/scripts/hello-triangle.js:
(async.helloTriangle):
* demos/webgpu/textured-cube.html:

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

8 weeks agoREGRESSION (r247566): Leak of UICTFontDescriptor in WebCore::FontDatabase::InstalledF...
ddkilzer@apple.com [Wed, 18 Sep 2019 11:30:16 +0000 (11:30 +0000)]
REGRESSION (r247566): Leak of UICTFontDescriptor in WebCore::FontDatabase::InstalledFont::InstalledFont()
<https://webkit.org/b/201893>
<rdar://problem/55464115>

Reviewed by Brent Fulgham.

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::InstalledFont::InstalledFont): Use
adoptCF() to fix the leak.

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

8 weeks agoMake all ScriptWrappable IsoHeap-ed
ysuzuki@apple.com [Wed, 18 Sep 2019 10:33:16 +0000 (10:33 +0000)]
Make all ScriptWrappable IsoHeap-ed
https://bugs.webkit.org/show_bug.cgi?id=201846
<rdar://problem/55407535>

Reviewed by Mark Lam.

This patch puts Event and derived classes under IsoHeap to make all ScriptWrappable classes IsoHeap-ed.

* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp:
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.h:
(WebCore::WebKitPlaybackTargetAvailabilityEvent::create): Deleted.
(WebCore::WebKitPlaybackTargetAvailabilityEvent::availability const): Deleted.
* Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp:
* Modules/applepay/ApplePayPaymentAuthorizedEvent.h:
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp:
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.h:
(WebCore::ApplePayPaymentMethodSelectedEvent::create): Deleted.
(WebCore::ApplePayPaymentMethodSelectedEvent::paymentMethod): Deleted.
* Modules/applepay/ApplePayShippingContactSelectedEvent.cpp:
* Modules/applepay/ApplePayShippingContactSelectedEvent.h:
* Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp:
* Modules/applepay/ApplePayShippingMethodSelectedEvent.h:
* Modules/applepay/ApplePayValidateMerchantEvent.cpp:
* Modules/applepay/ApplePayValidateMerchantEvent.h:
(WebCore::ApplePayValidateMerchantEvent::create): Deleted.
(WebCore::ApplePayValidateMerchantEvent::validationURL const): Deleted.
* Modules/encryptedmedia/MediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/MediaKeyMessageEvent.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.h:
(WebCore::WebKitMediaKeyMessageEvent::create): Deleted.
(WebCore::WebKitMediaKeyMessageEvent::message const): Deleted.
(WebCore::WebKitMediaKeyMessageEvent::destinationURL const): Deleted.
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.h:
(WebCore::WebKitMediaKeyNeededEvent::create): Deleted.
(WebCore::WebKitMediaKeyNeededEvent::initData const): Deleted.
* Modules/gamepad/GamepadEvent.cpp:
* Modules/gamepad/GamepadEvent.h:
(WebCore::GamepadEvent::create): Deleted.
(WebCore::GamepadEvent::gamepad const): Deleted.
* Modules/indexeddb/IDBRequestCompletionEvent.cpp:
* Modules/indexeddb/IDBRequestCompletionEvent.h:
(WebCore::IDBRequestCompletionEvent::create): Deleted.
* Modules/indexeddb/IDBVersionChangeEvent.cpp:
* Modules/indexeddb/IDBVersionChangeEvent.h:
* Modules/mediarecorder/BlobEvent.cpp:
* Modules/mediarecorder/BlobEvent.h:
* Modules/mediarecorder/MediaRecorderErrorEvent.cpp:
* Modules/mediarecorder/MediaRecorderErrorEvent.h:
* Modules/mediastream/MediaStreamTrackEvent.cpp:
* Modules/mediastream/MediaStreamTrackEvent.h:
* Modules/mediastream/OverconstrainedErrorEvent.cpp: Copied from Source/WebCore/Modules/mediastream/RTCDataChannelEvent.h.
* Modules/mediastream/OverconstrainedErrorEvent.h:
(WebCore::OverconstrainedErrorEvent::create): Deleted.
(WebCore::OverconstrainedErrorEvent::error const): Deleted.
(WebCore::OverconstrainedErrorEvent::OverconstrainedErrorEvent): Deleted.
* Modules/mediastream/RTCDTMFToneChangeEvent.cpp:
* Modules/mediastream/RTCDTMFToneChangeEvent.h:
* Modules/mediastream/RTCDataChannelEvent.cpp:
* Modules/mediastream/RTCDataChannelEvent.h:
* Modules/mediastream/RTCPeerConnectionIceEvent.cpp:
* Modules/mediastream/RTCPeerConnectionIceEvent.h:
(WebCore::RTCPeerConnectionIceEvent::url const): Deleted.
* Modules/mediastream/RTCTrackEvent.cpp:
* Modules/mediastream/RTCTrackEvent.h:
(WebCore::RTCTrackEvent::receiver const): Deleted.
(WebCore::RTCTrackEvent::track const): Deleted.
(WebCore::RTCTrackEvent::streams const): Deleted.
(WebCore::RTCTrackEvent::transceiver const): Deleted.
(WebCore::RTCTrackEvent::eventInterface const): Deleted.
* Modules/paymentrequest/MerchantValidationEvent.cpp:
* Modules/paymentrequest/MerchantValidationEvent.h:
* Modules/paymentrequest/PaymentMethodChangeEvent.cpp:
* Modules/paymentrequest/PaymentMethodChangeEvent.h:
* Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:
* Modules/paymentrequest/PaymentRequestUpdateEvent.h:
* Modules/speech/SpeechSynthesisEvent.cpp:
* Modules/speech/SpeechSynthesisEvent.h:
(WebCore::SpeechSynthesisEvent::charIndex const): Deleted.
(WebCore::SpeechSynthesisEvent::elapsedTime const): Deleted.
(WebCore::SpeechSynthesisEvent::name const): Deleted.
(WebCore::SpeechSynthesisEvent::eventInterface const): Deleted.
* Modules/webaudio/AudioProcessingEvent.cpp:
* Modules/webaudio/AudioProcessingEvent.h:
* Modules/webaudio/OfflineAudioCompletionEvent.cpp:
* Modules/webaudio/OfflineAudioCompletionEvent.h:
* Modules/webgpu/GPUUncapturedErrorEvent.cpp:
* Modules/webgpu/GPUUncapturedErrorEvent.h:
* Modules/websockets/CloseEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* Modules/websockets/CloseEvent.h:
(WebCore::CloseEvent::create): Deleted.
(WebCore::CloseEvent::wasClean const): Deleted.
(WebCore::CloseEvent::code const): Deleted.
(WebCore::CloseEvent::reason const): Deleted.
(WebCore::CloseEvent::CloseEvent): Deleted.
* Modules/webvr/VRDisplayEvent.cpp:
* Modules/webvr/VRDisplayEvent.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* accessibility/AccessibleSetValueEvent.cpp:
* accessibility/AccessibleSetValueEvent.h:
(WebCore::AccessibleSetValueEvent::create): Deleted.
(WebCore::AccessibleSetValueEvent::value const): Deleted.
* animation/AnimationPlaybackEvent.cpp:
* animation/AnimationPlaybackEvent.h:
* bindings/js/ScriptWrappable.cpp: Copied from Source/WebCore/html/canvas/WebGLContextEvent.cpp.
* bindings/js/ScriptWrappable.h:
* dom/AnimationEvent.cpp:
* dom/AnimationEvent.h:
* dom/BeforeLoadEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/BeforeLoadEvent.h:
* dom/BeforeTextInsertedEvent.cpp:
* dom/BeforeTextInsertedEvent.h:
* dom/BeforeUnloadEvent.cpp:
* dom/BeforeUnloadEvent.h:
* dom/ClipboardEvent.cpp:
* dom/ClipboardEvent.h:
* dom/CompositionEvent.cpp:
* dom/CompositionEvent.h:
* dom/CustomEvent.cpp:
* dom/CustomEvent.h:
* dom/DeviceMotionEvent.cpp:
* dom/DeviceMotionEvent.h:
* dom/DeviceOrientationEvent.cpp:
* dom/DeviceOrientationEvent.h:
* dom/ErrorEvent.cpp:
* dom/ErrorEvent.h:
* dom/Event.cpp:
* dom/Event.h:
* dom/FocusEvent.cpp:
* dom/FocusEvent.h:
* dom/HashChangeEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/HashChangeEvent.h:
* dom/InputEvent.cpp:
* dom/InputEvent.h:
* dom/KeyboardEvent.cpp:
* dom/KeyboardEvent.h:
* dom/MessageEvent.cpp:
* dom/MessageEvent.h:
* dom/MouseEvent.cpp:
* dom/MouseEvent.h:
* dom/MouseRelatedEvent.cpp:
* dom/MouseRelatedEvent.h:
* dom/MutationEvent.cpp:
* dom/MutationEvent.h:
* dom/OverflowEvent.cpp:
* dom/OverflowEvent.h:
* dom/PageTransitionEvent.cpp:
* dom/PageTransitionEvent.h:
* dom/PointerEvent.cpp:
* dom/PointerEvent.h:
* dom/PopStateEvent.cpp:
* dom/PopStateEvent.h:
* dom/ProgressEvent.cpp:
* dom/ProgressEvent.h:
* dom/PromiseRejectionEvent.cpp:
* dom/PromiseRejectionEvent.h:
* dom/SecurityPolicyViolationEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/SecurityPolicyViolationEvent.h:
* dom/TextEvent.cpp:
* dom/TextEvent.h:
* dom/TouchEvent.cpp:
* dom/TouchEvent.h:
* dom/TransitionEvent.cpp:
* dom/TransitionEvent.h:
* dom/UIEvent.cpp:
* dom/UIEvent.h:
* dom/UIEventWithKeyState.cpp:
* dom/UIEventWithKeyState.h:
* dom/WebKitAnimationEvent.cpp:
* dom/WebKitAnimationEvent.h:
* dom/WebKitTransitionEvent.cpp:
* dom/WebKitTransitionEvent.h:
* dom/WheelEvent.cpp:
* dom/WheelEvent.h:
* html/MediaEncryptedEvent.cpp:
* html/MediaEncryptedEvent.h:
* html/canvas/WebGLContextEvent.cpp:
* html/canvas/WebGLContextEvent.h:
* html/shadow/ProgressShadowElement.h:
* html/track/TrackEvent.cpp:
* html/track/TrackEvent.h:
* storage/StorageEvent.cpp:
* storage/StorageEvent.h:
(WebCore::StorageEvent::key const): Deleted.
(WebCore::StorageEvent::oldValue const): Deleted.
(WebCore::StorageEvent::newValue const): Deleted.
(WebCore::StorageEvent::url const): Deleted.
(WebCore::StorageEvent::storageArea const): Deleted.
* svg/SVGFEDistantLightElement.h:
* svg/SVGFEFuncAElement.h:
* svg/SVGFEFuncBElement.h:
* svg/SVGFEFuncGElement.h:
* svg/SVGFEFuncRElement.h:
* svg/SVGFEPointLightElement.h:
* svg/SVGFESpotLightElement.h:
* svg/SVGZoomEvent.cpp:
* svg/SVGZoomEvent.h:
* workers/service/ExtendableEvent.cpp:
* workers/service/ExtendableEvent.h:
* workers/service/ExtendableMessageEvent.cpp:
* workers/service/ExtendableMessageEvent.h:
* workers/service/FetchEvent.cpp:
* workers/service/FetchEvent.h:
* xml/XMLHttpRequestProgressEvent.cpp: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeyMessageEvent.cpp.
* xml/XMLHttpRequestProgressEvent.h:
(WebCore::XMLHttpRequestProgressEvent::create): Deleted.
(WebCore::XMLHttpRequestProgressEvent::position const): Deleted.
(WebCore::XMLHttpRequestProgressEvent::totalSize const): Deleted.
(WebCore::XMLHttpRequestProgressEvent::XMLHttpRequestProgressEvent): Deleted.

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

8 weeks agoJPEGImageDecoder: use libjpeg-turbo RGBA output path even for Adobe transform=0 JPEGs
Hironori.Fujii@sony.com [Wed, 18 Sep 2019 10:03:19 +0000 (10:03 +0000)]
JPEGImageDecoder: use libjpeg-turbo RGBA output path even for Adobe transform=0 JPEGs
https://bugs.webkit.org/show_bug.cgi?id=200163

Reviewed by Carlos Garcia Campos.

Remove the workaround for old libjpeg-turbo which doesn't support
BGRA output for Adobe transform=0 images. The bug was fixed in
libjpeg-turbo 1.2.1.

No new tests, no behavior change.

* platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
(WebCore::JPEGImageReader::decode): Removed code in #if defined(TURBO_JPEG_RGB_SWIZZLE).
(colorSpaceHasAlpha): Removed an unused inline function.

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

8 weeks agoUnreviewed. Remove build warning since r248998.
jh718.park@samsung.com [Wed, 18 Sep 2019 09:19:33 +0000 (09:19 +0000)]
Unreviewed. Remove build warning since r248998.

This patch removes build warning below.
warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

No new tests, no behavioral change.

Patch by Joonghun Park <jh718.park@samsung.com> on 2019-09-18

* platform/image-decoders/png/PNGImageDecoder.cpp:
(WebCore::PNGImageDecoder::rowAvailable):

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

8 weeks ago[cairo] Incorrect targetRect in BackingStoreBackendCairoImpl::scroll
Hironori.Fujii@sony.com [Wed, 18 Sep 2019 07:55:42 +0000 (07:55 +0000)]
[cairo] Incorrect targetRect in BackingStoreBackendCairoImpl::scroll
https://bugs.webkit.org/show_bug.cgi?id=201895

Reviewed by Carlos Garcia Campos.

In BackingStoreBackendCairoImpl::scroll, targetRect is calculated
wrongly by shifting maxX and maxY. Bug 59655 fixed the issue by
removing the shifting, but only for BackingStoreBackendCairoX11::scroll.

No new tests, no behavior change.

* platform/graphics/cairo/BackingStoreBackendCairoImpl.cpp:
(WebCore::BackingStoreBackendCairoImpl::scroll): Take intersection of targetRect and scrollRect.

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

8 weeks ago[Cocoa] Add a WKA extension point
aestes@apple.com [Wed, 18 Sep 2019 07:16:11 +0000 (07:16 +0000)]
[Cocoa] Add a WKA extension point
https://bugs.webkit.org/show_bug.cgi?id=201801
<rdar://problem/55372507>

Reviewed by Alexey Proskuryakov.

* Modules/applepay/ApplePayRequestBase.cpp:
(WebCore::requiresSupportedNetworks):
(WebCore::convertAndValidate):

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

8 weeks ago[JSC] Generator should have internal fields
ysuzuki@apple.com [Wed, 18 Sep 2019 05:02:45 +0000 (05:02 +0000)]
[JSC] Generator should have internal fields
https://bugs.webkit.org/show_bug.cgi?id=201159

Reviewed by Keith Miller.

JSTests:

* stress/create-generator.js: Added.
(shouldBe):
(test.generator):
(test):
* stress/generator-construct-failure.js: Added.
(shouldThrow):
(TypeError):
* stress/generator-prototype-change.js: Added.
(shouldBe):
(gen):
* stress/generator-prototype-closure.js: Added.
(shouldBe):
(test.gen):
(test):
* stress/object-assign-fast-path.js:

Source/JavaScriptCore:

This patch makes generator's internal states InternalField instead of private properties.
Each generator function produces a generator with different [[Prototype]], which makes generators have different Structures.
As a result, Generator.prototype.next etc.'s implementation becomes megamorphic even if it is not necessary.

If we make these structures adaptively poly-proto, some generators get poly-proto structures while others are not, resulting
in megamorphic lookup in Generator.prototype.next. If we make all the generator's structure poly-proto, it makes Generator.prototype.next
lookup suboptimal for now.

In this patch, we start with a relatively simple solution. This patch introduces JSGenerator class, and it has internal fields for generator's internal
states. We extend promise-internal-field access bytecodes to access to these fields from bytecode so that Generator.prototype.next can access
these fields without using megamorphic get_by_id_direct.

And we attach JSGeneratorType to JSGenerator so that we can efficiently implement `@isGenerator()` check in bytecode.

We reserve the offset = 0 slot for the future poly-proto extension for JSGenerator. By reserving this slot, non-poly-proto JSGenerator and poly-proto
JSGenerator still can offer the way to access to the same Generator internal fields with the same offset while poly-proto JSGenerator can get offset = 0
inline-storage slot for PolyProto implementation.

This patch adds op_create_generator since it is distinct from op_create_promise once we add PolyProto support.
In the future when we introduce some kind of op_create_async_generator we will probably share only one bytecode for both generator and async generator.

This patch offers around 10% improvement in JetStream2/Basic. And this patch is the basis of optimization of JetStream2/async-fs which leverages async generators significantly.

This patch includes several design decisions.

    1. We add a new JSGenerator instead of leveraging JSFinalObject. The main reason is that we would like to have JSGeneratorType to quickly query `@isGenerator`.
    2. This patch currently does not include object-allocation-sinking support for JSGenerator, but it is trivial, and will be added. And this patch also does not include poly-proto
       support for JSGenerator. The main reason is simply because this patch is already large enough, and I do not want to make this patch larger and larger.
    3. We can support arbitrary sized inline-storage: Reserving 0-5 offsets for internal fields, and start putting all the other things to the subsequent internal fields. But for now,
       we are not taking this approach just because I'm not sure this is necessary. If we found such a pattern, we can easily extend the current one but for now, I would like to keep
       this patch simple.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* builtins/AsyncFunctionPrototype.js:
(globalPrivate.asyncFunctionResume):
* builtins/GeneratorPrototype.js:
(globalPrivate.generatorResume):
(next):
(return):
(throw):
* bytecode/BytecodeGeneratorification.cpp:
(JSC::BytecodeGeneratorification::run):
* bytecode/BytecodeIntrinsicRegistry.cpp:
(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):
* bytecode/BytecodeIntrinsicRegistry.h:
* bytecode/BytecodeList.rb:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finalizeLLIntInlineCaches):
* bytecode/SpeculatedType.cpp:
(JSC::speculationFromJSType):
* bytecode/SpeculatedType.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitPutGeneratorFields):
(JSC::BytecodeGenerator::emitCreateGenerator):
(JSC::BytecodeGenerator::emitNewGenerator):
(JSC::BytecodeGenerator::emitYield):
(JSC::BytecodeGenerator::emitDelegateYield):
(JSC::BytecodeGenerator::emitGeneratorStateChange):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitIsGenerator):
(JSC::BytecodeGenerator::generatorStateRegister):
(JSC::BytecodeGenerator::generatorValueRegister):
(JSC::BytecodeGenerator::generatorResumeModeRegister):
(JSC::BytecodeGenerator::generatorFrameRegister):
* bytecompiler/NodesCodegen.cpp:
(JSC::generatorInternalFieldIndex):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_getGeneratorInternalField):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_putGeneratorInternalField):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_isGenerator):
(JSC::FunctionNode::emitBytecode):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGClobbersExitState.cpp:
(JSC::DFG::clobbersExitState):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupIsCellWithType):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
* dfg/DFGNode.h:
(JSC::DFG::Node::convertToNewGenerator):
(JSC::DFG::Node::speculatedTypeForQuery):
(JSC::DFG::Node::hasStructure):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileCreatePromise):
(JSC::DFG::SpeculativeJIT::compileCreateGenerator):
(JSC::DFG::SpeculativeJIT::compileNewGenerator):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStoreBarrierInsertionPhase.cpp:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewGenerator):
(JSC::FTL::DFG::LowerDFGToB3::compileCreatePromise):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateGenerator):
(JSC::FTL::DFG::LowerDFGToB3::isCellWithType):
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_internal_field):
(JSC::JIT::emit_op_put_internal_field):
* llint/LowLevelInterpreter.asm:
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/CommonSlowPaths.h:
* runtime/InternalFunction.cpp:
(JSC::InternalFunction::createSubclassStructureSlow):
* runtime/InternalFunction.h:
(JSC::InternalFunction::createSubclassStructure):
* runtime/JSGenerator.cpp: Added.
(JSC::JSGenerator::create):
(JSC::JSGenerator::createStructure):
(JSC::JSGenerator::JSGenerator):
(JSC::JSGenerator::finishCreation):
(JSC::JSGenerator::visitChildren):
* runtime/JSGenerator.h: Copied from Source/JavaScriptCore/runtime/JSGeneratorFunction.h.
* runtime/JSGeneratorFunction.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::generatorStructure const):
* runtime/JSType.cpp:
(WTF::printInternal):
* runtime/JSType.h:

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

8 weeks agoUnreviewed iOS 13 test gardening, update test expectations.
ryanhaddad@apple.com [Wed, 18 Sep 2019 04:33:54 +0000 (04:33 +0000)]
Unreviewed iOS 13 test gardening, update test expectations.

* platform/ios/TestExpectations:

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

8 weeks agoUnreviewed iOS 13 test gardening, udpate test expectations and baselines.
ryanhaddad@apple.com [Wed, 18 Sep 2019 04:22:07 +0000 (04:22 +0000)]
Unreviewed iOS 13 test gardening, udpate test expectations and baselines.

* platform/ios/TestExpectations:
* platform/ios/js/dom/navigator-maxtouchpoints-expected.txt: Added.
* platform/ios/platform/ios/ios/fast/text/opticalFont-expected.txt:

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

8 weeks agoUnreviewed test gardening, rebaseline a test after r249963.
ryanhaddad@apple.com [Wed, 18 Sep 2019 03:58:54 +0000 (03:58 +0000)]
Unreviewed test gardening, rebaseline a test after r249963.

* media/track/track-cue-rendering-rtl-expected.txt:

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

8 weeks agoMove comment explaining our Options to OptionsList.h
keith_miller@apple.com [Wed, 18 Sep 2019 03:23:28 +0000 (03:23 +0000)]
Move comment explaining our Options to OptionsList.h
https://bugs.webkit.org/show_bug.cgi?id=201891

Rubber-stamped by Mark Lam.

We moved the list so we should move the comment.

* runtime/Options.h:
* runtime/OptionsList.h:

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

8 weeks agoFollow-up: [iOS 13] Enable WebKit build
jbedard@apple.com [Wed, 18 Sep 2019 02:48:09 +0000 (02:48 +0000)]
Follow-up: [iOS 13] Enable WebKit build
https://bugs.webkit.org/show_bug.cgi?id=199481
<rdar://problem/52619048>

Unreviewed build-fix.

* WebKitPrivateFrameworkStubs/iOS/13/DeviceIdentity.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/DeviceIdentity.framework/DeviceIdentity.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/13/IOSurfaceAccelerator.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.

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

8 weeks ago[Win][MiniBrowser] Remove unused DOMDefaultImpl.cpp
Hironori.Fujii@sony.com [Wed, 18 Sep 2019 01:55:42 +0000 (01:55 +0000)]
[Win][MiniBrowser] Remove unused DOMDefaultImpl.cpp
https://bugs.webkit.org/show_bug.cgi?id=201867

Reviewed by Darin Adler.

* MiniBrowser/win/CMakeLists.txt: Removed DOMDefaultImpl.cpp.
* MiniBrowser/win/DOMDefaultImpl.cpp: Removed.
* MiniBrowser/win/DOMDefaultImpl.h: Removed.
* MiniBrowser/win/WebKitLegacyBrowserWindow.cpp:

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

8 weeks agoUnreviewed, revert change that Alex mistakenly committed at the same time as r250006...
cdumez@apple.com [Wed, 18 Sep 2019 01:43:06 +0000 (01:43 +0000)]
Unreviewed, revert change that Alex mistakenly committed at the same time as r250006 and broke the build.

* page/PerformanceObserver.idl:

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

8 weeks agoUnreviewed WinCairo build fix following r249985.
ross.kirsling@sony.com [Wed, 18 Sep 2019 01:27:23 +0000 (01:27 +0000)]
Unreviewed WinCairo build fix following r249985.

* Shared/WebProcessDataStoreParameters.h:

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

8 weeks agoRemove the "Show Link Previews" and "Hide Link Previews" action menus in the preview...
dino@apple.com [Wed, 18 Sep 2019 01:20:41 +0000 (01:20 +0000)]
Remove the "Show Link Previews" and "Hide Link Previews" action menus in the preview platter
https://bugs.webkit.org/show_bug.cgi?id=201864
<rdar://55190038>

Reviewed by Simon Fraser.

Source/WebKit:

* UIProcess/ios/WKActionSheetAssistant.mm: Remove the toggle action from the
default values.
(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
* UIProcess/ios/WKContentViewInteraction.mm: No longer try to add a toggle when
it isn't there.
(-[WKContentView assignLegacyDataForContextMenuInteraction]):
(menuWithShowLinkPreviewAction): Deleted.

Tools:

Test for the suggested actions.

* TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:
(-[TestContextMenuSuggestedActionsUIDelegate webView:contextMenuConfigurationForElement:completionHandler:]):
(-[TestContextMenuSuggestedActionsUIDelegate webView:contextMenuWillPresentForElement:]):
(TEST):

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

8 weeks agoElide unnecessary moves in Air O0
keith_miller@apple.com [Wed, 18 Sep 2019 01:06:46 +0000 (01:06 +0000)]
Elide unnecessary moves in Air O0
https://bugs.webkit.org/show_bug.cgi?id=201703

Reviewed by Saam Barati.

This patch also removes the code that would try to reuse temps in
WasmAirIRGenerator. That code makes it hard to accurately
determine where a temp dies as it could be reused again
later. Thus every temp, may appear to live for a long time in the
global ordering.

This appears to be a minor progression on the overall score of
wasm subtests in JS2 and a 10% wasm-JIT memory usage reduction.

This patch also fixes an issue where we didn't ask Patchpoints
for early clobber registers when determining what callee saves
were used by the program.

* b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:
(JSC::B3::Air::GenerateAndAllocateRegisters::generate):
* b3/air/AirBasicBlock.h:
* b3/air/AirCode.h:
* b3/air/AirHandleCalleeSaves.cpp:
(JSC::B3::Air::handleCalleeSaves):
* b3/air/testair.cpp:
* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::didKill): Deleted.
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::didKill): Deleted.
* wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseBody):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
* wasm/WasmValidate.cpp:
(JSC::Wasm::Validate::didKill): Deleted.

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

8 weeks agoStop calling Page::setSessionID() from WebKit2
achristensen@apple.com [Wed, 18 Sep 2019 00:38:46 +0000 (00:38 +0000)]
Stop calling Page::setSessionID() from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=201888

Patch by Chris Dumez <cdumez@apple.com> on 2019-09-17
Reviewed by Alex Christensen.

Stop calling Page::setSessionID() from WebKit2 since Page's sessionID can never change when
using WebKit2 (We process-swap and create a new Page in a new process when changing data
store). Instead, we now pass the sessionID ID when constructing the Page, as part of the
PageConfiguration structure.

Source/WebCore:

* editing/markup.cpp:
(WebCore::createPageForSanitizingWebContent):
* loader/EmptyClients.cpp:
(WebCore::pageConfigurationWithEmptyClients):
* loader/EmptyClients.h:
* page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::setSessionID):
* page/PageConfiguration.cpp:
(WebCore::PageConfiguration::PageConfiguration):
* page/PageConfiguration.h:
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::createPageForServiceWorker):
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):

Source/WebKit:

* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::installServiceWorker):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_textAutoSizingAdjustmentTimer):
(WebKit::WebPage::setSessionID): Deleted.
* WebProcess/WebPage/WebPage.h:

Source/WebKitLegacy/mac:

* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):

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

8 weeks agoUse constexpr instead of const in symbol definitions that are obviously constexpr.
mark.lam@apple.com [Wed, 18 Sep 2019 00:36:19 +0000 (00:36 +0000)]
Use constexpr instead of const in symbol definitions that are obviously constexpr.
https://bugs.webkit.org/show_bug.cgi?id=201879

Rubber-stamped by Joseph Pecoraro.

Source/bmalloc:

* bmalloc/AvailableMemory.cpp:
* bmalloc/IsoTLS.h:
* bmalloc/Map.h:
* bmalloc/Mutex.cpp:
(bmalloc::Mutex::lockSlowCase):
* bmalloc/PerThread.h:
* bmalloc/Vector.h:
* bmalloc/Zone.h:

Source/JavaScriptCore:

const may require external storage  (at the compiler's whim) though these
currently do not.  constexpr makes it clear that the value is a literal constant
that can be inlined.  In most cases in the code, when we say static const, we
actually mean static constexpr.  I'm changing the code to reflect this.

* API/JSAPIValueWrapper.h:
* API/JSCallbackConstructor.h:
* API/JSCallbackObject.h:
* API/JSContextRef.cpp:
* API/JSWrapperMap.mm:
* API/tests/CompareAndSwapTest.cpp:
* API/tests/TypedArrayCTest.cpp:
* API/tests/testapi.mm:
(testObjectiveCAPIMain):
* KeywordLookupGenerator.py:
(Trie.printAsC):
* assembler/ARMv7Assembler.h:
* assembler/AssemblerBuffer.h:
* assembler/AssemblerCommon.h:
* assembler/MacroAssembler.h:
* assembler/MacroAssemblerARM64.h:
* assembler/MacroAssemblerARM64E.h:
* assembler/MacroAssemblerARMv7.h:
* assembler/MacroAssemblerCodeRef.h:
* assembler/MacroAssemblerMIPS.h:
* assembler/MacroAssemblerX86.h:
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::absDouble):
(JSC::MacroAssemblerX86Common::negateDouble):
* assembler/MacroAssemblerX86_64.h:
* assembler/X86Assembler.h:
* b3/B3Bank.h:
* b3/B3CheckSpecial.h:
* b3/B3DuplicateTails.cpp:
* b3/B3EliminateCommonSubexpressions.cpp:
* b3/B3FixSSA.cpp:
* b3/B3FoldPathConstants.cpp:
* b3/B3InferSwitches.cpp:
* b3/B3Kind.h:
* b3/B3LowerToAir.cpp:
* b3/B3NativeTraits.h:
* b3/B3ReduceDoubleToFloat.cpp:
* b3/B3ReduceLoopStrength.cpp:
* b3/B3ReduceStrength.cpp:
* b3/B3ValueKey.h:
* b3/air/AirAllocateRegistersByGraphColoring.cpp:
* b3/air/AirAllocateStackByGraphColoring.cpp:
* b3/air/AirArg.h:
* b3/air/AirCCallSpecial.h:
* b3/air/AirEmitShuffle.cpp:
* b3/air/AirFixObviousSpills.cpp:
* b3/air/AirFormTable.h:
* b3/air/AirLowerAfterRegAlloc.cpp:
* b3/air/AirPrintSpecial.h:
* b3/air/AirStackAllocation.cpp:
* b3/air/AirTmp.h:
* b3/testb3_6.cpp:
(testInterpreter):
* bytecode/AccessCase.cpp:
* bytecode/CallLinkStatus.cpp:
* bytecode/CallVariant.h:
* bytecode/CodeBlock.h:
* bytecode/CodeOrigin.h:
* bytecode/DFGExitProfile.h:
* bytecode/DirectEvalCodeCache.h:
* bytecode/ExecutableToCodeBlockEdge.h:
* bytecode/GetterSetterAccessCase.cpp:
* bytecode/LazyOperandValueProfile.h:
* bytecode/ObjectPropertyCondition.h:
* bytecode/ObjectPropertyConditionSet.cpp:
* bytecode/PolymorphicAccess.cpp:
* bytecode/PropertyCondition.h:
* bytecode/SpeculatedType.h:
* bytecode/StructureStubInfo.cpp:
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset):
* bytecode/UnlinkedCodeBlock.h:
* bytecode/UnlinkedEvalCodeBlock.h:
* bytecode/UnlinkedFunctionCodeBlock.h:
* bytecode/UnlinkedFunctionExecutable.h:
* bytecode/UnlinkedModuleProgramCodeBlock.h:
* bytecode/UnlinkedProgramCodeBlock.h:
* bytecode/ValueProfile.h:
* bytecode/VirtualRegister.h:
* bytecode/Watchpoint.h:
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/Label.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::ThisNode::emitBytecode):
* bytecompiler/RegisterID.h:
* debugger/Breakpoint.h:
* debugger/DebuggerParseData.cpp:
* debugger/DebuggerPrimitives.h:
* debugger/DebuggerScope.h:
* dfg/DFGAbstractHeap.h:
* dfg/DFGAbstractValue.h:
* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGByteCodeParser.cpp:
* dfg/DFGCSEPhase.cpp:
* dfg/DFGCommon.h:
* dfg/DFGCompilationKey.h:
* dfg/DFGDesiredGlobalProperty.h:
* dfg/DFGEdgeDominates.h:
* dfg/DFGEpoch.h:
* dfg/DFGForAllKills.h:
(JSC::DFG::forAllKilledNodesAtNodeIndex):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::isLiveInBytecode):
* dfg/DFGHeapLocation.h:
* dfg/DFGInPlaceAbstractState.cpp:
* dfg/DFGIntegerCheckCombiningPhase.cpp:
* dfg/DFGIntegerRangeOptimizationPhase.cpp:
* dfg/DFGInvalidationPointInjectionPhase.cpp:
* dfg/DFGLICMPhase.cpp:
* dfg/DFGLazyNode.h:
* dfg/DFGMinifiedID.h:
* dfg/DFGMovHintRemovalPhase.cpp:
* dfg/DFGNodeFlowProjection.h:
* dfg/DFGNodeType.h:
* dfg/DFGObjectAllocationSinkingPhase.cpp:
* dfg/DFGPhantomInsertionPhase.cpp:
* dfg/DFGPromotedHeapLocation.h:
* dfg/DFGPropertyTypeKey.h:
* dfg/DFGPureValue.h:
* dfg/DFGPutStackSinkingPhase.cpp:
* dfg/DFGRegisterBank.h:
* dfg/DFGSSAConversionPhase.cpp:
* dfg/DFGSSALoweringPhase.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileDoubleRep):
(JSC::DFG::compileClampDoubleToByte):
(JSC::DFG::SpeculativeJIT::compileArithRounding):
(JSC::DFG::compileArithPowIntegerFastPath):
(JSC::DFG::SpeculativeJIT::compileArithPow):
(JSC::DFG::SpeculativeJIT::emitBinarySwitchStringRecurse):
* dfg/DFGStackLayoutPhase.cpp:
* dfg/DFGStoreBarrierInsertionPhase.cpp:
* dfg/DFGStrengthReductionPhase.cpp:
* dfg/DFGStructureAbstractValue.h:
* dfg/DFGVarargsForwardingPhase.cpp:
* dfg/DFGVariableEventStream.cpp:
(JSC::DFG::VariableEventStream::reconstruct const):
* dfg/DFGWatchpointCollectionPhase.cpp:
* disassembler/ARM64/A64DOpcode.h:
* ftl/FTLLocation.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileArithRandom):
* ftl/FTLSlowPathCall.cpp:
* ftl/FTLSlowPathCallKey.h:
* heap/CellContainer.h:
* heap/CellState.h:
* heap/ConservativeRoots.h:
* heap/GCSegmentedArray.h:
* heap/HandleBlock.h:
* heap/Heap.cpp:
(JSC::Heap::updateAllocationLimits):
* heap/Heap.h:
* heap/HeapSnapshot.h:
* heap/HeapUtil.h:
(JSC::HeapUtil::findGCObjectPointersForMarking):
* heap/IncrementalSweeper.cpp:
* heap/LargeAllocation.h:
* heap/MarkedBlock.cpp:
* heap/Strong.h:
* heap/VisitRaceKey.h:
* heap/Weak.h:
* heap/WeakBlock.h:
* inspector/JSInjectedScriptHost.h:
* inspector/JSInjectedScriptHostPrototype.h:
* inspector/JSJavaScriptCallFrame.h:
* inspector/JSJavaScriptCallFramePrototype.h:
* inspector/agents/InspectorConsoleAgent.cpp:
* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):
* inspector/scripts/codegen/generate_cpp_protocol_types_header.py:
(CppProtocolTypesHeaderGenerator._generate_versions):
* inspector/scripts/tests/generic/expected/version.json-result:
* interpreter/Interpreter.h:
* interpreter/ShadowChicken.cpp:
* jit/BinarySwitch.cpp:
* jit/CallFrameShuffler.h:
* jit/ExecutableAllocator.h:
* jit/FPRInfo.h:
* jit/GPRInfo.h:
* jit/ICStats.h:
* jit/JITThunks.h:
* jit/Reg.h:
* jit/RegisterSet.h:
* jit/TempRegisterSet.h:
* jsc.cpp:
* parser/ASTBuilder.h:
* parser/Nodes.h:
* parser/SourceCodeKey.h:
* parser/SyntaxChecker.h:
* parser/VariableEnvironment.h:
* profiler/ProfilerOrigin.h:
* profiler/ProfilerOriginStack.h:
* profiler/ProfilerUID.h:
* runtime/AbstractModuleRecord.cpp:
* runtime/ArrayBufferNeuteringWatchpointSet.h:
* runtime/ArrayConstructor.h:
* runtime/ArrayConventions.h:
* runtime/ArrayIteratorPrototype.h:
* runtime/ArrayPrototype.cpp:
(JSC::setLength):
* runtime/AsyncFromSyncIteratorPrototype.h:
* runtime/AsyncGeneratorFunctionPrototype.h:
* runtime/AsyncGeneratorPrototype.h:
* runtime/AsyncIteratorPrototype.h:
* runtime/AtomicsObject.cpp:
* runtime/BigIntConstructor.h:
* runtime/BigIntPrototype.h:
* runtime/BooleanPrototype.h:
* runtime/ClonedArguments.h:
* runtime/CodeCache.h:
* runtime/ControlFlowProfiler.h:
* runtime/CustomGetterSetter.h:
* runtime/DateConstructor.h:
* runtime/DatePrototype.h:
* runtime/DefinePropertyAttributes.h:
* runtime/ErrorPrototype.h:
* runtime/EvalExecutable.h:
* runtime/Exception.h:
* runtime/ExceptionHelpers.cpp:
(JSC::invalidParameterInSourceAppender):
(JSC::invalidParameterInstanceofSourceAppender):
* runtime/ExceptionHelpers.h:
* runtime/ExecutableBase.h:
* runtime/FunctionExecutable.h:
* runtime/FunctionRareData.h:
* runtime/GeneratorPrototype.h:
* runtime/GenericArguments.h:
* runtime/GenericOffset.h:
* runtime/GetPutInfo.h:
* runtime/GetterSetter.h:
* runtime/GlobalExecutable.h:
* runtime/Identifier.h:
* runtime/InspectorInstrumentationObject.h:
* runtime/InternalFunction.h:
* runtime/IntlCollatorConstructor.h:
* runtime/IntlCollatorPrototype.h:
* runtime/IntlDateTimeFormatConstructor.h:
* runtime/IntlDateTimeFormatPrototype.h:
* runtime/IntlNumberFormatConstructor.h:
* runtime/IntlNumberFormatPrototype.h:
* runtime/IntlObject.h:
* runtime/IntlPluralRulesConstructor.h:
* runtime/IntlPluralRulesPrototype.h:
* runtime/IteratorPrototype.h:
* runtime/JSArray.cpp:
(JSC::JSArray::tryCreateUninitializedRestricted):
* runtime/JSArray.h:
* runtime/JSArrayBuffer.h:
* runtime/JSArrayBufferView.h:
* runtime/JSBigInt.h:
* runtime/JSCJSValue.h:
* runtime/JSCell.h:
* runtime/JSCustomGetterSetterFunction.h:
* runtime/JSDataView.h:
* runtime/JSDataViewPrototype.h:
* runtime/JSDestructibleObject.h:
* runtime/JSFixedArray.h:
* runtime/JSGenericTypedArrayView.h:
* runtime/JSGlobalLexicalEnvironment.h:
* runtime/JSGlobalObject.h:
* runtime/JSImmutableButterfly.h:
* runtime/JSInternalPromiseConstructor.h:
* runtime/JSInternalPromiseDeferred.h:
* runtime/JSInternalPromisePrototype.h:
* runtime/JSLexicalEnvironment.h:
* runtime/JSModuleEnvironment.h:
* runtime/JSModuleLoader.h:
* runtime/JSModuleNamespaceObject.h:
* runtime/JSNonDestructibleProxy.h:
* runtime/JSONObject.cpp:
* runtime/JSONObject.h:
* runtime/JSObject.h:
* runtime/JSPromiseConstructor.h:
* runtime/JSPromiseDeferred.h:
* runtime/JSPromisePrototype.h:
* runtime/JSPropertyNameEnumerator.h:
* runtime/JSProxy.h:
* runtime/JSScope.h:
* runtime/JSScriptFetchParameters.h:
* runtime/JSScriptFetcher.h:
* runtime/JSSegmentedVariableObject.h:
* runtime/JSSourceCode.h:
* runtime/JSString.cpp:
* runtime/JSString.h:
* runtime/JSSymbolTableObject.h:
* runtime/JSTemplateObjectDescriptor.h:
* runtime/JSTypeInfo.h:
* runtime/MapPrototype.h:
* runtime/MinimumReservedZoneSize.h:
* runtime/ModuleProgramExecutable.h:
* runtime/NativeExecutable.h:
* runtime/NativeFunction.h:
* runtime/NativeStdFunctionCell.h:
* runtime/NumberConstructor.h:
* runtime/NumberPrototype.h:
* runtime/ObjectConstructor.h:
* runtime/ObjectPrototype.h:
* runtime/ProgramExecutable.h:
* runtime/PromiseDeferredTimer.cpp:
* runtime/PropertyMapHashTable.h:
* runtime/PropertyNameArray.h:
(JSC::PropertyNameArray::add):
* runtime/PrototypeKey.h:
* runtime/ProxyConstructor.h:
* runtime/ProxyObject.cpp:
(JSC::ProxyObject::performGetOwnPropertyNames):
* runtime/ProxyRevoke.h:
* runtime/ReflectObject.h:
* runtime/RegExp.h:
* runtime/RegExpCache.h:
* runtime/RegExpConstructor.h:
* runtime/RegExpKey.h:
* runtime/RegExpObject.h:
* runtime/RegExpPrototype.h:
* runtime/RegExpStringIteratorPrototype.h:
* runtime/SamplingProfiler.cpp:
* runtime/ScopedArgumentsTable.h:
* runtime/ScriptExecutable.h:
* runtime/SetPrototype.h:
* runtime/SmallStrings.h:
* runtime/SparseArrayValueMap.h:
* runtime/StringConstructor.h:
* runtime/StringIteratorPrototype.h:
* runtime/StringObject.h:
* runtime/StringPrototype.h:
* runtime/Structure.h:
* runtime/StructureChain.h:
* runtime/StructureRareData.h:
* runtime/StructureTransitionTable.h:
* runtime/Symbol.h:
* runtime/SymbolConstructor.h:
* runtime/SymbolPrototype.h:
* runtime/SymbolTable.h:
* runtime/TemplateObjectDescriptor.h:
* runtime/TypeProfiler.cpp:
* runtime/TypeProfiler.h:
* runtime/TypeProfilerLog.cpp:
* runtime/VarOffset.h:
* testRegExp.cpp:
* tools/HeapVerifier.cpp:
(JSC::HeapVerifier::checkIfRecorded):
* tools/JSDollarVM.cpp:
* wasm/WasmB3IRGenerator.cpp:
* wasm/WasmBBQPlan.cpp:
* wasm/WasmFaultSignalHandler.cpp:
* wasm/WasmFunctionParser.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
* wasm/WasmOMGPlan.cpp:
* wasm/WasmPlan.cpp:
* wasm/WasmSignature.cpp:
* wasm/WasmSignature.h:
* wasm/WasmWorklist.cpp:
* wasm/js/JSWebAssembly.h:
* wasm/js/JSWebAssemblyCodeBlock.h:
* wasm/js/WebAssemblyCompileErrorConstructor.h:
* wasm/js/WebAssemblyCompileErrorPrototype.h:
* wasm/js/WebAssemblyFunction.h:
* wasm/js/WebAssemblyInstanceConstructor.h:
* wasm/js/WebAssemblyInstancePrototype.h:
* wasm/js/WebAssemblyLinkErrorConstructor.h:
* wasm/js/WebAssemblyLinkErrorPrototype.h:
* wasm/js/WebAssemblyMemoryConstructor.h:
* wasm/js/WebAssemblyMemoryPrototype.h:
* wasm/js/WebAssemblyModuleConstructor.h:
* wasm/js/WebAssemblyModulePrototype.h:
* wasm/js/WebAssemblyRuntimeErrorConstructor.h:
* wasm/js/WebAssemblyRuntimeErrorPrototype.h:
* wasm/js/WebAssemblyTableConstructor.h:
* wasm/js/WebAssemblyTablePrototype.h:
* wasm/js/WebAssemblyToJSCallee.h:
* yarr/Yarr.h:
* yarr/YarrParser.h:
* yarr/generateYarrCanonicalizeUnicode:

Source/WebCore:

No new tests.  Covered by existing tests.

* bindings/js/JSDOMConstructorBase.h:
* bindings/js/JSDOMWindowProperties.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GeneratePrototypeDeclaration):
* bindings/scripts/test/JS/JSTestActiveDOMObject.h:
* bindings/scripts/test/JS/JSTestEnabledBySetting.h:
* bindings/scripts/test/JS/JSTestEnabledForContext.h:
* bindings/scripts/test/JS/JSTestEventTarget.h:
* bindings/scripts/test/JS/JSTestGlobalObject.h:
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestPluginInterface.h:
* bindings/scripts/test/JS/JSTestTypedefs.h:
* bridge/objc/objc_runtime.h:
* bridge/runtime_array.h:
* bridge/runtime_method.h:
* bridge/runtime_object.h:

Source/WebKit:

* WebProcess/Plugins/Netscape/JSNPObject.h:

Source/WTF:

* wtf/Assertions.cpp:
* wtf/AutomaticThread.cpp:
* wtf/BitVector.h:
* wtf/Bitmap.h:
* wtf/BloomFilter.h:
* wtf/Brigand.h:
* wtf/CheckedArithmetic.h:
* wtf/CrossThreadCopier.h:
* wtf/CurrentTime.cpp:
* wtf/DataLog.cpp:
* wtf/DateMath.cpp:
(WTF::daysFrom1970ToYear):
* wtf/DeferrableRefCounted.h:
* wtf/GetPtr.h:
* wtf/HashFunctions.h:
* wtf/HashMap.h:
* wtf/HashTable.h:
* wtf/HashTraits.h:
* wtf/JSONValues.cpp:
* wtf/JSONValues.h:
* wtf/ListHashSet.h:
* wtf/Lock.h:
* wtf/LockAlgorithm.h:
* wtf/LockAlgorithmInlines.h:
(WTF::Hooks>::lockSlow):
* wtf/Logger.h:
* wtf/LoggerHelper.h:
(WTF::LoggerHelper::childLogIdentifier const):
* wtf/MainThread.cpp:
* wtf/MetaAllocatorPtr.h:
* wtf/MonotonicTime.h:
* wtf/NaturalLoops.h:
(WTF::NaturalLoops::NaturalLoops):
* wtf/ObjectIdentifier.h:
* wtf/RAMSize.cpp:
* wtf/Ref.h:
* wtf/RefPtr.h:
* wtf/RetainPtr.h:
* wtf/SchedulePair.h:
* wtf/StackShot.h:
* wtf/StdLibExtras.h:
* wtf/TinyPtrSet.h:
* wtf/URL.cpp:
* wtf/URLHash.h:
* wtf/URLParser.cpp:
(WTF::URLParser::defaultPortForProtocol):
* wtf/Vector.h:
* wtf/VectorTraits.h:
* wtf/WallTime.h:
* wtf/WeakHashSet.h:
* wtf/WordLock.h:
* wtf/cocoa/CPUTimeCocoa.cpp:
* wtf/cocoa/MemoryPressureHandlerCocoa.mm:
* wtf/persistence/PersistentDecoder.h:
* wtf/persistence/PersistentEncoder.h:
* wtf/text/AtomStringHash.h:
* wtf/text/CString.h:
* wtf/text/StringBuilder.cpp:
(WTF::expandedCapacity):
* wtf/text/StringHash.h:
* wtf/text/StringImpl.h:
* wtf/text/StringToIntegerConversion.h:
(WTF::toIntegralType):
* wtf/text/SymbolRegistry.h:
* wtf/text/TextStream.cpp:
(WTF::hasFractions):
* wtf/text/WTFString.h:
* wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp:

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

8 weeks agoFollow-up after String.codePointAt optimization
ysuzuki@apple.com [Wed, 18 Sep 2019 00:31:50 +0000 (00:31 +0000)]
Follow-up after String.codePointAt optimization
https://bugs.webkit.org/show_bug.cgi?id=201889

Reviewed by Saam Barati.

JSTests:

* stress/string-char-at-bad-type.js: Added.
(shouldBe):
(object.toString):
(test):
* stress/string-char-code-at-bad-type.js: Added.
(shouldBe):
(object.toString):
(test):
* stress/string-code-point-at-bad-type.js: Added.
(shouldBe):
(object.toString):
(test):

Source/JavaScriptCore:

Follow-up after string.codePointAt DFG / FTL optimizations,

1. Gracefully accept arguments more than expected for intrinsics
2. Check BadType in String.codePointAt, String.charAt, and String.charCodeAt.

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

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

8 weeks agoUnreviewed restabilization of non-unified build.
ross.kirsling@sony.com [Tue, 17 Sep 2019 23:55:26 +0000 (23:55 +0000)]
Unreviewed restabilization of non-unified build.

Source/WebCore:

* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::resolveContext const):
* platform/win/BString.h:
* svg/PatternAttributes.h:
* svg/SVGLengthValue.cpp:
* svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
* workers/service/ServiceWorkerJob.cpp:
* workers/service/WorkerSWClientConnection.cpp:
* workers/service/server/SWServerRegistration.cpp:

Source/WebKit:

* UIProcess/WebProcessProxy.cpp:
* WebProcess/Network/WebLoaderStrategy.cpp:
* WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:

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

8 weeks agoChange WebAssembly calling conventions
tzagallo@apple.com [Tue, 17 Sep 2019 23:52:28 +0000 (23:52 +0000)]
Change WebAssembly calling conventions
https://bugs.webkit.org/show_bug.cgi?id=201799

Reviewed by Saam Barati.

Currently, the Wasm::Callee writes itself to CallFrameSlot::callee. However, this won't work when
we have the Wasm interpreter, since we need the callee in order to know which function are we executing.
This patch changes the calling conventions in preparation for the interpreter, so that the caller
becomes responsible for writing the callee into the call frame.
However, there are exceptions to this rule: stubs can still write to the callee slot, since they are individually
generated and will still be present in the interpreter. We keep this design to avoid emitting unnecessary
code when we know statically who is the callee:
- Caller writes to call frame: intra-module direct wasm calls, indirect wasm calls, JS-to-wasm stub (new frame), JS-to-wasm IC.
- Callee writes to call frame: inter-module wasm-to-wasm stub, JS-to-wasm stub (callee frame), wasm-to-JS stub, OMG osr entry

Additionally, this patch also changes it so that the callee keeps track of its callers, instead of having a global mapping
of calls in the Wasm::CodeBlock. This makes it easier to repatch all callers of a given Callee when it tiers up.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::addCall):
(JSC::Wasm::AirIRGenerator::addCallIndirect):
(JSC::Wasm::parseAndCompileAir):
* wasm/WasmAirIRGenerator.h:
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::B3IRGenerator::addCallIndirect):
(JSC::Wasm::parseAndCompile):
* wasm/WasmB3IRGenerator.h:
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::BBQPlan):
(JSC::Wasm::BBQPlan::prepare):
(JSC::Wasm::BBQPlan::compileFunctions):
(JSC::Wasm::BBQPlan::complete):
* wasm/WasmBBQPlan.h:
* wasm/WasmBBQPlanInlines.h:
(JSC::Wasm::BBQPlan::initializeCallees):
* wasm/WasmBinding.cpp:
(JSC::Wasm::wasmToWasm):
* wasm/WasmCallee.cpp:
(JSC::Wasm::Callee::Callee):
(JSC::Wasm::repatchMove):
(JSC::Wasm::repatchCall):
(JSC::Wasm::BBQCallee::addCaller):
(JSC::Wasm::BBQCallee::addAndLinkCaller):
(JSC::Wasm::BBQCallee::repatchCallers):
* wasm/WasmCallee.h:
(JSC::Wasm::Callee::entrypoint):
(JSC::Wasm::Callee::code const):
(JSC::Wasm::Callee::calleeSaveRegisters):
* wasm/WasmCallingConvention.h:
(JSC::Wasm::CallingConvention::setupFrameInPrologue const):
* wasm/WasmCodeBlock.cpp:
(JSC::Wasm::CodeBlock::CodeBlock):
* wasm/WasmCodeBlock.h:
(JSC::Wasm::CodeBlock::embedderEntrypointCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::wasmBBQCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::entrypointLoadLocationFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::boxedCalleeLoadLocationFromFunctionIndexSpace):
* wasm/WasmEmbedder.h:
* wasm/WasmFormat.h:
(JSC::Wasm::WasmToWasmImportableFunction::offsetOfBoxedCalleeLoadLocation):
* wasm/WasmInstance.h:
(JSC::Wasm::Instance::offsetOfBoxedCalleeLoadLocation):
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::OMGForOSREntryPlan):
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGForOSREntryPlan.h:
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::OMGPlan):
(JSC::Wasm::OMGPlan::work):
* wasm/WasmOMGPlan.h:
* wasm/WasmOperations.cpp:
(JSC::Wasm::triggerOMGReplacementCompile):
(JSC::Wasm::doOSREntry):
(JSC::Wasm::triggerOSREntryNow):
* wasm/js/JSToWasm.cpp:
(JSC::Wasm::createJSToWasmWrapper):
* wasm/js/JSToWasm.h:
* wasm/js/WebAssemblyFunction.cpp:
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):
(JSC::WebAssemblyFunction::create):
(JSC::WebAssemblyFunction::WebAssemblyFunction):
* wasm/js/WebAssemblyFunction.h:
* wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):
* wasm/js/WebAssemblyWrapperFunction.cpp:
(JSC::WebAssemblyWrapperFunction::create):

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

8 weeks agoresults.webkit.org results bubbles' tooltips should include SDK information
jbedard@apple.com [Tue, 17 Sep 2019 23:48:49 +0000 (23:48 +0000)]
results.webkit.org results bubbles' tooltips should include SDK information
https://bugs.webkit.org/show_bug.cgi?id=201823

Rubber-stamped by Aakash Jain.

* resultsdbpy/resultsdbpy/view/static/js/configuration.js:
(Configuration.prototype.compare): Like the Python instance of this class,
support using null as a wildcard.
(Configuration.prototype.compareSDKs): Ditto.
* resultsdbpy/resultsdbpy/view/static/js/timeline.js:
(TimelineFromEndpoint.prototype.render.onDotEnterFactory): Construct a configuration
object from all bits of data used to construct a given bubble.
(TimelineFromEndpoint.prototype.render):

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

8 weeks agoWebProcess class methods should not need to take a sessionID
cdumez@apple.com [Tue, 17 Sep 2019 21:57:07 +0000 (21:57 +0000)]
WebProcess class methods should not need to take a sessionID
https://bugs.webkit.org/show_bug.cgi?id=201881

Reviewed by Geoffrey Garen.

WebProcess class methods should not need to take a sessionID given that we have a single
session per WebProcess now.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* Shared/WebProcessDataStoreParameters.h:
(WebKit::WebProcessDataStoreParameters::encode const):
(WebKit::WebProcessDataStoreParameters::decode):
* UIProcess/Plugins/PlugInAutoStartProvider.cpp:
(WebKit::PlugInAutoStartProvider::addAutoStartOriginHash):
(WebKit::PlugInAutoStartProvider::autoStartOriginHashesCopy const):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
(WebKit::PlugInAutoStartProvider::didReceiveUserInteraction):
* UIProcess/Plugins/PlugInAutoStartProvider.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::webProcessDataStoreParameters):
(WebKit::WebProcessPool::initializeNewWebProcess):
* UIProcess/WebProcessPool.h:
(WebKit::WebProcessPool::sendToAllProcesses):
(WebKit::WebProcessPool::sendToAllProcessesForSession):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::fetchWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
(WebKit::WebProcessProxy::establishServiceWorkerContext):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::pluginDidReceiveUserInteraction):
* WebProcess/WebCoreSupport/WebPlugInClient.cpp:
(WebKit::WebPlugInClient::didStartFromOrigin):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::setWebsiteDataStoreParameters):
(WebKit::WebProcess::removeWebPage):
(WebKit::WebProcess::isPlugInAutoStartOriginHash):
(WebKit::WebProcess::shouldPlugInAutoStartFromOrigin):
(WebKit::WebProcess::plugInDidStartFromOrigin):
(WebKit::WebProcess::didAddPlugInAutoStartOriginHash):
(WebKit::WebProcess::resetPlugInAutoStartOriginHashes):
(WebKit::WebProcess::plugInDidReceiveUserInteraction):
(WebKit::WebProcess::fetchWebsiteData):
(WebKit::WebProcess::deleteWebsiteData):
(WebKit::WebProcess::deleteWebsiteDataForOrigins):
(WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

8 weeks agoUnreviewed, address flakiness of imported/w3c/web-platform-tests/html/browsers/offlin...
cdumez@apple.com [Tue, 17 Sep 2019 21:49:26 +0000 (21:49 +0000)]
Unreviewed, address flakiness of imported/w3c/web-platform-tests/html/browsers/offline/application-cache-api/api_update_error.https.html.

Stop logging console messages.

LayoutTests/imported/w3c:

* web-platform-tests/html/browsers/offline/application-cache-api/api_update_error.https-expected.txt:

LayoutTests:

* TestExpectations:

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

8 weeks agoUnreviewed, revert r249850 as the flakiness should be gone as of the testharness...
cdumez@apple.com [Tue, 17 Sep 2019 21:43:13 +0000 (21:43 +0000)]
Unreviewed, revert r249850 as the flakiness should be gone as of the testharness.js update in r249977.
https://bugs.webkit.org/show_bug.cgi?id=201661

* web-platform-tests/service-workers/service-worker/getregistrations.https.html:

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

8 weeks agoRebaseline imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing...
russell_e@apple.com [Tue, 17 Sep 2019 20:56:13 +0000 (20:56 +0000)]
Rebaseline imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window.html for Catalina and iOS 13.
https://bugs.webkit.org/show_bug.cgi?id=172357

Unreviewed Test Gardening.

* platform/ios/imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window-expected.txt:
* platform/mac-mojave/imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window-expected.txt: Copied from LayoutTests/platform/ios/imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window-expected.txt.
* platform/mac/imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window-expected.txt:

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

8 weeks agoWebMDNSRegister no longer needs to be provided sessionIDs
cdumez@apple.com [Tue, 17 Sep 2019 20:49:36 +0000 (20:49 +0000)]
WebMDNSRegister no longer needs to be provided sessionIDs
https://bugs.webkit.org/show_bug.cgi?id=201876

Reviewed by Geoffrey Garen.

WebMDNSRegister no longer needs to be provided sessionIDs, now that we
have one session per WebProcess.

* NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
(WebKit::NetworkMDNSRegister::registerMDNSName):
(WebKit::NetworkMDNSRegister::sessionID const):
* NetworkProcess/webrtc/NetworkMDNSRegister.h:
* NetworkProcess/webrtc/NetworkMDNSRegister.messages.in:
* WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
(WebKit::LibWebRTCProvider::registerMDNSName):
(WebKit::LibWebRTCProvider::createSocketFactory):
* WebProcess/Network/webrtc/WebMDNSRegister.cpp:
(WebKit::WebMDNSRegister::registerMDNSName):
* WebProcess/Network/webrtc/WebMDNSRegister.h:

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

8 weeks agoWebSWServerConnection does not need to store a sessionID
cdumez@apple.com [Tue, 17 Sep 2019 20:48:58 +0000 (20:48 +0000)]
WebSWServerConnection does not need to store a sessionID
https://bugs.webkit.org/show_bug.cgi?id=201878

Reviewed by Geoffrey Garen.

WebSWServerConnection does not need to store a sessionID, it can simply get it from its SWServer.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
* NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::WebSWServerConnection):
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::sessionID const):
* NetworkProcess/ServiceWorker/WebSWServerConnection.h:

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

8 weeks agoRemove some support for < iOS 12
krollin@apple.com [Tue, 17 Sep 2019 20:20:38 +0000 (20:20 +0000)]
Remove some support for < iOS 12
https://bugs.webkit.org/show_bug.cgi?id=201851
<rdar://problem/55422044>

Reviewed by Jiewen Tan and Alexey Proskuryakov.

Remove some support for iOS versions less than 12.0.

Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
values >= 120000. This means that expressions like
"__IPHONE_OS_VERSION_MIN_REQUIRED < 101200" are always False and
"__IPHONE_OS_VERSION_MIN_REQUIRED >= 101200" are always True.

This removal is part of a series of patches effecting such removal.

Source/WebCore:

No new tests -- no new or changed functionality.

* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::CryptoKeyRSA::create):
(WebCore::castDataArgumentToCCRSACryptorCreateFromDataIfNeeded): Deleted.

Source/WebCore/PAL:

* pal/spi/cocoa/IOSurfaceSPI.h:

Tools:

* WebKitTestRunner/InjectedBundle/cocoa/ActivateFontsCocoa.mm:
(WTR::installFakeHelvetica):

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

8 weeks agoUpdate testharness.js from upstream for web-platform-tests
cdumez@apple.com [Tue, 17 Sep 2019 20:17:47 +0000 (20:17 +0000)]
Update testharness.js from upstream for web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=201843

Reviewed by Jiewen Tan.

LayoutTests/imported/w3c:

Update testharness.js from upstream 6fd5e1e086ce590a4780a30d129 for web-platform-tests and
rebaseline tests accordingly.

* web-platform-tests/FileAPI/FileReader/workers-expected.txt:
* web-platform-tests/FileAPI/url/url-format.any.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker-expected.txt:
* web-platform-tests/content-security-policy/inside-worker/shared-inheritance-expected.txt:
* web-platform-tests/content-security-policy/inside-worker/shared-script-expected.txt:
* web-platform-tests/content-security-policy/nonce-hiding/svgscript-nonces-hidden-meta.tentative.sub-expected.txt:
* web-platform-tests/content-security-policy/nonce-hiding/svgscript-nonces-hidden.tentative-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-001-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-002-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-003-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-004-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-005-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-006-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-007-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-008-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-009-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-010-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-015-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-016-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-019-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-020-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-021-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-022-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-023-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-024-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-025-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-026-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-027-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-028-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-032-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-033-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-034-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-001-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-002-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-003-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-004-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-005-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-006-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-007-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-008-expected.txt:
* web-platform-tests/css/css-grid/grid-definition/grid-change-fit-content-argument-001-expected.txt:
* web-platform-tests/css/css-properties-values-api/unit-cycles-expected.txt:
* web-platform-tests/css/css-properties-values-api/url-resolution-expected.txt:
* web-platform-tests/custom-elements/parser/parser-fallsback-to-unknown-element-expected.txt:
* web-platform-tests/dom/events/Event-dispatch-listener-order.window-expected.txt:
* web-platform-tests/dom/events/Event-isTrusted.any-expected.txt:
* web-platform-tests/dom/events/Event-isTrusted.any.worker-expected.txt:
* web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt:
* web-platform-tests/eventsource/eventsource-prototype-expected.txt:
* web-platform-tests/fetch/api/basic/stream-safe-creation.any.worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-cache.any-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-cache.any.worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.worker-expected.txt:
* web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https-expected.txt:
* web-platform-tests/fetch/api/request/request-consume-empty-expected.txt:
* web-platform-tests/fetch/api/response/response-consume-empty-expected.txt:
* web-platform-tests/fetch/cross-origin-resource-policy/scheme-restriction.https.window-expected.txt:
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope-expected.txt:
* web-platform-tests/html/browsers/history/joint-session-history/joint-session-history-iframe-state-expected.txt:
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt:
* web-platform-tests/html/browsers/origin/origin-of-data-document-expected.txt:
* web-platform-tests/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_setter-expected.txt:
* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window-expected.txt:
* web-platform-tests/html/browsers/the-window-object/focus.window-expected.txt:
* web-platform-tests/html/browsers/windows/document-access/document_access_parent_access.tentative-expected.txt:
* web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts-expected.txt:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-01-expected.txt:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-02-expected.txt:
* web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/dialog-display-expected.txt:
* web-platform-tests/html/rendering/non-replaced-elements/tables/table-vspace-hspace-expected.txt:
* web-platform-tests/html/rendering/non-replaced-elements/tables/table-vspace-hspace-s-expected.txt:
* web-platform-tests/html/rendering/non-replaced-elements/the-page/iframe-marginwidth-marginheight-expected.txt:
* web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation-expected.txt:
* web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment-expected.txt:
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/srclang-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/language-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox_030-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin-expected.txt:
* web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/charset-02-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-expected.txt:
* web-platform-tests/html/syntax/parsing/quotes-in-meta-expected.txt:
* web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/document-open-cancels-javascript-url-navigation-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-parse-error-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-throw-expected.txt:
* web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt:
* web-platform-tests/infrastructure/server/context.any-expected.txt:
* web-platform-tests/infrastructure/server/context.any.serviceworker-expected.txt:
* web-platform-tests/infrastructure/server/context.any.worker-expected.txt:
* web-platform-tests/infrastructure/server/title.any.worker-expected.txt:
* web-platform-tests/mediacapture-streams/MediaStreamTrack-end-manual.https-expected.txt:
* web-platform-tests/pointerevents/pointerevent_root_computed_style-expected.txt:
* web-platform-tests/pointerevents/pointerevent_root_hit_test-expected.txt:
* web-platform-tests/preload/link-header-preload-nonce-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_match_origin-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_match_wildcard-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_multi-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_multi_wildcard-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_null-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_origin_uppercase-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_space-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_wildcard-expected.txt:
* web-platform-tests/resources/testharness.css.headers:
* web-platform-tests/resources/testharness.js:
(WindowTestEnvironment.prototype._forEach_windows):
(WindowTestEnvironment.prototype.next_default_test_name):
(WorkerTestEnvironment.prototype.next_default_test_name):
(ShellTestEnvironment):
(ShellTestEnvironment.prototype.next_default_test_name):
(ShellTestEnvironment.prototype.on_new_harness_properties):
(ShellTestEnvironment.prototype.on_tests_ready):
(ShellTestEnvironment.prototype.add_on_loaded_callback):
(ShellTestEnvironment.prototype.test_timeout):
(create_test_environment):
(is_shared_worker):
(is_service_worker):
(test):
(promise_test):
(this.wait_for):
(EventWatcher):
(done):
* web-platform-tests/resources/testharness.js.headers:
* web-platform-tests/server-timing/resource_timing_idl-expected.txt:
* web-platform-tests/server-timing/resource_timing_idl.https-expected.txt:
* web-platform-tests/server-timing/service_worker_idl-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-get-resultingClientId.https-expected.txt:
* web-platform-tests/streams/piping/general-expected.txt:
* web-platform-tests/visual-viewport/viewport-read-size-causes-layout-expected.txt:
* web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout-expected.txt:
* web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/canceling-an-animation-expected.txt:
* web-platform-tests/webrtc/RTCRtpTransceiver-setCodecPreferences-expected.txt:
* web-platform-tests/websockets/Close-undefined.any.worker-expected.txt:
* web-platform-tests/websockets/opening-handshake/003-expected.txt:
* web-platform-tests/websockets/unload-a-document/001-expected.txt:
* web-platform-tests/websockets/unload-a-document/002-expected.txt:
* web-platform-tests/websockets/unload-a-document/003-expected.txt:
* web-platform-tests/websockets/unload-a-document/004-expected.txt:
* web-platform-tests/workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker-expected.txt:
* web-platform-tests/workers/Worker_ErrorEvent_error-expected.txt:
* web-platform-tests/workers/baseurl/alpha/importScripts-in-worker-expected.txt:
* web-platform-tests/workers/baseurl/alpha/xhr-in-worker-expected.txt:
* web-platform-tests/workers/interfaces/WorkerUtils/importScripts/001.worker-expected.txt:
* web-platform-tests/workers/interfaces/WorkerUtils/importScripts/002.worker-expected.txt:
* web-platform-tests/xhr/overridemimetype-done-state.any-expected.txt:
* web-platform-tests/xhr/overridemimetype-done-state.any.worker-expected.txt:
* web-platform-tests/xhr/responsetype.any-expected.txt:
* web-platform-tests/xhr/timeout-sync-expected.txt:

LayoutTests:

* http/wpt/resource-timing/rt-initiatorType-other-expected.txt:
* http/wpt/webauthn/resources/util.js:

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

8 weeks ago[JSC] CheckArray+NonArray is not filtering out Array in AI
ysuzuki@apple.com [Tue, 17 Sep 2019 19:52:43 +0000 (19:52 +0000)]
[JSC] CheckArray+NonArray is not filtering out Array in AI
https://bugs.webkit.org/show_bug.cgi?id=201857
<rdar://problem/54194820>

Reviewed by Keith Miller.

JSTests:

* stress/check-array-with-non-array-does-not-filter-arrays.js: Added.
(foo):

Source/JavaScriptCore:

The code of DFG::ArrayMode::alreadyChecked is different from SpeculativeJIT's CheckArray / CheckStructure.
While we assume CheckArray+NonArray ensures it only passes non-array inputs, DFG::ArrayMode::alreadyChecked
accepts arrays too. So CheckArray+NonArray is removed in AI if the input is proven that it is an array.
This patch aligns DFG::ArrayMode::alreadyChecked to the checks done at runtime.

* dfg/DFGArrayMode.cpp:
(JSC::DFG::ArrayMode::alreadyChecked const):

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

8 weeks agoWebPaymentCoordinatorProxy does not need sessionIDs
cdumez@apple.com [Tue, 17 Sep 2019 19:30:48 +0000 (19:30 +0000)]
WebPaymentCoordinatorProxy does not need sessionIDs
https://bugs.webkit.org/show_bug.cgi?id=201875

Reviewed by Geoffrey Garen.

WebPaymentCoordinatorProxy does not need sessionIDs so let's stop passing them around.

* Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
* Shared/ApplePay/WebPaymentCoordinatorProxy.h:
* Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
* Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest):
* Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
* Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinator::showPaymentUI):

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

8 weeks agoSVG <animateMotion> does not reset the element to its first animation frame if its...
zimmermann@webkit.org [Tue, 17 Sep 2019 19:23:56 +0000 (19:23 +0000)]
SVG <animateMotion> does not reset the element to its first animation frame if its fill is "remove"
https://bugs.webkit.org/show_bug.cgi?id=201565

Reviewed by Said Abou-Hallawa.

Source/WebCore:

Fix fill="remove" support for <animateMotion>: properly trigger visual updates.
Motion animations are implemented by provding an additional transformation on
SVGGraphicsElements: the supplementalTransform().

When an <animateMotion> element specifies fill="remove" the supplemental transform is
correctly reset, when the animation is finished. However, nobody is notified about the
change of transformation matrix. Fix by marking the target elements renderer as
setNeedsTransformUpdate() and call markForLayoutAndParentResourceInvalidation().

<animate> elements are not affected by the bug:
SVGAnimateElementBase::clearAnimatedType()
 -> invokes SVGAttributeAnimator::stop()
    -> invokes applyAnimatedPropertyChange() [via SVGAnimatedPropertyAnimator]
    -> invokes SVGXXXElement::svgAttributeChanged().

When animating e.g. the 'transform' attribute SVGGraphicsElement::svgAttributeChanged()
will use exactly the same mechanism to trigger visul updates: first call
setNeedsTransformUpdate() on the associated renderer, followd by a call to
markForLayoutAndParentResourceInvalidation().

--> Both code paths are now consistent.
Also fixes http://web-platform-tests.live/svg/animations/animateMotion-fill-remove.html.

Tests: svg/animations/fill-remove-support.html
       svg/animations/animateMotion-remove-freeze-use.svg

* svg/SVGAnimateMotionElement.cpp:
(WebCore::SVGAnimateMotionElement::clearAnimatedType): Call applyResultsToTarget().
(WebCore::SVGAnimateMotionElement::calculateAnimatedValue): Stop calling
setNeedsTransformUpdate() on the target elements renderer, since applyResultsToTarget()
is responsible for modifications of the renderer state.
(WebCore::SVGAnimateMotionElement::applyResultsToTarget): Always mark the renderer
as setNeedsTransformUpdate() when applying the results, before the call to
RenderSVGResource::markForLayoutAndParentResourceInvalidation(). This is more consistent
with respect to the code path that updates the SVGElements instances (<use> support).

LayoutTests:

Add a layout test covering fill="remove" support <animate> and <animateMotion>.
Add another layout test covering both fill="remove" and fill="freeze" for
<animateMotion> on SVG elements and their instances (<use>).

* svg/animations/animateMotion-remove-freeze-use-expected.svg: Added.
* svg/animations/animateMotion-remove-freeze-use.svg: Added.
* svg/animations/fill-remove-support-expected.txt: Added.
* svg/animations/fill-remove-support.html: Added.
* svg/animations/resources/fill-remove-support.svg: Added.

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

8 weeks agoThere should be a single CacheStorageConnection per WebProcess
cdumez@apple.com [Tue, 17 Sep 2019 19:22:39 +0000 (19:22 +0000)]
There should be a single CacheStorageConnection per WebProcess
https://bugs.webkit.org/show_bug.cgi?id=201874

Reviewed by Geoffrey Garen.

There should be a single CacheStorageConnection per WebProcess now that we have a single session
per WebProcess. This invariant allows us to simplify the code.

* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::~CacheStorageEngineConnection):
(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::remove):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::retrieveRecords):
(WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
(WebKit::CacheStorageEngineConnection::putRecords):
(WebKit::CacheStorageEngineConnection::reference):
(WebKit::CacheStorageEngineConnection::dereference):
(WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
(WebKit::CacheStorageEngineConnection::engineRepresentation):
(WebKit::CacheStorageEngineConnection::sessionID const):
* NetworkProcess/cache/CacheStorageEngineConnection.h:
* NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::WebCacheStorageConnection):
(WebKit::WebCacheStorageConnection::open):
(WebKit::WebCacheStorageConnection::remove):
(WebKit::WebCacheStorageConnection::retrieveCaches):
(WebKit::WebCacheStorageConnection::retrieveRecords):
(WebKit::WebCacheStorageConnection::batchDeleteOperation):
(WebKit::WebCacheStorageConnection::batchPutOperation):
(WebKit::WebCacheStorageConnection::reference):
(WebKit::WebCacheStorageConnection::dereference):
(WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
(WebKit::WebCacheStorageConnection::engineRepresentation):
(WebKit::WebCacheStorageConnection::updateQuotaBasedOnSpaceUsage):
(WebKit::WebCacheStorageConnection::sessionID const):
* WebProcess/Cache/WebCacheStorageConnection.h:
* WebProcess/Cache/WebCacheStorageProvider.cpp:
(WebKit::WebCacheStorageProvider::createCacheStorageConnection):
* WebProcess/Cache/WebCacheStorageProvider.h:

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

8 weeks agoREGRESSION (macOS): Many webgpu/whlsl* tests are flaky failures.
russell_e@apple.com [Tue, 17 Sep 2019 19:01:54 +0000 (19:01 +0000)]
REGRESSION (macOS): Many webgpu/whlsl* tests are flaky failures.
https://bugs.webkit.org/show_bug.cgi?id=201877.

Unreviewed Test Gardening.

Incorrectly marked tests as Failures. Changed to ImageOnlyFailures as
intended.
* platform/mac/TestExpectations:

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

8 weeks agoREGRESSION (macOS): Many webgpu/whlsl* tests are flaky failures.
russell_e@apple.com [Tue, 17 Sep 2019 18:55:23 +0000 (18:55 +0000)]
REGRESSION (macOS): Many webgpu/whlsl* tests are flaky failures.
https://bugs.webkit.org/show_bug.cgi?id=201877

Unreviewed Test Gardening.

* platform/mac/TestExpectations:

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

8 weeks agoUnreviewed attempt to fix internal build after r249962.
cdumez@apple.com [Tue, 17 Sep 2019 18:42:11 +0000 (18:42 +0000)]
Unreviewed attempt to fix internal build after r249962.

* UIProcess/API/C/WKPreferencesRef.h:

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