WebKit-https.git
12 months agoShare some code to dirty z-order and normal flow lists when child layers are added...
simon.fraser@apple.com [Mon, 15 Oct 2018 17:25:47 +0000 (17:25 +0000)]
Share some code to dirty z-order and normal flow lists when child layers are added or removed
https://bugs.webkit.org/show_bug.cgi?id=190585

Reviewed by Zalan Bujtas.

Factor code which dirties the normal flow list and child stacking context z-order lists
when a layer is added or removed.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::addChild):
(WebCore::RenderLayer::removeChild):
(WebCore::RenderLayer::dirtyPaintOrderListsOnChildChange):
* rendering/RenderLayer.h:

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

12 months agoMake a helper function to check for reflection layers
simon.fraser@apple.com [Mon, 15 Oct 2018 17:25:45 +0000 (17:25 +0000)]
Make a helper function to check for reflection layers
https://bugs.webkit.org/show_bug.cgi?id=190584

Reviewed by Zalan Bujtas.

Add RenderLayer::isReflectionLayer() which returns true if the passed layer
is the layer of this layer's reflection. It's used in z-order list building.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateNormalFlowList):
(WebCore::RenderLayer::rebuildZOrderLists):
(WebCore::RenderLayer::collectLayers):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:

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

12 months agoRenderLayer::addChild() and removeChild() should take references
simon.fraser@apple.com [Mon, 15 Oct 2018 17:25:42 +0000 (17:25 +0000)]
RenderLayer::addChild() and removeChild() should take references
https://bugs.webkit.org/show_bug.cgi?id=190582

Reviewed by Zalan Bujtas.

Pass the layer to be added or removed as a reference; it's never null.

* rendering/RenderElement.cpp:
(WebCore::addLayers):
(WebCore::RenderElement::removeLayers):
(WebCore::RenderElement::moveLayers):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::addChild):
(WebCore::RenderLayer::removeChild):
(WebCore::RenderLayer::insertOnlyThisLayer):
(WebCore::RenderLayer::removeOnlyThisLayer):
* rendering/RenderLayer.h:

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

12 months agoUnreviewed Windows build fix after r237112.
cdumez@apple.com [Mon, 15 Oct 2018 16:59:49 +0000 (16:59 +0000)]
Unreviewed Windows build fix after r237112.

* Plugins/PluginView.cpp:
(WebCore::PluginView::performRequest):
(WebCore::PluginView::load):

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

12 months ago[Cairo] Incorrect rendering for 135-deg skews
yoshiaki.jitsukawa@sony.com [Mon, 15 Oct 2018 16:50:33 +0000 (16:50 +0000)]
[Cairo] Incorrect rendering for 135-deg skews
https://bugs.webkit.org/show_bug.cgi?id=190513

Source/WebCore:

Compensation value to zero the the translation components
of the transformation matrix is incorrect if the matrix
has a shear factor.

Reviewed by Žan Doberšek.

Tests: fast/transforms/skew-x-135deg-with-gradient.html
       fast/transforms/skew-y-135deg-with-gradient.html

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

LayoutTests:

Reviewed by Žan Doberšek.

* fast/transforms/skew-x-135deg-with-gradient-expected.html: Added.
* fast/transforms/skew-x-135deg-with-gradient.html: Added.
* fast/transforms/skew-y-135deg-with-gradient-expected.html: Added.
* fast/transforms/skew-y-135deg-with-gradient.html: Added.

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

12 months ago[Curl][WinCairo] Add Public Suffix support to WinCairo
chris.reid@sony.com [Mon, 15 Oct 2018 16:33:56 +0000 (16:33 +0000)]
[Curl][WinCairo] Add Public Suffix support to WinCairo
https://bugs.webkit.org/show_bug.cgi?id=183060

Reviewed by Alex Christensen.

.:

* Source/cmake/FindLibPSL.cmake: Added.
* Source/cmake/OptionsWin.cmake:
* Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

Add Public Suffix support to WinCairo using LibPSL.
LibPSL has been added to WinCairoRequirements in v2018.10.09.

* platform/Curl.cmake:
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::searchCookies): Search for cookies using the topPrivatelyControlledDomain
(WebCore::CookieJarDB::setCookie): Prevent cookies from being added under TLDs
* platform/network/curl/PublicSuffixCurl.cpp: Added.
(WebCore::isPublicSuffix):
(WebCore::topPrivatelyControlledDomainInternal):
(WebCore::topPrivatelyControlledDomain):

Tools:

Share mac's PublicSuffix tests with all ports.

* TestWebKitAPI/PlatformWin.cmake:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/PublicSuffix.cpp:
* TestWebKitAPI/Tests/mac/PublicSuffix.mm: Removed.

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

12 months agoRenderLayer tree-related cleanup
simon.fraser@apple.com [Mon, 15 Oct 2018 16:12:37 +0000 (16:12 +0000)]
RenderLayer tree-related cleanup
https://bugs.webkit.org/show_bug.cgi?id=190572

Reviewed by Zalan Bujtas.

Move code around so that functions related to parent/child and z-order tree structure
are near the top of RenderLayer.cpp, since this is one of the primary functions of layers.

Attempts to use inheritance or composition to separate out tree structure resulted in
unwieldy code and/or performance regressions.

The only behavior change is to store a bit for m_isStackingContext so that we don't have
to consult the old style to know if it changed.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::addChild):
(WebCore::RenderLayer::removeChild):
(WebCore::RenderLayer::insertOnlyThisLayer):
(WebCore::RenderLayer::removeOnlyThisLayer):
(WebCore::canCreateStackingContext):
(WebCore::RenderLayer::shouldBeNormalFlowOnly const):
(WebCore::RenderLayer::shouldBeStackingContext const):
(WebCore::RenderLayer::setIsNormalFlowOnly):
(WebCore::RenderLayer::setIsStackingContext):
(WebCore::RenderLayer::setParent):
(WebCore::RenderLayer::dirtyZOrderLists):
(WebCore::RenderLayer::dirtyStackingContextZOrderLists):
(WebCore::RenderLayer::dirtyNormalFlowList):
(WebCore::RenderLayer::updateNormalFlowList):
(WebCore::RenderLayer::rebuildZOrderLists):
(WebCore::RenderLayer::collectLayers):
(WebCore::RenderLayer::updateLayerListsIfNeeded):
(WebCore::RenderLayer::beginTransparencyLayers):
(WebCore::RenderLayer::willBeDestroyed):
(WebCore::RenderLayer::isDescendantOf const):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::compareZIndex): Deleted.
* rendering/RenderLayer.h:

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

12 months ago[PSON] Prewarm system fallback fonts
antti@apple.com [Mon, 15 Oct 2018 16:02:35 +0000 (16:02 +0000)]
[PSON] Prewarm system fallback fonts
https://bugs.webkit.org/show_bug.cgi?id=190517

Reviewed by Ryosuke Niwa.

This seems to be ~2% progression in PSON PLT4 with large (40ms+) improvements on some pages
after process swaps.

* page/PrewarmInformation.h:
(WebCore::PrewarmInformation::encode const):
(WebCore::PrewarmInformation::decode):
* page/ProcessWarming.cpp:
(WebCore::ProcessWarming::collectPrewarmInformation):
(WebCore::ProcessWarming::prewarmWithInformation):
* platform/graphics/FontCache.cpp:
(WebCore::FontCache::collectPrewarmInformation const):
(WebCore::FontCache::prewarm):
* platform/graphics/FontCache.h:
(WebCore::FontCache::PrewarmInformation::isolatedCopy const):
(WebCore::FontCache::PrewarmInformation::encode const):
(WebCore::FontCache::PrewarmInformation::decode):

Make font cache prewarm information a struct with encode/decode support and move it into FontCache scope.

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::collectionForFamily):
(WebCore::FontCache::systemFallbackForCharacters):

Collect the names of fonts that end up needing character specific system fallbacks.

(WebCore::FontCache::collectPrewarmInformation const):

Include them into prewarm information.

(WebCore::FontCache::prewarm):

Invoking CTFontCreateForCharactersWithLanguage for the correct named font seems sufficient to fully
prewarm it for fallbacks (independent of size, locale or other characteristics).
Any future calls to systemFallbackForCharacters are fast.

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

12 months ago[WHLSL] Migrated WebGPUShadingLanguageRI to the W3C
mmaxfield@apple.com [Mon, 15 Oct 2018 15:54:50 +0000 (15:54 +0000)]
[WHLSL] Migrated WebGPUShadingLanguageRI to the W3C
https://bugs.webkit.org/show_bug.cgi?id=190555

Unreviewed.

Migrated to https://github.com/gpuweb/WHLSL/tree/master/Source

* WebGPUShadingLanguageRI/AddressSpace.js: Removed.
* WebGPUShadingLanguageRI/All.js: Removed.
* WebGPUShadingLanguageRI/AllocateAtEntryPoints.js: Removed.
* WebGPUShadingLanguageRI/AnonymousVariable.js: Removed.
* WebGPUShadingLanguageRI/ArrayRefType.js: Removed.
* WebGPUShadingLanguageRI/ArrayType.js: Removed.
* WebGPUShadingLanguageRI/Assignment.js: Removed.
* WebGPUShadingLanguageRI/AutoWrapper.js: Removed.
* WebGPUShadingLanguageRI/Block.js: Removed.
* WebGPUShadingLanguageRI/BoolLiteral.js: Removed.
* WebGPUShadingLanguageRI/Break.js: Removed.
* WebGPUShadingLanguageRI/BuiltInSemantic.js: Removed.
* WebGPUShadingLanguageRI/BuiltinMatrixGetter.js: Removed.
* WebGPUShadingLanguageRI/BuiltinMatrixSetter.js: Removed.
* WebGPUShadingLanguageRI/BuiltinVectorGetter.js: Removed.
* WebGPUShadingLanguageRI/BuiltinVectorSetter.js: Removed.
* WebGPUShadingLanguageRI/CallExpression.js: Removed.
* WebGPUShadingLanguageRI/CallFunction.js: Removed.
* WebGPUShadingLanguageRI/Casts.js: Removed.
* WebGPUShadingLanguageRI/Check.js: Removed.
* WebGPUShadingLanguageRI/CheckLiteralTypes.js: Removed.
* WebGPUShadingLanguageRI/CheckLoops.js: Removed.
* WebGPUShadingLanguageRI/CheckNativeFuncStages.js: Removed.
* WebGPUShadingLanguageRI/CheckRecursion.js: Removed.
* WebGPUShadingLanguageRI/CheckRecursiveTypes.js: Removed.
* WebGPUShadingLanguageRI/CheckReturns.js: Removed.
* WebGPUShadingLanguageRI/CheckTypesWithArguments.js: Removed.
* WebGPUShadingLanguageRI/CheckUnreachableCode.js: Removed.
* WebGPUShadingLanguageRI/CheckWrapped.js: Removed.
* WebGPUShadingLanguageRI/Checker.js: Removed.
* WebGPUShadingLanguageRI/CloneProgram.js: Removed.
* WebGPUShadingLanguageRI/CommaExpression.js: Removed.
* WebGPUShadingLanguageRI/ConstexprFolder.js: Removed.
* WebGPUShadingLanguageRI/Continue.js: Removed.
* WebGPUShadingLanguageRI/ConvertPtrToArrayRefExpression.js: Removed.
* WebGPUShadingLanguageRI/CreateLiteral.js: Removed.
* WebGPUShadingLanguageRI/CreateLiteralType.js: Removed.
* WebGPUShadingLanguageRI/DereferenceExpression.js: Removed.
* WebGPUShadingLanguageRI/DoWhileLoop.js: Removed.
* WebGPUShadingLanguageRI/DotExpression.js: Removed.
* WebGPUShadingLanguageRI/EArrayRef.js: Removed.
* WebGPUShadingLanguageRI/EBuffer.js: Removed.
* WebGPUShadingLanguageRI/EBufferBuilder.js: Removed.
* WebGPUShadingLanguageRI/EPtr.js: Removed.
* WebGPUShadingLanguageRI/EnumLiteral.js: Removed.
* WebGPUShadingLanguageRI/EnumMember.js: Removed.
* WebGPUShadingLanguageRI/EnumType.js: Removed.
* WebGPUShadingLanguageRI/EvaluationCommon.js: Removed.
* WebGPUShadingLanguageRI/Evaluator.js: Removed.
* WebGPUShadingLanguageRI/Expression.js: Removed.
* WebGPUShadingLanguageRI/ExpressionFinder.js: Removed.
* WebGPUShadingLanguageRI/ExternalOrigin.js: Removed.
* WebGPUShadingLanguageRI/Field.js: Removed.
* WebGPUShadingLanguageRI/FindHighZombies.js: Removed.
* WebGPUShadingLanguageRI/FlattenedStructOffsetGatherer.js: Removed.
* WebGPUShadingLanguageRI/FloatLiteral.js: Removed.
* WebGPUShadingLanguageRI/FloatLiteralType.js: Removed.
* WebGPUShadingLanguageRI/FoldConstexprs.js: Removed.
* WebGPUShadingLanguageRI/ForLoop.js: Removed.
* WebGPUShadingLanguageRI/Func.js: Removed.
* WebGPUShadingLanguageRI/FuncAttribute.js: Removed.
* WebGPUShadingLanguageRI/FuncDef.js: Removed.
* WebGPUShadingLanguageRI/FuncNumThreadsAttribute.js: Removed.
* WebGPUShadingLanguageRI/FuncParameter.js: Removed.
* WebGPUShadingLanguageRI/FunctionLikeBlock.js: Removed.
* WebGPUShadingLanguageRI/HighZombieFinder.js: Removed.
* WebGPUShadingLanguageRI/IdentityExpression.js: Removed.
* WebGPUShadingLanguageRI/IfStatement.js: Removed.
* WebGPUShadingLanguageRI/IndexExpression.js: Removed.
* WebGPUShadingLanguageRI/InferTypesForCall.js: Removed.
* WebGPUShadingLanguageRI/Inline.js: Removed.
* WebGPUShadingLanguageRI/Inliner.js: Removed.
* WebGPUShadingLanguageRI/IntLiteral.js: Removed.
* WebGPUShadingLanguageRI/IntLiteralType.js: Removed.
* WebGPUShadingLanguageRI/Intrinsics.js: Removed.
* WebGPUShadingLanguageRI/LayoutBuffers.js: Removed.
* WebGPUShadingLanguageRI/Lexer.js: Removed.
* WebGPUShadingLanguageRI/LexerToken.js: Removed.
* WebGPUShadingLanguageRI/LiteralTypeChecker.js: Removed.
* WebGPUShadingLanguageRI/LogicalExpression.js: Removed.
* WebGPUShadingLanguageRI/LogicalNot.js: Removed.
* WebGPUShadingLanguageRI/LoopChecker.js: Removed.
* WebGPUShadingLanguageRI/MakeArrayRefExpression.js: Removed.
* WebGPUShadingLanguageRI/MakePtrExpression.js: Removed.
* WebGPUShadingLanguageRI/MatrixType.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLBackend.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLCodegenAll.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLCompileResult.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLConstexprEmitter.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLFunctionDeclaration.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLFunctionDefinition.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLFunctionForwardDeclaration.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLInsertTrapParameter.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLNameMangler.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLNativeFunctionCall.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLStatementEmitter.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLTypeAttributes.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLTypeAttributesMap.js: Removed.
* WebGPUShadingLanguageRI/Metal/MSLTypeUnifier.js: Removed.
* WebGPUShadingLanguageRI/Metal/TypeOf.js: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/.gitignore: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/AppDelegate.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/AppDelegate.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Assets.xcassets/AppIcon.appiconset/Contents.json: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Assets.xcassets/Contents.json: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Base.lproj/Main.storyboard: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/CompileResult.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/CompileResult.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Compiler.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Compiler.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/CustomMetalView.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/CustomMetalView.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Demo shaders/Default.whlsl: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Demo shaders/Julia.whlsl: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Demo shaders/Mandelbrot.whlsl: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Info.plist: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/OffscreenRenderer.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/OffscreenRenderer.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/OnscreenRenderer.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/OnscreenRenderer.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/Renderer.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/Renderer.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestCallArgument.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestCallArgument.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestDescription.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestDescription.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestFamily.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestFamily.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestFamilyRunner.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestFamilyRunner.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/ViewController.h: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/ViewController.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/WHLSL.entitlements: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/_SharedMetal.txt: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/main.m: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/WHLSL Tests.xcodeproj/project.pbxproj: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/WHLSL ToyTests/Info.plist: Removed.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/WHLSL ToyTests/WHLSL_ToyTests.m: Removed.
* WebGPUShadingLanguageRI/Metal/WhlslToMsl.html: Removed.
* WebGPUShadingLanguageRI/Metal/WhlslToMsl.js: Removed.
* WebGPUShadingLanguageRI/NameContext.js: Removed.
* WebGPUShadingLanguageRI/NameFinder.js: Removed.
* WebGPUShadingLanguageRI/NameResolver.js: Removed.
* WebGPUShadingLanguageRI/NativeFunc.js: Removed.
* WebGPUShadingLanguageRI/NativeType.js: Removed.
* WebGPUShadingLanguageRI/Node.js: Removed.
* WebGPUShadingLanguageRI/NormalUsePropertyResolver.js: Removed.
* WebGPUShadingLanguageRI/NullLiteral.js: Removed.
* WebGPUShadingLanguageRI/NullType.js: Removed.
* WebGPUShadingLanguageRI/OperatorAnderIndexer.js: Removed.
* WebGPUShadingLanguageRI/OperatorArrayRefLength.js: Removed.
* WebGPUShadingLanguageRI/OriginKind.js: Removed.
* WebGPUShadingLanguageRI/OverloadResolutionFailure.js: Removed.
* WebGPUShadingLanguageRI/Parse.js: Removed.
* WebGPUShadingLanguageRI/Prepare.js: Removed.
* WebGPUShadingLanguageRI/Program.js: Removed.
* WebGPUShadingLanguageRI/ProgramWithUnnecessaryThingsRemoved.js: Removed.
* WebGPUShadingLanguageRI/PropertyAccessExpression.js: Removed.
* WebGPUShadingLanguageRI/PropertyResolver.js: Removed.
* WebGPUShadingLanguageRI/PtrType.js: Removed.
* WebGPUShadingLanguageRI/ReadModifyWriteExpression.js: Removed.
* WebGPUShadingLanguageRI/RecursionChecker.js: Removed.
* WebGPUShadingLanguageRI/RecursiveTypeChecker.js: Removed.
* WebGPUShadingLanguageRI/ReferenceType.js: Removed.
* WebGPUShadingLanguageRI/ResolveNames.js: Removed.
* WebGPUShadingLanguageRI/ResolveOverloadImpl.js: Removed.
* WebGPUShadingLanguageRI/ResolveProperties.js: Removed.
* WebGPUShadingLanguageRI/ResolveTypeDefs.js: Removed.
* WebGPUShadingLanguageRI/ResourceSemantic.js: Removed.
* WebGPUShadingLanguageRI/Return.js: Removed.
* WebGPUShadingLanguageRI/ReturnChecker.js: Removed.
* WebGPUShadingLanguageRI/ReturnException.js: Removed.
* WebGPUShadingLanguageRI/Rewriter.js: Removed.
* WebGPUShadingLanguageRI/SPIR-V.js: Removed.
* WebGPUShadingLanguageRI/SPIRV.html: Removed.
* WebGPUShadingLanguageRI/SPIRVCodegen.js: Removed.
* WebGPUShadingLanguageRI/SPIRVTypeAnalyzer.js: Removed.
* WebGPUShadingLanguageRI/SPIRVVariableAnalyzer.js: Removed.
* WebGPUShadingLanguageRI/Sampler.js: Removed.
* WebGPUShadingLanguageRI/Semantic.js: Removed.
* WebGPUShadingLanguageRI/SpecializationConstantSemantic.js: Removed.
* WebGPUShadingLanguageRI/StageInOutSemantic.js: Removed.
* WebGPUShadingLanguageRI/StandardLibrary.js: Removed.
* WebGPUShadingLanguageRI/StatementCloner.js: Removed.
* WebGPUShadingLanguageRI/StructLayoutBuilder.js: Removed.
* WebGPUShadingLanguageRI/StructType.js: Removed.
* WebGPUShadingLanguageRI/SwitchCase.js: Removed.
* WebGPUShadingLanguageRI/SwitchStatement.js: Removed.
* WebGPUShadingLanguageRI/SynthesizeArrayOperatorLength.js: Removed.
* WebGPUShadingLanguageRI/SynthesizeCopyConstructorOperator.js: Removed.
* WebGPUShadingLanguageRI/SynthesizeDefaultConstructorOperator.js: Removed.
* WebGPUShadingLanguageRI/SynthesizeEnumFunctions.js: Removed.
* WebGPUShadingLanguageRI/SynthesizeStructAccessors.js: Removed.
* WebGPUShadingLanguageRI/TernaryExpression.js: Removed.
* WebGPUShadingLanguageRI/Test.html: Removed.
* WebGPUShadingLanguageRI/Test.js: Removed.
* WebGPUShadingLanguageRI/Texture.js: Removed.
* WebGPUShadingLanguageRI/TextureOperations.js: Removed.
* WebGPUShadingLanguageRI/TrapStatement.js: Removed.
* WebGPUShadingLanguageRI/Type.js: Removed.
* WebGPUShadingLanguageRI/TypeDef.js: Removed.
* WebGPUShadingLanguageRI/TypeDefResolver.js: Removed.
* WebGPUShadingLanguageRI/TypeOverloadResolutionFailure.js: Removed.
* WebGPUShadingLanguageRI/TypeRef.js: Removed.
* WebGPUShadingLanguageRI/TypedValue.js: Removed.
* WebGPUShadingLanguageRI/UintLiteral.js: Removed.
* WebGPUShadingLanguageRI/UintLiteralType.js: Removed.
* WebGPUShadingLanguageRI/UnificationContext.js: Removed.
* WebGPUShadingLanguageRI/UnreachableCodeChecker.js: Removed.
* WebGPUShadingLanguageRI/Value.js: Removed.
* WebGPUShadingLanguageRI/VariableDecl.js: Removed.
* WebGPUShadingLanguageRI/VariableRef.js: Removed.
* WebGPUShadingLanguageRI/VectorType.js: Removed.
* WebGPUShadingLanguageRI/VisitingSet.js: Removed.
* WebGPUShadingLanguageRI/Visitor.js: Removed.
* WebGPUShadingLanguageRI/WLexicalError.js: Removed.
* WebGPUShadingLanguageRI/WSyntaxError.js: Removed.
* WebGPUShadingLanguageRI/WTrapError.js: Removed.
* WebGPUShadingLanguageRI/WTypeError.js: Removed.
* WebGPUShadingLanguageRI/WhileLoop.js: Removed.
* WebGPUShadingLanguageRI/WrapChecker.js: Removed.
* WebGPUShadingLanguageRI/index.html: Removed.
* WebGPUShadingLanguageRI/spirv.core.grammar.json: Removed.
* WebGPUShadingLanguageRI/wsl-tests.yaml: Removed.

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

