WebKit-https.git
5 months agoUnreviewed, rolling out r247292.
cdumez@apple.com [Wed, 10 Jul 2019 20:13:26 +0000 (20:13 +0000)]
Unreviewed, rolling out r247292.

Caused CloseWebViewDuringEnterFullscreen.VideoFullscreen API
test to time out on Mojave bots

Reverted changeset:

"Stop using GenericTaskQueue from multiple threads"
https://bugs.webkit.org/show_bug.cgi?id=199652
https://trac.webkit.org/changeset/247292

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

5 months agoCrash under IPC::Connection::waitForMessage()
cdumez@apple.com [Wed, 10 Jul 2019 20:10:49 +0000 (20:10 +0000)]
Crash under IPC::Connection::waitForMessage()
https://bugs.webkit.org/show_bug.cgi?id=199680
<rdar://problem/52500561>

Reviewed by Tim Horton.

IPC::Connection::waitForMessage() is crashing due to a null defererence of
m_waitingForMessage. Since m_waitingForMessage is only ever set to null in
waitForMessage(), this seems to imply we've re-entered waitForMessage().
This is in theory possible since the loop inside waitForMessage() calls
SyncMessageState::singleton().dispatchMessages() on every iteration to
process incoming synchronous IPC messages. In theory, one of these sync
IPC messages could run code which ends up calling waitForAndDispatchImmediately()
(and thus waitForMessage()).

We had a debug assertion to try and catch re-entrancy with a comment stating
"We don't support having multiple clients waiting for messages." but we
would not see those in release and we would crash with a null dereference
instead.

To address the crashes in release, return early in case of re-entrancy
(we would still hit an assertion in debug).

* Platform/IPC/Connection.cpp:
(IPC::Connection::Connection):
(IPC::Connection::waitForMessage):
* Platform/IPC/Connection.h:

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

5 months agoContext menus are not presented for WKWebViews that don't have UIDelegates
timothy_horton@apple.com [Wed, 10 Jul 2019 20:04:26 +0000 (20:04 +0000)]
Context menus are not presented for WKWebViews that don't have UIDelegates
https://bugs.webkit.org/show_bug.cgi?id=199678

Reviewed by Dean Jackson.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView continueContextMenuInteraction:]):
Remove this unnecessary early-return if we don't have a UIDelegate.
We have a default behavior that we totally want to happen.
Also, rename completion() to continueWithContextMenuConfiguration()
to reduce confusion between completion() and completionBlock() in
this method.

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

5 months ago[WHLSL Import more JS reference spec tests
sbarati@apple.com [Wed, 10 Jul 2019 20:01:55 +0000 (20:01 +0000)]
[WHLSL Import more JS reference spec tests
https://bugs.webkit.org/show_bug.cgi?id=199651

Rubber stamped by Robin Morisset.

* webgpu/whlsl-builtin-vectors-2-expected.txt: Added.
* webgpu/whlsl-builtin-vectors-2.html: Added.
* webgpu/whlsl-builtin-vectors-expected.txt: Added.
* webgpu/whlsl-builtin-vectors.html: Added.
* webgpu/whlsl-getter-setter-type-expected.txt: Added.
* webgpu/whlsl-getter-setter-type.html: Added.
* webgpu/whlsl-loops-spec-tests-expected.txt: Added.
* webgpu/whlsl-loops-spec-tests.html: Added.
* webgpu/whlsl-null-array-ref.html: Added.
* webgpu/whlsl-override-subscript-expected.txt: Added.
* webgpu/whlsl-override-subscript.html: Added.
* webgpu/whlsl-plus-equals-expected.txt: Added.
* webgpu/whlsl-plus-equals.html: Added.
* webgpu/whlsl-recursive-structs-expected.txt: Added.
* webgpu/whlsl-recursive-structs.html: Added.
* webgpu/whlsl-ternary-spec-test-expected.txt: Added.
* webgpu/whlsl-ternary-spec-test.html: Added.
* webgpu/whlsl-wrong-argument-length-expected.txt: Added.
* webgpu/whlsl-wrong-argument-length.html: Added.
* webgpu/whlsl-wrong-types-expected.txt: Added.
* webgpu/whlsl-wrong-types.html: Added.

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

5 months agoUnreviewed, rolling out r247223.
commit-queue@webkit.org [Wed, 10 Jul 2019 19:46:05 +0000 (19:46 +0000)]
Unreviewed, rolling out r247223.
https://bugs.webkit.org/show_bug.cgi?id=199679

Caused perf regression. (Requested by deanj on #webkit).

Reverted changeset:

"[iPadOS] Viewport pops while loading sohu.com, xinhuanet.com,
and various other websites"
https://bugs.webkit.org/show_bug.cgi?id=199575
https://trac.webkit.org/changeset/247223

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

5 months ago[WHLSL] Track code locations correctly throughout the compiler to get good error...
rmorisset@apple.com [Wed, 10 Jul 2019 19:44:48 +0000 (19:44 +0000)]
[WHLSL] Track code locations correctly throughout the compiler to get good error messages
https://bugs.webkit.org/show_bug.cgi?id=199675

Reviewed by Myles Maxfield.

The basic idea is to go from having each AST node contain its own token to having each AST node contain a pair of offsets into the source,
the offset before its start and the offset after its end. This will let us get good error messages.
As a bonus, it saves a bit of memory as Tokens are larger (one extra word for their type).

The new CodeLocation class is put in Lexer.h, because it has a cyclic dependency on Token, which also has a cyclic dependency on Lexer.

No new tests as there is no intended functional change.

* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
(WebCore::WHLSL::AST::ArrayReferenceType::ArrayReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
(WebCore::WHLSL::AST::ArrayType::ArrayType):
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
(WebCore::WHLSL::AST::AssignmentExpression::AssignmentExpression):
* Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
(WebCore::WHLSL::AST::BaseFunctionAttribute::BaseFunctionAttribute):
* Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
(WebCore::WHLSL::AST::BaseSemantic::BaseSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
(WebCore::WHLSL::AST::Block::Block):
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
(WebCore::WHLSL::AST::BooleanLiteral::BooleanLiteral):
(WebCore::WHLSL::AST::BooleanLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
(WebCore::WHLSL::AST::Break::Break):
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
(WebCore::WHLSL::AST::BuiltInSemantic::BuiltInSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
(WebCore::WHLSL::AST::CallExpression::CallExpression):
* Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
(WebCore::WHLSL::AST::CommaExpression::CommaExpression):
* Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
(WebCore::WHLSL::AST::Continue::Continue):
* Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
(WebCore::WHLSL::AST::DereferenceExpression::DereferenceExpression):
* Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
(WebCore::WHLSL::AST::DoWhileLoop::DoWhileLoop):
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
(WebCore::WHLSL::AST::DotExpression::DotExpression):
* Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
(WebCore::WHLSL::AST::EffectfulExpressionStatement::EffectfulExpressionStatement):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
(WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
(WebCore::WHLSL::AST::EnumerationMember::EnumerationMember):
(WebCore::WHLSL::AST::EnumerationMember::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
(WebCore::WHLSL::AST::EnumerationMemberLiteral::EnumerationMemberLiteral):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::wrap):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::Expression):
(WebCore::WHLSL::AST::Expression::codeLocation const):
(WebCore::WHLSL::AST::Expression::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
(WebCore::WHLSL::AST::Fallthrough::Fallthrough):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
(WebCore::WHLSL::AST::FloatLiteral::FloatLiteral):
(WebCore::WHLSL::AST::FloatLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:
(WebCore::WHLSL::AST::FloatLiteralType::FloatLiteralType):
(WebCore::WHLSL::AST::FloatLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
(WebCore::WHLSL::AST::ForLoop::ForLoop):
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
(WebCore::WHLSL::AST::FunctionDeclaration::FunctionDeclaration):
(WebCore::WHLSL::AST::FunctionDeclaration::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
(WebCore::WHLSL::AST::GlobalVariableReference::GlobalVariableReference):
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
(WebCore::WHLSL::AST::IfStatement::IfStatement):
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
(WebCore::WHLSL::AST::IndexExpression::IndexExpression):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
(WebCore::WHLSL::AST::IntegerLiteral::IntegerLiteral):
(WebCore::WHLSL::AST::IntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::IntegerLiteralType::IntegerLiteralType):
(WebCore::WHLSL::AST::IntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
(WebCore::WHLSL::AST::LogicalExpression::LogicalExpression):
* Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
(WebCore::WHLSL::AST::LogicalNotExpression::LogicalNotExpression):
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression):
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
(WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression):
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
(WebCore::WHLSL::AST::NamedType::NamedType):
(WebCore::WHLSL::AST::NamedType::codeLocation const):
(WebCore::WHLSL::AST::NamedType::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
(WebCore::WHLSL::AST::NativeTypeDeclaration::NativeTypeDeclaration):
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
(WebCore::WHLSL::AST::NullLiteral::NullLiteral):
(WebCore::WHLSL::AST::NullLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLNumThreadsFunctionAttribute.h:
(WebCore::WHLSL::AST::NumThreadsFunctionAttribute::NumThreadsFunctionAttribute):
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
(WebCore::WHLSL::AST::PointerType::PointerType):
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
(WebCore::WHLSL::AST::PropertyAccessExpression::PropertyAccessExpression):
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::create):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
(WebCore::WHLSL::AST::ReferenceType::ReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
(WebCore::WHLSL::AST::ResourceSemantic::ResourceSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
(WebCore::WHLSL::AST::Return::Return):
* Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
(WebCore::WHLSL::AST::SpecializationConstantSemantic::SpecializationConstantSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
(WebCore::WHLSL::AST::StageInOutSemantic::StageInOutSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
(WebCore::WHLSL::AST::Statement::Statement):
(WebCore::WHLSL::AST::Statement::codeLocation const):
(WebCore::WHLSL::AST::Statement::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
(WebCore::WHLSL::AST::StatementList::StatementList):
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
(WebCore::WHLSL::AST::StructureDefinition::StructureDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
(WebCore::WHLSL::AST::StructureElement::StructureElement):
(WebCore::WHLSL::AST::StructureElement::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
(WebCore::WHLSL::AST::SwitchCase::SwitchCase):
* Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
(WebCore::WHLSL::AST::SwitchStatement::SwitchStatement):
* Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
(WebCore::WHLSL::AST::TernaryExpression::TernaryExpression):
* Modules/webgpu/WHLSL/AST/WHLSLTrap.h:
(WebCore::WHLSL::AST::Trap::Trap):
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
(WebCore::WHLSL::AST::TypeDefinition::TypeDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.cpp:
(WebCore::WHLSL::AST::TypeReference::wrap):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
(WebCore::WHLSL::AST::TypeReference::TypeReference):
(WebCore::WHLSL::AST::TypeReference::cloneTypeReference const):
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
(WebCore::WHLSL::AST::UnnamedType::UnnamedType):
(WebCore::WHLSL::AST::UnnamedType::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::UnsignedIntegerLiteral):
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::UnsignedIntegerLiteralType):
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
(WebCore::WHLSL::AST::VariableDeclarationsStatement::VariableDeclarationsStatement):
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
(WebCore::WHLSL::AST::VariableReference::VariableReference):
(WebCore::WHLSL::AST::VariableReference::wrap):
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
(WebCore::WHLSL::AST::WhileLoop::WhileLoop):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::argumentTypeForAndOverload):
(WebCore::WHLSL::Checker::finishVisiting):
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::matchAndCommit):
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Token::typeName):
(WebCore::WHLSL::Lexer::consumeTokenFromStream):
* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::AST::CodeLocation::CodeLocation):
(WebCore::WHLSL::AST::CodeLocation::startOffset const):
(WebCore::WHLSL::AST::CodeLocation::endOffset const):
(WebCore::WHLSL::Token::startOffset const):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::Token::stringView const):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::peek):
(WebCore::WHLSL::Parser::peekFurther):
(WebCore::WHLSL::Types::includes):
(WebCore::WHLSL::Types::appendNameTo):
(WebCore::WHLSL::Types<t>::includes):
(WebCore::WHLSL::Types<t>::appendNameTo):
(WebCore::WHLSL::Parser::peekType):
(WebCore::WHLSL::Parser::tryType):
(WebCore::WHLSL::Parser::tryTypes):
(WebCore::WHLSL::Parser::consumeType):
(WebCore::WHLSL::Parser::consumeTypes):
(WebCore::WHLSL::Parser::consumeIntegralLiteral):
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseTypeArguments):
(WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
(WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseTypeDefinition):
(WebCore::WHLSL::Parser::parseBuiltInSemantic):
(WebCore::WHLSL::Parser::parseResourceSemantic):
(WebCore::WHLSL::Parser::parseSpecializationConstantSemantic):
(WebCore::WHLSL::Parser::parseStageInOutSemantic):
(WebCore::WHLSL::Parser::parseSemantic):
(WebCore::WHLSL::Parser::parseQualifiers):
(WebCore::WHLSL::Parser::parseStructureElement):
(WebCore::WHLSL::Parser::parseStructureDefinition):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseNativeTypeDeclaration):
(WebCore::WHLSL::Parser::parseNumThreadsFunctionAttribute):
(WebCore::WHLSL::Parser::parseAttributeBlock):
(WebCore::WHLSL::Parser::parseParameter):
(WebCore::WHLSL::Parser::parseParameters):
(WebCore::WHLSL::Parser::parseComputeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseVertexOrFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseOperatorFunctionDeclaration):
(WebCore::WHLSL::Parser::parseFunctionDeclaration):
(WebCore::WHLSL::Parser::parseBlock):
(WebCore::WHLSL::Parser::parseBlockBody):
(WebCore::WHLSL::Parser::parseIfStatement):
(WebCore::WHLSL::Parser::parseSwitchStatement):
(WebCore::WHLSL::Parser::parseSwitchCase):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseDoWhileLoop):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseEffectfulAssignment):
(WebCore::WHLSL::Parser::parseLimitedSuffixOperator):
(WebCore::WHLSL::Parser::parseSuffixOperator):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parsePossibleSuffix):
(WebCore::WHLSL::Parser::parseCallExpression):
(WebCore::WHLSL::Parser::parseTerm):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::anonymousToken):
(WebCore::WHLSL::PreserveLifetimes::PreserveLifetimes):
(WebCore::WHLSL::PreserveLifetimes::assignVariableIntoStruct):
(WebCore::WHLSL::preserveVariableLifetimes):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):

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

5 months agoHook up WebGL's back buffer in ANGLE backend on macOS
commit-queue@webkit.org [Wed, 10 Jul 2019 18:43:02 +0000 (18:43 +0000)]
Hook up WebGL's back buffer in ANGLE backend on macOS
https://bugs.webkit.org/show_bug.cgi?id=198982

Patch by Kenneth Russell <kbr@chromium.org> on 2019-07-10
Reviewed by Alex Christensen.

Source/ThirdParty/ANGLE:

Add source files needed to implement and call ANGLE extensions, and
export headers necessary for those extensions. Update the script which
adjusts include paths to handle the new headers.

Cherry-pick fix for ANGLE bug crbug.com/angleproject/3669 to support
antialias:true for ANGLE-backed WebGL contexts.

* ANGLE.xcodeproj/project.pbxproj:
* adjust-angle-include-paths.sh:
* src/libANGLE/FramebufferAttachment.cpp:
(gl::FramebufferAttachment::getTextureImageIndex const): Deleted.
* src/libANGLE/FramebufferAttachment.h:
(gl::FramebufferAttachment::getTextureImageIndex const):
* src/libANGLE/validationES2.cpp:
(gl::ValidateBlitFramebufferANGLE):

Source/WebCore:

Fix a few places which were accidentally calling desktop OpenGL rather
than ANGLE. Fix some calls which were using ANGLE's OpenGL ES 3.0
entry points rather than the OpenGL ES 2.0 extension APIs, causing
them to generate errors in WebGL 1.0's backend. Change
Extensions3DANGLE to use ANGLE's requestable extension mechanism.

Fix framebuffer setup when using ANGLE for WebGL 1.0 contexts, for
both antialias:true and false.

Remove ANGLEWebKitBridge in ANGLE backend. It interfered with the
correct operation of ANGLE's internal shader compiler, and was
unnecessary given the use of ANGLE. Remove all manual shader name
hashing and mapping in ANGLE backend.

Tested with parts of the WebGL conformance suite and the San
Angeles demo, which now runs properly with WebKit's ANGLE backend
for WebGL.

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::getProgramParameter):
(WebCore::WebGLRenderingContextBase::getUniformLocation):
(WebCore::WebGLRenderingContextBase::linkProgramWithoutInvalidatingAttribLocations):
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/angle/Extensions3DANGLE.cpp:
(WebCore::Extensions3DANGLE::Extensions3DANGLE):
(WebCore::Extensions3DANGLE::supports):
(WebCore::Extensions3DANGLE::ensureEnabled):
(WebCore::Extensions3DANGLE::isEnabled):
(WebCore::Extensions3DANGLE::getTranslatedShaderSourceANGLE):
(WebCore::Extensions3DANGLE::initializeAvailableExtensions):
(WebCore::Extensions3DANGLE::blitFramebuffer):
(WebCore::Extensions3DANGLE::renderbufferStorageMultisample):
(WebCore::Extensions3DANGLE::createVertexArrayOES):
(WebCore::Extensions3DANGLE::deleteVertexArrayOES):
(WebCore::Extensions3DANGLE::isVertexArrayOES):
(WebCore::Extensions3DANGLE::bindVertexArrayOES):
(WebCore::Extensions3DANGLE::supportsExtension):
(WebCore::Extensions3DANGLE::drawBuffersEXT):
(WebCore::Extensions3DANGLE::drawArraysInstanced):
(WebCore::Extensions3DANGLE::drawElementsInstanced):
(WebCore::Extensions3DANGLE::vertexAttribDivisor):
* platform/graphics/angle/Extensions3DANGLE.h:
* platform/graphics/angle/GraphicsContext3DANGLE.cpp:
(WebCore::GraphicsContext3D::validateAttributes):
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::attachDepthAndStencilBufferIfNeeded):
(WebCore::GraphicsContext3D::resolveMultisamplingIfNecessary):
(WebCore::GraphicsContext3D::validateDepthStencil):
(WebCore::GraphicsContext3D::prepareTexture):
(WebCore::GraphicsContext3D::attachShader):
(WebCore::GraphicsContext3D::bindAttribLocation):
(WebCore::GraphicsContext3D::compileShader):
(WebCore::GraphicsContext3D::compileShaderDirect):
(WebCore::GraphicsContext3D::detachShader):
(WebCore::GraphicsContext3D::getActiveAttribImpl):
(WebCore::GraphicsContext3D::getActiveAttrib):
(WebCore::GraphicsContext3D::getActiveUniformImpl):
(WebCore::GraphicsContext3D::getActiveUniform):
(WebCore::GraphicsContext3D::getAttribLocation):
(WebCore::GraphicsContext3D::getAttribLocationDirect):
(WebCore::GraphicsContext3D::moveErrorsToSyntheticErrorList):
(WebCore::GraphicsContext3D::linkProgram):
(WebCore::GraphicsContext3D::shaderSource):
(WebCore::GraphicsContext3D::getUnmangledInfoLog):
(WebCore::GraphicsContext3D::getShaderiv):
(WebCore::GraphicsContext3D::getShaderInfoLog):
(WebCore::GraphicsContext3D::getUniformLocation):
(WebCore::GraphicsContext3D::createBuffer):
(WebCore::GraphicsContext3D::createFramebuffer):
(WebCore::GraphicsContext3D::createProgram):
(WebCore::GraphicsContext3D::createRenderbuffer):
(WebCore::GraphicsContext3D::createShader):
(WebCore::GraphicsContext3D::createTexture):
(WebCore::GraphicsContext3D::deleteBuffer):
(WebCore::GraphicsContext3D::deleteFramebuffer):
(WebCore::GraphicsContext3D::deleteProgram):
(WebCore::GraphicsContext3D::deleteRenderbuffer):
(WebCore::GraphicsContext3D::deleteShader):
(WebCore::GraphicsContext3D::deleteTexture):
(WebCore::GraphicsContext3D::synthesizeGLError):
(): Deleted.
(WebCore::setCurrentNameHashMapForShader): Deleted.
(WebCore::nameHashForShader): Deleted.
(WebCore::GraphicsContext3D::checkVaryingsPacking const): Deleted.
(WebCore::GraphicsContext3D::precisionsMatch const): Deleted.
(WebCore::generateHashedName): Deleted.
(WebCore::GraphicsContext3D::mappedSymbolInShaderSourceMap): Deleted.
(WebCore::GraphicsContext3D::mappedSymbolName): Deleted.
(WebCore::GraphicsContext3D::originalSymbolInShaderSourceMap): Deleted.
(WebCore::GraphicsContext3D::originalSymbolName): Deleted.
(WebCore::GraphicsContext3D::getNonBuiltInActiveSymbolCount): Deleted.
(WebCore::GraphicsContext3D::getShaderSource): Deleted.
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::checkGPUStatus):
(WebCore::GraphicsContext3D::allocateIOSurfaceBackingStore):
(WebCore::GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer):
* platform/graphics/cocoa/WebGLLayer.h:
* platform/graphics/cocoa/WebGLLayer.mm:
(-[WebGLLayer initWithGraphicsContext3D:]):
(-[WebGLLayer copyImageSnapshotWithColorSpace:]):
(-[WebGLLayer display]):
(-[WebGLLayer setEGLDisplay:andConfig:]):
(-[WebGLLayer dealloc]):
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]):
(-[WebGLLayer bindFramebufferToNextAvailableSurface]):

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

5 months agoDisable speculative loading if cache is not to be used for the load
youenn@apple.com [Wed, 10 Jul 2019 18:17:59 +0000 (18:17 +0000)]
Disable speculative loading if cache is not to be used for the load
https://bugs.webkit.org/show_bug.cgi?id=199644

Reviewed by Chris Dumez.

Source/WebKit:

When the page is reloaded, loads are instructed to not use the cache.
It is therefore unneeded to do speculative revalidation.
Allow speculative revalidation if the cache policy is either the default HTTP policy or
if policy is to refresh all cache data.
Covered by added test.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::cachePolicyValidForSpeculativeRevalidation):
(WebKit::NetworkCache::canRequestUseSpeculativeRevalidation):

LayoutTests:

* http/wpt/fetch/disable-speculative-for-reload-expected.txt: Added.
* http/wpt/fetch/disable-speculative-for-reload.html: Added.
* http/wpt/fetch/resources/iframe-with-image.py: Added.
(main):
* http/wpt/fetch/resources/image-load-count.py: Added.
(main):
* http/wpt/fetch/resources/image-load.py: Added.
(main):

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

5 months agoopenDatabase property should not be enumerable on DOMWindow
youenn@apple.com [Wed, 10 Jul 2019 18:09:27 +0000 (18:09 +0000)]
openDatabase property should not be enumerable on DOMWindow
https://bugs.webkit.org/show_bug.cgi?id=199672
<rdar://problem/52809000>

Reviewed by Chris Dumez.

Source/WebCore:

Test: storage/websql/openDatabase-deprecation.html

* Modules/webdatabase/DOMWindowWebDatabase.idl:

LayoutTests:

* storage/websql/openDatabase-deprecation-expected.txt: Added.
* storage/websql/openDatabase-deprecation.html: Added.

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

5 months ago[MacOS] Filter VPA info logged to stdout
ryanhaddad@apple.com [Wed, 10 Jul 2019 18:00:13 +0000 (18:00 +0000)]
[MacOS] Filter VPA info logged to stdout
https://bugs.webkit.org/show_bug.cgi?id=199673

Reviewed by Eric Carlson.

* Scripts/webkitpy/port/mac.py:
(MacPort.logging_patterns_to_strip):

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

5 months agoFix unsafe usage of makeWeakPtr() in CMTimebaseEffectiveRateChangedCallback()
cdumez@apple.com [Wed, 10 Jul 2019 17:34:19 +0000 (17:34 +0000)]
Fix unsafe usage of makeWeakPtr() in CMTimebaseEffectiveRateChangedCallback()
https://bugs.webkit.org/show_bug.cgi?id=199656

Reviewed by Eric Carlson.

CMTimebaseEffectiveRateChangedCallback() is getting called on a background thread and would call
makeWeakPtr() on the MediaPlayerPrivateMediaSourceAVFObjC object, which is not safe because
MediaPlayerPrivateMediaSourceAVFObjC is a main thread object.

To address the issue, move the logic for listening to effective rate changes to its own
Listener class which is ThreadSafeRefCounted. Instead of using makeWeakPtr() on the background
thread, we now merely ref the thread-safe listener.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::EffectiveRateChangedListener::create):
(WebCore::EffectiveRateChangedListener::effectiveRateChanged):
(WebCore::CMTimebaseEffectiveRateChangedCallback):
(WebCore::EffectiveRateChangedListener::stop):
(WebCore::EffectiveRateChangedListener::EffectiveRateChangedListener):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC):

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