12 months agoREGRESSION (r237084): JavaScriptCore fails to build on Linux
ddkilzer@apple.com [Mon, 15 Oct 2018 15:51:59 +0000 (15:51 +0000)]
REGRESSION (r237084): JavaScriptCore fails to build on Linux
<https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10949>

* llint/LLIntSettingsExtractor.cpp: Attempt to fix build by
including <stdio.h>.

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

12 months ago[GTK] Disable MSE build support on Debian and Ubuntu LTS bots
philn@webkit.org [Mon, 15 Oct 2018 15:42:31 +0000 (15:42 +0000)]
[GTK] Disable MSE build support on Debian and Ubuntu LTS bots
https://bugs.webkit.org/show_bug.cgi?id=190581

Reviewed by Michael Catanzaro.

These bots don't use JHBuild and their host GStreamer version is
too old for the GStreamer MSE backend. Version 1.14 is needed at least.

* BuildSlaveSupport/build.webkit.org-config/config.json:

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

12 months agoRestrict browsing context lookup by name to frames that are related to one another
cdumez@apple.com [Mon, 15 Oct 2018 15:34:39 +0000 (15:34 +0000)]
Restrict browsing context lookup by name to frames that are related to one another
https://bugs.webkit.org/show_bug.cgi?id=190475

Reviewed by Alex Christensen.

Source/WebCore:

Update our frame lookup by name logic to take in the active / requesting frame and
only a return a frame that is related to it. By related to it, I mean:
- Ancestor <-> Descendant relationship
- Opener <-> Openee relationship

Being able to look up unrelated frames makes process swapping difficult so we need
to be stricter.

This change is being discussed at:
- https://github.com/whatwg/html/issues/313

Tests: http/tests/dom/new-window-can-target-opener.html
       http/tests/dom/noopener-window-cannot-target-opener.html
       http/tests/dom/noopener-window-not-targetable.html
       http/tests/dom/noopener-window-not-targetable2.html
       http/tests/dom/noreferrer-window-not-targetable.html
       http/tests/dom/opened-window-not-targetable-after-disowning-opener.html

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::findFrameForNavigation):
* page/FrameTree.cpp:
(WebCore::isFrameFamiliarWith):
(WebCore::FrameTree::find const):
* page/FrameTree.h:
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::targetFrame const):

Source/WebKit:

* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::performJavaScriptURLRequest):

Source/WebKitLegacy/mac:

* WebView/WebFrame.mm:
(-[WebFrame findFrameNamed:]):

LayoutTests:

* http/tests/dom/new-window-can-target-opener-expected.txt: Added.
* http/tests/dom/new-window-can-target-opener.html: Added.
* http/tests/dom/noopener-window-cannot-target-opener-expected.txt: Added.
* http/tests/dom/noopener-window-cannot-target-opener.html: Added.
* http/tests/dom/noopener-window-not-targetable-expected.txt: Added.
* http/tests/dom/noopener-window-not-targetable.html: Added.
* http/tests/dom/noopener-window-not-targetable2-expected.txt: Added.
* http/tests/dom/noopener-window-not-targetable2.html: Added.
* http/tests/dom/noreferrer-window-not-targetable-expected.txt: Added.
* http/tests/dom/noreferrer-window-not-targetable.html: Added.
* http/tests/dom/opened-window-not-targetable-after-disowning-opener-expected.txt: Added.
* http/tests/dom/opened-window-not-targetable-after-disowning-opener.html: Added.
* http/tests/dom/resources/new-window-can-target-opener-win.html: Added.
* http/tests/dom/resources/noopener-window-cannot-target-opener-win.html: Added.
Add layout test coverage.

* fast/dom/Window/a-rel-noopener-expected.txt:
* fast/dom/Window/area-rel-noopener-expected.txt:
* fast/dom/Window/resources/rel-noopener.js:
* http/tests/navigation/no-referrer-target-blank-expected.txt:
* http/tests/navigation/resources/no-referrer-helper.php:
* platform/mac-wk1/imported/w3c/web-platform-tests/html/browsers/windows/noreferrer-window-name-expected.txt:
* platform/wk2/imported/w3c/web-platform-tests/html/browsers/windows/noreferrer-window-name-expected.txt:
Update / rebaseline existing tests to reflect behavior change.

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

12 months agoFix assertion after r237102
achristensen@apple.com [Mon, 15 Oct 2018 15:29:47 +0000 (15:29 +0000)]
Fix assertion after r237102
https://bugs.webkit.org/show_bug.cgi?id=190459

* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
(WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
Shipping Safari still uses shouldGoToBackForwardListItem, so only assert on
newer platforms like we do in WKPageSetPageLoaderClient.

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

12 months agoShrink more enum classes
achristensen@apple.com [Mon, 15 Oct 2018 15:23:59 +0000 (15:23 +0000)]
Shrink more enum classes
https://bugs.webkit.org/show_bug.cgi?id=190540

Reviewed by Chris Dumez.

Source/JavaScriptCore:

* runtime/ConsoleTypes.h:

Source/WebCore:

* Modules/notifications/NotificationDirection.h:
* dom/Document.h:
* loader/FrameLoader.h:
* loader/FrameLoaderClient.h:
* loader/HistoryController.h:
* loader/ShouldSkipSafeBrowsingCheck.h:
* loader/ShouldTreatAsContinuingLoad.h:
* page/AutoplayEvent.h:
* page/ChromeClient.h:
* page/DiagnosticLoggingClient.h:
* page/Page.h:
* platform/CookiesStrategy.h:
* platform/audio/AudioSession.h:
* platform/network/NetworkStorageSession.h:
* platform/network/StoredCredentialsPolicy.h:
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerRegistrationData.h:
* workers/service/ServiceWorkerRegistrationOptions.h:
* workers/service/ServiceWorkerTypes.h:
* workers/service/ServiceWorkerUpdateViaCache.h:
* workers/service/server/SWServer.h:
* workers/service/server/SWServerRegistration.h:

Source/WebKit:

* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* Shared/Authentication/AuthenticationChallengeDisposition.h:
* Shared/Authentication/AuthenticationManager.h:
* Shared/Authentication/AuthenticationManager.messages.in:
* Shared/DragControllerAction.h:
* Shared/LayerTreeContext.h:
* Shared/UndoOrRedo.h:
* UIProcess/Authentication/AuthenticationDecisionListener.h:
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/Notifications/WebNotification.h:
* UIProcess/Notifications/WebNotificationManagerProxy.h:
* UIProcess/PageClient.h:
* UIProcess/UserContent/WebUserContentControllerProxy.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/forms/WKAirPlayRoutePicker.h:
* WebProcess/Automation/WebAutomationSessionProxy.messages.in:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:
* WebProcess/UserContent/InjectUserScriptImmediately.h:
* WebProcess/UserContent/WebUserContentController.h:
* WebProcess/UserContent/WebUserContentController.messages.in:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

12 months agoAdd new files missing from previous commit.
mcatanzaro@igalia.com [Mon, 15 Oct 2018 15:10:27 +0000 (15:10 +0000)]
Add new files missing from previous commit.

* Source/cmake/FindLibseccomp.cmake: Added.

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

12 months ago[JSC] Disable DOMJIT on 32bit architecture
yusukesuzuki@slowstart.org [Mon, 15 Oct 2018 15:07:29 +0000 (15:07 +0000)]
[JSC] Disable DOMJIT on 32bit architecture
https://bugs.webkit.org/show_bug.cgi?id=190387

Reviewed by Mark Lam.

We disable DOMJIT on 32bit architecture due to exhaustion of registers.

* runtime/Options.h:

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

12 months ago[GTK][WPE] Implement subprocess sandboxing
mcatanzaro@igalia.com [Mon, 15 Oct 2018 15:02:59 +0000 (15:02 +0000)]
[GTK][WPE] Implement subprocess sandboxing
https://bugs.webkit.org/show_bug.cgi?id=188568

Patch by Patrick Griffis <pgriffis@igalia.com> on 2018-10-15
Reviewed by Michael Catanzaro.

.:

Add ENABLE_BUBBLEWRAP_SANDBOX option for sandboxing.

* Source/cmake/FindLibseccomp.cmake: Added.
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

Link against libseccomp.

* PlatformGTK.cmake:

Source/WebKit:

This implements sandboxing of WebKitWebProcesses.

The sandbox is opt-in at runtime as it is a behavior change.
See webkit_web_context_set_sandbox_enabled() and the
WEBKIT_FORCE_SANDBOX env var for developers.

This is Linux specific using Namespaces, Seccomp, and a DBus proxy service.
This introduces three new dependencies:

- bwrap executable
- libseccomp library
- xdg-dbus-proxy executable

The use of xdg-dbus-proxy will ideally be replaced once upstream DBus
gains the same filtering abilities which is a work in progress.

Currently the sandbox is not completed and there are a few large holes:

- Pulseaudio: The Pipewire project will solve this.
- DRI device access: No immediate solutions planned.
- Webcam device access: Pipewire will also solve this.
- Webprocess network access: Will require GStreamer changes.
- DConf access: Custom proxy planned.
- X11 access: Wayland solves this.

That is not an exhaustive list but are the noteworthy ones. Filesystem access
is still an evolving list as problems are found as is specific DBus name access.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkit_web_context_set_sandbox_enabled):
(webkit_web_context_get_sandbox_enabled):
* UIProcess/API/gtk/WebKitWebContext.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/WebKitWebContext.h:
* UIProcess/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::getLaunchOptions):
* UIProcess/ChildProcessProxy.h:
(WebKit::ChildProcessProxy::platformGetLaunchOptions):
* UIProcess/Launcher/ProcessLauncher.h:
* UIProcess/Launcher/glib/BubblewrapLauncher.cpp: Added.
(WebKit::memfd_create):
(WebKit::argsToFd):
(WebKit::XDGDBusProxyLauncher::setAddress):
(WebKit::XDGDBusProxyLauncher::isRunning const):
(WebKit::XDGDBusProxyLauncher::path const):
(WebKit::XDGDBusProxyLauncher::proxyPath const):
(WebKit::XDGDBusProxyLauncher::setPermissions):
(WebKit::XDGDBusProxyLauncher::launch):
(WebKit::XDGDBusProxyLauncher::childSetupFunc):
(WebKit::XDGDBusProxyLauncher::makeProxyPath):
(WebKit::XDGDBusProxyLauncher::dbusAddressToPath):
(WebKit::bindIfExists):
(WebKit::bindDBusSession):
(WebKit::bindX11):
(WebKit::bindDconf):
(WebKit::bindWayland):
(WebKit::bindPulse):
(WebKit::bindFonts):
(WebKit::bindGtkData):
(WebKit::bindA11y):
(WebKit::bindPathVar):
(WebKit::bindGStreamerData):
(WebKit::bindOpenGL):
(WebKit::bindV4l):
(WebKit::bindSymlinksRealPath):
(WebKit::setupSeccomp):
(WebKit::bubblewrapSpawn):
* UIProcess/Launcher/glib/BubblewrapLauncher.h: Added.
* UIProcess/Launcher/glib/FlatpakLauncher.cpp: Added.
(WebKit::flatpakSpawn):
* UIProcess/Launcher/glib/FlatpakLauncher.h: Added.
* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
(WebKit::isInsideFlatpak):
(WebKit::ProcessLauncher::launchProcess):
* UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::getLaunchOptions):
* UIProcess/Plugins/PluginProcessProxy.h:
* UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
(WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes):
* UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
(WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::platformGetLaunchOptions):
* UIProcess/WebProcessProxy.h:
* UIProcess/glib/WebProcessProxyGLib.cpp: Added.
(WebKit::WebProcessProxy::platformGetLaunchOptions):

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

12 months agoImplement error handler of MediaRecorder
commit-queue@webkit.org [Mon, 15 Oct 2018 14:56:03 +0000 (14:56 +0000)]
Implement error handler of MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=190438

Patch by YUHAN WU <yuhan_wu@apple.com> on 2018-10-15
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/mediacapture-record/MediaRecorder-error-expected.txt: Added.
* web-platform-tests/mediacapture-record/MediaRecorder-error.html: Added.

Source/WebCore:

Test: imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-error.html

Implement error event handler (onerror) for MediaRecorder and basic architecture of start() function.

* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::MediaRecorder):
(WebCore::MediaRecorder::~MediaRecorder):
(WebCore::MediaRecorder::stop):
(WebCore::MediaRecorder::start):
(WebCore::MediaRecorder::setNewRecordingState):
(WebCore::MediaRecorder::scheduleDeferredTask):
(WebCore::MediaRecorder::didAddOrRemoveTrack):
* Modules/mediarecorder/MediaRecorder.h:
* Modules/mediarecorder/MediaRecorder.idl:
* Modules/mediarecorder/MediaRecorderErrorEvent.cpp: Added.
(WebCore::MediaRecorderErrorEvent::create):
(WebCore::MediaRecorderErrorEvent::MediaRecorderErrorEvent):
(WebCore::MediaRecorderErrorEvent::eventInterface const):
* Modules/mediarecorder/MediaRecorderErrorEvent.h: Added.
* Modules/mediarecorder/MediaRecorderErrorEvent.idl: Added.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/EventNames.in:
* dom/EventTargetFactory.in:

LayoutTests:

Since dataavailable event has not been implemented, skip three MediaRecorder-related tests now.
We will need to reenable those tests once implementing the dataavailable event for MediaRecorder.

* TestExpectations:

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