5 months agoFix build after Foundation changes UIEdgeInsets definition
commit-queue@webkit.org [Wed, 10 Jul 2019 17:17:16 +0000 (17:17 +0000)]
Fix build after Foundation changes UIEdgeInsets definition
https://bugs.webkit.org/show_bug.cgi?id=199660
<rdar://problem/52390453>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-10
Reviewed by Tim Horton.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/WKWebViewContentProvider.h:

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

5 months agoUnreviewed, rolling out r247286.
ryanhaddad@apple.com [Wed, 10 Jul 2019 17:09:05 +0000 (17:09 +0000)]
Unreviewed, rolling out r247286.

Caused TestWTF.WTF.StringOperators to fail on debug bots

Reverted changeset:

"Add StringBuilder member function which allows makeString()
style variadic argument construction"
https://bugs.webkit.org/show_bug.cgi?id=198997
https://trac.webkit.org/changeset/247286

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

5 months agoRemove TouchActionData
antti@apple.com [Wed, 10 Jul 2019 17:03:04 +0000 (17:03 +0000)]
Remove TouchActionData
https://bugs.webkit.org/show_bug.cgi?id=199668

Reviewed by Simon Fraser.

Source/WebCore:

TouchActionData structure has been superseded by touch-action regions in EventRegion and is unused.
Remove it and the supporting code.

No functional changes.

* dom/Document.cpp:
(WebCore::Document::nodeWillBeRemoved):
(WebCore::Document::updateTouchActionElements): Deleted.
* dom/Document.h:
(WebCore::Document::mayHaveElementsWithNonAutoTouchAction const):
(WebCore::Document::setMayHaveElementsWithNonAutoTouchAction):

Replace touchActionElements set with a bit that covers the only remaining clients (optimizations).
Note that touchActionElements was not deleted when emptied, it had the same "may have" behavior (which
is currently needed).

(WebCore::Document::touchActionElements const): Deleted.
* dom/Element.cpp:
(WebCore::Element::computedTouchActions const): Deleted.
* dom/Element.h:
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::absoluteEventTrackingRegionsForFrame const):
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::touchActionDataAtPoint const): Deleted.
* page/scrolling/ScrollingTree.h:
* platform/EventTrackingRegions.cpp:
(WebCore::operator==):
* platform/EventTrackingRegions.h:
(): Deleted.
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateEventRegion):
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveElement):

Source/WebKit:

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<EventTrackingRegions>::encode):
(IPC::ArgumentCoder<EventTrackingRegions>::decode):
(IPC::ArgumentCoder<TouchActionData>::encode): Deleted.
(IPC::ArgumentCoder<TouchActionData>::decode): Deleted.

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

5 months ago[ews-build] Explicitly use perl or python while invoking scripts
aakash_jain@apple.com [Wed, 10 Jul 2019 16:10:59 +0000 (16:10 +0000)]
[ews-build] Explicitly use perl or python while invoking scripts
https://bugs.webkit.org/show_bug.cgi?id=199669

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py: Explicitly added perl or python while invoking scripts.
* BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests accordingly.

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

5 months agoRun tests on mips EWS
guijemont@igalia.com [Wed, 10 Jul 2019 16:06:02 +0000 (16:06 +0000)]
Run tests on mips EWS
https://bugs.webkit.org/show_bug.cgi?id=196854

Reviewed by Carlos Garcia Campos.

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

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

5 months ago[LFC][IFC] Remove redundant InlineFormattingContext::LineLayout members.
zalan@apple.com [Wed, 10 Jul 2019 15:53:35 +0000 (15:53 +0000)]
[LFC][IFC] Remove redundant InlineFormattingContext::LineLayout members.
https://bugs.webkit.org/show_bug.cgi?id=199654
<rdar://problem/52869206>

Reviewed by Antti Koivisto.

Some of the members are actually only needed in selected functions.

* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::LineLayout):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
(WebCore::Layout::InlineFormattingContext::LineLayout::alignRuns const):
* layout/inlineformatting/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::inlineItems):
(WebCore::Layout::InlineFormattingState::inlineRuns):
(WebCore::Layout::InlineFormattingState::lineBoxes):

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

5 months ago[GStreamer] Protect against null samples and samples with null buffers
eocanha@igalia.com [Wed, 10 Jul 2019 14:53:51 +0000 (14:53 +0000)]
[GStreamer] Protect against null samples and samples with null buffers
https://bugs.webkit.org/show_bug.cgi?id=199619

Reviewed by Philippe Normand.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder): Assert to enforce non-null samples.
(WebCore::GstVideoFrameHolder::updateTexture): Protect against null m_buffer and improperly mapped video frame.

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

5 months ago[GTK][WPE] Enable support for CSS_COMPOSITING
clopez@igalia.com [Wed, 10 Jul 2019 11:59:00 +0000 (11:59 +0000)]
[GTK][WPE] Enable support for CSS_COMPOSITING
https://bugs.webkit.org/show_bug.cgi?id=199513

Reviewed by Michael Catanzaro.

.:

This feature is needed to support the CSS properties "mix-blend-mode" and "isolation".
Enable it for all ports except for AppleWin (doesn't build).

It has been tested that it builds on the EWS bots of all the ports enabled (for those that have an EWS).
Also, for the GTK and WPE ports it also has been tested that the feature works fine on most of the cases and that doesn't cause regressions.

* Source/cmake/OptionsFTW.cmake: Enable the feature.
* Source/cmake/OptionsMac.cmake: Use the new default.
* Source/cmake/OptionsWin.cmake: Enable for WinCairo only.
* Source/cmake/WebKitFeatures.cmake: Enable it Globally

LayoutTests:

Rebaseline the tests that pass after enabling CSS_COMPOSITING.
The feature works is most of the cases, but there are still some tests/cases not working.

There are also some new failures marked related to SVG blending (css3/blending/svg*), but those were already failing before.
So its unrelated to this change.

* platform/gtk/TestExpectations:
* platform/gtk/css3/blending/background-blend-mode-default-value-expected.png:
* platform/gtk/css3/blending/background-blend-mode-different-image-formats-expected.png:
* platform/gtk/css3/blending/background-blend-mode-image-color-expected.png:
* platform/gtk/css3/blending/background-blend-mode-image-image-expected.png:
* platform/gtk/css3/blending/background-blend-mode-single-layer-no-blending-expected.png:
* platform/gtk/css3/blending/blend-mode-background-expected.png:
* platform/gtk/css3/blending/blend-mode-background-expected.txt:
* platform/gtk/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.txt: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.txt: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.txt: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.txt: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.txt: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.txt: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.txt: Added.
* platform/gtk/css3/blending/blend-mode-overflow-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-overflow-expected.txt: Added.
* platform/gtk/css3/blending/blend-mode-simple-expected.png: Added.
* platform/gtk/css3/blending/blend-mode-simple-expected.txt: Added.
* platform/gtk/css3/blending/repaint/blend-mode-turn-off-isolation-no-effect-expected.txt: Added.
* platform/gtk/css3/blending/svg-blend-layer-blend-expected.png:
* platform/gtk/css3/blending/svg-blend-layer-blend-expected.txt:
* platform/gtk/css3/blending/svg-blend-layer-clip-path-expected.png: Added.
* platform/gtk/css3/blending/svg-blend-layer-clip-path-expected.txt: Added.
* platform/gtk/css3/blending/svg-blend-layer-filter-expected.png:
* platform/gtk/css3/blending/svg-blend-layer-filter-expected.txt:
* platform/gtk/css3/blending/svg-blend-layer-mask-expected.png:
* platform/gtk/css3/blending/svg-blend-layer-mask-expected.txt:
* platform/gtk/css3/blending/svg-blend-layer-opacity-expected.png:
* platform/gtk/css3/blending/svg-blend-layer-opacity-expected.txt:
* platform/wpe/TestExpectations:
* platform/wpe/css3/blending/background-blend-mode-default-value-expected.png: Added.
* platform/wpe/css3/blending/background-blend-mode-default-value-expected.txt: Added.
* platform/wpe/css3/blending/background-blend-mode-different-image-formats-expected.png: Added.
* platform/wpe/css3/blending/background-blend-mode-different-image-formats-expected.txt: Added.
* platform/wpe/css3/blending/background-blend-mode-gif-color-2-expected.png: Added.
* platform/wpe/css3/blending/background-blend-mode-gif-color-2-expected.txt: Added.
* platform/wpe/css3/blending/background-blend-mode-gif-color-expected.png: Added.
* platform/wpe/css3/blending/background-blend-mode-gif-color-expected.txt: Added.
* platform/wpe/css3/blending/background-blend-mode-image-color-expected.png: Added.
* platform/wpe/css3/blending/background-blend-mode-image-color-expected.txt: Added.
* platform/wpe/css3/blending/background-blend-mode-image-image-expected.png: Added.
* platform/wpe/css3/blending/background-blend-mode-image-image-expected.txt: Added.
* platform/wpe/css3/blending/background-blend-mode-single-layer-no-blending-expected.png: Added.
* platform/wpe/css3/blending/background-blend-mode-single-layer-no-blending-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-background-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-background-expected.txt: Copied from LayoutTests/platform/gtk/css3/blending/blend-mode-background-expected.txt.
* platform/wpe/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-overflow-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-overflow-expected.txt: Added.
* platform/wpe/css3/blending/blend-mode-simple-expected.png: Added.
* platform/wpe/css3/blending/blend-mode-simple-expected.txt: Added.
* platform/wpe/css3/blending/repaint/blend-mode-turn-off-isolation-no-effect-expected.txt: Added.
* platform/wpe/css3/blending/svg-blend-layer-blend-expected.png: Added.
* platform/wpe/css3/blending/svg-blend-layer-blend-expected.txt: Added.
* platform/wpe/css3/blending/svg-blend-layer-clip-path-expected.png: Added.
* platform/wpe/css3/blending/svg-blend-layer-clip-path-expected.txt: Added.
* platform/wpe/css3/blending/svg-blend-layer-filter-expected.png: Added.
* platform/wpe/css3/blending/svg-blend-layer-filter-expected.txt: Added.
* platform/wpe/css3/blending/svg-blend-layer-mask-expected.png: Added.
* platform/wpe/css3/blending/svg-blend-layer-mask-expected.txt: Added.
* platform/wpe/css3/blending/svg-blend-layer-opacity-expected.png: Added.
* platform/wpe/css3/blending/svg-blend-layer-opacity-expected.txt: Added.

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

5 months agoOptimize join of large empty arrays
tzagallo@apple.com [Wed, 10 Jul 2019 08:24:52 +0000 (08:24 +0000)]
Optimize join of large empty arrays
https://bugs.webkit.org/show_bug.cgi?id=199636

Reviewed by Mark Lam.

JSTests:

* microbenchmarks/large-empty-array-join.js: Added.
* microbenchmarks/large-empty-array-join-resolve-rope.js: Added.

Source/JavaScriptCore:

Replicate the behavior of `str.repeat(count)` when performing `new Array(count + 1).join(str)`.
I added two new microbenchmarks:
- large-empty-array-join, which does not use the result of the join and runs ~44x faster and uses ~18x less memory.
- large-empty-array-join-resolve-rope, which uses the result of the join and runs 2x faster.

                                            baseline                    diff
large-empty-array-join                2713.9698+-72.7621    ^     61.2335+-10.4836       ^ definitely 44.3217x faster
large-empty-array-join-resolve-string   26.5517+-0.3995     ^     12.9309+-0.5516        ^ definitely 2.0533x faster

large-empty-array-join memory usage with baseline (dirty):
    733012 kB current_mem
    756824 kB lifetime_peak

large-empty-array-join memory usage with diff (dirty):
    41904 kB current_mem
    41972 kB lifetime_peak

Additionally, I ran JetStream2, sunspider and v8-spider and all were neutral.

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

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

5 months agoAX: HTML datalist accessibility is not exposed by WebKit
commit-queue@webkit.org [Wed, 10 Jul 2019 06:33:57 +0000 (06:33 +0000)]
AX: HTML datalist accessibility is not exposed by WebKit
https://bugs.webkit.org/show_bug.cgi?id=196998
<rdar://problem/49962521>

Patch by Andres Gonzalez <andresg_22@apple.com> on 2019-07-09
Reviewed by Chris Fleizach.

Source/WebCore:

Input fields with datalist are exposed as having a listbox popup.

Test: accessibility/datalist.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::popupValue const):
(WebCore::AccessibilityObject::hasDatalist const):
* accessibility/AccessibilityObject.h:

LayoutTests:

* accessibility/datalist-expected.txt: Added.
* accessibility/datalist.html: Added.

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

5 months ago[WPE][GTK] GUniqueOutPtr::release should return a raw pointer
mcatanzaro@igalia.com [Wed, 10 Jul 2019 06:02:33 +0000 (06:02 +0000)]
[WPE][GTK] GUniqueOutPtr::release should return a raw pointer
https://bugs.webkit.org/show_bug.cgi?id=199579

Reviewed by Carlos Garcia Campos.

Source/WebKit:

* NetworkProcess/glib/WebKitCachedResolver.cpp:
(webkitCachedResolverLookupByNameAsync):
(webkitCachedResolverLookupByNameWithFlagsAsync):
* UIProcess/API/glib/WebKitFaviconDatabase.cpp:
(processPendingIconsForPageURL):
(webkit_favicon_database_get_favicon):
* UIProcess/API/glib/WebKitUserContentFilterStore.cpp:
(webkit_user_content_filter_store_save_from_file):

Source/WTF:

GUniqueOutPtr::release should release to a raw pointer, rather than a GUniquePtr. If a
GUniquePtr is desired, it's trivial to construct one from the raw pointer, but all existing
callsites under Source/ would rather have a raw pointer. Currently they have to call
release().release() to get the raw pointer, which is annoying.

* wtf/glib/GUniquePtr.h:
(WTF::GUniqueOutPtr::release):

Tools:

* TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp:
(TestWebKitAPI::TEST):

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

5 months agoReplace old, broken WebGPU IDL spec link with the new one in IDL comments.
justin_fan@apple.com [Wed, 10 Jul 2019 04:39:33 +0000 (04:39 +0000)]
Replace old, broken WebGPU IDL spec link with the new one in IDL comments.

Rubber-stamped by Myles C. Maxfield.

No test changes or change in behavior.

* Modules/webgpu/GPUBindGroupLayoutBinding.idl:
* Modules/webgpu/GPUBindGroupLayoutDescriptor.idl:
* Modules/webgpu/GPUBlendDescriptor.idl:
* Modules/webgpu/GPUBufferDescriptor.idl:
* Modules/webgpu/GPUBufferUsage.idl:
* Modules/webgpu/GPUCanvasContext.idl:
* Modules/webgpu/GPUColor.idl:
* Modules/webgpu/GPUColorStateDescriptor.idl:
* Modules/webgpu/GPUColorWriteBits.idl:
* Modules/webgpu/GPUCompareFunction.idl:
* Modules/webgpu/GPUDepthStencilStateDescriptor.idl:
* Modules/webgpu/GPUExtent3D.idl:
* Modules/webgpu/GPULoadOp.idl:
* Modules/webgpu/GPUOrigin3D.idl:
* Modules/webgpu/GPURequestAdapterOptions.idl:
* Modules/webgpu/GPUSamplerDescriptor.idl:
* Modules/webgpu/GPUShaderStageBit.idl:
* Modules/webgpu/GPUStoreOp.idl:
* Modules/webgpu/GPUTextureDescriptor.idl:
* Modules/webgpu/GPUTextureUsage.idl:
* Modules/webgpu/GPUVertexAttributeDescriptor.idl:
* Modules/webgpu/GPUVertexBufferDescriptor.idl:
* Modules/webgpu/GPUVertexInputDescriptor.idl:
* Modules/webgpu/WebGPU.idl:
* Modules/webgpu/WebGPUAdapter.idl:
* Modules/webgpu/WebGPUBindGroup.idl:
* Modules/webgpu/WebGPUBindGroupBinding.idl:
* Modules/webgpu/WebGPUBindGroupDescriptor.idl:
* Modules/webgpu/WebGPUBindGroupLayout.idl:
* Modules/webgpu/WebGPUBuffer.idl:
* Modules/webgpu/WebGPUBufferBinding.idl:
* Modules/webgpu/WebGPUCommandBuffer.idl:
* Modules/webgpu/WebGPUCommandEncoder.idl:
* Modules/webgpu/WebGPUComputePassEncoder.idl:
* Modules/webgpu/WebGPUComputePipeline.idl:
* Modules/webgpu/WebGPUComputePipelineDescriptor.idl:
* Modules/webgpu/WebGPUDevice.idl:
* Modules/webgpu/WebGPUPipelineDescriptorBase.idl:
* Modules/webgpu/WebGPUPipelineLayout.idl:
* Modules/webgpu/WebGPUPipelineLayoutDescriptor.idl:
* Modules/webgpu/WebGPUPipelineStageDescriptor.idl:
* Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
* Modules/webgpu/WebGPUQueue.idl:
* Modules/webgpu/WebGPURenderPassDescriptor.idl:
* Modules/webgpu/WebGPURenderPassEncoder.idl:
* Modules/webgpu/WebGPURenderPipeline.idl:
* Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
* Modules/webgpu/WebGPUSampler.idl:
* Modules/webgpu/WebGPUShaderModule.idl:
* Modules/webgpu/WebGPUShaderModuleDescriptor.idl:
* Modules/webgpu/WebGPUSwapChain.idl:
* Modules/webgpu/WebGPUTexture.idl:
* Modules/webgpu/WebGPUTextureView.idl:

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

5 months agoStop using GenericTaskQueue from multiple threads
cdumez@apple.com [Wed, 10 Jul 2019 04:19:48 +0000 (04:19 +0000)]
Stop using GenericTaskQueue from multiple threads
https://bugs.webkit.org/show_bug.cgi?id=199652

Reviewed by Geoffrey Garen.

WebCoreAVFLoaderDelegate was calling GenericTaskQueue::enqueueTask() from a background thread,
which is not safe because the implementation of enqueueTask() calls makeWeakPtr() on the
GenericTaskQueue (a main thread object).

Update WebCoreAVFLoaderDelegate to use callOnMainThread() instead.

* platform/GenericTaskQueue.h:
Stop last template parameter which was used exclusively by WebCoreAVFLoaderDelegate to try and
make GenericTaskQueue thread-safe.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver metadataLoaded]):
(-[WebCoreAVFMovieObserver didEnd:]):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
(-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]):
(-[WebCoreAVFMovieObserver outputSequenceWasFlushed:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:didCancelLoadingRequest:]):

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

5 months agoFixed elements appear in the middle of full page screenshots taken when scrolled
timothy_horton@apple.com [Wed, 10 Jul 2019 01:52:23 +0000 (01:52 +0000)]
Fixed elements appear in the middle of full page screenshots taken when scrolled
https://bugs.webkit.org/show_bug.cgi?id=199649
<rdar://problem/52476226>

Reviewed by Simon Fraser.

Source/WebCore:

* page/FrameView.h:
Expose a getter for the layout viewport override rect.

Source/WebKit:

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::computePagesForPrintingAndDrawToPDF):
Temporarily expand the layout viewport to the size of the snapshotting page,
so that fixed elements sit against the bounds of the page instead of
wherever you're currently scrolled to.

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

5 months ago[iOS WK2] Use Optional<> for two data members of WKWebView
simon.fraser@apple.com [Wed, 10 Jul 2019 01:31:03 +0000 (01:31 +0000)]
[iOS WK2] Use Optional<> for two data members of WKWebView
https://bugs.webkit.org/show_bug.cgi?id=199637

Reviewed by Tim Horton.

Use Optional<CGSize> to replace _overridesViewLayoutSize/_viewLayoutSizeOverride
and _overridesMaximumUnobscuredSize/_maximumUnobscuredSizeOverride.

No behavior change.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView activeViewLayoutSize:]):
(-[WKWebView _frameOrBoundsChanged]):
(activeMaximumUnobscuredSize):
(-[WKWebView _minimumLayoutSizeOverride]):
(-[WKWebView _setViewLayoutSizeOverride:]):
(-[WKWebView _maximumUnobscuredSizeOverride]):
(-[WKWebView _setMaximumUnobscuredSizeOverride:]):
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
(-[WKWebView _clearOverrideLayoutParameters]):

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

5 months ago[WHLSL] Import another round of JS spec tests
sbarati@apple.com [Wed, 10 Jul 2019 00:23:19 +0000 (00:23 +0000)]
[WHLSL] Import another round of JS spec tests
https://bugs.webkit.org/show_bug.cgi?id=199647

Reviewed by Myles C. Maxfield.

This patch also removes the unneded <!-- webkit-test-runner [ experimental:WebGPUEnabled=true ] -->
comments in various tests.

* webgpu/bind-groups.html:
* webgpu/blit-commands.html:
* webgpu/map-read-buffers.html:
* webgpu/map-write-buffers.html:
* webgpu/msl-harness-test.html:
* webgpu/pipeline-layouts.html:
* webgpu/queue-creation.html:
* webgpu/render-command-encoding.html:
* webgpu/shader-modules.html:
* webgpu/textures-textureviews.html:
* webgpu/whlsl-array-spec-tests.html:
* webgpu/whlsl-bad-ander-expected.txt: Added.
* webgpu/whlsl-bad-ander.html: Added.
* webgpu/whlsl-bad-literals-expected.txt: Added.
* webgpu/whlsl-bad-literals.html: Added.
* webgpu/whlsl-bitwise-bool-ops.html:
* webgpu/whlsl-enum-spec-tests.html:
* webgpu/whlsl-equality.html:
* webgpu/whlsl-float-math-expected.txt: Added.
* webgpu/whlsl-float-math.html: Added.
* webgpu/whlsl-index-getter-setter-expected.txt: Added.
* webgpu/whlsl-index-getter-setter.html: Added.
* webgpu/whlsl-int-bit-math-expected.txt: Added.
* webgpu/whlsl-int-bit-math.html: Added.
* webgpu/whlsl-int-literal-compare.html:
* webgpu/whlsl-make-array-ref-spec-tests-expected.txt: Added.
* webgpu/whlsl-make-array-ref-spec-tests.html: Added.
* webgpu/whlsl-matrices-spec-tests.html:
* webgpu/whlsl-pointer-spec-tests-expected.txt: Added.
* webgpu/whlsl-pointer-spec-tests.html: Added.
* webgpu/whlsl-postfix-prefix-expected.txt: Added.
* webgpu/whlsl-postfix-prefix.html: Added.
* webgpu/whlsl-return-spec-tests.html:
* webgpu/whlsl-simple-getter-setter.html:
* webgpu/whlsl-simple-tests.html:
* webgpu/whlsl-simple-while-loop.html:
* webgpu/whlsl-test-harness-test.html:
* webgpu/whlsl-type-mismatch.html:
* webgpu/whlsl-uint-bitwise.html:

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

5 months agoFix integer type encoding / decoding in WKRemoteObjectCoder
cdumez@apple.com [Wed, 10 Jul 2019 00:13:01 +0000 (00:13 +0000)]
Fix integer type encoding / decoding in WKRemoteObjectCoder
https://bugs.webkit.org/show_bug.cgi?id=199643
<rdar://problem/52732342>

Reviewed by Anders Carlsson.

Source/WebKit:

As per [1], q / Q match to long long / unsigned long long, not long / unsigned long.

[1] https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100

* Shared/API/Cocoa/WKRemoteObjectCoder.mm:
(encodeInvocationArguments):
(decodeInvocationArguments):

Tools:

Update API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:
* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm:
(-[RemoteObjectRegistryPlugIn takeUnsignedLongLong:completionHandler:]):
(-[RemoteObjectRegistryPlugIn takeLongLong:completionHandler:]):
(-[RemoteObjectRegistryPlugIn takeUnsignedLong:completionHandler:]):
(-[RemoteObjectRegistryPlugIn takeLong:completionHandler:]):

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

5 months agoAdd StringBuilder member function which allows makeString() style variadic argument...
weinig@apple.com [Tue, 9 Jul 2019 23:54:07 +0000 (23:54 +0000)]
Add StringBuilder member function which allows makeString() style variadic argument construction
https://bugs.webkit.org/show_bug.cgi?id=198997

Reviewed by Darin Adler.

Source/WTF:

Adds new StringBuilder::flexibleAppend(...) member function which allows passing one or more
string-adaptable (in the sense that there is StringTypeAdapter specialization for the
type) parameters. This re-ususes the variadic template infrastructure in StringConcatenate.h
that is used for makeString(...) allowing for improvements in one to benefit the other.

The advantage of StringBuilder::flexibleAppend(...) over calling StringBuilder::append(...)
multiple times (beyond the code sharing with makeString(...) is that it can avoid unnecessary
additional re-allocations when the StringBuilder needs to expand it's capacity. It does this
by computing the complete required length for all the passed arguments and then ensuring enough
capacity is available. It also reduces the allocation overhead versus the anti-pattern of
builder.append(makeString(...)).

Ideally, this member function should eventually just be called StringBuilder::append(...), but
the current overload set for StringBuilder::append(...) makes this complicated due to overloads
that take two arguments such as StringBuilder::append(const UChar*, unsigned). Going forward, we
should rename or remove those overloads and move to a standard interface.

* wtf/posix/FileSystemPOSIX.cpp:
(WTF::FileSystemImpl::pathByAppendingComponents):
Adopt StringBuilder::flexibleAppend, using to combine the append of '/' and component.

* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::appendUninitialized):
(WTF::StringBuilder::appendUninitializedWithoutOverflowCheck):
Extract the part of appendUnitialized that doesn't do the overflow check
into it's own member function to allow callers that have already done the
overflow check to bypass it.

(WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForUChar):
(WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForLChar):
Added to allow template member function flexibleAppendFromAdapters to call
appendUninitializedWithoutOverflowCheck without moving it to the header.

* wtf/text/StringBuilder.h:
(WTF::StringBuilder::flexibleAppendFromAdapters):
(WTF::StringBuilder::flexibleAppend):
Modeled on tryMakeStringFromAdapters in StringConcatenate.h, these
eagerly compute the required length, expand the buffer and then use
the existing string type adaptor accumulation functions used by makeString.

* wtf/text/StringConcatenate.h:
(WTF::stringTypeAdapterAccumulator):
(WTF::tryMakeStringFromAdapters):
(WTF::makeStringAccumulator): Deleted.
Renames makeStringAccumulator to stringTypeAdapterAccumulator now that it is used
by more than just makeString.

Tools:

* TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
Add basic test showing that StringBuilder::flexibleAppend can be used to
append one or more string adaptable types.

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

5 months agoUnreviewed test gardening, address TestExpectations linter warning.
ryanhaddad@apple.com [Tue, 9 Jul 2019 23:20:53 +0000 (23:20 +0000)]
Unreviewed test gardening, address TestExpectations linter warning.

* TestExpectations: Delete entry for fast/content-observation since
the directory doesn't exist anymore.

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

5 months ago[WHLSL] Add another group of WHLSL JS reference spec tests
sbarati@apple.com [Tue, 9 Jul 2019 23:05:45 +0000 (23:05 +0000)]
[WHLSL] Add another group of WHLSL JS reference spec tests
https://bugs.webkit.org/show_bug.cgi?id=199642

Reviewed by Robin Morisset.

* webgpu/whlsl-array-spec-tests-expected.txt: Added.
* webgpu/whlsl-array-spec-tests.html: Added.
* webgpu/whlsl-enum-spec-tests-expected.txt: Added.
* webgpu/whlsl-enum-spec-tests.html: Added.
* webgpu/whlsl-equality-expected.txt: Added.
* webgpu/whlsl-equality.html: Added.
* webgpu/whlsl-matrices-spec-tests-expected.txt: Added.
* webgpu/whlsl-matrices-spec-tests.html: Added.
* webgpu/whlsl-return-spec-tests-expected.txt: Added.
* webgpu/whlsl-return-spec-tests.html: Added.
* webgpu/whlsl-simple-getter-setter-expected.txt: Added.
* webgpu/whlsl-simple-getter-setter.html: Added.
* webgpu/whlsl-simple-while-loop-expected.txt: Added.
* webgpu/whlsl-simple-while-loop.html: Added.

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

5 months agoCleanup uses of NetworkProcess::m_sessionByConnection
cdumez@apple.com [Tue, 9 Jul 2019 22:40:08 +0000 (22:40 +0000)]
Cleanup uses of NetworkProcess::m_sessionByConnection
https://bugs.webkit.org/show_bug.cgi?id=199586

Reviewed by Alex Christensen.

Avoid double HashMap lookups and call add() instead of ensure() when appropriate.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::networkSessionByConnection const):
(WebKit::NetworkProcess::webPageWasAdded):
(WebKit::NetworkProcess::webProcessWasDisconnected):

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

5 months agoFix build after r247279
achristensen@apple.com [Tue, 9 Jul 2019 22:11:04 +0000 (22:11 +0000)]
Fix build after r247279
https://bugs.webkit.org/show_bug.cgi?id=199640

* WebCore.xcodeproj/project.pbxproj:

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

5 months agoWKObject's minimum object alignment needs to be larger
commit-queue@webkit.org [Tue, 9 Jul 2019 21:49:21 +0000 (21:49 +0000)]
WKObject's minimum object alignment needs to be larger
https://bugs.webkit.org/show_bug.cgi?id=199523

Patch by Saagar Jha <saagarjha@apple.com> on 2019-07-09
Reviewed by Alex Christensen.

WKObject's wrapped objects are currently constructed at addresses aligned to 8-byte boundaries, but some
classes have more stringent requirements. By querying std::aligned_storage for the alignment of an object
larger than anything we can construct, we should be able to satisfy alignment for any of WebKit's types.

* Shared/Cocoa/APIObject.mm: Use std::aligned_storage in conjunction with alignof to determine
minimumObjectAlignment, instead of hardcoding 8.

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

5 months agoDon't strip out spaces for personalized Autocorrections
megan_gardner@apple.com [Tue, 9 Jul 2019 21:45:05 +0000 (21:45 +0000)]
Don't strip out spaces for personalized Autocorrections
https://bugs.webkit.org/show_bug.cgi?id=199476
<rdar://problem/50782015>

Reviewed by Dean Jackson.

When inserting 'autocorrections' that are really predictive
text suggestions based on personal data, we would remove the space
before the suggestion, resulting in incorrect input.
To fix, do not remove a space when the autocorrected text and the text it is
replacing do not have any length.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::applyAutocorrectionInternal):

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

5 months agoMove AutofillElements.{h,cpp} from editing/ios to editing/cocoa since they're used...
achristensen@apple.com [Tue, 9 Jul 2019 21:30:05 +0000 (21:30 +0000)]
Move AutofillElements.{h,cpp} from editing/ios to editing/cocoa since they're used on macOS
https://bugs.webkit.org/show_bug.cgi?id=199640

Reviewed by Chris Dumez.

* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* editing/cocoa/AutofillElements.cpp: Copied from Source/WebCore/editing/ios/AutofillElements.cpp.
* editing/cocoa/AutofillElements.h: Copied from Source/WebCore/editing/ios/AutofillElements.h.
* editing/ios/AutofillElements.cpp: Removed.
* editing/ios/AutofillElements.h: Removed.

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

5 months agoWeb Inspector: Canvas: replace WTF::Vector with std::initializer_list in CallTracer...
drousso@apple.com [Tue, 9 Jul 2019 21:07:53 +0000 (21:07 +0000)]
Web Inspector: Canvas: replace WTF::Vector with std::initializer_list in CallTracer to avoid dynamic allocations
https://bugs.webkit.org/show_bug.cgi?id=199611

Reviewed by Joseph Pecoraro.

Source/WebCore:

The number of arguments for each member function is known at build time, so there's no need
to dynamically allocate a `WTF::Vector` when capturing the arguments. One downside to using
a `std::initializer_list` is that we can no longer "flatten" `WTF::Variant` arguments into
a `RecordCanvasActionVariant`, but this is acceptable because `WTF::Variant` supports having
yet another `WTF::Variant` as one of it's types, which the `InspectorCanvas` can then figure
out when it finally gets the data. The same applies to `nullptr`/`Optional` checks as well.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateAttributeSetterBodyDefinition):
(GenerateImplementationFunctionCall):
(GenerateCallTracer):
(GenerateCallTracerParameter): Deleted.
* bindings/scripts/test/JS/JSTestCallTracer.cpp:

* bindings/js/CallTracerTypes.h:
* bindings/js/CallTracer.h:
* bindings/js/CallTracer.cpp:
(WebCore::CallTracer::recordCanvasAction):

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::recordCanvasAction):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::recordCanvasActionImpl):

* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::recordCanvasAction):

* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::buildAction):
Drive-by: handle the situation where a parameter is an array of deduplicated strings, which
          would otherwise be treated as an array of numbers.

Source/WebInspectorUI:

* UserInterface/Models/Recording.js:
(WI.Recording.prototype.async swizzle):
Drive-by: handle the situation where a parameter is an array of deduplicated strings, which
          would otherwise be treated as an array of numbers.

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

5 months agoUnreviewed, rolling out r247230.
tsavell@apple.com [Tue, 9 Jul 2019 21:01:50 +0000 (21:01 +0000)]
Unreviewed, rolling out r247230.

Caused storage/domstorage/localstorage/private-browsing-
affects-storage.html to crash with an assertion.

Reverted changeset:

"Cleanup uses of NetworkProcess::m_sessionByConnection"
https://bugs.webkit.org/show_bug.cgi?id=199586
https://trac.webkit.org/changeset/247230

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

5 months agoXHR CORS requests logged twice in the server
youenn@apple.com [Tue, 9 Jul 2019 20:44:07 +0000 (20:44 +0000)]
XHR CORS requests logged twice in the server
https://bugs.webkit.org/show_bug.cgi?id=199492
<rdar://problem/52757558>

Reviewed by Chris Dumez.

Source/WebKit:

Disable speculative loading for XHR and fetch.
These speculative requests might have specific headers that are no longer relevant
when reloading the page. This might then confuse servers.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::makeStoreDecision):
(WebKit::NetworkCache::canRequestUseSpeculativeRevalidation):
(WebKit::NetworkCache::Cache::retrieve):

LayoutTests:

* http/wpt/fetch/disable-speculative-load-for-xhr-and-fetch-loads-expected.txt: Added.
* http/wpt/fetch/disable-speculative-load-for-xhr-and-fetch-loads.html: Added.
* http/wpt/fetch/resources/fetch-xhr-load.py: Added.
(main):
* http/wpt/fetch/resources/xhr-and-fetch.html: Added.

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

5 months agoWeb Inspector: Add another Protocol Version (iOS 13.0)
pecoraro@apple.com [Tue, 9 Jul 2019 20:41:12 +0000 (20:41 +0000)]
Web Inspector: Add another Protocol Version (iOS 13.0)
https://bugs.webkit.org/show_bug.cgi?id=199631
<rdar://problem/47538193>