12 months agoWindow's properties such as 'location' should not become null when it loses its brows...
cdumez@apple.com [Mon, 15 Oct 2018 14:54:21 +0000 (14:54 +0000)]
Window's properties such as 'location' should not become null when it loses its browsing context
https://bugs.webkit.org/show_bug.cgi?id=190539

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT test whose output has changed.

* web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url.window-expected.txt:

Source/WebCore:

Window's properties such as 'location' should not become null when it loses its browsing context.
This Webkit behavior is not standard and does not match other browsers so this patch makes it so
that those properties persist.

Tests: http/tests/dom/cross-origin-detached-window-properties.html
       http/tests/dom/same-origin-detached-window-properties.html

* bindings/js/JSDOMBindingSecurity.cpp:
(WebCore::BindingSecurity::shouldAllowAccessToDOMWindow):
* bindings/js/JSDOMBindingSecurity.h:
* bindings/js/JSDOMWindowProperties.cpp:
(WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter):
(WebCore::JSDOMWindowProperties::getOwnPropertySlot):
* bindings/js/JSLocationCustom.cpp:
(WebCore::getOwnPropertySlotCommon):
(WebCore::putCommon):
(WebCore::JSLocation::deleteProperty):
(WebCore::JSLocation::deletePropertyByIndex):
(WebCore::JSLocation::getOwnPropertyNames):
(WebCore::JSLocation::defineOwnProperty):
(WebCore::JSLocation::getPrototype):
(WebCore::JSLocation::toStringName):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateAttributeGetterBodyDefinition):
(GenerateAttributeSetterBodyDefinition):
(GenerateOperationBodyDefinition):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::jsTestActiveDOMObjectExcitingAttrGetter):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunctionBody):
* crypto/SubtleCrypto.cpp:
(WebCore::SubtleCrypto::SubtleCrypto):
* crypto/SubtleCrypto.h:
(WebCore::SubtleCrypto::create):
* dom/Document.cpp:
(WebCore::Document::~Document):
* page/Crypto.cpp:
(WebCore::Crypto::Crypto):
* page/Crypto.h:
(WebCore::Crypto::create):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::~DOMWindow):
(WebCore::DOMWindow::frameDestroyed):
(WebCore::DOMWindow::screen):
(WebCore::DOMWindow::history):
(WebCore::DOMWindow::crypto):
(WebCore::DOMWindow::locationbar):
(WebCore::DOMWindow::menubar):
(WebCore::DOMWindow::personalbar):
(WebCore::DOMWindow::scrollbars):
(WebCore::DOMWindow::statusbar):
(WebCore::DOMWindow::toolbar):
(WebCore::DOMWindow::console const):
(WebCore::DOMWindow::applicationCache):
(WebCore::DOMWindow::navigator):
(WebCore::DOMWindow::performance const):
(WebCore::DOMWindow::location):
(WebCore::DOMWindow::visualViewport):
(WebCore::DOMWindow::styleMedia):
* page/DOMWindow.h:
* page/DOMWindow.idl:
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::crypto):

LayoutTests:

* http/tests/dom/cross-origin-detached-window-properties-expected.txt: Added.
* http/tests/dom/cross-origin-detached-window-properties.html: Added.
* http/tests/dom/resources/post-message-to-parent-when-loaded.html: Added.
* http/tests/dom/same-origin-detached-window-properties-expected.txt: Added.
* http/tests/dom/same-origin-detached-window-properties.html: Added.
Add layout test coverage.

* fast/frames/detached-frame-property-expected.txt:
* fast/frames/detached-frame-property.html:
* http/tests/security/named-window-property-from-same-origin-inactive-document-expected.txt:
* http/tests/security/named-window-property-from-same-origin-inactive-document.html:
* http/tests/security/xss-DENIED-named-window-property-from-cross-origin-inactive-document-expected.txt:
* http/tests/security/xss-DENIED-named-window-property-from-cross-origin-inactive-document.html:
* http/tests/security/xss-DENIED-script-inject-into-inactive-window.html:
* http/tests/security/xss-DENIED-script-inject-into-inactive-window2-pson.html:
* http/tests/security/xss-DENIED-script-inject-into-inactive-window2.html:
* http/tests/security/xss-DENIED-script-inject-into-inactive-window3.html:
Update existing layout tests to reflect behavior change.

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

12 months agoAdd a temporarily off by default preference for doing safe browsing checks
achristensen@apple.com [Mon, 15 Oct 2018 14:31:39 +0000 (14:31 +0000)]
Add a temporarily off by default preference for doing safe browsing checks
https://bugs.webkit.org/show_bug.cgi?id=190522

Reviewed by Chris Dumez.

Safe browsing development has taken longer than anticipated.
To prevent the unused possible contacting the safe browsing provider for no benefit, make this off by default for now.
I'll make it on by default when it's actually used.

* Shared/WebPreferences.yaml:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setSafeBrowsingEnabled:]):
(-[WKPreferences _safeBrowsingEnabled]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):

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

12 months agoInclude EnumTraits.h less
achristensen@apple.com [Mon, 15 Oct 2018 14:30:57 +0000 (14:30 +0000)]
Include EnumTraits.h less
https://bugs.webkit.org/show_bug.cgi?id=190535

Reviewed by Chris Dumez.

Source/JavaScriptCore:

* runtime/ConsoleTypes.h:

Source/WebCore:

* Modules/applepay/ApplePaySessionPaymentRequest.h:
* Modules/applepay/PaymentAuthorizationStatus.h:
* Modules/applicationmanifest/ApplicationManifest.h:
* Modules/fetch/FetchHeaders.h:
* Modules/webauthn/AuthenticatorTransport.h:
* Modules/webauthn/PublicKeyCredentialType.h:
* loader/ShouldSkipSafeBrowsingCheck.h:
* loader/ShouldTreatAsContinuingLoad.h:
* platform/Cookie.h:
* platform/audio/AudioSession.h:
* platform/mediastream/CaptureDevice.h:
* platform/mediastream/MediaStreamRequest.h:
* platform/mediastream/RealtimeMediaSourceSettings.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/network/NetworkLoadInformation.h:
* workers/service/ServiceWorkerClientType.h:
* workers/service/ServiceWorkerTypes.h:
* workers/service/ServiceWorkerUpdateViaCache.h:

Source/WebKit:

* NetworkProcess/NetworkSessionCreationParameters.h:
* Shared/Authentication/AuthenticationChallengeDisposition.h:
* Shared/CoordinateSystem.h:
* Shared/LayerTreeContext.h:
* Shared/UndoOrRedo.h:
* Shared/WebsiteAutoplayPolicy.h:
* Shared/WebsitePopUpPolicy.h:
* UIProcess/API/APIWebsitePolicies.h:
* WebProcess/UserContent/InjectUserScriptImmediately.h:

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

12 months agoRemove InjectedBundle processing of back/forward lists
achristensen@apple.com [Mon, 15 Oct 2018 14:29:53 +0000 (14:29 +0000)]
Remove InjectedBundle processing of back/forward lists
https://bugs.webkit.org/show_bug.cgi?id=190459

Reviewed by Chris Dumez.

Source/WebCore:

The uses of these functions are dead code I removed in rdar://problem/45180545
Removing these functions is a step towards fixing the PSON history bugs.

* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* loader/HistoryController.cpp:
(WebCore::HistoryController::goToItem):

Source/WebKit:

* Shared/API/c/WKDeprecated.h:
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::willGoToBackForwardListItem):
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::willGoToBackForwardListItem):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
(API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem): Deleted.
* WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:
(WKBundleBackForwardListItemCopyOriginalURL):
(WKBundleBackForwardListItemCopyTitle):
(WKBundleBackForwardListItemIsTargetItem):
(WKBundleBackForwardListItemIsInPageCache):
(WKBundleBackForwardListItemHasCachedPageExpired):
* WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.h:
* WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:
* WebProcess/InjectedBundle/API/c/WKBundleFrame.h:
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
(WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
(WebKit::InjectedBundlePageLoaderClient::shouldGoToBackForwardListItem): Deleted.
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::shouldGoToHistoryItem const):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::shouldGoToHistoryItem const):

Source/WebKitLegacy/win:

* WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::shouldGoToHistoryItem const):
* WebCoreSupport/WebFrameLoaderClient.h:

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

12 months agoWebPageProxy should always have a HistoryClient
achristensen@apple.com [Mon, 15 Oct 2018 14:28:13 +0000 (14:28 +0000)]
WebPageProxy should always have a HistoryClient
https://bugs.webkit.org/show_bug.cgi?id=190450

Reviewed by Chris Dumez.

This will make it so we don't forget to null check it.
No change in behavior because the default HistoryClient does nothing.

* UIProcess/API/APIHistoryClient.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::createHistoryClient):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::setHistoryClient):
(WebKit::WebPageProxy::didNavigateWithNavigationData):
(WebKit::WebPageProxy::didPerformClientRedirect):
(WebKit::WebPageProxy::didPerformServerRedirect):
(WebKit::WebPageProxy::didUpdateHistoryTitle):
* UIProcess/WebPageProxy.h:

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

12 months agoUse std::optional<size_t> for a WebBackForwardList's current index
achristensen@apple.com [Mon, 15 Oct 2018 14:27:38 +0000 (14:27 +0000)]
Use std::optional<size_t> for a WebBackForwardList's current index
https://bugs.webkit.org/show_bug.cgi?id=190448

Reviewed by Chris Dumez.

Also remove m_capacity, which was immutable.

* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::WebBackForwardList):
(WebKit::WebBackForwardList::~WebBackForwardList):
(WebKit::WebBackForwardList::pageClosed):
(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::goToItem):
(WebKit::WebBackForwardList::currentItem const):
(WebKit::WebBackForwardList::backItem const):
(WebKit::WebBackForwardList::forwardItem const):
(WebKit::WebBackForwardList::itemAtIndex const):
(WebKit::WebBackForwardList::backListCount const):
(WebKit::WebBackForwardList::forwardListCount const):
(WebKit::WebBackForwardList::backListAsAPIArrayWithLimit const):
(WebKit::WebBackForwardList::forwardListAsAPIArrayWithLimit const):
(WebKit::WebBackForwardList::removeAllItems):
(WebKit::WebBackForwardList::clear):
(WebKit::WebBackForwardList::backForwardListState const):
(WebKit::WebBackForwardList::restoreFromState):
(WebKit::WebBackForwardList::loggingString):
* UIProcess/WebBackForwardList.h:
(WebKit::WebBackForwardList::currentIndex const): Deleted.

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

12 months agoUse pragma once in WTF
achristensen@apple.com [Mon, 15 Oct 2018 14:24:49 +0000 (14:24 +0000)]
Use pragma once in WTF
https://bugs.webkit.org/show_bug.cgi?id=190527

Reviewed by Chris Dumez.

Source/WTF:

We also need to consistently include wtf headers from within wtf so we can build wtf without
symbol redefinition errors from including the copy in Source and the copy in the build directory.

* wtf/ASCIICType.h:
* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Atomics.h:
* wtf/AutomaticThread.cpp:
* wtf/AutomaticThread.h:
* wtf/BackwardsGraph.h:
* wtf/Bag.h:
* wtf/BagToHashMap.h:
* wtf/BitVector.cpp:
* wtf/BitVector.h:
* wtf/Bitmap.h:
* wtf/BloomFilter.h:
* wtf/Box.h:
* wtf/BubbleSort.h:
* wtf/BumpPointerAllocator.h:
* wtf/ByteOrder.h:
* wtf/CPUTime.cpp:
* wtf/CallbackAggregator.h:
* wtf/CheckedArithmetic.h:
* wtf/CheckedBoolean.h:
* wtf/ClockType.cpp:
* wtf/ClockType.h:
* wtf/CommaPrinter.h:
* wtf/CompilationThread.cpp:
* wtf/CompilationThread.h:
* wtf/Compiler.h:
* wtf/ConcurrentPtrHashSet.cpp:
* wtf/ConcurrentVector.h:
* wtf/Condition.h:
* wtf/CountingLock.cpp:
* wtf/CrossThreadTaskHandler.cpp:
* wtf/CryptographicUtilities.cpp:
* wtf/CryptographicUtilities.h:
* wtf/CryptographicallyRandomNumber.cpp:
* wtf/CryptographicallyRandomNumber.h:
* wtf/CurrentTime.cpp:
* wtf/DataLog.cpp:
* wtf/DataLog.h:
* wtf/DateMath.cpp:
* wtf/DateMath.h:
* wtf/DecimalNumber.cpp:
* wtf/DecimalNumber.h:
* wtf/Deque.h:
* wtf/DisallowCType.h:
* wtf/Dominators.h:
* wtf/DoublyLinkedList.h:
* wtf/FastBitVector.cpp:
* wtf/FastMalloc.cpp:
* wtf/FastMalloc.h:
* wtf/FeatureDefines.h:
* wtf/FilePrintStream.cpp:
* wtf/FilePrintStream.h:
* wtf/FlipBytes.h:
* wtf/FunctionDispatcher.cpp:
* wtf/FunctionDispatcher.h:
* wtf/GetPtr.h:
* wtf/Gigacage.cpp:
* wtf/GlobalVersion.cpp:
* wtf/GraphNodeWorklist.h:
* wtf/GregorianDateTime.cpp:
* wtf/GregorianDateTime.h:
* wtf/HashFunctions.h:
* wtf/HashMap.h:
* wtf/HashMethod.h:
* wtf/HashSet.h:
* wtf/HashTable.cpp:
* wtf/HashTraits.h:
* wtf/Indenter.h:
* wtf/IndexSparseSet.h:
* wtf/InlineASM.h:
* wtf/Insertion.h:
* wtf/IteratorAdaptors.h:
* wtf/IteratorRange.h:
* wtf/JSONValues.cpp:
* wtf/JSValueMalloc.cpp:
* wtf/LEBDecoder.h:
* wtf/Language.cpp:
* wtf/ListDump.h:
* wtf/Lock.cpp:
* wtf/Lock.h:
* wtf/LockAlgorithm.h:
* wtf/LockedPrintStream.cpp:
* wtf/Locker.h:
* wtf/MD5.cpp:
* wtf/MD5.h:
* wtf/MainThread.cpp:
* wtf/MainThread.h:
* wtf/MallocPtr.h:
* wtf/MathExtras.h:
* wtf/MediaTime.cpp:
* wtf/MediaTime.h:
* wtf/MemoryPressureHandler.cpp:
* wtf/MessageQueue.h:
* wtf/MetaAllocator.cpp:
* wtf/MetaAllocator.h:
* wtf/MetaAllocatorHandle.h:
* wtf/MonotonicTime.cpp:
* wtf/MonotonicTime.h:
* wtf/NakedPtr.h:
* wtf/NoLock.h:
* wtf/NoTailCalls.h:
* wtf/Noncopyable.h:
* wtf/NumberOfCores.cpp:
* wtf/NumberOfCores.h:
* wtf/OSAllocator.h:
* wtf/OSAllocatorPosix.cpp:
* wtf/OSRandomSource.cpp:
* wtf/OSRandomSource.h:
* wtf/ObjcRuntimeExtras.h:
* wtf/OrderMaker.h:
* wtf/PackedIntVector.h:
* wtf/PageAllocation.h:
* wtf/PageBlock.cpp:
* wtf/PageBlock.h:
* wtf/PageReservation.h:
* wtf/ParallelHelperPool.cpp:
* wtf/ParallelHelperPool.h:
* wtf/ParallelJobs.h:
* wtf/ParallelJobsLibdispatch.h:
* wtf/ParallelVectorIterator.h:
* wtf/ParkingLot.cpp:
* wtf/ParkingLot.h:
* wtf/Platform.h:
* wtf/PointerComparison.h:
* wtf/Poisoned.cpp:
* wtf/PrintStream.cpp:
* wtf/PrintStream.h:
* wtf/ProcessID.h:
* wtf/ProcessPrivilege.cpp:
* wtf/RAMSize.cpp:
* wtf/RAMSize.h:
* wtf/RandomDevice.cpp:
* wtf/RandomNumber.cpp:
* wtf/RandomNumber.h:
* wtf/RandomNumberSeed.h:
* wtf/RangeSet.h:
* wtf/RawPointer.h:
* wtf/ReadWriteLock.cpp:
* wtf/RedBlackTree.h:
* wtf/Ref.h:
* wtf/RefCountedArray.h:
* wtf/RefCountedLeakCounter.cpp:
* wtf/RefCountedLeakCounter.h:
* wtf/RefCounter.h:
* wtf/RefPtr.h:
* wtf/RetainPtr.h:
* wtf/RunLoop.cpp:
* wtf/RunLoop.h:
* wtf/RunLoopTimer.h:
* wtf/RunLoopTimerCF.cpp:
* wtf/SHA1.cpp:
* wtf/SHA1.h:
* wtf/SaturatedArithmetic.h:
(saturatedSubtraction):
* wtf/SchedulePair.h:
* wtf/SchedulePairCF.cpp:
* wtf/SchedulePairMac.mm:
* wtf/ScopedLambda.h:
* wtf/Seconds.cpp:
* wtf/Seconds.h:
* wtf/SegmentedVector.h:
* wtf/SentinelLinkedList.h:
* wtf/SharedTask.h:
* wtf/SimpleStats.h:
* wtf/SingleRootGraph.h:
* wtf/SinglyLinkedList.h:
* wtf/SixCharacterHash.cpp:
* wtf/SixCharacterHash.h:
* wtf/SmallPtrSet.h:
* wtf/Spectrum.h:
* wtf/StackBounds.cpp:
* wtf/StackBounds.h:
* wtf/StackStats.cpp:
* wtf/StackStats.h:
* wtf/StackTrace.cpp:
* wtf/StdLibExtras.h:
* wtf/StreamBuffer.h:
* wtf/StringHashDumpContext.h:
* wtf/StringPrintStream.cpp:
* wtf/StringPrintStream.h:
* wtf/ThreadGroup.cpp:
* wtf/ThreadMessage.cpp:
* wtf/ThreadSpecific.h:
* wtf/Threading.cpp:
* wtf/Threading.h:
* wtf/ThreadingPrimitives.h:
* wtf/ThreadingPthreads.cpp:
* wtf/TimeWithDynamicClockType.cpp:
* wtf/TimeWithDynamicClockType.h:
* wtf/TimingScope.cpp:
* wtf/TinyLRUCache.h:
* wtf/TinyPtrSet.h:
* wtf/TriState.h:
* wtf/TypeCasts.h:
* wtf/UUID.cpp:
* wtf/UnionFind.h:
* wtf/VMTags.h:
* wtf/ValueCheck.h:
* wtf/Vector.h:
* wtf/VectorTraits.h:
* wtf/WallTime.cpp:
* wtf/WallTime.h:
* wtf/WeakPtr.h:
* wtf/WeakRandom.h:
* wtf/WordLock.cpp:
* wtf/WordLock.h:
* wtf/WorkQueue.cpp:
* wtf/WorkQueue.h:
* wtf/WorkerPool.cpp:
* wtf/cf/LanguageCF.cpp:
* wtf/cf/RunLoopCF.cpp:
* wtf/cocoa/Entitlements.mm:
* wtf/cocoa/MachSendRight.cpp:
* wtf/cocoa/MainThreadCocoa.mm:
* wtf/cocoa/MemoryFootprintCocoa.cpp:
* wtf/cocoa/WorkQueueCocoa.cpp:
* wtf/dtoa.cpp:
* wtf/dtoa.h:
* wtf/ios/WebCoreThread.cpp:
* wtf/ios/WebCoreThread.h:
* wtf/mac/AppKitCompatibilityDeclarations.h:
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
* wtf/mbmalloc.cpp:
* wtf/persistence/PersistentCoders.cpp:
* wtf/persistence/PersistentDecoder.cpp:
* wtf/persistence/PersistentEncoder.cpp:
* wtf/spi/cf/CFBundleSPI.h:
* wtf/spi/darwin/CommonCryptoSPI.h:
* wtf/text/ASCIIFastPath.h:
* wtf/text/ASCIILiteral.cpp:
* wtf/text/AtomicString.cpp:
* wtf/text/AtomicString.h:
* wtf/text/AtomicStringHash.h:
* wtf/text/AtomicStringImpl.cpp:
* wtf/text/AtomicStringImpl.h:
* wtf/text/AtomicStringTable.cpp:
* wtf/text/AtomicStringTable.h:
* wtf/text/Base64.cpp:
* wtf/text/CString.cpp:
* wtf/text/CString.h:
* wtf/text/ConversionMode.h:
* wtf/text/ExternalStringImpl.cpp:
* wtf/text/IntegerToStringConversion.h:
* wtf/text/LChar.h:
* wtf/text/LineEnding.cpp:
* wtf/text/StringBuffer.h:
* wtf/text/StringBuilder.cpp:
* wtf/text/StringBuilder.h:
* wtf/text/StringBuilderJSON.cpp:
* wtf/text/StringCommon.h:
* wtf/text/StringConcatenate.h:
* wtf/text/StringHash.h:
* wtf/text/StringImpl.cpp:
* wtf/text/StringImpl.h:
* wtf/text/StringOperators.h:
* wtf/text/StringView.cpp:
* wtf/text/StringView.h:
* wtf/text/SymbolImpl.cpp:
* wtf/text/SymbolRegistry.cpp:
* wtf/text/SymbolRegistry.h:
* wtf/text/TextBreakIterator.cpp:
* wtf/text/TextBreakIterator.h:
* wtf/text/TextBreakIteratorInternalICU.h:
* wtf/text/TextPosition.h:
* wtf/text/TextStream.cpp:
* wtf/text/UniquedStringImpl.h:
* wtf/text/WTFString.cpp:
* wtf/text/WTFString.h:
* wtf/text/cocoa/StringCocoa.mm:
* wtf/text/cocoa/StringViewCocoa.mm:
* wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp:
* wtf/text/icu/UTextProvider.cpp:
* wtf/text/icu/UTextProvider.h:
* wtf/text/icu/UTextProviderLatin1.cpp:
* wtf/text/icu/UTextProviderLatin1.h:
* wtf/text/icu/UTextProviderUTF16.cpp:
* wtf/text/icu/UTextProviderUTF16.h:
* wtf/threads/BinarySemaphore.cpp:
* wtf/threads/BinarySemaphore.h:
* wtf/threads/Signals.cpp:
* wtf/unicode/CharacterNames.h:
* wtf/unicode/Collator.h:
* wtf/unicode/CollatorDefault.cpp:
* wtf/unicode/UTF8.cpp:
* wtf/unicode/UTF8.h:

Tools:

Put WorkQueue in namespace DRT so it does not conflict with WTF::WorkQueue.

* DumpRenderTree/TestRunner.cpp:
(TestRunner::queueLoadHTMLString):
(TestRunner::queueLoadAlternateHTMLString):
(TestRunner::queueBackNavigation):
(TestRunner::queueForwardNavigation):
(TestRunner::queueLoadingScript):
(TestRunner::queueNonLoadingScript):
(TestRunner::queueReload):
* DumpRenderTree/WorkQueue.cpp:
(WorkQueue::singleton): Deleted.
(WorkQueue::WorkQueue): Deleted.
(WorkQueue::queue): Deleted.
(WorkQueue::dequeue): Deleted.
(WorkQueue::count): Deleted.
(WorkQueue::clear): Deleted.
(WorkQueue::processWork): Deleted.
* DumpRenderTree/WorkQueue.h:
(WorkQueue::setFrozen): Deleted.
* DumpRenderTree/WorkQueueItem.h:
* DumpRenderTree/mac/DumpRenderTree.mm:
(runTest):
* DumpRenderTree/mac/FrameLoadDelegate.mm:
(-[FrameLoadDelegate processWork:]):
(-[FrameLoadDelegate webView:locationChangeDone:forDataSource:]):
* DumpRenderTree/mac/TestRunnerMac.mm:
(TestRunner::notifyDone):
(TestRunner::forceImmediateCompletion):
(TestRunner::queueLoad):
* DumpRenderTree/win/DumpRenderTree.cpp:
(runTest):
* DumpRenderTree/win/FrameLoadDelegate.cpp:
(FrameLoadDelegate::processWork):
(FrameLoadDelegate::locationChangeDone):
* DumpRenderTree/win/TestRunnerWin.cpp:
(TestRunner::notifyDone):
(TestRunner::forceImmediateCompletion):
(TestRunner::queueLoad):

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

12 months agoGardening: Build fix after r237084.
mark.lam@apple.com [Mon, 15 Oct 2018 14:01:55 +0000 (14:01 +0000)]
Gardening: Build fix after r237084.
https://bugs.webkit.org/show_bug.cgi?id=189708

Unreviewd.

* llint/LLIntOffsetsExtractor.cpp:

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

12 months ago[JSC] Remove Option::useAsyncIterator
yusukesuzuki@slowstart.org [Mon, 15 Oct 2018 13:51:37 +0000 (13:51 +0000)]
[JSC] Remove Option::useAsyncIterator
https://bugs.webkit.org/show_bug.cgi?id=190567

Reviewed by Saam Barati.

.:

* Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

Async iterator is enabled by default at 2017-08-09. It is already shipped in several releases,
and we can think that it is already mature. Let's drop the option `Option::useAsyncIterator`.

* Configurations/FeatureDefines.xcconfig:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitNewFunctionExpressionCommon):
(JSC::BytecodeGenerator::emitNewFunction):
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createFunctionMetadata):
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseForStatement):
(JSC::Parser<LexerType>::parseAsyncFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::parseAsyncFunctionExpression):
* runtime/Options.h:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

12 months ago[JSC] Remove Options::useObjectRestSpread
yusukesuzuki@slowstart.org [Mon, 15 Oct 2018 13:49:17 +0000 (13:49 +0000)]
[JSC] Remove Options::useObjectRestSpread
https://bugs.webkit.org/show_bug.cgi?id=190568

Reviewed by Saam Barati.

Options::useObjectRestSpread is enabled by default at 2017-06-27. It is already shipped in several releases,
and we can think that it is mature. Let's drop Options::useObjectRestSpread() flag.

* parser/Parser.cpp:
(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseProperty):
* parser/Parser.h:
* runtime/Options.h:

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

12 months ago[JSC] JSON.stringify can accept call-with-no-arguments
yusukesuzuki@slowstart.org [Mon, 15 Oct 2018 13:48:11 +0000 (13:48 +0000)]
[JSC] JSON.stringify can accept call-with-no-arguments
https://bugs.webkit.org/show_bug.cgi?id=190343

Reviewed by Mark Lam.

JSTests:

* stress/json-stringify-no-arguments.js: Added.
(shouldBe):

Source/JavaScriptCore:

JSON.stringify can accept `JSON.stringify()` call (call-with-no-arguments) according to the spec[1].
Instead of throwing an error, we should take the first argument as `undefined` if it is not given.

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

* runtime/JSONObject.cpp:
(JSC::JSONProtoFuncStringify):

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

12 months ago[GStreamer] MediaStream test failing since r236877
csaavedra@igalia.com [Mon, 15 Oct 2018 12:27:37 +0000 (12:27 +0000)]
[GStreamer] MediaStream test failing since r236877

Unreviewed gardening
* platform/gtk/TestExpectations:
* platform/wpe/TestExpectations:

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

12 months ago[WPE] Silence a unused-parameter warning
csaavedra@igalia.com [Mon, 15 Oct 2018 11:53:45 +0000 (11:53 +0000)]
[WPE] Silence a unused-parameter warning

Unreviewed.
* MiniBrowser/wpe/main.cpp:
(decidePermissionRequest):

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

12 months ago[GStreamer] Fix EME build for GStreamer 1.14.x
philn@webkit.org [Mon, 15 Oct 2018 11:44:18 +0000 (11:44 +0000)]
[GStreamer] Fix EME build for GStreamer 1.14.x
https://bugs.webkit.org/show_bug.cgi?id=190471

Reviewed by Xabier Rodriguez-Calvar.

* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptTransformCaps): The
GST_PROTECTION_UNSPECIFIED_SYSTEM_ID #define won't be shipped
until the GStreamer 1.16.0 release, so its use needs to be wrapped
between a version check.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered): Ditto.

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

12 months agoAdd a demo for WebInspector scanvas debugging.
drousso@apple.com [Fri, 12 Oct 2018 23:54:17 +0000 (23:54 +0000)]
Add a demo for WebInspector scanvas debugging.

* demos/canvas-debugging/index.html: Added.

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

12 months agoWeb Inspector: Canvas: previews aren't removed when the parent view is hidden
drousso@apple.com [Fri, 12 Oct 2018 23:52:09 +0000 (23:52 +0000)]
Web Inspector: Canvas: previews aren't removed when the parent view is hidden
https://bugs.webkit.org/show_bug.cgi?id=190525

Reviewed by Matt Baker.

* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.attached):

* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.get canvases):
(WI.CanvasManager.prototype.get shaderPrograms):
Drive-by: simplify these getters.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237090 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[Tools][webkitpy] fix handling of JSCTESTS_OPTIONS
guijemont@igalia.com [Fri, 12 Oct 2018 23:27:45 +0000 (23:27 +0000)]
[Tools][webkitpy] fix handling of JSCTESTS_OPTIONS
https://bugs.webkit.org/show_bug.cgi?id=190537

Reviewed by Alexey Proskuryakov.

In DeprecatedPort.run_javascriptcore_tests_command() JSCTESTS_OPTIONS
needs to be split before adding it to the command since it is treated
as a list of args.

* Scripts/webkitpy/common/config/ports.py:
(DeprecatedPort.run_javascriptcore_tests_command):

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

12 months agoGardening: Build fix after r237084.
tzagallo@apple.com [Fri, 12 Oct 2018 23:16:51 +0000 (23:16 +0000)]
Gardening: Build fix after r237084.
https://bugs.webkit.org/show_bug.cgi?id=189708

Unreviewd.

* JavaScriptCore.xcodeproj/project.pbxproj:

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

12 months ago[iOS] Allow SPI clients to lay out at arbitrarily scaled sizes and scale to fit the...
wenson_hsieh@apple.com [Fri, 12 Oct 2018 23:13:37 +0000 (23:13 +0000)]
[iOS] Allow SPI clients to lay out at arbitrarily scaled sizes and scale to fit the view
https://bugs.webkit.org/show_bug.cgi?id=190504
<rdar://problem/45117760>

Reviewed by Tim Horton.

Source/WebCore:

Add support in ViewportConfiguration for applying a layout size scale factor to the viewport. See below for
more details.

Tests: fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html
       fast/viewport/ios/device-width-viewport-after-changing-view-scale.html

* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::setViewLayoutSize):

The viewport's layout size may now be changed alongside the layout size scale factor. If either of these two
variables change, we recompute our minimum layout size and viewport configuration parameters.

(WebCore::ViewportConfiguration::shouldIgnoreHorizontalScalingConstraints const):
(WebCore::ViewportConfiguration::nativeWebpageParameters):
(WebCore::ViewportConfiguration::testingParameters):
(WebCore::ViewportConfiguration::updateConfiguration):

Multiply the minimum scale, initial scale, and maximum scale by the layout size scale factor. This allows us to
keep the document well-proportioned within the viewport, while still laying out at a different layout size.

(WebCore::ViewportConfiguration::updateMinimumLayoutSize):

Compute the minimum layout size by scaling the default layout size derived from our view's size.

(WebCore::ViewportConfiguration::layoutWidth const):
(WebCore::ViewportConfiguration::layoutHeight const):
* page/ViewportConfiguration.h:

Maintain the original initial scale, unaffected by the layout size scale factor. This is used when computing
layout width and height to prevent scaling by the layout size scale factor twice when computing layout sizes.

(WebCore::ViewportConfiguration::description const):

Include the layout size scale factor in ViewportConfiguration's description string.

(WebCore::ViewportConfiguration::Parameters::operator== const):
(WebCore::operator<<):

Source/WebKit:

Add support for _setViewScale: and _viewScale on iOS. While similar in concept to macOS, changing this property
on iOS uses viewport configurations to change the minimum layout size of the document and apply view scaling.
Setting the view scale on iOS to a value `s` multiplies the minimium layout size by a factor `1 / s`, but also
multiplies the initial, minimum and maximum scales by a factor of `s`. The net effect of applying this scale
causes the page to lay out at a larger width and shrink (or a smaller width and expand) to fit the viewport.

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

Send `viewportConfigurationLayoutSizeScaleFactor` alongside `viewportConfigurationViewLayoutSize`.

(-[WKWebView _dispatchSetViewLayoutSize:]):
(-[WKWebView _viewScale]):
(-[WKWebView _setViewScale:]):

Provide a different implementation of `_setViewScale:` on iOS, by scaling the effective minimum layout size.
(See above for more detail).

* UIProcess/API/Cocoa/WKWebViewPrivate.h:

Add missing API availability annotations for the _viewScale property.

* UIProcess/API/mac/WKView.mm:
(-[WKView _setViewScale:]):
* UIProcess/Cocoa/WebViewImpl.mm:

Both -[WKView _setViewScale:] and -[WKWebView _setViewScale:] throw Objective C exceptions upon receiving a bad
argument (e.g. scale <= 0). However, logic for throwing this exception is specific to iOS in WKWebView, and
handled in WebViewImpl on macOS. To make this less confusing, move the exception throwing code out of
!PLATFORM(MAC) in WKWebView, and move the path for raising this exception in WKView on macOS from WebViewImpl to
WKView.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::layoutSizeScaleFactor const):

Tie the notion of "view scale" on iOS to `layoutSizeScaleFactor`. As its name suggests, this is a scale factor
by which we transform the layout size.

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize):
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Plumb the layout size scale factor over to the web process, along with the layout size.

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

Tools:

Teach UIScriptController to set WKWebView's view scale via a new `setViewScale` method, supported in WebKit2 on
macOS and iOS.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::setViewScale):
* DumpRenderTree/mac/UIScriptControllerMac.mm:
(WTR::UIScriptController::setViewScale):
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::setViewScale):
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/UIScriptControllerCocoa.mm: Added.

Add a new file for UIScriptController methods on Cocoa platforms.

(WTR::UIScriptController::setViewScale):
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::cocoaResetStateToConsistentValues):

Ensure that _viewScale is reset to 1 after running a layout test.

LayoutTests:

Add two new layout tests on iOS that change WKWebView's view scale, and measure the resulting window sizes and
lengths of viewport units.

* fast/viewport/ios/constant-width-viewport-after-changing-view-scale-expected.txt: Added.
* fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html: Added.

Add a test page with a viewport meta tag that has a constant width and an explicit initial scale of 0.5.

* fast/viewport/ios/device-width-viewport-after-changing-view-scale-expected.txt: Added.
* fast/viewport/ios/device-width-viewport-after-changing-view-scale.html: Added.

Add a test page with a viewport meta tag at device-width, with initial scale 1.

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

Add a convenience function that wraps a UI script invocation of `setViewScale` in a promise.

(window.UIHelper):

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

12 months agoPerf dashboard: add a test for aggregating subtests without a matching metric in...
rniwa@webkit.org [Fri, 12 Oct 2018 23:10:39 +0000 (23:10 +0000)]
Perf dashboard: add a test for aggregating subtests without a matching metric in /api/report
https://bugs.webkit.org/show_bug.cgi?id=190544

Rubber-stamped by Keith Miller and unofficially reviewed by Dewei Zhu.

Added tests for reporting results to /api/report where a test with aggregated metrics has a subtest
without a matching metric type. The aggregation should simply skip such a subtest instead of returning
an error or aggregating with a mismatching metric type.

* server-tests/api-report-tests.js:
(.makeReport): Extracted out of a test case.

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

12 months agoWeb Inspector: Dark Mode: Highlight text in Network Headers search is too dark
commit-queue@webkit.org [Fri, 12 Oct 2018 22:59:47 +0000 (22:59 +0000)]
Web Inspector: Dark Mode: Highlight text in Network Headers search is too dark
https://bugs.webkit.org/show_bug.cgi?id=190510

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-10-12
Reviewed by Devin Rousso.

* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers.showing-find-banner .search-highlight):
Use adaptive text-color.

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

12 months agoSeparate configuration extraction from offset extraction
tzagallo@apple.com [Fri, 12 Oct 2018 22:39:44 +0000 (22:39 +0000)]
Separate configuration extraction from offset extraction
https://bugs.webkit.org/show_bug.cgi?id=189708

Reviewed by Keith Miller.

Instead of generating a file with all offsets for every combination of
configurations, we first generate a file with only the configuration
indices and pass that to the offset extractor. The offset extractor then
only generates the offsets for valid configurations

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* llint/LLIntOffsetsExtractor.cpp:
(JSC::LLIntOffsetsExtractor::dummy):
* llint/LLIntSettingsExtractor.cpp: Added.
(main):
* offlineasm/generate_offset_extractor.rb:
* offlineasm/generate_settings_extractor.rb: Added.
* offlineasm/offsets.rb:
* offlineasm/settings.rb:

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

12 months ago[ews-build] Rename iOS-11-Simulator-Tests-EWS to iOS-11-Simulator-WK2-Tests-EWS
aakash_jain@apple.com [Fri, 12 Oct 2018 22:06:55 +0000 (22:06 +0000)]
[ews-build] Rename iOS-11-Simulator-Tests-EWS to iOS-11-Simulator-WK2-Tests-EWS
https://bugs.webkit.org/show_bug.cgi?id=190536

Reviewed by Alexey Proskuryakov.

* BuildSlaveSupport/ews-build/config.json: Renamed iOS-11-Simulator-Tests-EWS to iOS-11-Simulator-WK2-Tests-EWS.

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

12 months agoUse downcast for use of RealtimeMediaSource in LibWebRTCMediaEndpoint
youenn@apple.com [Fri, 12 Oct 2018 22:06:07 +0000 (22:06 +0000)]
Use downcast for use of RealtimeMediaSource in LibWebRTCMediaEndpoint
https://bugs.webkit.org/show_bug.cgi?id=190533

Reviewed by Chris Dumez.

Clean-up work.
No change of behavior.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::setExistingReceiverSourceTrack):
* platform/mediastream/RealtimeIncomingAudioSource.h:
(isType):
* platform/mediastream/RealtimeIncomingVideoSource.h:
(isType):
* platform/mediastream/RealtimeMediaSource.h:

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

12 months agoWebAVSampleBufferErrorListener's parent should be a WeakPtr.
jer.noble@apple.com [Fri, 12 Oct 2018 21:43:01 +0000 (21:43 +0000)]
WebAVSampleBufferErrorListener's parent should be a WeakPtr.
https://bugs.webkit.org/show_bug.cgi?id=190524
<rdar://problem/44359307>

Reviewed by Eric Carlson.

Once WebAVSampleBufferErrorListener's parent is a WeakPtr, we no longer need to pass
protectedSelf into the callOnMainThread lambdas; we can pass in the parent itself.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVSampleBufferErrorListener initWithParent:]):
(-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
(-[WebAVSampleBufferErrorListener layerFailedToDecode:]):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::destroyRenderers):

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

12 months agoUnreviewed, rolling out r237063.
ryanhaddad@apple.com [Fri, 12 Oct 2018 21:42:23 +0000 (21:42 +0000)]
Unreviewed, rolling out r237063.

Caused layout test fast/dom/Window/window-postmessage-clone-
deep-array.html to fail on macOS and iOS Debug bots.

Reverted changeset:

"[JSC] Remove gcc warnings on mips and armv7"
https://bugs.webkit.org/show_bug.cgi?id=188598
https://trac.webkit.org/changeset/237063

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

12 months agoUnreviewed.
youenn@apple.com [Fri, 12 Oct 2018 21:32:08 +0000 (21:32 +0000)]
Unreviewed.
Speculative build fix for GTK/WPE after r237075.

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

12 months agoWeb Inspector: Dark Mode: wrong color used for "goto arrow" for selected DOM breakpoi...
nvasilyev@apple.com [Fri, 12 Oct 2018 21:30:17 +0000 (21:30 +0000)]
Web Inspector: Dark Mode: wrong color used for "goto arrow" for selected DOM breakpoint tree element
https://bugs.webkit.org/show_bug.cgi?id=190180
<rdar://problem/44927654>

Reviewed by Matt Baker.

* UserInterface/Views/Main.css:
(@media (prefers-dark-interface)):
(:focus .selected .go-to-arrow):

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

12 months agoAddress the review comment which was meant to be addressed in r237025.
rniwa@webkit.org [Fri, 12 Oct 2018 21:29:53 +0000 (21:29 +0000)]
Address the review comment which was meant to be addressed in r237025.

* editing/MarkupAccumulator.cpp:
(WebCore::elementCannotHaveEndTag):

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

12 months agoUnreviewed build fix, remove executable file imported with r237075.
ryanhaddad@apple.com [Fri, 12 Oct 2018 21:04:45 +0000 (21:04 +0000)]
Unreviewed build fix, remove executable file imported with r237075.

* Source/webrtc/data/voice_engine/stereo_rtp_files/rtpplay.exe: Removed.

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

12 months ago Refresh libwebrtc up to 343f4144be
youenn@apple.com [Fri, 12 Oct 2018 20:45:16 +0000 (20:45 +0000)]
Refresh libwebrtc up to 343f4144be
    https://bugs.webkit.org/show_bug.cgi?id=190361

    Reviewed by Chris Dumez.

    This refresh should not change behavior but will allow us to implement better
    mdns candidate support and simulcast activation surfacing through addTransceiver.
    Covered by existing tests.

    * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
    (WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
    * testing/MockLibWebRTCPeerConnection.cpp:
    (WebCore::MockLibWebRTCPeerConnection::CreateAnswer):
    * testing/MockLibWebRTCPeerConnection.h:
    (WebCore::MockRtpSender::GetParameters): Deleted.
    (WebCore::MockRtpSender::SetParameters): Deleted.
    (WebCore::MockRtpSender::GetDtmfSender const): Deleted.

ThirdParty/libwebrtc

    * Configurations/libwebrtc.iOS.exp:
    * Configurations/libwebrtc.iOSsim.exp:
    * Configurations/libwebrtc.mac.exp:
    * Configurations/libwebrtc.xcconfig:
    * Source/webrtc: Resynced.
    * WebKit/0001-Updating-webrtc.patch: Removed.
    * libwebrtc.xcodeproj/project.pbxproj:

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

12 months agoAllow encoding of small enum classes
achristensen@apple.com [Fri, 12 Oct 2018 20:20:15 +0000 (20:20 +0000)]
Allow encoding of small enum classes
https://bugs.webkit.org/show_bug.cgi?id=190531

Reviewed by Tim Horton.

Source/WebCore:

* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
* dom/Document.h:
* editing/FontAttributeChanges.h:
* history/CachedFrame.h:
* loader/FrameLoaderTypes.h:
* platform/CookiesStrategy.h:
* platform/PasteboardItemInfo.h:
* platform/ReferrerPolicy.h:

Source/WebKit:

* NetworkProcess/NetworkLoadClient.h:
* Scripts/webkit/messages.py:
* Scripts/webkit/parser.py:
(parse_parameters_string):
* UIProcess/API/APINavigation.h:
* UIProcess/WebFramePolicyListenerProxy.h:
* UIProcess/WebNavigationState.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebPage/WebPage.messages.in:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebFrameLoaderClient.mm:
(-[WebFramePolicyListener dealloc]):

Source/WTF:

* wtf/Forward.h:

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

12 months agoSolve the confusion around blankURL() and isBlankURL() in URL
commit-queue@webkit.org [Fri, 12 Oct 2018 19:20:10 +0000 (19:20 +0000)]
Solve the confusion around blankURL() and isBlankURL() in URL
https://bugs.webkit.org/show_bug.cgi?id=158988

Patch by Rob Buis <rbuis@igalia.com> on 2018-10-12
Reviewed by Alex Christensen.

Source/WebCore:

The name isBlankURL is not accurate as the function tests the
protocol, not the full URL. Choose protocolIsAbout to align with
exisiting protocolIsData, protocolIsBlob etc.

No tests as no change in functionality.

* WebCore.order:
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::loadApplicationManifest):
(WebCore::DocumentLoader::startIconLoading):
* loader/NavigationAction.cpp:
(WebCore::shouldTreatAsSameOriginNavigation):
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy):
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::SerializerMarkupAccumulator::appendCustomAttributes):
(WebCore::PageSerializer::serializeFrame):
* page/csp/ContentSecurityPolicyDirectiveList.cpp:
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForFrame const):
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForObjectSource const):
* platform/URL.cpp:
(WebCore::URL::protocolIsAbout const):
(WebCore::URL::isBlankURL const): Deleted.
* platform/URL.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::loadFull):

Source/WebKit:

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::continueWillSendRequest):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigationInternal):
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setLastSeen):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom):

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

12 months ago[Mojave Wk2] Layout Test http/tests/cache/disk-cache/disk-cache-validation-attachment...
realdawei@apple.com [Fri, 12 Oct 2018 18:03:35 +0000 (18:03 +0000)]
[Mojave Wk2] Layout Test http/tests/cache/disk-cache/disk-cache-validation-attachment.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=190323

Unreviewed, mark test as Flaky.

Patch by Dawei Fenton <realdawei@apple.com> on 2018-10-12

* platform/mac-wk2/TestExpectations:

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

12 months agoCache API tests are flaky due to file writing failing from time to time
youenn@apple.com [Fri, 12 Oct 2018 17:57:20 +0000 (17:57 +0000)]
Cache API tests are flaky due to file writing failing from time to time
https://bugs.webkit.org/show_bug.cgi?id=190321

Reviewed by Chris Dumez.

Make NetworkCache::Storage::store callback return an error in case of writing failure.
Use this to surface this error at Cache API level.

Minor clean-up to make Storage::clear take a completion handler.

Make also sure to create the folder before writing the file in CacheStorageEngine.
As can be seen from some logging, it does happen that writing the 'origin' file sometimes fail with Posix error 9,
which might mean the folder is not present.

Changes are covered by current tests, flaky tests like http/wpt/cache-storage/cache-put-keys.https.any.worker.html
will show a "failed writing data to the file system" error message.

* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::writeFile):
* NetworkProcess/cache/CacheStorageEngine.h:
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::storeOrigin):
(WebKit::CacheStorage::Caches::writeCachesToDisk):
(WebKit::CacheStorage::Caches::writeRecord):
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::WriteOperation::WriteOperation):
(WebKit::NetworkCache::Storage::dispatchWriteOperation):
(WebKit::NetworkCache::Storage::finishWriteOperation):
(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::clear):
* NetworkProcess/cache/NetworkCacheStorage.h:
(WebKit::NetworkCache::Storage::store):

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

12 months agoDOMCache should dereference itself as soon as stopped
youenn@apple.com [Fri, 12 Oct 2018 17:14:12 +0000 (17:14 +0000)]
DOMCache should dereference itself as soon as stopped
https://bugs.webkit.org/show_bug.cgi?id=190441

Reviewed by Chris Dumez.

Dereference the DOMCache as soon as its context is stopped instead of waiting for garbage collection.
This allows freeing resources sooner in the network process.
No observable change of behavior since the DOMCache becomes no-op when its context is stopped.

* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::~DOMCache):
(WebCore::DOMCache::stop):

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

12 months agoAdd PLATFORM(IOS_FAMILY) and OS(IOS_FAMILY)
ap@apple.com [Fri, 12 Oct 2018 16:57:02 +0000 (16:57 +0000)]
Add PLATFORM(IOS_FAMILY) and OS(IOS_FAMILY)
https://bugs.webkit.org/show_bug.cgi?id=190477

Reviewed by Tim Horton.

Currently, PLATFORM(IOS) and OS(IOS) are true when building for any
TARGET_OS_IPHONE target, which is quite confusing. Add a better named alternative,
as a first step towards mass replacing PLATFORM(IOS). Can't so it all at once
because of dependencies in other source repositories.

* wtf/Platform.h: Changed to the new name in this file though. Kept a few
instances that actually target iOS only, having a version check.

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

12 months agoLayout Test editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-2.html...
pvollan@apple.com [Fri, 12 Oct 2018 16:07:59 +0000 (16:07 +0000)]
Layout Test editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-2.html is failing
https://bugs.webkit.org/show_bug.cgi?id=190520

Unreviewed test gardening.

* platform/win/TestExpectations:

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

12 months agoCRASH in WebCore::MediaPlayerPrivateAVFoundation::setPreload
jer.noble@apple.com [Fri, 12 Oct 2018 15:28:40 +0000 (15:28 +0000)]
CRASH in WebCore::MediaPlayerPrivateAVFoundation::setPreload
https://bugs.webkit.org/show_bug.cgi?id=190485
<rdar://problem/34613350>

Reviewed by Eric Carlson.

Crash analytics show that a pure-virtual function is called by MediaPlayerPrivateAVFoundation::setPreload(), and
the likely cause of that pure-virtual function call is that the MediaPlayerPrivateAVFoundation object itself has
been destroyed, likely as a side effect of calling MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL().
The usual suspect for this kind of crash is due to calling into JS (e.g., from a callback passed up to
HTMLMediaElement). Code inspection hasn't yielded any good hints about why this might be occurring, so we will
add a ScriptDisallowedScope assertion inside HTMLMediaElement::prepareToPlay(), to generate a good crashlog
showing exactly what callback is resulting in a JS call. But just in case the deallocation is not due to JS,
also add an explicit strong-ref inside MediaPlayer::prepareToPlay.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::prepareToPlay):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::prepareToPlay):

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

12 months agoNull-dereference in SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExtern...
jer.noble@apple.com [Fri, 12 Oct 2018 15:28:14 +0000 (15:28 +0000)]
Null-dereference in SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged
https://bugs.webkit.org/show_bug.cgi?id=190490
<rdar://problem/42213807>

Reviewed by Eric Carlson.

Crash analytics show a null dereference occurring, likely because m_mediaSource is null.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):

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

12 months agoBuild fix after r236956. Use array_get to avoid warnings.
rniwa@webkit.org [Fri, 12 Oct 2018 06:33:57 +0000 (06:33 +0000)]
Build fix after r236956. Use array_get to avoid warnings.

* public/include/report-processor.php:

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

12 months agoUpdate default hyperlink for MotionMark to MotionMark 1.1
jonlee@apple.com [Fri, 12 Oct 2018 06:13:46 +0000 (06:13 +0000)]
Update default hyperlink for MotionMark to MotionMark 1.1
https://bugs.webkit.org/show_bug.cgi?id=190491

Reviewed by Ryosuke Niwa.

* index.html:

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

12 months ago[JSC] Remove gcc warnings on mips and armv7
guijemont@igalia.com [Fri, 12 Oct 2018 02:51:45 +0000 (02:51 +0000)]
[JSC] Remove gcc warnings on mips and armv7
https://bugs.webkit.org/show_bug.cgi?id=188598

Reviewed by Mark Lam.

Source/bmalloc:

Add bitwise_cast (from WTF) and use it instead of reinterpret_cast in
a couple places where reinterpret_cast triggers a warning about
alignment even though we know that alignment is correct.

* bmalloc/Algorithm.h:
(bmalloc::bitwise_cast): Copied from WTF/wtf/StdLibextras.h
* bmalloc/IsoDirectoryPageInlines.h:
(bmalloc::IsoDirectoryPage<Config>::pageFor):
* bmalloc/IsoPageInlines.h:
(bmalloc::IsoPage<Config>::startAllocating):

Source/JavaScriptCore:

Fix many gcc/clang warnings that are false positives, mostly alignment
issues.

* assembler/MacroAssemblerPrinter.cpp:
(JSC::Printer::printMemory):
Use bitwise_cast instead of reinterpret_cast.
* assembler/testmasm.cpp:
(JSC::floatOperands):
marked as potentially unused as it is not used on all platforms.
(JSC::testProbeModifiesStackValues):
modifiedFlags is not used on mips, so don't declare it.
* bytecode/CodeBlock.h:
Make ScriptExecutable::prepareForExecution() return an
std::optional<Exception*> instead of a JSObject*.
* interpreter/Interpreter.cpp:
(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::prepareForRepeatCall):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):
Update calling code for the prototype change of
ScriptExecutable::prepareForExecution().
* jit/JITOperations.cpp: Same as for Interpreter.cpp.
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::setUpCall): Same as for Interpreter.cpp.
* runtime/JSBigInt.cpp:
(JSC::JSBigInt::dataStorage):
Use bitwise_cast instead of reinterpret_cast.
* runtime/ScriptExecutable.cpp:
* runtime/ScriptExecutable.h:
Make ScriptExecutable::prepareForExecution() return an
std::optional<Exception*> instead of a JSObject*.
* tools/JSDollarVM.cpp:
(JSC::codeBlockFromArg): Use bitwise_cast instead of reinterpret_cast.

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

12 months agoAdd Houdini specs to features.json
don.olmstead@sony.com [Fri, 12 Oct 2018 02:45:23 +0000 (02:45 +0000)]
Add Houdini specs to features.json
https://bugs.webkit.org/show_bug.cgi?id=190494
<rdar://problem/45211879>

Unreviewed fix.

Specifications should not reference other specifications. Also
move Worklet into the specifications section.

* features.json:

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

12 months agoWeb Inspector: Network: detail view reverts to "Response" when new requests are added
drousso@apple.com [Fri, 12 Oct 2018 02:30:18 +0000 (02:30 +0000)]
Web Inspector: Network: detail view reverts to "Response" when new requests are added
https://bugs.webkit.org/show_bug.cgi?id=190443

Reviewed by Joseph Pecoraro.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._showDetailView):
Return early if we are already showing a detail view for the selected object.

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

12 months agoIOS 12 - Service worker cache not shared when added to homescreen
youenn@apple.com [Fri, 12 Oct 2018 01:33:26 +0000 (01:33 +0000)]
IOS 12 - Service worker cache not shared when added to homescreen
https://bugs.webkit.org/show_bug.cgi?id=190269
<rdar://problem/45009961>

Reviewed by Alex Christensen.

Source/WebCore:

Expose Cache Storage API when Service Worker API is exposed.
This is used for API tests.

* dom/ScriptExecutionContext.h: Make hasServiceWorkerScheme
available outside SERVICE_WORKER compilation flag since used by DOMWindowCaches.
* dom/ScriptExecutionContext.cpp: Ditto.
* Modules/cache/DOMWindowCaches.idl:

Source/WebKit:

NetworkProcessProxy does not always have all its stores in its hash map.
Make sure to check for the default web process pool store when grabbing cache storage parameters from a given session ID.

Add a way to remove the default website data for testing.
This is used in the new API test.

* UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::deleteDefaultDataStoreForTesting):
* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore _deleteDefaultDataStoreForTesting]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
Add test to ensure that CacheStorage use the default website data store parameters.

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