Reviewed by Devin Rousso.

* UserInterface/Protocol/Legacy/13.0/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-13.0.json: Added.

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

5 months agoFix validation of method signature in decodeInvocation()
cdumez@apple.com [Tue, 9 Jul 2019 20:28:15 +0000 (20:28 +0000)]
Fix validation of method signature in decodeInvocation()
https://bugs.webkit.org/show_bug.cgi?id=199629
<rdar://problem/52731659>

Reviewed by Dan Bernstein.

The decoder was mistakenly assigning remoteMethodSignature to localMethodSignature
before comparing remoteMethodSignature and localMethodSignature, thus making the
check useless.

* Shared/API/Cocoa/WKRemoteObjectCoder.mm:
(decodeInvocation):

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

5 months agoFix non thread-safe use of WeakPtr in DisplayRefreshMonitorMac::displayLinkFired()
cdumez@apple.com [Tue, 9 Jul 2019 20:03:08 +0000 (20:03 +0000)]
Fix non thread-safe use of WeakPtr in DisplayRefreshMonitorMac::displayLinkFired()
https://bugs.webkit.org/show_bug.cgi?id=199626

Reviewed by Ryosuke Niwa.

Fix non thread-safe use of WeakPtr in DisplayRefreshMonitorMac::displayLinkFired().
DisplayRefreshMonitorMac gets constructed / destroyed on the main thread, it is
not thread-safe to call makeWeakPtr() on a DisplayRefreshMonitorMac object like it
was done before.

To address the issue, mark the object as ThreadSafeRefCounted and ref the object
in the lambda instead.

* platform/graphics/DisplayRefreshMonitor.h:
(WebCore::DisplayRefreshMonitor::stop):
* platform/graphics/DisplayRefreshMonitorManager.cpp:
(WebCore::DisplayRefreshMonitorManager::unregisterClient):
* platform/graphics/mac/DisplayRefreshMonitorMac.cpp:
(WebCore::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac):
(WebCore::DisplayRefreshMonitorMac::stop):
(WebCore::DisplayRefreshMonitorMac::displayLinkFired):
* platform/graphics/mac/DisplayRefreshMonitorMac.h:

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

5 months agoRevert conditional WebPageProxy check to grant universal file read sandbox upon corre...
youenn@apple.com [Tue, 9 Jul 2019 19:56:24 +0000 (19:56 +0000)]
Revert conditional WebPageProxy check to grant universal file read sandbox upon correct sandbox creation
https://bugs.webkit.org/show_bug.cgi?id=199622
<rdar://problem/52357508>

Reviewed by Alex Christensen.

On iOS, the sandbox extension to '/' will usually fail, thus the universal file read sandbox is not granted.
This makes WebPageProxy cancel some file:// loads to the application own container.
As a short term fix, go back to previous behavior.
Covered by testing broken app identified in rdar://problem/52357508.

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

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

5 months agoRemove rel=subresource tests
commit-queue@webkit.org [Tue, 9 Jul 2019 19:38:54 +0000 (19:38 +0000)]
Remove rel=subresource tests
https://bugs.webkit.org/show_bug.cgi?id=199616

Patch by Rob Buis <rbuis@igalia.com> on 2019-07-09
Reviewed by Ryosuke Niwa.

Remove rel=subresource references by deleting or using rel=prefetch
instead.

* TestExpectations:
* fast/dom/HTMLLinkElement/cachedresource-types.html:
* http/tests/misc/link-rel-prefetch-and-subresource.html: Removed.
* webarchive/test-link-rel-subresource-beforeload-expected.webarchive: Removed.
* webarchive/test-link-rel-subresource-beforeload.html: Removed.

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

5 months agoOnly allow fetching and removing session credentials from WebsiteDataStore
sihui_liu@apple.com [Tue, 9 Jul 2019 19:25:57 +0000 (19:25 +0000)]
Only allow fetching and removing session credentials from WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=199385
<rdar://problem/52622080>

Reviewed by Alex Christensen.

Source/WebCore:

Fetch and remove only session credentials from NSURLCredentialStorage.

Modified existing API tests: WKWebsiteDataStore.FetchPersistentCredentials

* platform/network/CredentialStorage.cpp:
(WebCore::CredentialStorage::originsWithCredentials const):
(WebCore::CredentialStorage::originsWithSessionCredentials):
(WebCore::CredentialStorage::removeSessionCredentialsWithOrigins):
(WebCore::CredentialStorage::clearSessionCredentials):
(WebCore::CredentialStorage::clearPermanentCredentialsForProtectionSpace):
* platform/network/CredentialStorage.h:
* platform/network/mac/CredentialStorageMac.mm:
(WebCore::CredentialStorage::originsWithSessionCredentials):
(WebCore::CredentialStorage::removeSessionCredentialsWithOrigins):
(WebCore::CredentialStorage::clearSessionCredentials):
(WebCore::CredentialStorage::clearPermanentCredentialsForProtectionSpace):
(WebCore::CredentialStorage::originsWithPersistentCredentials): Deleted.

Source/WebKit:

Stop sending an extra message to network process for fetching or removing persistent credentials.

Also introduce a new SPI for clearing persistent credentials created in test.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::clearPermanentCredentialsForProtectionSpace):
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::originsWithPersistentCredentials): Deleted.
(WebKit::NetworkProcess::removeCredentialsWithOrigins): Deleted.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::originsWithPersistentCredentials): Deleted.
(WebKit::NetworkProcess::removeCredentialsWithOrigins): Deleted.
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _clearPermanentCredentialsForProtectionSpace:completionHandler:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::clearPermanentCredentialsForProtectionSpace):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::computeWebProcessAccessTypeForDataRemoval):
(WebKit::WebsiteDataStore::removeData):

Tools:

removeDataOfTypes will no longer remove persistent credentials. We should clear persistent credentials using
the new SPI after each test that creates persistent credentials, otherwise the later tests may use credentials
left by previous tests and didReceiveAuthenticationChallenge will not be invoked.

* TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm:
(TestWebKitAPI::TEST):

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

5 months agoWhen parsing an IPv4 address, wait until after deciding it is indeed an IPv4 address...
achristensen@apple.com [Tue, 9 Jul 2019 19:15:04 +0000 (19:15 +0000)]
When parsing an IPv4 address, wait until after deciding it is indeed an IPv4 address before reporting syntax violations
https://bugs.webkit.org/show_bug.cgi?id=199628

Reviewed by Brady Eidson.

Source/WTF:

Otherwise, we sometimes report syntax violations on things that are not IPv4 addresses and don't have syntax violations.
I added a unit test with one such URL that used to cause an assertion.

* wtf/URLParser.cpp:
(WTF::URLParser::parseIPv4Host):

Tools:

* TestWebKitAPI/Tests/WTF/URLParser.cpp:
(TestWebKitAPI::TEST_F):

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

5 months agoRemove invalid assertion in URLParser::domainToASCII
achristensen@apple.com [Tue, 9 Jul 2019 19:13:52 +0000 (19:13 +0000)]
Remove invalid assertion in URLParser::domainToASCII
https://bugs.webkit.org/show_bug.cgi?id=199624

Reviewed by Brady Eidson.

Source/WTF:

When a non-ASCII domain's punycode encoding is longer than 63 characters,
the URL is supposed to fail to parse, according to https://www.unicode.org/reports/tr46/#ToASCII
We and all other browsers do this.  When uidna_nameToASCII tries to punycode encode such a domain,
it can return a number larger than 63.  In this case, processingDetails.errors is UIDNA_ERROR_LABEL_TOO_LONG
and we fail to parse as desired and uidna_nameToASCII did not write out of bounds, so it was just the assertion
that was wrong.  I added some unit tests that would have hit the assertion and verify that we fail at the correct length.

* wtf/URLParser.cpp:
(WTF::URLParser::domainToASCII):

Tools:

* TestWebKitAPI/Tests/WTF/URLParser.cpp:
(TestWebKitAPI::TEST_F):

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

5 months agoURLParser should reserialize IPv6 addresses that end with a colon
achristensen@apple.com [Tue, 9 Jul 2019 19:12:42 +0000 (19:12 +0000)]
URLParser should reserialize IPv6 addresses that end with a colon
https://bugs.webkit.org/show_bug.cgi?id=199627

Reviewed by Brady Eidson.

Source/WTF:

When an IPv6 address ends in a colon, the colon should be removed which means the
serialized output is different than the input, which the URLParser calls a syntax violation.
This matches the URL specification, and I added a unit test that used to assert.

* wtf/URLParser.cpp:
(WTF::URLParser::parseIPv6Host):

Tools:

* TestWebKitAPI/Tests/WTF/URLParser.cpp:
(TestWebKitAPI::TEST_F):

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

5 months agoNull check HistoryItems given to loadDifferentDocumentItem
achristensen@apple.com [Tue, 9 Jul 2019 18:55:43 +0000 (18:55 +0000)]
Null check HistoryItems given to loadDifferentDocumentItem
https://bugs.webkit.org/show_bug.cgi?id=199596
<rdar://problem/49884391>

Reviewed by Ryosuke Niwa.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad):
Under some rare and mysterious conditions we can have a null provisionalItem when loading from the cache.

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

5 months ago[Pointer Events] Scroll indicators should not show for scrollable content with touch...
graouts@webkit.org [Tue, 9 Jul 2019 18:43:57 +0000 (18:43 +0000)]
[Pointer Events] Scroll indicators should not show for scrollable content with touch-action: none
https://bugs.webkit.org/show_bug.cgi?id=199618

Reviewed by Simon Fraser.

Source/WebKit:

Even though we correctly didn't scroll when "touch-action: none" was specified on an element, we would only apply
scrolling constraints after the panning gesture was recognized and the backing UIScrollView would show its scroll
indicators. While this is correct when only "pan-x" or "pan-y" is specified, we should not show the scroll indicators
at all for "touch-action: none" since no scrolling should happen.

To do this, we add a new method to the WKTouchActionGestureRecognizerDelegate protocol to indicate whether a given
gesture recognizer may pan content in the WKWebView. If the gesture recognizer is the top-level scroll view or one
created within the page to back "overflow: scroll" content or an iframe, we correctly make that gesture recognizer
fail to recognize if neither "pan-x" nor "pan-y" is specified for this touch identifier.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView gestureRecognizerMayPanWebView:]):
* UIProcess/ios/WKTouchActionGestureRecognizer.h:
* UIProcess/ios/WKTouchActionGestureRecognizer.mm:
(-[WKTouchActionGestureRecognizer canPreventGestureRecognizer:]):

LayoutTests:

Add a new test that swipes "overflow: scroll" content which would show scroll indicators without scrolling
prior to this patch.

* pointerevents/ios/touch-action-none-no-scroll-indicators-expected.html: Added.
* pointerevents/ios/touch-action-none-no-scroll-indicators.html: Added.

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

5 months agoValidate reply block signature in [WKRemoteObjectRegistry _invokeMethod]
cdumez@apple.com [Tue, 9 Jul 2019 18:41:46 +0000 (18:41 +0000)]
Validate reply block signature in [WKRemoteObjectRegistry _invokeMethod]
https://bugs.webkit.org/show_bug.cgi?id=199584
<rdar://problem/46268249>

Reviewed by Geoffrey Garen.

Validate reply block signature in [WKRemoteObjectRegistry _invokeMethod] for robustness.

* Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:
(validateReplyBlockSignature):
(-[_WKRemoteObjectRegistry _invokeMethod:]):

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

5 months agoUserData::decode should return false when decoding an unrecognized type
achristensen@apple.com [Tue, 9 Jul 2019 18:27:23 +0000 (18:27 +0000)]
UserData::decode should return false when decoding an unrecognized type
https://bugs.webkit.org/show_bug.cgi?id=199598
<rdar://52735138>

Reviewed by Ryosuke Niwa.

* Shared/UserData.cpp:
(WebKit::UserData::decode):

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

5 months agoFix LOG_DISABLED and TREE_DEBUGGING enabled build.
zalan@apple.com [Tue, 9 Jul 2019 18:26:31 +0000 (18:26 +0000)]
Fix LOG_DISABLED and TREE_DEBUGGING enabled build.
https://bugs.webkit.org/show_bug.cgi?id=199623
<rdar://problem/52837648>

Reviewed by Simon Fraser.

* rendering/RenderLayerCompositor.cpp:

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

5 months ago[GStreamer] HLS media test gardening
cturner@igalia.com [Tue, 9 Jul 2019 16:52:52 +0000 (16:52 +0000)]
[GStreamer] HLS media test gardening
https://bugs.webkit.org/show_bug.cgi?id=199620

Unreviewed gardening commit.

* platform/gtk/TestExpectations:

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

5 months ago[ews-build] Do not run unix commands for windows in PrintConfiguration
aakash_jain@apple.com [Tue, 9 Jul 2019 16:14:04 +0000 (16:14 +0000)]
[ews-build] Do not run unix commands for windows in PrintConfiguration
https://bugs.webkit.org/show_bug.cgi?id=199605

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:

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

5 months ago[LFC][IFC] Remove InlineItem references from inline runs.
zalan@apple.com [Tue, 9 Jul 2019 15:29:31 +0000 (15:29 +0000)]
[LFC][IFC] Remove InlineItem references from inline runs.
https://bugs.webkit.org/show_bug.cgi?id=199608
<rdar://problem/52812775>

Reviewed by Antti Koivisto.

Constructing the inline runs is where we stop using InlineItems in the process of processing the inline content.
InlineItems are redundant in the context of Display::Runs.
It also enables us to create temporary InlineItems to process split content.

* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Content::Run::Run):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::Run::layoutBox const):
(WebCore::Layout::Line::Content::Run::logicalRect const):
(WebCore::Layout::Line::Content::Run::textContext const):
(WebCore::Layout::Line::Content::Run::type const):
(WebCore::Layout::Line::Content::Run::isText const):
(WebCore::Layout::Line::Content::Run::isBox const):
(WebCore::Layout::Line::Content::Run::isLineBreak const):
(WebCore::Layout::Line::Content::Run::isContainerStart const):
(WebCore::Layout::Line::Content::Run::isContainerEnd const):
(WebCore::Layout::Line::Content::Run::adjustLogicalTop):
(WebCore::Layout::Line::Content::Run::moveVertically):
(WebCore::Layout::Line::Content::Run::moveHorizontally):
(WebCore::Layout::Line::Content::Run::setTextIsCollapsed):

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

5 months agoREGRESSION(r244906): Crash in WebCore::positionOffsetValue
antti@apple.com [Tue, 9 Jul 2019 15:21:11 +0000 (15:21 +0000)]
REGRESSION(r244906): Crash in WebCore::positionOffsetValue
https://bugs.webkit.org/show_bug.cgi?id=199613
<rdar://problem/51518172>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/css/getComputedStyle/sticky-scroll-container-crash.html

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::positionOffsetValue):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::enclosingScrollportBox const): Deleted.

The client trivally hits nullptr when this is called for element without overflow scroll parent.

Fix by removing the whole function and using shared enclosingClippingBoxForStickyPosition instead.
It does the same ancestor walk more efficiently via layer tree.