12 months agoUse currentStackPointer more
yusukesuzuki@slowstart.org [Fri, 12 Oct 2018 01:32:19 +0000 (01:32 +0000)]
Use currentStackPointer more
https://bugs.webkit.org/show_bug.cgi?id=190503

Reviewed by Saam Barati.

Source/JavaScriptCore:

* runtime/VM.cpp:
(JSC::VM::committedStackByteCount):

Source/WTF:

Use WTF::currentStackPointer more in WebKit to adopt ASAN detect_stack_use_after_return option.

* wtf/StackBounds.cpp:
(WTF::testStackDirection2):
(WTF::testStackDirection):
* wtf/ThreadingPthreads.cpp:
(WTF::Thread::signalHandlerSuspendResume):
(WTF::getApproximateStackPointer): Deleted.

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

12 months agoHide RenderLayer z-order and normal flow lists behind iterators
simon.fraser@apple.com [Fri, 12 Oct 2018 00:23:08 +0000 (00:23 +0000)]
Hide RenderLayer z-order and normal flow lists behind iterators
https://bugs.webkit.org/show_bug.cgi?id=190457

Source/WebCore:

Reviewed by Zalan Bujtas.

Expose the positive z-order, negative z-order and normal flow lists
from RenderLayer as iterators rather than vectors of raw pointers.

This hides the fact that the vectors can be null, and allows for easier casting in future.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::update3DTransformedDescendantStatus):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintList):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::hitTestList):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::traverseVisibleNonCompositedDescendantLayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::addToOverlapMapRecursive):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
(WebCore::RenderLayerCompositor::updateLayerTreeGeometry):
(WebCore::RenderLayerCompositor::updateCompositingDescendantGeometry):
(WebCore::RenderLayerCompositor::recursiveRepaintLayer):
(WebCore::RenderLayerCompositor::needsContentsCompositingLayer const):
(WebCore::RenderLayerCompositor::layerHas3DContent const):
* rendering/RenderTreeAsText.cpp:
(WebCore::writeLayers):

Source/WebKit:

Reviewed by Zalan Bujtas.

Expose the positive z-order, negative z-order and normal flow lists
from RenderLayer as iterators rather than vectors of raw pointers.

Use a lambda function to get access to the private constructor, while not having
to refer to the nested RenderLayer::LayerIterator class in the header.

* Shared/WebRenderLayer.cpp:
(WebKit::WebRenderLayer::WebRenderLayer):
(WebKit::WebRenderLayer::createArrayFromLayerList): Deleted.
* Shared/WebRenderLayer.h:

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

12 months agoAdd Houdini specs to features.json
don.olmstead@sony.com [Fri, 12 Oct 2018 00:08:39 +0000 (00:08 +0000)]
Add Houdini specs to features.json
https://bugs.webkit.org/show_bug.cgi?id=190494

Reviewed by Simon Fraser.

Add CSS Typed OM Level 1, CSS Layout API Level 1, CSS Animation
Worklet, and group them under a Houdini feature set.

* features.json:

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

12 months agoiOS: Scrolling using the arrow keys doesn't show the scroll indicator like it does...
timothy_horton@apple.com [Thu, 11 Oct 2018 23:51:08 +0000 (23:51 +0000)]
iOS: Scrolling using the arrow keys doesn't show the scroll indicator like it does on macOS
https://bugs.webkit.org/show_bug.cgi?id=190478
<rdar://problem/22194031>

Reviewed by Megan Gardner.

* Platform/spi/ios/UIKitSPI.h:
Add some SPI.

* UIProcess/ios/WKKeyboardScrollingAnimator.mm:
(-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
Do a persistent flash when scrolling continuously.

(-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
Do a single flash when doing a scroll-to-top/bottom.

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

12 months agoClicking on bookmarklet crashes at NavigationState::willRecordNavigationSnapshot
timothy_horton@apple.com [Thu, 11 Oct 2018 23:48:19 +0000 (23:48 +0000)]
Clicking on bookmarklet crashes at NavigationState::willRecordNavigationSnapshot
https://bugs.webkit.org/show_bug.cgi?id=190476
<rdar://problem/32757191>

Reviewed by Megan Gardner.

Source/WebKit:

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _saveBackForwardSnapshotForItem:]):
The WKBackForwardListItem can be nil. Then we retrieve a reference from it.
An Objective-C method that returns a reference is a great way to get
a null reference. Other code then assumes it's not null and crashes.
Add a nil check.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/SnapshotStore.mm:
(TEST):
Add a test that we don't crash.

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

12 months ago[JSC] JSC should have "parseFunction" to optimize Function constructor
yusukesuzuki@slowstart.org [Thu, 11 Oct 2018 23:43:58 +0000 (23:43 +0000)]
[JSC] JSC should have "parseFunction" to optimize Function constructor
https://bugs.webkit.org/show_bug.cgi?id=190340

Reviewed by Mark Lam.

JSTests:

This patch fixes the line number of syntax errors raised by the Function constructor,
since we now parse the final code only once. And we no longer use block statement
for Function constructor's parsing.

* ChakraCore/test/Function/FuncBodyES5.baseline-jsc:
* stress/function-cache-with-parameters-end-position.js: Added.
(shouldBe):
(shouldThrow):
(i.anonymous):
* stress/function-constructor-name.js: Added.
(shouldBe):
(GeneratorFunction):
(AsyncFunction.async):
(AsyncGeneratorFunction.async):
(anonymous):
(async.anonymous):
* test262/expectations.yaml:

LayoutTests/imported/w3c:

* web-platform-tests/html/webappapis/scripting/events/inline-event-handler-ordering-expected.txt:
* web-platform-tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-in-attribute-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-in-body-onerror-expected.txt:

Source/JavaScriptCore:

The current Function constructor is suboptimal. We parse the piece of the same code three times to meet
the spec requirement. (1) check parameters syntax, (2) check body syntax, and (3) parse the entire function.
And to parse 1-3 correctly, we create two strings, the parameters and the entire function. This operation
is really costly and ideally we should meet the above requirement by the one time parsing.

To meet the above requirement, we add a special function for Parser, parseSingleFunction. This function
takes `std::optional<int> functionConstructorParametersEndPosition` and check this end position is correct in the parser.
For example, if we run the code,

    Function('/*', '*/){')

According to the spec, this should produce '/*' parameter string and '*/){' body string. And parameter
string should be syntax-checked by the parser, and raise the error since it is incorrect. Instead of doing
that, in our implementation, we first create the entire string.

    function anonymous(/*) {
        */){
    }