* rendering/RenderBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::enclosingClippingBoxForStickyPosition const):

Factor into function.

(WebCore::RenderBoxModelObject::computeStickyPositionConstraints const):
* rendering/RenderBoxModelObject.h:

LayoutTests:

* fast/css/getComputedStyle/sticky-scroll-container-crash-expected.txt: Added.
* fast/css/getComputedStyle/sticky-scroll-container-crash.html: Added.

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

5 months agoSupport writing-mode and direction for scrollIntoViewOptions.
commit-queue@webkit.org [Tue, 9 Jul 2019 10:03:19 +0000 (10:03 +0000)]
Support writing-mode and direction for scrollIntoViewOptions.
https://bugs.webkit.org/show_bug.cgi?id=161611

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-07-09
Reviewed by Frédéric Wang and Simon Fraser.

LayoutTests/imported/w3c:

* web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction-expected.txt:
* web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction-expected.txt:
* web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-expected.txt:
* web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode-expected.txt:

Source/WebCore:

To determine which physical side to align we need to transform ScrollIntoViewOptions to scrollAlignment.
We'll translate the inline and block direction separately. The writing-mode will affect the block scrollAlignment.
While both writing-mode and CSS direction will affect the inline scrollAlignment. The argument for scrollRectToVisible
should be physical, so if !isHorizontalWritingMode(), we need to switch alignX and alignY.

For direction: rtl and writing-mode: horizontal-tb box, WebKit puts the scrollbar on the left side. The visible rect
starts from the right side of the scroll bar, so localExposeRect should also start from the right side of
scroll bar.

* dom/Element.cpp:
(WebCore::toScrollAlignmentForInlineDirection):
(WebCore::toScrollAlignmentForBlockDirection):
(WebCore::Element::scrollIntoView):
(WebCore::toScrollAlignment): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible):

LayoutTests:

* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction-expected.txt: Removed.

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

5 months ago[WHLSL Import 23 new JS reference spec tests
sbarati@apple.com [Tue, 9 Jul 2019 05:32:26 +0000 (05:32 +0000)]
[WHLSL Import 23 new JS reference spec tests
https://bugs.webkit.org/show_bug.cgi?id=199604

Reviewed by Myles C. Maxfield.

Source/WebCore:

This patch imports a bunch of JS reference spec tests on our way to
completing https://bugs.webkit.org/show_bug.cgi?id=199595

It also fixes the recursion checker phase. That phase had two bugs:
1. We'd assert after visiting the function declaration that it was
still in the set. However, it will not be in the set when we actually
detect recursion.
2. We would not visit the arguments to a call, so if they contained other
calls which were recursive, we would not detect such recursive calls.

Tests: webgpu/whlsl-int-literal-compare.html
       webgpu/whlsl-simple-tests.html
       webgpu/whlsl-type-mismatch.html
       webgpu/whlsl-uint-bitwise.html

* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:

LayoutTests:

This moves some stuff down into whlsl-test-harness which are needed by
all tests. This also adds a new checkFail that ensures the program never
runs (e.g, it has a compile error).

* webgpu/js/whlsl-test-harness.js:
(async.checkFail):
(const.webGPUPromiseTest):
* webgpu/whlsl-bitwise-bool-ops-expected.txt:
* webgpu/whlsl-bitwise-bool-ops.html:
* webgpu/whlsl-int-literal-compare-expected.txt: Added.
* webgpu/whlsl-int-literal-compare.html: Added.
* webgpu/whlsl-simple-tests-expected.txt: Added.
* webgpu/whlsl-simple-tests.html: Added.
* webgpu/whlsl-type-mismatch-expected.txt: Added.
* webgpu/whlsl-type-mismatch.html: Added.
* webgpu/whlsl-uint-bitwise-expected.txt: Added.
* webgpu/whlsl-uint-bitwise.html: Added.

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

5 months agoWeb Inspector: Debugger: special breakpoints and event targets should be sorted into...
drousso@apple.com [Tue, 9 Jul 2019 03:30:12 +0000 (03:30 +0000)]
Web Inspector: Debugger: special breakpoints and event targets should be sorted into separate "areas"
https://bugs.webkit.org/show_bug.cgi?id=199554

Reviewed by Joseph Pecoraro.

Move the special All Requests breakpoint down to be right above all other URL breakpoints.
Move the `window` object tree element below other DOM node tree elements.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addTreeElement):
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement):

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

5 months agoWeb Inspector: DOM Debugger: there should be different icons for each type of DOM...
drousso@apple.com [Tue, 9 Jul 2019 03:16:04 +0000 (03:16 +0000)]
Web Inspector: DOM Debugger: there should be different icons for each type of DOM breakpoint
https://bugs.webkit.org/show_bug.cgi?id=199552

Reviewed by Joseph Pecoraro.

[S] for Subtree Modified
[A] for Attribute Modified
[R] for Node Removed

* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
* UserInterface/Views/DOMBreakpointTreeElement.css: Added.
(.breakpoint.dom.breakpoint-for-subtree-modified:not(.breakpoint-paused-icon) .icon):
(.breakpoint.dom.breakpoint-for-attribute-modified:not(.breakpoint-paused-icon) .icon):
(.breakpoint.dom.breakpoint-for-node-removed:not(.breakpoint-paused-icon) .icon):

* UserInterface/Main.html:
* UserInterface/Images/DOMBreakpointAttributeModified.svg: Added.
* UserInterface/Images/DOMBreakpointNodeRemoved.svg: Added.
* UserInterface/Images/DOMBreakpointSubtreeModified.svg: Added.

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

5 months ago[iOS 13] paste-does-not-fire-promises-while-sanitizing-web-content.html times out...
wenson_hsieh@apple.com [Tue, 9 Jul 2019 03:10:36 +0000 (03:10 +0000)]
[iOS 13] paste-does-not-fire-promises-while-sanitizing-web-content.html times out when run with multiple iterations
https://bugs.webkit.org/show_bug.cgi?id=199597

Reviewed by Tim Horton.

Make this test more robust to work around bugs in iOS 13 that currently prevent some single tap gestures from
being recognized, due to conflicts with double tap gesture recognizers.
-   Make both the subframe and editable element taller, so that they're easier to hit.
-   Tap twice when attempting to trigger a paste, in hopes that at least one of the taps will be recognized as a
    single click.
-   Make several event listeners one-shot, to prevent the double tap gesture from triggering paste twice.

* editing/pasteboard/paste-does-not-fire-promises-while-sanitizing-web-content.html:

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

5 months agoSpeculative fix for crashes under LocalStorageDatabaseTracker::databasePath()
cdumez@apple.com [Tue, 9 Jul 2019 03:06:12 +0000 (03:06 +0000)]
Speculative fix for crashes under LocalStorageDatabaseTracker::databasePath()
https://bugs.webkit.org/show_bug.cgi?id=199599
<rdar://problem/31169686>

Reviewed by Ryosuke Niwa.

Speculative fix for crashes under LocalStorageDatabaseTracker::databasePath():
- Add new localStorageDirectory() getter to LocalStorageDatabaseTracker which
  calls isolatedCopy() on m_localStorageDirectory before returning it.
  Use it everywhere instead of m_localStorageDirectory since it is not safe
  to use the same String from various threads like it was done.
- Move localStorageDirectory when constructing the LocalStorageDatabaseTracker
  instead of copying it.
- Make sure that LocalStorageDatabaseTracker and StorageManager are both
  constructed and destroyed on the main thread.

* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::NetworkSession):
* NetworkProcess/NetworkSession.h:
* NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::create):
(WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker):
(WebKit::LocalStorageDatabaseTracker::localStorageDirectory const):
(WebKit::LocalStorageDatabaseTracker::~LocalStorageDatabaseTracker):
(WebKit::LocalStorageDatabaseTracker::deleteAllDatabases):
(WebKit::LocalStorageDatabaseTracker::origins const):
(WebKit::LocalStorageDatabaseTracker::databasePath const):
* NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h:
* NetworkProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::create):
(WebKit::StorageManager::StorageManager):
(WebKit::StorageManager::~StorageManager):
* NetworkProcess/WebStorage/StorageManager.h:
* NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm:
(WebKit::LocalStorageDatabaseTracker::platformMaybeExcludeFromBackup const):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
* NetworkProcess/curl/NetworkSessionCurl.cpp:
(WebKit::NetworkSessionCurl::NetworkSessionCurl):
* NetworkProcess/soup/NetworkSessionSoup.cpp:
(WebKit::NetworkSessionSoup::NetworkSessionSoup):

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

5 months agoUncaught Exception: Unexpected enum value: CPU
drousso@apple.com [Tue, 9 Jul 2019 02:22:30 +0000 (02:22 +0000)]
Uncaught Exception: Unexpected enum value: CPU
https://bugs.webkit.org/show_bug.cgi?id=199564

Reviewed by Joseph Pecoraro.

* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
Filter the list of auto-capture instruments based on what's actually supported, instead of
directly using the saved list from the `WI.Setting`.

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

5 months agoEnabling the Layers tab hides the paint flashing button
drousso@apple.com [Tue, 9 Jul 2019 02:19:26 +0000 (02:19 +0000)]
Enabling the Layers tab hides the paint flashing button
https://bugs.webkit.org/show_bug.cgi?id=199549

Reviewed by Joseph Pecoraro.

Still show the Compositing Borders and Paint Flashing navigation items in the Elements tab
even when the Layers tab is enabled (just like the Layers details sidebar).

* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.get navigationItems):
(WI.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings):

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

5 months agoEnable Intl.PluralRules and Intl.NumberFormatToParts by default
keith_miller@apple.com [Tue, 9 Jul 2019 02:18:56 +0000 (02:18 +0000)]
Enable Intl.PluralRules and Intl.NumberFormatToParts by default
https://bugs.webkit.org/show_bug.cgi?id=199288

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

These features have been around for a while. We should turn them on by default.

* runtime/IntlNumberFormatPrototype.cpp:
(JSC::IntlNumberFormatPrototype::finishCreation):
* runtime/IntlObject.cpp:
(JSC::IntlObject::finishCreation): Deleted.
* runtime/IntlObject.h:
* runtime/Options.h:

LayoutTests:

Remove runtime flag from testing.

* js/intl-numberformat-format-to-parts.html:
* js/intl-pluralrules.html:
* js/script-tests/intl-numberformat-format-to-parts.js:
* js/script-tests/intl-pluralrules.js:

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

5 months agoYouTube embedding iframes in WebView sometimes go blank when the video starts playing
simon.fraser@apple.com [Tue, 9 Jul 2019 01:24:15 +0000 (01:24 +0000)]
YouTube embedding iframes in WebView sometimes go blank when the video starts playing
https://bugs.webkit.org/show_bug.cgi?id=199600
rdar://problem/47806012

Reviewed by Tim Horton.

With some combinations of nested iframes that are being resized from empty, and toggling into
compositing mode, we'd fail to update compositing in the iframe's enclosing document, so never
host the iframes's layers.

Fix by moving some widget-resize-related code into RenderLayerCompositor::widgetDidChangeSize(),
and adding code to schedule a compositing update.

I was unable to come up with a layout test for this.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::widgetDidChangeSize):
* rendering/RenderLayerCompositor.h:
* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::setWidgetGeometry):

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

5 months ago[WinCairo] ASSERTION FAILED: info.bmBitsPixel == 32 in createCairoContextWithHDC
Hironori.Fujii@sony.com [Tue, 9 Jul 2019 01:07:18 +0000 (01:07 +0000)]
[WinCairo] ASSERTION FAILED: info.bmBitsPixel == 32 in createCairoContextWithHDC
https://bugs.webkit.org/show_bug.cgi?id=198323

Reviewed by Per Arne Vollan.

WebView::paint binds m_backingStoreBitmap to a DC by using
SelectObject. WebView::paint can be called recursively, but
m_backingStoreBitmap can't be bound to multiple DCs at the same
time. Then, SelectObject was failing in such case.

Call WebCore::Page::updateRendering before binding
m_backingStoreBitmap instead of after it.

Reverted r202744 change which won't be needed since this change.

* WebView.cpp:
(WebView::scrollBackingStore): Removed r202744's change.
(WebView::updateBackingStore): Removed m_page->updateRendering().
(WebView::paint): Do m_page->updateRendering() before binding m_backingStoreBitmap.
* WebView.h: Removed unused WebView::isPainting.

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

5 months agoJSTestGlobalObject.cpp of bindings-generation-tests is failing for Windows Python
Hironori.Fujii@sony.com [Tue, 9 Jul 2019 01:03:27 +0000 (01:03 +0000)]
JSTestGlobalObject.cpp of bindings-generation-tests is failing for Windows Python
https://bugs.webkit.org/show_bug.cgi?id=199487

Reviewed by Ross Kirsling.

In Windows Python, preprocessor.pm is using cl.exe. cl.exe was
failing to open testglobalscope_constructors_file which was
created by using tempfile.mkstemp() because it keeps the file
open. Use tempfile.mkdtemp() to create temporary files in the
temporary directory instead of tempfile.mkstemp().

* Scripts/webkitpy/bindings/main.py:
(BindingsTests.run_tests):
(BindingsTests.main):
(BindingsTests.close_and_remove): Deleted.

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

5 months agoUse WeakHashSet for WebUserContentControllerProxy::m_processes
cdumez@apple.com [Tue, 9 Jul 2019 00:53:26 +0000 (00:53 +0000)]
Use WeakHashSet for WebUserContentControllerProxy::m_processes
https://bugs.webkit.org/show_bug.cgi?id=199591
<rdar://problem/52798721>

Reviewed by Youenn Fablet.

Source/WebKit:

Use WeakHashSet for WebUserContentControllerProxy::m_processses for safety. In theory, a WebProcessProxy could
stay in the map if we failed to call WebProcessProxy::shutDown() before destroying it.

* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::~WebUserContentControllerProxy):
(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::removeProcess):
(WebKit::WebUserContentControllerProxy::addUserContentWorldUse):
(WebKit::WebUserContentControllerProxy::removeUserContentWorldUses):
(WebKit::WebUserContentControllerProxy::addUserScript):
(WebKit::WebUserContentControllerProxy::removeUserScript):
(WebKit::WebUserContentControllerProxy::removeAllUserScripts):
(WebKit::WebUserContentControllerProxy::addUserStyleSheet):
(WebKit::WebUserContentControllerProxy::removeUserStyleSheet):
(WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets):
(WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
(WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName):
(WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):
(WebKit::WebUserContentControllerProxy::addContentRuleList):
(WebKit::WebUserContentControllerProxy::removeContentRuleList):
(WebKit::WebUserContentControllerProxy::removeAllContentRuleLists):
* UIProcess/UserContent/WebUserContentControllerProxy.h:
(WebKit::WebUserContentControllerProxy::addNetworkProcess):
(WebKit::WebUserContentControllerProxy::removeNetworkProcess):

Source/WTF:

Update WeakHashSet::add() to return an AddResult type, similarly to our other containers.

* wtf/WeakHashSet.h:
(WTF::WeakHashSet::add):

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

5 months ago[ews-build] Add KillOldProcesses step before running API or Layout tests
aakash_jain@apple.com [Tue, 9 Jul 2019 00:35:31 +0000 (00:35 +0000)]
[ews-build] Add KillOldProcesses step before running API or Layout tests
https://bugs.webkit.org/show_bug.cgi?id=199592

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/factories.py:

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

5 months agoWeb Inspector: REGRESSION: Elements: pasting in the Styles sidebar adds a text node...
drousso@apple.com [Tue, 9 Jul 2019 00:27:05 +0000 (00:27 +0000)]
Web Inspector: REGRESSION: Elements: pasting in the Styles sidebar adds a text node to the DOM tree
https://bugs.webkit.org/show_bug.cgi?id=199588

Reviewed by Joseph Pecoraro.

* UserInterface/Base/Main.js:
(WI._paste):
Bail if `event.defaultPrevented`, as that means that something else has handled (and likely
overrode) this event.

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

5 months agoWeb Inspector: the "x" in the Exception icon overlaps the border
drousso@apple.com [Tue, 9 Jul 2019 00:03:53 +0000 (00:03 +0000)]
Web Inspector: the "x" in the Exception icon overlaps the border
https://bugs.webkit.org/show_bug.cgi?id=199553

Reviewed by Joseph Pecoraro.

* UserInterface/Images/Exception.svg:
* UserInterface/Images/Function.svg:
* UserInterface/Images/TailDeletedFunction.svg:

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

5 months agoMake Document::postTask() safe to call from a background thread
cdumez@apple.com [Mon, 8 Jul 2019 23:56:45 +0000 (23:56 +0000)]
Make Document::postTask() safe to call from a background thread
https://bugs.webkit.org/show_bug.cgi?id=199585

Reviewed by Alex Christensen.

Make Document::postTask() safe to call from a background thread by not calling makeWeakPtr() on the Document.
Calling makeWeakPtr() on a document from a background thread is not safe since Document is a main thread
object. Instead, capture Document::identifier() in the lambda and lookup the document from its identifier
once we're on the main thread.

* dom/Document.cpp:
(WebCore::Document::postTask):

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

5 months agoHop explicitly to the main thread after generating a frame in ScreenDisplayCaptureSou...
youenn@apple.com [Mon, 8 Jul 2019 23:51:43 +0000 (23:51 +0000)]
Hop explicitly to the main thread after generating a frame in ScreenDisplayCaptureSourceMac
https://bugs.webkit.org/show_bug.cgi?id=199581

Reviewed by Eric Carlson.

Instead of locking and setting the current frame from a background thread, hop to the main thread.
This also makes sure the weakThis check is done in the main thread.
Manually tested.

* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
(WebCore::ScreenDisplayCaptureSourceMac::DisplaySurface::DisplaySurface):
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
(WebCore::ScreenDisplayCaptureSourceMac::generateFrame):
(WebCore::ScreenDisplayCaptureSourceMac::newFrame):
(WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): Deleted.

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

5 months agoWeb Inspector: Debugger: there should be a different icon for URL breakpoints
drousso@apple.com [Mon, 8 Jul 2019 23:49:10 +0000 (23:49 +0000)]
Web Inspector: Debugger: there should be a different icon for URL breakpoints
https://bugs.webkit.org/show_bug.cgi?id=199550

Reviewed by Joseph Pecoraro.

Use the same (down|up) arrow icon for the Network Tab and the Network timeline.

* UserInterface/Views/URLBreakpointTreeElement.js:
(WI.URLBreakpointTreeElement):
* UserInterface/Views/URLBreakpointTreeElement.css:
(.breakpoint.url:not(.breakpoint-paused-icon) .icon): Added.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):

* UserInterface/Images/URLBreakpoint.svg: Added.

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

5 months agoWeb Inspector: Timelines: CPU: the Duration string isn't localized
drousso@apple.com [Mon, 8 Jul 2019 23:34:19 +0000 (23:34 +0000)]
Web Inspector: Timelines: CPU: the Duration string isn't localized
https://bugs.webkit.org/show_bug.cgi?id=199582
<rdar://problem/51698165>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype._layoutEnergyChart):

* Localizations/en.lproj/localizedStrings.js:

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

5 months ago[iOS] Support select all in non-editable element
dbates@webkit.org [Mon, 8 Jul 2019 23:08:19 +0000 (23:08 +0000)]
[iOS] Support select all in non-editable element
https://bugs.webkit.org/show_bug.cgi?id=199257
<rdar://problem/52553667>

Reviewed by Wenson Hsieh.

Source/WebKit:

Unless we are populating the callout bar always advertise that WebKit can perform Select All
when building with USE(UIKIT_KEYBOARD_ADDITIONS). This way you can press Command + A to select
all text even in a non-editable element just like you can on Mac.

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

LayoutTests:

Add a test to ensure that we can perform Select All even when a non-editable element is focused.

Also disallow testing of Command + A until we fix <https://bugs.webkit.org/show_bug.cgi?id=199475>.
Otherwise, the test fast/events/ios/key-events-comprehensive/key-events-meta.html fails since
Command + A now triggers page selection even in a non-editable (the purpose of this change)
and hence Command + C also triggers the copy command. The triggering of these commands causes
the test to fail the Command + A and Command + C sub-tests since no keypress event is dispatched
for the key that triggered these key commands. This is expected, but Command + A should not have
triggered selection as key-tester.js calls preventDefault() from a keypress handler. That's
the bug. See <https://bugs.webkit.org/show_bug.cgi?id=199475> for more details.

* editing/selection/ios/select-all-non-editable-text-using-keyboard-expected.txt: Added.
* editing/selection/ios/select-all-non-editable-text-using-keyboard.html: Added.
* fast/events/ios/key-events-comprehensive/key-events-meta-expected.txt: Updated result.
* fast/events/ios/resources/key-tester.js: Disallow Command + A until we fix <https://bugs.webkit.org/show_bug.cgi?id=199475>.
* platform/ios/TestExpectations: Skip the test until the fix for <rdar://problem/48322899>
has shipped.

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

5 months agoCommand + . generates Escape with key identifier Period, should be Escape
dbates@webkit.org [Mon, 8 Jul 2019 23:07:03 +0000 (23:07 +0000)]
Command + . generates Escape with key identifier Period, should be Escape
https://bugs.webkit.org/show_bug.cgi?id=199393
<rdar://problem/52498001>

Reviewed by Wenson Hsieh.

Source/WebCore:

Remap the key code for Command + . before we compute the Windows virtual key code.
Otherwise, the Windows virtual key code reveals the pre-mapped key code.

* platform/ios/WebEvent.mm:
(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):

LayoutTests:

Update test result.

* fast/events/ios/key-events-comprehensive/key-events-meta-expected.txt:

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

5 months agoPrevent null dereferencing in SubresourceLoader::init's lambda
achristensen@apple.com [Mon, 8 Jul 2019 22:59:11 +0000 (22:59 +0000)]
Prevent null dereferencing in SubresourceLoader::init's lambda
https://bugs.webkit.org/show_bug.cgi?id=199580

Reviewed by Ryosuke Niwa.

Crash logs indicate that sometimes m_documentLoader is null.
This is similar to https://bugs.webkit.org/show_bug.cgi?id=187360

* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::init):

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

5 months agoCleanup uses of NetworkProcess::m_sessionByConnection
cdumez@apple.com [Mon, 8 Jul 2019 22:28:30 +0000 (22:28 +0000)]
Cleanup uses of NetworkProcess::m_sessionByConnection
https://bugs.webkit.org/show_bug.cgi?id=199586

Reviewed by Alex Christensen.

Avoid double HashMap lookups and call add() instead of ensure() when appropriate.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::networkSessionByConnection const):
(WebKit::NetworkProcess::webPageWasAdded):
(WebKit::NetworkProcess::webProcessWasDisconnected):

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

5 months ago[GTK] Some media fragment tests are flaky
cturner@igalia.com [Mon, 8 Jul 2019 20:51:11 +0000 (20:51 +0000)]
[GTK] Some media fragment tests are flaky
https://bugs.webkit.org/show_bug.cgi?id=132248

Reviewed by Eric Carlson.

These tests look like they're flakey due to a small stop time. I'm
surmising that based on the bot's load, we step over the 0.5 mark
often. When I run this locally, despite running the fragment tests
100 times, I saw no timeouts.

I have seen crashes in the flakiness dashboard, but I would prefer
for these to have separate bugs so that we can squash them rather
than allowing them to linger. Having them expected to crash means
we have no crash logs to investigate.

Updated the baselines in the LayoutTests/ directory to reflect the
new stop time delta.

* media/media-fragments/media-fragments.js:
(pause): Increase stop delta, on simulator builds the stddev
crossed the 0.5s mark, and I suspect on GTK builds, our bots being
heavily loaded cause the majority of timeouts.
* platform/gtk/TestExpectations: Remove expectations.

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

5 months agotest-webkitpy: Explicitly use Python 2.7 lldb library
jbedard@apple.com [Mon, 8 Jul 2019 19:57:27 +0000 (19:57 +0000)]
test-webkitpy: Explicitly use Python 2.7 lldb library
https://bugs.webkit.org/show_bug.cgi?id=199578
<rdar://problem/51853557>

Reviewed by Aakash Jain.

* Scripts/webkitpy/common/system/systemhost.py:
(SystemHost.path_to_lldb_python_directory): Explicitly use Python 2.7 lldb libary.
* Scripts/webkitpy/test/main.py:
(_supports_building_and_running_lldb_tests): Run lldb tests on Catalina again.

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

5 months agoWKWebView fails to render when another view uses CoreImage filters
timothy_horton@apple.com [Mon, 8 Jul 2019 19:54:50 +0000 (19:54 +0000)]
WKWebView fails to render when another view uses CoreImage filters
https://bugs.webkit.org/show_bug.cgi?id=199488
<rdar://problem/52695825>

Reviewed by Dean Jackson.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::layerHostingModeDidChange):
Update m_layerHostingMode when it changes, even if we can't message
the Web Content process. This ensures that the next time we launch
a Web Content process, WebPageCreationParameters will have the correct
layer hosting mode, and is the usual pattern for such things.

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

5 months agoAdd test expectations and baselines for Catalina
ryanhaddad@apple.com [Mon, 8 Jul 2019 19:12:00 +0000 (19:12 +0000)]
Add test expectations and baselines for Catalina
https://bugs.webkit.org/show_bug.cgi?id=199328

Reviewed by Jonathan Bedard.

Tools:

* Scripts/webkitpy/port/mac.py:
(MacPort): Increment current version to 10.15 so that baseline search paths are correctly constructed for High Sierra.

LayoutTests:

* platfrom/mac/*: Adding Catalina test expectations and baselines.
* platform/mac-mojave/*: Migrating Mojave baselines from platform/mac directory.

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

5 months agoImplement MappedFileData for Windows
chris.reid@sony.com [Mon, 8 Jul 2019 19:09:24 +0000 (19:09 +0000)]
Implement MappedFileData for Windows
https://bugs.webkit.org/show_bug.cgi?id=198269

Reviewed by Darin Adler.

Source/WTF:

Original patch by Fujii Hironori.

Add Windows implementations for MappedFileData constructor and destructor.

* wtf/FileSystem.cpp:
* wtf/FileSystem.h:
* wtf/win/FileSystemWin.cpp:

Tools:

* TestWebKitAPI/PlatformWin.cmake:

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

5 months ago[iPadOS] Viewport pops while loading sohu.com, xinhuanet.com, and various other websites
wenson_hsieh@apple.com [Mon, 8 Jul 2019 19:03:42 +0000 (19:03 +0000)]
[iPadOS] Viewport pops while loading sohu.com, xinhuanet.com, and various other websites
https://bugs.webkit.org/show_bug.cgi?id=199575
<rdar://problem/51842220>

Reviewed by Simon Fraser.

Source/WebKit:

Currently, the shrink-to-fit-content heuristic added to scale desktop sites fit within the viewport on iPadOS
only runs during two intervals: after document load, and after page load. On very script-heavy websites, this
may cause a visible jump, as rendering may commence well before the document is finished parsing.

To mitigate this, we move the first opportunity for the shrink-to-fit heuristic from after document, to right
after the page transition has completed (before we unfreeze the layer tree).

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCompletePageTransition):
(WebKit::WebPage::didFinishDocumentLoad): Deleted.

Remove this didFinishDocumentLoad hook, which was only used to schedule the shrink-to-fit timer.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::immediatelyShrinkToFitContent):

m_mainFrame might be null after page transition completes, so we need to ensure immediatelyShrinkToFitContent is
robust in this scenario.

LayoutTests:

Adjusts an existing layout test, and introduces a new test to verify that the shrink-to-fit heuristic is given a
chance to run before document load. See WebKit ChangeLog for more details.

* fast/viewport/ios/shrink-to-fit-content-before-document-load-expected.txt: Added.
* fast/viewport/ios/shrink-to-fit-content-before-document-load.html: Added.
* fast/viewport/ios/shrink-to-fit-content-temporary-overflow.html:

Tweak this layout test to add the temporarily overflowing element after document load.

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

5 months agoUnable to paste from Notes into Excel 365 spreadsheet
wenson_hsieh@apple.com [Mon, 8 Jul 2019 18:59:49 +0000 (18:59 +0000)]
Unable to paste from Notes into Excel 365 spreadsheet
https://bugs.webkit.org/show_bug.cgi?id=199565
<rdar://problem/43615497>

Reviewed by Chris Dumez.

Source/WebCore:

When pasting into Microsoft Excel 365, the copied data is all inserted into a single cell, even when copying a
table. To understand why this happens, we first need to understand how Excel's logic for handling paste works.
When tapping on the "Paste" button, Excel performs and expects the following:

1.  Before triggering programmatic paste, move focus into a hidden contenteditable area specifically intended to
    capture pasted content.
2.  Run a promise that resolves immediately; the promise callback restores focus to the originally focused
    element prior to (1).
3.  Invoke programmatic paste using `document.execCommand("Paste")`.
4.  The callback scheduled in step (2) then runs, restoring focus to the main editable element representing a
    table cell.

However, what ends up happening is this:

Steps (1)-(3): same as before.
4.  We (WebKit) create a temporary Page for the purposes of sanitizing copied web content before exposing it to
    the paste handler. This involves creating and loading a document; when this is finished, we call into
    Document::finishedParsing which flushes the microtask queue.
5.  This causes us to immediately run the microtask enqueued in step (2), which restores focus to the previously
    focused element (importantly, this is not the element that was focused in step (1)).
6.  The paste commences, and inserts the sanitized fragment into the originally focused element rather than the
    content editable area intended to capture pasted content.

Excel's script then gets confused, and does not end up using their special paste logic to handle the paste. The
pasted content is instead just inserted as plain text in a cell. To address this, we simply prevent document
load in the Page for web content sanitization from triggering a microtask checkpoint; this allows any scheduled
main thread microtasks to be deferred until the next turn of the runloop.

Test: editing/pasteboard/paste-does-not-fire-promises-while-sanitizing-web-content.html

* dom/Document.cpp:
(WebCore::Document::finishedParsing):

Don't immediately dispatch microtasks when we finish document parsing, in the case where the page is intended
only for web content sanitization, since this may end up executing script in the original document. As explained
above, this causes compatibility issues when pasting in Excel.

* editing/markup.cpp:
(WebCore::createPageForSanitizingWebContent):

When creating a page for sanitizing web content, mark it as such.

* page/Page.h:

Add a new flag to indicate that a Page is only intended for sanitizing web content.

(WebCore::Page::setIsForSanitizingWebContent):
(WebCore::Page::isForSanitizingWebContent const):

LayoutTests:

Add a test to verify that promises scheduled right before a programmatic paste resolve in the middle of the
paste, while creating a document for web content sanitization. See WebCore ChangeLog for more details.

* editing/pasteboard/paste-does-not-fire-promises-while-sanitizing-web-content-expected.txt: Added.
* editing/pasteboard/paste-does-not-fire-promises-while-sanitizing-web-content.html: Added.

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

5 months agoRemove unused #include "ImageBufferData.h"
annulen@yandex.ru [Mon, 8 Jul 2019 18:44:15 +0000 (18:44 +0000)]
Remove unused #include "ImageBufferData.h"
https://bugs.webkit.org/show_bug.cgi?id=199574

Reviewed by Michael Catanzaro.

* html/canvas/ImageBitmapRenderingContext.h:

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

5 months agoFix thread safety issue in Database::scheduleTransactionCallback()
cdumez@apple.com [Mon, 8 Jul 2019 18:38:32 +0000 (18:38 +0000)]
Fix thread safety issue in Database::scheduleTransactionCallback()
https://bugs.webkit.org/show_bug.cgi?id=199557

Reviewed by Alex Christensen.

I am working on adding threading assertions to WeakPtr and found a potentially
unsafe call to makeWeakPtr() on a Document from Database::scheduleTransactionCallback()
via Document::postTask(), on a background database thread. Document is a main thread
object and we should therefore not be interacting with it from a background thread.

For clarity, this patch also switches the webdatabase code to use Document instead
of ScriptExecution as type since it is only exposed to Window contexts, not workers.

* Modules/webdatabase/Database.cpp:
(WebCore::Database::Database):
(WebCore::Database::~Database):
(WebCore::Database::runTransaction):
(WebCore::Database::scheduleTransactionCallback):
(WebCore::Database::logErrorMessage):
(WebCore::Database::securityOrigin):
(WebCore::Database::didExceedQuota):
* Modules/webdatabase/Database.h:
(WebCore::Database::document):
* Modules/webdatabase/DatabaseContext.cpp:
(WebCore::DatabaseContext::DatabaseContext):
* Modules/webdatabase/DatabaseContext.h:
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::databaseContext):
(WebCore::logOpenDatabaseError):
(WebCore::DatabaseManager::openDatabaseBackend):
(WebCore::DatabaseManager::tryToOpenDatabaseBackend):
(WebCore::DatabaseManager::openDatabase):
(WebCore::DatabaseManager::hasOpenDatabases):
(WebCore::DatabaseManager::stopDatabases):
(WebCore::DatabaseManager::logErrorMessage):
* Modules/webdatabase/DatabaseManager.h:
* Modules/webdatabase/SQLStatement.cpp:
(WebCore::SQLStatement::SQLStatement):
* Modules/webdatabase/SQLTransaction.cpp:
(WebCore::SQLTransaction::SQLTransaction):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didOpenDatabase):
* inspector/agents/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::executeSQL):

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

5 months agoAdd threading assertion to WTF::CompletionHandler
cdumez@apple.com [Mon, 8 Jul 2019 18:26:47 +0000 (18:26 +0000)]
Add threading assertion to WTF::CompletionHandler
https://bugs.webkit.org/show_bug.cgi?id=199516

Reviewed by Alex Christensen.

Source/WebCore:

Update some MessagePort-related code to use WTF::Function instead of WTF::CompletionHandler
since the callback is always called on the main thread, even when it was created on a
worker thread. Ideally, this code would be refactored so that the callback gets called on
the worker thread directly.

* dom/messageports/MessagePortChannel.cpp:
(WebCore::MessagePortChannel::checkRemotePortForActivity):
* dom/messageports/MessagePortChannel.h:
* dom/messageports/MessagePortChannelProvider.h:
* dom/messageports/MessagePortChannelProviderImpl.cpp:
(WebCore::MessagePortChannelProviderImpl::checkRemotePortForActivity):
* dom/messageports/MessagePortChannelProviderImpl.h:
* dom/messageports/MessagePortChannelRegistry.cpp:
(WebCore::MessagePortChannelRegistry::checkRemotePortForActivity):
* dom/messageports/MessagePortChannelRegistry.h:

Source/WebKit:

Update some MessagePort-related code to use WTF::Function instead of WTF::CompletionHandler
since the callback is always called on the main thread, even when it was created on a
worker thread. Ideally, this code would be refactored so that the callback gets called on
the worker thread directly.

* UIProcess/UIMessagePortChannelProvider.cpp:
(WebKit::UIMessagePortChannelProvider::checkRemotePortForActivity):
* UIProcess/UIMessagePortChannelProvider.h:
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
(WebKit::WebMessagePortChannelProvider::checkRemotePortForActivity):
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h:

Source/WTF:

Add threading assertion to WTF::CompletionHandler to try and catch common cases
of unsafe usage (completion handler constructed on one thread but called on
another).

* wtf/CompletionHandler.h:
(WTF::CompletionHandler<Out):

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

5 months agoREGRESSION(r243197): [GStreamer] Web process hangs when scrolling twitter timeline...
cturner@igalia.com [Mon, 8 Jul 2019 18:16:08 +0000 (18:16 +0000)]
REGRESSION(r243197): [GStreamer] Web process hangs when scrolling twitter timeline which contains HLS videos
https://bugs.webkit.org/show_bug.cgi?id=197558

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Not covered, I have a test locally that would probably trigger the
deadlock if the network requests took a realistic amount of time,
but from a local webserver the window of time to hit this deadlock
is too narrow.

* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkit_web_src_init): Make the websrc start asynchronously, this
allows the main thread to be free to complete resource loader
setup.
(webKitWebSrcCreate): Calling start() from the create() vfunc is a
recipe for deadlock, since BaseSrc holds the streaming lock during
seeks, and then calls create(). In these cases, we do not want to
notify async-completion, since we've already completed from the
necessarily preceeding start() vfunc, and calling it again would
require the stream-lock and deadlock us.
(webKitWebSrcStart): Refactor to use webKitWebSrcMakeRequest, but
ensuring that we do perform an async-complete notification.
(webKitWebSrcMakeRequest): What Start() used to be, but now can be
toggled when to notify of async-completion. Start() no longer
blocks, since the return value of initiating a resource loader is
of no interest to the callers.
(webKitWebSrcCloseSession): Similarly to Start(), we do not need
to wait for the completion of cancelled net requests.

Tools:

On shutdown we can easily deadlock the web process if we don't
ensure all network operations are completed before comitting state
changes. In HLS, make sure the network operations are cancelled,
and also prevent hlsdemux's retry logic from scuppering our
efforts.

* gstreamer/jhbuild.modules: Include the patch.
* gstreamer/patches/gst-plugins-bad-do-not-retry-downloads-during-shutdown.patch: Added.

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

5 months agoUnable to play videos on xfinity.com/stream on macOS Catalina
cdumez@apple.com [Mon, 8 Jul 2019 18:14:21 +0000 (18:14 +0000)]
Unable to play videos on xfinity.com/stream on macOS Catalina
https://bugs.webkit.org/show_bug.cgi?id=199576
<rdar://problem/50101264>

Reviewed by Alex Christensen.

Source/WebCore:

Enable invalidate Fetch signal quirk for all sites as the blacklist is getting too large and
we are finding too much breakage too late in the release cycle.

* Modules/fetch/FetchRequest.cpp:
(WebCore::processInvalidSignal):
* page/Quirks.cpp:
(WebCore::Quirks::shouldIgnoreInvalidSignal const):

LayoutTests:

Rebaseline existing test.

* http/wpt/fetch/request-abort-expected.txt:

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

5 months ago[Pointer Events] "touch-action: none" does not prevent double-tap-to-zoom
graouts@webkit.org [Mon, 8 Jul 2019 18:00:33 +0000 (18:00 +0000)]
[Pointer Events] "touch-action: none" does not prevent double-tap-to-zoom
https://bugs.webkit.org/show_bug.cgi?id=199571
<rdar://problem/51715002>

Reviewed by Wenson Hsieh.

Source/WebKit:

We add a new WKTouchActionGestureRecognizerDelegate method to check whether a gesture recognizer may lead to
zooming the page as a result of double-tapping, which can be caused by two different gesture recognizers
managed by WKContentViewInteraction. If that delegate method returns true and we have "touch-action: none"
set for this touch, we cause those gesture recognizers to fail and prevent double-tap-to-zoom behavior.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView gestureRecognizerMayDoubleTapToZoomWebView:]):
* UIProcess/ios/WKTouchActionGestureRecognizer.h:
* UIProcess/ios/WKTouchActionGestureRecognizer.mm:
(-[WKTouchActionGestureRecognizer canPreventGestureRecognizer:]):

LayoutTests:

Add two new tests that check that setting "touch-action: none" on an element does not allow double-tap-to-zoom
and that "touch-action: manipulation" allows it.

* pointerevents/ios/touch-action-manipulation-double-tap-to-zoom-expected.txt: Added.
* pointerevents/ios/touch-action-manipulation-double-tap-to-zoom.html: Added.
* pointerevents/ios/touch-action-none-double-tap-to-zoom-expected.txt: Added.
* pointerevents/ios/touch-action-none-double-tap-to-zoom.html: Added.
* pointerevents/utils.js:
(const.ui.new.UIController.prototype.doubleTapToZoom):

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

5 months agoMediaStreamTrackPrivate should always call readyStateChanged on the main thread
youenn@apple.com [Mon, 8 Jul 2019 17:46:27 +0000 (17:46 +0000)]
MediaStreamTrackPrivate should always call readyStateChanged on the main thread
https://bugs.webkit.org/show_bug.cgi?id=199538
<rdar://problem/52709106>

Reviewed by Eric Carlson.

MediaStreamTrackPrivate is sometimes calling readyStateChanged in a
background thread inside its audioSamplesAvailable method.
Instead of doing that, we hop to the main thread to call readyStateChanged.
Once the call is made in the main thread, MediaStreamTrackPrivate will
send the audio samples to its observers.

To make mock audio source closer to real capture audio sources,
audioSamplesAvailable is called on a background thread.
RealtimeMediaSource is updated to always be destroyed in the main
run loop since it is WebKit2 only.

Covered by existing tests and making sure the mock audio source calls
the audioSamplesAvailable method on a background thread.

* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::videoSampleAvailable):
(WebCore::MediaStreamTrackPrivate::audioSamplesAvailable):
* platform/mediastream/MediaStreamTrackPrivate.h:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::scheduleDeferredTask):
scheduleDeferredTask may be called from a background thread.
It is thus safer to ref the source instead of creating a weak pointer.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac):
(WebCore::MockRealtimeAudioSourceMac::emitSampleBuffers):
(WebCore::MockRealtimeAudioSourceMac::reconfigure):
(WebCore::MockRealtimeAudioSourceMac::render):
(WebCore::MockRealtimeAudioSourceMac::settingsDidChange):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource):
(WebCore::MockRealtimeAudioSource::tick):
* platform/mock/MockRealtimeAudioSource.h:

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

5 months ago[iOS] WebContent processes should not globally allow mach lookup to the AX server.
pvollan@apple.com [Mon, 8 Jul 2019 16:51:28 +0000 (16:51 +0000)]
[iOS] WebContent processes should not globally allow mach lookup to the AX server.
https://bugs.webkit.org/show_bug.cgi?id=199386
<rdar://problem/52487468>

Reviewed by Chris Fleizach.

Instead, a mach extension for this service should be issued to the WebContent process. This has already been implemented.

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

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

5 months agoREGRESSION(r246671): [WPE][GTK] Crash in NetworkProcess since the DNS cache landed
csaavedra@igalia.com [Mon, 8 Jul 2019 16:40:02 +0000 (16:40 +0000)]
REGRESSION(r246671): [WPE][GTK] Crash in NetworkProcess since the DNS cache landed
https://bugs.webkit.org/show_bug.cgi?id=199572

Reviewed by Michael Catanzaro.

The GError coming from the wrapped resolver shouldn't be freed,
but passed onto the caller.

* NetworkProcess/glib/WebKitCachedResolver.cpp:
(webkitCachedResolverLookupByNameAsync):
(webkitCachedResolverLookupByNameWithFlagsAsync):

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

5 months agoRegister a MediaStreamTrack as media producer only if it is a capture track
youenn@apple.com [Mon, 8 Jul 2019 16:25:55 +0000 (16:25 +0000)]
Register a MediaStreamTrack as media producer only if it is a capture track
https://bugs.webkit.org/show_bug.cgi?id=199566

Reviewed by Eric Carlson.

MediaStreamTrack registration as a media producer is only useful for capture tracks.
Otherwise, the audio/video playing state is computed through HTMLMediaElement.
Do not register MediaStreamTrack as a media producer if it is not a capture track.

Set the muted state of the track before registering it as an audio
producer. Otherwise, it might create unnecessary small change of playing state.
Covered by existing tests.

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
* Modules/mediastream/MediaStreamTrack.h:

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

5 months ago[GStreamer] media/video-volume.html broken after switching from cubic to linear scaling
cturner@igalia.com [Mon, 8 Jul 2019 11:47:13 +0000 (11:47 +0000)]
[GStreamer] media/video-volume.html broken after switching from cubic to linear scaling
https://bugs.webkit.org/show_bug.cgi?id=199505

Reviewed by Xabier Rodriguez-Calvar.

PulseAudio has a conversion process from volume's in
double-precision to uint32_t volumes. Depending on the environment
can introduce rounding errors. Be more lenient in our comparison
code.

* media/video-volume-expected.txt: Update baseline
* media/video-volume.html: Compare volume values within a
reasonable tolerance.

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

5 months ago[Pointer Events] touch-action should affect the behavior of pinch-to-zoom to show...
graouts@webkit.org [Mon, 8 Jul 2019 11:26:24 +0000 (11:26 +0000)]
[Pointer Events] touch-action should affect the behavior of pinch-to-zoom to show tabs in Safari
https://bugs.webkit.org/show_bug.cgi?id=199560
<rdar://problem/52742265>

Reviewed by Dean Jackson.

There are other UIPinchGestureRecognizer objects that may lead to pinch-to-zoom behavior, for instance pinching
out to show open tabs in Safari on iOS. We add a new WKUIDelegatePrivate method that will allow Safari to indicate
that a UIPinchGestureRecognizer considered for prevention would lead to pinch-to-zoom behavior.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView gestureRecognizerMayPinchToZoomWebView:]):

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