And we parse it. At that time, we also pass the end position of the parameters to the parser. In the above case,
the position of the `function anonymous(/*)' <> is passed. And in the parser, we check that the last token
offset of the parameters is the given end position. This check allows us to raise the error correctly to the
above example while we parse the entire function only once. And we do not need to create two strings too.

This improves the performance of the Function constructor significantly. And web-tooling-benchmark/uglify-js is
significantly sped up (28.2%).

Before:
    uglify-js:  2.94 runs/s
After:
    uglify-js:  3.77 runs/s

* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::UnlinkedFunctionExecutable::fromGlobalCode):
* bytecode/UnlinkedFunctionExecutable.h:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseSingleFunction):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseFunctionDeclaration):
(JSC::Parser<LexerType>::parseAsyncFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parsePropertyMethod):
(JSC::Parser<LexerType>::parseGetterSetter):
(JSC::Parser<LexerType>::parseFunctionExpression):
(JSC::Parser<LexerType>::parseAsyncFunctionExpression):
(JSC::Parser<LexerType>::parseArrowFunctionExpression):
* parser/Parser.h:
(JSC::Parser<LexerType>::parse):
(JSC::parse):
(JSC::parseFunctionForFunctionConstructor):
* parser/ParserModes.h:
* parser/ParserTokens.h:
(JSC::JSTextPosition::JSTextPosition):
(JSC::JSTokenLocation::JSTokenLocation): Deleted.
* parser/SourceCodeKey.h:
(JSC::SourceCodeKey::SourceCodeKey):
(JSC::SourceCodeKey::operator== const):
* runtime/CodeCache.cpp:
(JSC::CodeCache::getUnlinkedGlobalCodeBlock):
(JSC::CodeCache::getUnlinkedGlobalFunctionExecutable):
* runtime/CodeCache.h:
* runtime/FunctionConstructor.cpp:
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/FunctionExecutable.cpp:
(JSC::FunctionExecutable::fromGlobalCode):
* runtime/FunctionExecutable.h:

LayoutTests:

* fast/dom/attribute-event-listener-errors-expected.txt:
* fast/events/attribute-listener-deletion-crash-expected.txt:
* fast/events/window-onerror-syntax-error-in-attr-expected.txt:
* js/dom/invalid-syntax-for-function-expected.txt:
* js/dom/script-start-end-locations-expected.txt:

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

12 months agoHardware keyboard arrow keys/spacebar don't scroll PDFs (works for web content)
timothy_horton@apple.com [Thu, 11 Oct 2018 23:41:18 +0000 (23:41 +0000)]
Hardware keyboard arrow keys/spacebar don't scroll PDFs (works for web content)
https://bugs.webkit.org/show_bug.cgi?id=190495
<rdar://problem/22734616>

Reviewed by Andy Estes.

Hook up WKKeyboardScrollViewAnimator to the scroll view when
WKPDFView is installed.

* Platform/spi/ios/UIKitSPI.h:
Move _inputFlags to the IPI section so we can remove it
from WKContentViewInteraction.

* SourcesCocoa.txt:
* UIProcess/ios/WKWebEvent.h:
* UIProcess/ios/WKWebEvent.mm:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView handleKeyEvent:]):
(-[WKWebEvent dealloc]): Deleted.
* WebKit.xcodeproj/project.pbxproj:
Move WKWebEvent out of WKContentViewInteraction.
We tend to prefer one file per class.
Also, move the code to make a WKWebEvent from a UIEvent into
-initWithEvent:, instead of being ad-hoc in WKContentViewInteraction.
Adopt RetainPtr for the WKWebEvent's uiEvent property.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _handleKeyUIEvent:]):
* UIProcess/Cocoa/WKWebViewContentProvider.h:
Plumb hardware keyboard events to custom content views, if they want them.

* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView dealloc]):
(-[WKPDFView web_handleKeyEvent:]):
(-[WKPDFView web_initWithFrame:webView:mimeType:]):
Install a WKKeyboardScrollViewAnimator and plumb key events to it.

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

12 months ago[WTF] Semaphore.h conflicts with POSIX header
ross.kirsling@sony.com [Thu, 11 Oct 2018 22:52:43 +0000 (22:52 +0000)]
[WTF] Semaphore.h conflicts with POSIX header
https://bugs.webkit.org/show_bug.cgi?id=190486

Reviewed by Yusuke Suzuki.

Source/WebCore:

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

Source/WTF:

Rename Semaphore.h to WTFSemaphore.h to avoid conflict with POSIX semaphore.h on case-insensitive file systems.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/WTFSemaphore.h: Renamed from wtf/Semaphore.h.

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

12 months agoFix non-existent define `CPU(JSVALUE64)`
ross.kirsling@sony.com [Thu, 11 Oct 2018 22:06:42 +0000 (22:06 +0000)]
Fix non-existent define `CPU(JSVALUE64)`
https://bugs.webkit.org/show_bug.cgi?id=190479

Reviewed by Yusuke Suzuki.

* jit/CCallHelpers.h:
(JSC::CCallHelpers::setupArgumentsImpl):
Correct CPU(JSVALUE64) to USE(JSVALUE64).

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

12 months agoWeb Inspector: remove unused TreeOutline style .force-focus
mattbaker@apple.com [Thu, 11 Oct 2018 21:46:43 +0000 (21:46 +0000)]
Web Inspector: remove unused  TreeOutline style .force-focus
https://bugs.webkit.org/show_bug.cgi?id=190480
<rdar://problem/45203484>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline:focus .item.call-frame.selected .status > .status-image):
(.tree-outline:matches(:focus, .force-focus) .item.call-frame.selected .status > .status-image): Deleted.

* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:focus .item.processing.selected .subtitle > progress):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:matches(:focus, .force-focus) .item.processing.selected .subtitle > progress): Deleted.

* UserInterface/Views/DataGrid.css:
(body[dir=ltr] .data-grid:focus tr.selected td:not(:last-child)):
(body[dir=rtl] .data-grid:focus tr.selected td:not(:last-child)):
(.data-grid:focus tr.parent.selected td.disclosure::before):
(.data-grid:focus tr.parent.expanded.selected td.disclosure::before):
(.data-grid:focus tr.selected):
(.data-grid:focus tr.selected td .subtitle):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:focus tr.editable.selected .cell-content > input):
(@media (prefers-dark-interface)):
(body[dir=ltr] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)): Deleted.
(body[dir=rtl] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.parent.selected td.disclosure::before): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.parent.expanded.selected td.disclosure::before): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.selected): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle): Deleted.
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input): Deleted.

* UserInterface/Views/Main.css:
(:focus .selected .go-to-arrow):
(:focus .selected .go-to-arrow:active):
(:matches(:focus, .force-focus) .selected .go-to-arrow): Deleted.
(:matches(:focus, .force-focus) .selected .go-to-arrow:active): Deleted.

* UserInterface/Views/ProfileView.css:
(.profile > .data-grid:focus tr.selected td .location):
(.profile > .data-grid:matches(:focus, .force-focus) tr.selected td .location): Deleted.

* UserInterface/Views/RecordingActionTreeElement.css:
(.tree-outline:focus .item.action.selected:not(.initial-state, .invalid) > .icon):
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus .item.action.selected > .titles .parameter.swizzled,):
(.tree-outline:matches(:focus, .force-focus) .item.action.selected:not(.initial-state, .invalid) > .icon): Deleted.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,): Deleted.

* UserInterface/Views/ScriptDetailsTimelineView.css:
(.tree-outline:focus .item.selected .alternate-subtitle):
(.tree-outline:matches(:focus, .force-focus) .item.selected .alternate-subtitle): Deleted.

* UserInterface/Views/ShaderProgramTreeElement.css:
(.tree-outline:focus .item.shader-program.selected .status > img):
(.tree-outline:matches(:focus, .force-focus) .item.shader-program.selected .status > img): Deleted.

* UserInterface/Views/ThreadTreeElement.css:
(.tree-outline:focus > .item.thread.selected .status-button.resume):
(.tree-outline:matches(:focus, .force-focus) > .item.thread.selected .status-button.resume): Deleted.

* UserInterface/Views/TimelineRecordBar.css:
(:focus .selected .timeline-record-bar > .segment):
(:focus .selected .timeline-record-bar > .segment.inactive):
(body[dir=ltr] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(body[dir=rtl] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(:matches(:focus, .force-focus) .selected .timeline-record-bar > .segment): Deleted.
(:matches(:focus, .force-focus) .selected .timeline-record-bar > .segment.inactive): Deleted.
(body[dir=ltr] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
(body[dir=rtl] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.

* UserInterface/Views/TreeElementStatusButton.css:
(:focus .item.selected > .status > .status-button):
(:matches(:focus, .force-focus) .item.selected > .status > .status-button): Deleted.

* UserInterface/Views/TreeOutline.css:
(.tree-outline:focus .item.selected .disclosure-button):
(.tree-outline:focus .item.selected.expanded .disclosure-button):
(.tree-outline:focus .item.selected):
(.tree-outline:focus .item.selected .subtitle):
(.tree-outline:not(.large):focus .item.selected .status .indeterminate-progress-spinner):
(.tree-outline:matches(:focus, .force-focus) .item.selected .disclosure-button): Deleted.
(.tree-outline:matches(:focus, .force-focus) .item.selected.expanded .disclosure-button): Deleted.
(.tree-outline:matches(:focus, .force-focus) .item.selected): Deleted.
(.tree-outline:matches(:focus, .force-focus) .item.selected .subtitle): Deleted.
(.tree-outline:not(.large):matches(:focus, .force-focus) .item.selected .status .indeterminate-progress-spinner): Deleted.

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

12 months ago[Web Animations] Allow iOS to also control toggling Web Animations CSS Integration
graouts@webkit.org [Thu, 11 Oct 2018 21:43:22 +0000 (21:43 +0000)]
[Web Animations] Allow iOS to also control toggling Web Animations CSS Integration
https://bugs.webkit.org/show_bug.cgi?id=190489

Reviewed by Tim Horton.

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

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

12 months ago[GStreamer] Support arbitrary video resolution in getUserMedia API
commit-queue@webkit.org [Thu, 11 Oct 2018 21:30:33 +0000 (21:30 +0000)]
[GStreamer] Support arbitrary video resolution in getUserMedia API
https://bugs.webkit.org/show_bug.cgi?id=189734

Source/WebCore:

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-10-11
Reviewed by Xabier Rodriguez-Calvar.

Implement arbitrary video resolution for the getUserMedia API in GStreamer.

Fix the MockRealtimeMediaSource device list to make devices properties match
test expectations.

Reactivate tests that were failling because of that.

* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::standardVideoSizes):
(WebCore::standardVideoSizes): Deleted.
* platform/mediastream/RealtimeVideoSource.h:
* platform/mediastream/VideoPreset.h:
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoPreset::create):
(WebCore::GStreamerVideoPreset::GStreamerVideoPreset):
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource):
(WebCore::GStreamerVideoCaptureSource::capabilities):
(WebCore::GStreamerVideoCaptureSource::generatePresets):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::defaultDevices):

LayoutTests:

Implement arbitrary video resolution for the getUserMedia API in GStreamer.

Fix the MockRealtimeMediaSource device list to make devices properties match
test expectations.

Reactivate tests that were failling because of that.

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-10-11
Reviewed by Xabier Rodriguez-Calvar.

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

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

12 months agoCURRENT_ARCH should not be used in Run Script phase.
krollin@apple.com [Thu, 11 Oct 2018 21:22:40 +0000 (21:22 +0000)]
CURRENT_ARCH should not be used in Run Script phase.
https://bugs.webkit.org/show_bug.cgi?id=190407
<rdar://problem/45133556>

Reviewed by Alexey Proskuryakov.

CURRENT_ARCH is used in a number of Xcode Run Script phases. However,
CURRENT_ARCH is not well-defined during this phase (and may even have
the value "undefined") since this phase is run just once per build
rather than once per supported architecture. Migrate away from
CURRENT_ARCH in favor of ARCHS, either by iterating over ARCHS and
performing an operation for each value, or by picking the first entry
in ARCHS and using that as a representative value.

Source/JavaScriptCore:

* JavaScriptCore.xcodeproj/project.pbxproj: Store
LLIntDesiredOffsets.h into a directory with a name based on ARCHS
rather than CURRENT_ARCH.

Source/WebCore:

No new tests -- no functional changes.

* DerivedSources.make: When forming TARGET_TRIPLE_FLAGS, grab the
first entry in ARCHS rather than use CURRENT_ARCH.

Source/WebKit:

* DerivedSources.make: When forming TARGET_TRIPLE_FLAGS, grab the
first entry in ARCHS rather than use CURRENT_ARCH.

Source/WebKitLegacy:

* WebKitLegacy.xcodeproj/project.pbxproj: When generating
WebKitLegacy.*.exp, generate both 32- and 64-bit versions for
macosx platforms.

Source/WebKitLegacy/mac:

* Configurations/WebKitLegacy.xcconfig: When generating
WebKitLegacy.*.exp, generate both 32- and 64-bit versions for
macosx platforms.

* MigrateHeaders.make:
* migrate-headers.sh: When generating ReexportedWebCoreSymbols_*.exp,
generate one for each architecture in ARCHS.

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

12 months agoSupport building WebKit for macOS Mojave using a newer SDK
dbates@webkit.org [Thu, 11 Oct 2018 20:30:54 +0000 (20:30 +0000)]
Support building WebKit for macOS Mojave using a newer SDK
https://bugs.webkit.org/show_bug.cgi?id=190431

Reviewed by Andy Estes.

* platform/network/cocoa/CookieCocoa.mm:
(WebCore::coreSameSitePolicy):
(WebCore::nsSameSitePolicy):

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

12 months ago[iOS] Add typedef for WebEvent keyboard flags
dbates@webkit.org [Thu, 11 Oct 2018 20:29:57 +0000 (20:29 +0000)]
[iOS] Add typedef for WebEvent keyboard flags
https://bugs.webkit.org/show_bug.cgi?id=190435

Reviewed by Wenson Hsieh.

Currently WebEvent and UIKit SPI are intertwined when it comes to keyboard flags. It seems sufficient
to have WebEvent defined its own keyboard flags so that callers do not need to be aware of UIKit SPI.

No functionality changed. So, no new tests.

* platform/ios/WebEvent.h:
* platform/ios/WebEvent.mm:
(-[WebEvent keyboardFlags]):

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

12 months agoREGRESSION (r237037): Cannot use webkit-patch upload, always fails with unknown ...
timothy_horton@apple.com [Thu, 11 Oct 2018 19:32:56 +0000 (19:32 +0000)]
REGRESSION (r237037): Cannot use webkit-patch upload, always fails with unknown 'cc_radar'

* Scripts/webkitpy/tool/steps/options.py:
(Options):
Fix the name of the variable that the --cc-radar option writes into.

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

12 months agoWeb Inspector: detail view is not re-shown after sorting the Network table
drousso@apple.com [Thu, 11 Oct 2018 19:26:27 +0000 (19:26 +0000)]
Web Inspector: detail view is not re-shown after sorting the Network table
https://bugs.webkit.org/show_bug.cgi?id=190330
<rdar://problem/45089607>

Reviewed by Matt Baker.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._restoreSelectedRow):

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

12 months agoChanges towards allowing use of the ASAN detect_stack_use_after_return option.
mark.lam@apple.com [Thu, 11 Oct 2018 19:19:18 +0000 (19:19 +0000)]
Changes towards allowing use of the ASAN detect_stack_use_after_return option.
https://bugs.webkit.org/show_bug.cgi?id=190405
<rdar://problem/45131464>

Reviewed by Michael Saboff.

Source/JavaScriptCore:

The ASAN detect_stack_use_after_return option checks for use of stack variables
after they have been freed.  It does this by allocating relevant stack variables
in heap memory (instead of on the stack) if the code ever takes the address of
those stack variables.  Unfortunately, this is a common idiom that we use to
compute the approximate stack pointer value.  As a result, on such ASAN runs, the
computed approximate stack pointer value will point into the heap instead of the
stack.  This breaks the VM's expectations and wreaks havoc.

To fix this, we use the newly introduced WTF::currentStackPointer() instead of
taking the address of stack variables.

We also need to enhance ExceptionScopes to be able to work with ASAN
detect_stack_use_after_return which will allocated the scope in the heap.  We
work around this by passing the current stack pointer of the instantiating calling
frame into the scope constructor, and using that for the position check in
~ThrowScope() instead.

The above is only a start towards enabling ASAN detect_stack_use_after_return on
the VM.  There are still other issues to be resolved before we can run with this
ASAN option.

* runtime/CatchScope.h:
* runtime/ExceptionEventLocation.h:
(JSC::ExceptionEventLocation::ExceptionEventLocation):
* runtime/ExceptionScope.h:
(JSC::ExceptionScope::stackPosition const):
* runtime/JSLock.cpp:
(JSC::JSLock::didAcquireLock):
* runtime/ThrowScope.cpp:
(JSC::ThrowScope::~ThrowScope):
* runtime/ThrowScope.h:
* runtime/VM.h:
(JSC::VM::needExceptionCheck const):
(JSC::VM::isSafeToRecurse const):
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction):
* yarr/YarrPattern.cpp:
(JSC::Yarr::YarrPatternConstructor::isSafeToRecurse const):

Source/WTF:

Introduce WTF::currentStackPointer() which computes its caller's stack pointer value.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/StackBounds.h:
(WTF::StackBounds::checkConsistency const):
* wtf/StackPointer.cpp: Added.
(WTF::currentStackPointer):
* wtf/StackPointer.h: Added.

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

12 months agoUse finer grained locking in FontDatabase
antti@apple.com [Thu, 11 Oct 2018 18:39:05 +0000 (18:39 +0000)]
Use finer grained locking in FontDatabase
https://bugs.webkit.org/show_bug.cgi?id=190467

Reviewed by Alex Christensen.

* platform/graphics/FontCache.h:

Also use ListHashSet for prewarming info so we can prewarm in the same order the fonts were
seen last time.

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::collectionForFamily):

Only hold the lock when accessing the hashmap. There is no need to hold it during font construction
which can take a long time.

(WebCore::FontDatabase::fontForPostScriptName):

This is currently not prewarmed from a thread so no need for locking.

(WebCore::FontDatabase::clear):

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

12 months agoAdd --cc-radar option to webkit-patch bug creation
dino@apple.com [Thu, 11 Oct 2018 17:32:31 +0000 (17:32 +0000)]
Add --cc-radar option to webkit-patch bug creation
https://bugs.webkit.org/show_bug.cgi?id=190451
<rdar://problem/45176671>

Reviewed by Antoine Quint.

Add a new command line option to automatically
CC radar to new or updated bugs.

* Scripts/webkitpy/tool/commands/commandtest.py:
(CommandsTest.assert_execute_outputs):
* Scripts/webkitpy/tool/commands/upload.py:
(CreateBug.__init__):
(CreateBug.execute):
* Scripts/webkitpy/tool/commands/upload_unittest.py:
(test_prepare_with_cc):
(test_prepare_with_radar):
(test_prepare_with_cc_and_radar):
* Scripts/webkitpy/tool/steps/createbug.py:
(CreateBug.options):
(CreateBug.run):
* Scripts/webkitpy/tool/steps/options.py:
(Options):

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

12 months ago[GStreamer] Fix race condition in GStreamerVideoDecoder
commit-queue@webkit.org [Thu, 11 Oct 2018 17:29:30 +0000 (17:29 +0000)]
[GStreamer] Fix race condition in GStreamerVideoDecoder
https://bugs.webkit.org/show_bug.cgi?id=190470

The GStreamerVideoDecoder.m_dtsPtsMap filed is accessed from
the main thread and some GStreamer streaming thread, make sure
to protect its access.

And use WTF::StdMap instead of std::map.

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

Manually tested and a random crash is gone.

* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
(WebCore::GStreamerVideoDecoder::newSampleCallback):

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

12 months agoRegression(PSON): Deal with the drawing area potentially being null under WebChromeCl...
cdumez@apple.com [Thu, 11 Oct 2018 17:25:18 +0000 (17:25 +0000)]
Regression(PSON): Deal with the drawing area potentially being null under WebChromeClient::contentsSizeChanged()
https://bugs.webkit.org/show_bug.cgi?id=190474

Reviewed by Geoffrey Garen.

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::contentsSizeChanged const):

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

12 months agoLayout Test fast/forms/fieldset/fieldset-elements-htmlcollection.html is failing
pvollan@apple.com [Thu, 11 Oct 2018 15:54:59 +0000 (15:54 +0000)]
Layout Test fast/forms/fieldset/fieldset-elements-htmlcollection.html is failing
https://bugs.webkit.org/show_bug.cgi?id=190472

Unreviewed test gardening.

* platform/win/TestExpectations:

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

12 months ago[GStreamer][MSE] Fix height calculation for streams with source aspect ratio
eocanha@igalia.com [Thu, 11 Oct 2018 11:10:14 +0000 (11:10 +0000)]
[GStreamer][MSE] Fix height calculation for streams with source aspect ratio
https://bugs.webkit.org/show_bug.cgi?id=190464

Reviewed by Xabier Rodriguez-Calvar.

This patch is authored by Nikola Veljkovic <Nikola.Veljkovic@zenterio.com>

* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::getVideoResolutionFromCaps): Reverse the SAR adjustment to "undo" it
instead of applying it twice.

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

12 months ago[GStreamer] Do not build gstgtk plugins
csaavedra@igalia.com [Thu, 11 Oct 2018 10:41:43 +0000 (10:41 +0000)]
[GStreamer] Do not build gstgtk plugins
https://bugs.webkit.org/show_bug.cgi?id=190463

Reviewed by Xabier Rodriguez-Calvar.

These plugins pull a GTK+ dependency that, at least in WPE,
is unnecessary. The GTK+ port doesn't need it either, as far
as I can tell.

* gstreamer/jhbuild.modules: Disable gstgtk plugins

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

12 months ago[GTK][WPE] Add mediaDevices.enumerateDevices support
commit-queue@webkit.org [Thu, 11 Oct 2018 10:26:52 +0000 (10:26 +0000)]
[GTK][WPE] Add mediaDevices.enumerateDevices support
https://bugs.webkit.org/show_bug.cgi?id=185761

Patch by Alejandro G. Castro <alex@igalia.com> on 2018-10-11
Reviewed by Youenn Fablet.

Source/WebCore:

We are adopting the same policy COCOA is using when returning the
list of media devices if the user does not have persistent
access. Namely, we just return the first media device for audio
and video capture.

* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::filterDeviceList): Add support for
other platforms when filtering devices if there is no persistent
access to the origin.

Source/WebKit:

Implemented the enumerateDevices API using a new WebKit class
(DeviceIdHashSaltStorage) that generates and stores the device ids
hash salts per origin, used to avoid fingerprinting in the
webpages.

The patch also adds a new type of data for the WebsiteDataStore.
That way the users can call the WebsiteDataStore to show what
origins have hash salt generated and remove them at some point.

For the moment just GTK+ and WPE ports are using this class to
generate the hash salts. The patch adds code to the
checkUserMediaPermissionForOrigin API implementation, it was empty
until now for these ports. In this function we create an instance
of a new class WebKitDeviceInfoPermissionRequest that implements
the WebKitPermissionRequestIface interface, that allows the ports
to use the current permission managers implemented in the
embedders to handle this new kind of request the way they like
it. The default implementation is deny.

The class WebKitDeviceInfoPermissionRequest takes care of
contacting the DeviceIdHashSaltStorage and request/regenerate the
hash salts accordingly.

Persistency is still not implemented, we will add it in a
future patch.

* Shared/WebsiteData/WebsiteDataType.h: Added the new type of
webside data: DeviceIdHashSalt.
* Sources.txt: Added new files to compilation.
* SourcesGTK.txt: Ditto.
* SourcesWPE.txt: Ditto.
* UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp: Added
this class to represent a request of permission to access the
devices information. This is specific for glib ports and implements
the policies regarding the hash salts when the embedder allows or
denies the access using the DeviceIdHashSaltStorage class.
(webkitDeviceInfoPermissionRequestAllow): Get the device hash salt
when the origin is allowed and set it in the original request.
(webkitDeviceInfoPermissionRequestDeny): Regenerate the device id
hash salt when the user does not allow to access the device information.
(webkit_permission_request_interface_init):
(webkitDeviceInfoPermissionRequestDispose):
(webkit_device_info_permission_request_class_init):
(webkitDeviceInfoPermissionRequestCreate): Create the class using
the proxy request from the webprocess and a reference to the
DeviceIdHashSaltStorage.
* UIProcess/API/glib/WebKitDeviceInfoPermissionRequestPrivate.h:
Ditto.
* UIProcess/API/glib/WebKitUIClient.cpp: Added the implementation
for the checkUserMediaPermissionForOrigin API for the glib ports,
it creates the device info request and calls the permission
request API.
* UIProcess/API/glib/WebKitWebsiteData.cpp:
(recordContainsSupportedDataTypes): Added the DeviceIdHashSalt
type.
(toWebKitWebsiteDataTypes): Added the conversion from the WebKit
types to the glib types for the WebsiteDataType::DeviceIdHashSalt.
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(toWebsiteDataTypes): Added the conversion from the glib type
WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT to the WebKit type.
(webkit_website_data_manager_remove): Make sure we remote the
DeviceIdHashSalt if the Cookies are selected.
* UIProcess/API/gtk/WebKitDeviceInfoPermissionRequest.h: Added
this new class that represents a permission request for the device
information in the GTK+ port.
* UIProcess/API/gtk/WebKitWebsiteData.h: Added the new type of
website that in the GTK+ port:
WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT.
* UIProcess/API/wpe/WebKitDeviceInfoPermissionRequest.h: Added
this new class that represents a permission request for the device
information in the WPE port.
* UIProcess/API/wpe/WebKitWebsiteData.h: Added the new type of
website that in the WPE port:
WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT.
* UIProcess/DeviceIdHashSaltStorage.cpp: Added this new class that
handles how to generate and store the hash salts inside
WebKit. Persistency is still not implemented, we will add it in a
future patch.
(WebKit::DeviceIdHashSaltStorage::create):
(WebKit::DeviceIdHashSaltStorage::deviceIdentifierHashSaltForOrigin):
Check the map to get the hash salt for an origin, if there is none
create a new random one.
(WebKit::DeviceIdHashSaltStorage::regenerateDeviceIdentifierHashSaltForOrigin):
Delete the hash salt of an origin if it already exists and create a new one.
(WebKit::DeviceIdHashSaltStorage::getDeviceIdHashSaltOrigins):
Returns the list of origins that have a hash salt generated for
them. It is used in the WebsiteDataStore.
(WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigins):
Deletes the hash salts in the map for an origin.
(WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltOriginsModifiedSince):
Delete the origins that have not been modified since a time.
* UIProcess/DeviceIdHashSaltStorage.h: Ditto.
* UIProcess/UserMediaPermissionCheckProxy.h: Remove uneeded class
definition.
* UIProcess/WebsiteData/WebsiteDataStore.cpp: Added support to
return and remove the origins with a generate hash salt used to
generate the device ids.
(WebKit::WebsiteDataStore::WebsiteDataStore): Added the new
reference to the DeviceIdHashSaltStorage class, used to handle the
hash salts.
(WebKit::WebsiteDataStore::fetchDataAndApply): Get the list of
origins with a hash salts in the DeviceIdHashSaltStorage.
(WebKit::WebsiteDataStore::removeData): Remove the hash salts in
DeviceIdHashSaltStorage for an origin.
* UIProcess/WebsiteData/WebsiteDataStore.h: Ditto.
(WebKit::WebsiteDataStore::deviceIdHashSaltStorage):
* WebKit.xcodeproj/project.pbxproj: Added the
DeviceIdHashSaltStorage to the compilation.

Tools:

Added new API test for the mediaDevices.enumerateDevices:
usermedia-enumeratedevices-permission-check. And a new API test
for the WebsiteDataStore: testWebsiteDataDeviceIdHashSalt.

* MiniBrowser/gtk/main.c:
(gotWebsiteDataCallback): Added a new section to the about:data
webpage to include the information about the hash salt.
* TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:
(testWebViewUserMediaEnumerateDevicesPermissionCheck): Added the
new test checking the enumerateDevices API when permission is
denied and when permission is allowed for the origin.
(beforeAll): Defined the new test.
* TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:
(serverCallback): Register a new URI for the enumerateDevices.
(testWebsiteDataConfiguration): Remove the hash salts from the
directories.
(testWebsiteDataDeviceIdHashSalt): New test cheking the
enumerateDevices API.
(beforeAll): Added the new test testWebsiteDataDeviceIdHashSalt to
the init structure.
* TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:
(WebViewTest::initializeWebView): Make sure the media-stream is
activated in the webView.

LayoutTests:

Remove the failure expectation for the test
media-devices-enumerate-devices.html. Just for the record we have
also checked the following tests.

fast/mediastream/media-devices-enumerate-devices.html
fast/mediastream/resources/enumerate-devices-frame.html
http/tests/media/media-stream/enumerate-devices-source-id.html
http/tests/media/media-stream/enumerate-devices-source-id-persistent.html
http/tests/media/media-stream/resources/enumerate-devices-source-id-frame.html

* platform/gtk/TestExpectations:

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

12 months agoRename a couple of DOMWindowProperty virtual functions
cdumez@apple.com [Thu, 11 Oct 2018 04:27:08 +0000 (04:27 +0000)]
Rename a couple of DOMWindowProperty virtual functions
https://bugs.webkit.org/show_bug.cgi?id=190458

Reviewed by Geoffrey Garen.

Rename a couple of DOMWindowProperty virtual functions as the current naming no longer makes
sense after recent refactoring.

disconnectFrameForDocumentSuspension() was renamed to suspendForPageCache(), and
reconnectFrameFromDocumentSuspension(Frame*) was renamed to resumeFromPageCache().
DOMWindowProperty objects no longer need to disconnect / reconnect from their
frame since they now get their frame from their associated Window. However, some
DOMWindowProperty subclasses do have some page cache suspension / resuming logic
implemented of overrides of these functions.

Also drop the disconnectDOMWindowProperties() / reconnectDOMWindowProperties()
methods in DOMWindow. The naming made little sense as it does not really
disconnect those properties in any way. Instead, inline them in
DOMWindow's suspendForPageCache() / resumeFromPageCache() since these are
the only callers.

* Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
(WebCore::DOMWindowIndexedDatabase::suspendForPageCache):
(WebCore::DOMWindowIndexedDatabase::resumeFromPageCache):
(WebCore::DOMWindowIndexedDatabase::disconnectFrameForDocumentSuspension): Deleted.
(WebCore::DOMWindowIndexedDatabase::reconnectFrameFromDocumentSuspension): Deleted.
* Modules/indexeddb/DOMWindowIndexedDatabase.h:
* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::open):
* loader/appcache/DOMApplicationCache.cpp:
(WebCore::DOMApplicationCache::suspendForPageCache):
(WebCore::DOMApplicationCache::resumeFromPageCache):
(WebCore::DOMApplicationCache::disconnectFrameForDocumentSuspension): Deleted.
(WebCore::DOMApplicationCache::reconnectFrameFromDocumentSuspension): Deleted.
* loader/appcache/DOMApplicationCache.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::suspendForPageCache):
(WebCore::DOMWindow::resumeFromPageCache):
(WebCore::DOMWindow::suspendForDocumentSuspension): Deleted.
(WebCore::DOMWindow::resumeFromDocumentSuspension): Deleted.
(WebCore::DOMWindow::disconnectDOMWindowProperties): Deleted.
(WebCore::DOMWindow::reconnectDOMWindowProperties): Deleted.
* page/DOMWindow.h:
* page/DOMWindowExtension.cpp:
(WebCore::DOMWindowExtension::suspendForPageCache):
(WebCore::DOMWindowExtension::resumeFromPageCache):
(WebCore::DOMWindowExtension::disconnectFrameForDocumentSuspension): Deleted.
(WebCore::DOMWindowExtension::reconnectFrameFromDocumentSuspension): Deleted.
* page/DOMWindowExtension.h:
* page/DOMWindowProperty.cpp:
(WebCore::DOMWindowProperty::suspendForPageCache):
(WebCore::DOMWindowProperty::resumeFromPageCache):
(WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension): Deleted.
(WebCore::DOMWindowProperty::reconnectFrameFromDocumentSuspension): Deleted.
* page/DOMWindowProperty.h:

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

12 months agoWeb Inspector: create special Network waterfall for media events
drousso@apple.com [Thu, 11 Oct 2018 04:13:17 +0000 (04:13 +0000)]
Web Inspector: create special Network waterfall for media events
https://bugs.webkit.org/show_bug.cgi?id=189773
<rdar://problem/44626605>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/DOM.json:
Add `didFireEvent` event that is fired when specific event listeners added by
`InspectorInstrumentation::addEventListenersToNode` are fired.

Source/WebCore:

Test: http/tests/inspector/dom/didFireEvent.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::addEventListenersToNode): Added.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::addEventListenersToNodeImpl): Added.

* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::EventFiredCallback): Added.
(WebCore::EventFiredCallback::create): Added.
(WebCore::EventFiredCallback::operator==): Added.
(WebCore::EventFiredCallback::handleEvent): Added.
(WebCore::EventFiredCallback::EventFiredCallback): Added.
(WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMAgent::addEventListenersToNode): Added.

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Base/Utilities.js:

* UserInterface/Protocol/DOMObserver.js:
(WI.DOMObserver.prototype.didFireEvent): Added.
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.didFireEvent): Added.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode):
(WI.DOMNode.prototype.get domEvents): Added.
(WI.DOMNode.prototype.didFireEvent): Added.
(WI.DOMNode.prototype._addDOMEvent): Added.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.shown):
(WI.NetworkTableContentView.prototype.hidden):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.showRepresentedObject):
(WI.NetworkTableContentView.prototype.networkDetailViewClose): Added.
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype.tableSelectionDidChange):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.positionByStartOffset): Added.
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.setWidthForDuration): Added.
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.createDOMEventLine): Added.
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.appendBlock):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._rowIndexForRepresentedObject): Added.
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._hideDetailView): Added.
(WI.NetworkTableContentView.prototype._showDetailView): Added.
(WI.NetworkTableContentView.prototype._positionDetailView): Added.
(WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange):
(WI.NetworkTableContentView.prototype._tryLinkResourceToDOMNode):
(WI.NetworkTableContentView.prototype._handleNodeDidFireEvent): Added.
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
(WI.NetworkTableContentView.prototype._restoreSelectedRow):
(WI.NetworkTableContentView.prototype._waterfallPopoverContent): Added.
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResourceEntry): Added.
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForNodeEntry): Added.
(WI.NetworkTableContentView.prototype._handleResourceEntryMousedownWaterfall): Added.
(WI.NetworkTableContentView.prototype._handleNodeEntryMousedownWaterfall): Added.
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall): Added.
(WI.NetworkTableContentView.prototype.networkResourceDetailViewClose): Deleted.
(WI.NetworkTableContentView.prototype._rowIndexForResource): Deleted.
(WI.NetworkTableContentView.prototype._hideResourceDetailView): Deleted.
(WI.NetworkTableContentView.prototype._showResourceDetailView): Deleted.
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource): Deleted.
* UserInterface/Views/NetworkTableContentView.css:
(.content-view.network .network-table): Added.
(.network-table :not(.header) .cell.waterfall .waterfall-container > .dom-event): Added.
(.network-table :not(.header) .cell.waterfall .waterfall-container > .dom-activity): Added.
(.network-table :not(.header) .cell.waterfall .waterfall-container > .dom-activity.playing): Added.

* UserInterface/Views/NetworkDOMNodeDetailView.js: Added.
(WI.NetworkDOMNodeDetailView):
(WI.NetworkDOMNodeDetailView.prototype.initialLayout):
(WI.NetworkDOMNodeDetailView.prototype.showContentViewForIdentifier):

* UserInterface/Views/NetworkResourceDetailView.css:
(.content-view.resource-details):
(.network-resource-detail): Deleted.
(.network-resource-detail .navigation-bar): Deleted.
(.network-resource-detail .item.close > .glyph): Deleted.
(.network-resource-detail .item.close > .glyph:hover): Deleted.
(.network-resource-detail .item.close > .glyph:active): Deleted.
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only): Deleted.
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected): Deleted.
(.network-resource-detail > .content-browser): Deleted.
(@media (prefers-dark-interface)): Deleted.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.shown):
(WI.NetworkResourceDetailView.prototype.headersContentViewGoToRequestData):
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToHeaders):
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToRequestBody):
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToResponseBody):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype.showContentViewForIdentifier):
(WI.NetworkResourceDetailView.prototype.get resource): Deleted.
(WI.NetworkResourceDetailView.prototype.hidden): Deleted.
(WI.NetworkResourceDetailView.prototype.dispose): Deleted.
(WI.NetworkResourceDetailView.prototype.willShowWithCookie): Deleted.
(WI.NetworkResourceDetailView.prototype.initialLayout): Deleted.
(WI.NetworkResourceDetailView.prototype._showPreferredContentView): Deleted.
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem): Deleted.
(WI.NetworkResourceDetailView.prototype._navigationItemSelected): Deleted.
(WI.NetworkResourceDetailView.prototype._handleCloseButton): Deleted.

* UserInterface/Views/NetworkDetailView.js: Added.
(WI.NetworkDetailView):
(WI.NetworkDetailView.prototype.get representedObject):
(WI.NetworkDetailView.prototype.shown):
(WI.NetworkDetailView.prototype.hidden):
(WI.NetworkDetailView.prototype.dispose):
(WI.NetworkDetailView.prototype.willShowWithCookie):
(WI.NetworkDetailView.prototype.initialLayout):
(WI.NetworkDetailView.prototype.createDetailNavigationItem):
(WI.NetworkDetailView.prototype.detailNavigationItemForIdentifier):
(WI.NetworkDetailView.prototype.showContentViewForIdentifier):
(WI.NetworkDetailView.prototype._showPreferredContentView):
(WI.NetworkDetailView.prototype._navigationItemSelected):
(WI.NetworkDetailView.prototype._handleCloseButton):
* UserInterface/Views/NetworkDetailView.css: Added.
(.network-detail):
(.network-detail .navigation-bar):
(.network-detail .item.close > .glyph):
(.network-detail .item.close > .glyph:hover):
(.network-detail .item.close > .glyph:active):
(.network .network-detail .navigation-bar .item.radio.button.text-only):
(.network .network-detail .navigation-bar .item.radio.button.text-only.selected):
(.network-detail > .content-browser):
(@media (prefers-dark-interface)):
Create base class for detail views shown in the Network tab.

* UserInterface/Views/DOMNodeEventsContentView.js: Added.
(WI.DOMNodeEventsContentView):
(WI.DOMNodeEventsContentView.prototype.initialLayout):
(WI.DOMNodeEventsContentView.prototype.closed):
(WI.DOMNodeEventsContentView.prototype._handleDOMNodeDidFireEvent):
* UserInterface/Views/DOMNodeEventsContentView.css: Added.
(.dom-node-details.dom-events):

* UserInterface/Views/DOMEventsBreakdownView.js: Added.
(WI.DOMEventsBreakdownView):
(WI.DOMEventsBreakdownView.prototype.addEvent):
(WI.DOMEventsBreakdownView.prototype.initialLayout):
(WI.DOMEventsBreakdownView.prototype._populateTable.percentOfTotalTime):
(WI.DOMEventsBreakdownView.prototype._populateTable):
* UserInterface/Views/DOMEventsBreakdownView.css: Added.
(.waterfall-popover-content .dom-events-breakdown):
(.dom-events-breakdown):
(.dom-events-breakdown table):
(.dom-events-breakdown tr > :matches(th, td)):
(.dom-events-breakdown tbody > tr):
(.dom-events-breakdown .graph):
(.dom-events-breakdown .graph > :matches(.point, .area)):
(.dom-events-breakdown .graph > .point):
(.dom-events-breakdown .time):

* UserInterface/Views/ResourceTimingBreakdownView.css:
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td): Added.
(.popover.waterfall-popover): Deleted.

LayoutTests:

* http/tests/inspector/dom/didFireEvent-expected.txt: Added.
* http/tests/inspector/dom/didFireEvent.html: Added.

* inspector/unit-tests/array-utilities-expected.txt:
* inspector/unit-tests/array-utilities.html:

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

12 months ago[iOS] Cleanup -[WAKView _selfHandleEvent:] and -[WAKWindow sendEventSynchronously:]
dbates@webkit.org [Thu, 11 Oct 2018 03:08:34 +0000 (03:08 +0000)]
[iOS] Cleanup -[WAKView _selfHandleEvent:] and -[WAKWindow sendEventSynchronously:]
https://bugs.webkit.org/show_bug.cgi?id=190402

Reviewed by Anders Carlsson.

Unindent case statements. Remove use of default case statements with body ASSERT_NOT_REACHED()
to catch the cases of a missing enumerator. By omitting the default case statement we turn
such a scenario into a compile-time error instead of handling it as a runtime error.

* platform/ios/wak/WAKView.mm:
(-[WAKView _selfHandleEvent:]):
* platform/ios/wak/WAKWindow.mm:
(-[WAKWindow sendEventSynchronously:]):

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

12 months agoSafari crashes when attempting to share a YouTube video while in full-screen
timothy_horton@apple.com [Thu, 11 Oct 2018 03:03:58 +0000 (03:03 +0000)]
Safari crashes when attempting to share a YouTube video while in full-screen
https://bugs.webkit.org/show_bug.cgi?id=190456
<rdar://problem/45130748>

Reviewed by Wenson Hsieh.

* Platform/spi/ios/UIKitSPI.h:
* UIProcess/Cocoa/WKShareSheet.mm:
(-[WKShareSheet presentWithParameters:completionHandler:]):
Allow the share sheet to present centered, since we don't have enough
context to put it in a more sensible place.

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

12 months agoRename MarkupAccumulator::appendStartTag, appendElement, etc... for clarity
rniwa@webkit.org [Thu, 11 Oct 2018 02:27:18 +0000 (02:27 +0000)]
Rename MarkupAccumulator::appendStartTag, appendElement, etc... for clarity
https://bugs.webkit.org/show_bug.cgi?id=190308

Reviewed by Darin Adler.

Renamed appendStartTag and appendEndTag to startAppendingNode and endAppendingNode since serialize any node,
not just elements which produce start and end tags.

Renamed appendElement and appendEndElement to appendStartTag and appendEndTag since that's what they do.

* editing/MarkupAccumulator.cpp:
(WebCore::elementCannotHaveEndTag): Made this a static local function.
(WebCore::shouldSelfClose): Ditto.
(WebCore::MarkupAccumulator::serializeNodesWithNamespaces):
(WebCore::MarkupAccumulator::startAppendingNode): Renamed from appendStartTag.
(WebCore::MarkupAccumulator::endAppendingNode): Renamed from appendEndElement and merged appendEndMarkup here.
(WebCore::MarkupAccumulator::appendTextSubstring): Deleted. This was only used by StyledMarkupAccumulator.
(WebCore::MarkupAccumulator::appendStringView): Added.
(WebCore::MarkupAccumulator::appendStartTag): Renamed from appendElement.
(WebCore::MarkupAccumulator::appendCloseTag):
(WebCore::MarkupAccumulator::appendNonElementNode): Renamed from appendStartMarkup. No longer serializes
an element. StyledMarkupAccumulator had a check before calling this function already so this clarifies
the purpose of this function.
(WebCore::MarkupAccumulator::appendElement): Deleted.
(WebCore::MarkupAccumulator::appendEndMarkup): Deleted. Merged into appendEndTag.
* editing/MarkupAccumulator.h:
(WebCore::MarkupAccumulator::appendNodeEnd): Renamed from appendEndTag.
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::wrapWithNode):
(WebCore::StyledMarkupAccumulator::appendStartTag): Renamed from appendElement.
(WebCore::StyledMarkupAccumulator::appendEndTag): Renamed from appendEndElement.
(WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):
(WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): Use String::substring directly instead of
going through appendTextSubstring which has been deleted.
* page/PageSerializer.cpp:
(WebCore::PageSerializer::SerializerMarkupAccumulator::appendStartTag): Renamed from appendElement.
(WebCore::PageSerializer::SerializerMarkupAccumulator::appendEndTag): Renamed from appendEndElement.

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

12 months agoIncrease executable memory pool from 64MB to 128MB for ARM64
msaboff@apple.com [Thu, 11 Oct 2018 01:39:27 +0000 (01:39 +0000)]
Increase executable memory pool from 64MB to 128MB for ARM64
https://bugs.webkit.org/show_bug.cgi?id=190453

Reviewed by Saam Barati.

* jit/ExecutableAllocator.cpp:

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

12 months agoAdd WinCairo to the flakiness dashboard
Hironori.Fujii@sony.com [Thu, 11 Oct 2018 01:25:05 +0000 (01:25 +0000)]
Add WinCairo to the flakiness dashboard
https://bugs.webkit.org/show_bug.cgi?id=188345

Reviewed by Lucas Forschler.

* TestResultServer/static-dashboards/builders.jsonp: Regenerated by generate_builders_json.py.
* TestResultServer/static-dashboards/flakiness_dashboard.js: Added a new platform 'WINCAIRO'.

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

12 months ago[WHSL -> MSL] Annotate semantics correctly in generated MSL
dino@apple.com [Thu, 11 Oct 2018 01:09:55 +0000 (01:09 +0000)]
[WHSL -> MSL] Annotate semantics correctly in generated MSL
https://bugs.webkit.org/show_bug.cgi?id=190452
<rdar://problem/45178272>

Reviewed by Myles Maxfield.

Correctly label the appropriate semantics as [[position]]
and [[color(N)]].

* WebGPUShadingLanguageRI/Metal/MSLBackend.js: Identify position
and color attributes. Also use the semantic's index rather than
a counter.
* WebGPUShadingLanguageRI/Metal/WhlslToMsl.html: Use a <pre> for
output, and only include the actual shader code.

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

12 months agoUnreviewed, attempt to fix the build with current SDKs.
ryanhaddad@apple.com [Thu, 11 Oct 2018 00:47:28 +0000 (00:47 +0000)]
Unreviewed, attempt to fix the build with current SDKs.

* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::getPublicKeyComponents):

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

12 months agoREGRESSION (r236935): Layout test fast/events/ios/keyboard-scrolling-distance.html...
timothy_horton@apple.com [Wed, 10 Oct 2018 22:41:26 +0000 (22:41 +0000)]
REGRESSION (r236935): Layout test fast/events/ios/keyboard-scrolling-distance.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=190444
<rdar://problem/45110698>

Reviewed by Simon Fraser.

There's a race in WKKeyboardScrollingAnimator that's exacerbated by HIDEventGenerator
being much faster than a human finger. We get our "begin" events from interpretKeyEvent,
after the Web Content process has had its way with it, but currently the
back-channel "handle" events (e.g. for key up, which doesn't go to interpretKeyEvent)
are retrieved from handleKeyWebEvent in the UI process, which is *before*
the Web Content process has had a swing at it.

If you lose the race (an insanely short tap like you get from HIDEventGenerator,
or with a very busy Web Content process), we see handle(keyDown), handle(keyUp), begin(keyDown),
and get stuck scrolling!

Instead, retrieve the out-of-band "handle" events from _didHandleKeyEvent,
so that they're sensibly and strictly ordered with respect to the timing of interpretKeyEvent/"begin".

Also, hook up didFinishScrolling, so that UIScriptController's callbacks work correctly.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView handleKeyWebEvent:]):
(-[WKContentView _didHandleKeyEvent:eventWasHandled:]):
(-[WKContentView keyboardScrollViewAnimatorDidFinishScrolling:]):
* UIProcess/ios/WKKeyboardScrollingAnimator.h:
* UIProcess/ios/WKKeyboardScrollingAnimator.mm:
(-[WKKeyboardScrollingAnimator handleKeyEvent:]):
(-[WKKeyboardScrollingAnimator displayLinkFired:]):
(-[WKKeyboardScrollViewAnimator setDelegate:]):
(-[WKKeyboardScrollViewAnimator handleKeyEvent:]):
(-[WKKeyboardScrollViewAnimator didFinishScrolling]):

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