WebKit-https.git
4 months agoDelete WebMetal implementation in favor of WebGPU
mmaxfield@apple.com [Fri, 29 Mar 2019 22:18:59 +0000 (22:18 +0000)]
Delete WebMetal implementation in favor of WebGPU
https://bugs.webkit.org/show_bug.cgi?id=195418

Reviewed by Dean Jackson.

.:

* Source/cmake/OptionsMac.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmake/tools/vsprops/FeatureDefines.props:
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:
* inspector/protocol/Canvas.json:
* inspector/scripts/codegen/generator.py:

Source/WebCore:

WebMetal was only ever intended to be a proof-of-concept, and was never intended to be shipped.
Now that our WebGPU implementation is achieving good functionality, we're hitting conflicts
because we have both implementations. We should delete the non-standard implementation in favor
of the standards-based implementation.

Deletes relevant tests.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSWebMetalRenderPassAttachmentDescriptorCustom.cpp: Removed.
* bindings/js/JSWebMetalRenderingContextCustom.cpp: Removed.
* bindings/js/WebCoreBuiltinNames.h:
* dom/Document.cpp:
(WebCore::Document::getCSSCanvasContext):
* dom/Document.h:
* dom/Document.idl:
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::isWebMetalType): Deleted.
(WebCore::HTMLCanvasElement::createContextWebMetal): Deleted.
(WebCore::HTMLCanvasElement::getContextWebMetal): Deleted.
* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.idl:
* html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::isWebGPU const):
(WebCore::CanvasRenderingContext::isWebMetal const): Deleted.
* html/canvas/WebMetalBuffer.cpp: Removed.
* html/canvas/WebMetalBuffer.h: Removed.
* html/canvas/WebMetalBuffer.idl: Removed.
* html/canvas/WebMetalCommandBuffer.cpp: Removed.
* html/canvas/WebMetalCommandBuffer.h: Removed.
* html/canvas/WebMetalCommandBuffer.idl: Removed.
* html/canvas/WebMetalCommandQueue.cpp: Removed.
* html/canvas/WebMetalCommandQueue.h: Removed.
* html/canvas/WebMetalCommandQueue.idl: Removed.
* html/canvas/WebMetalComputeCommandEncoder.cpp: Removed.
* html/canvas/WebMetalComputeCommandEncoder.h: Removed.
* html/canvas/WebMetalComputeCommandEncoder.idl: Removed.
* html/canvas/WebMetalComputePipelineState.cpp: Removed.
* html/canvas/WebMetalComputePipelineState.h: Removed.
* html/canvas/WebMetalComputePipelineState.idl: Removed.
* html/canvas/WebMetalDepthStencilDescriptor.cpp: Removed.
* html/canvas/WebMetalDepthStencilDescriptor.h: Removed.
* html/canvas/WebMetalDepthStencilDescriptor.idl: Removed.
* html/canvas/WebMetalDepthStencilState.cpp: Removed.
* html/canvas/WebMetalDepthStencilState.h: Removed.
* html/canvas/WebMetalDepthStencilState.idl: Removed.
* html/canvas/WebMetalDrawable.cpp: Removed.
* html/canvas/WebMetalDrawable.h: Removed.
* html/canvas/WebMetalDrawable.idl: Removed.
* html/canvas/WebMetalEnums.cpp: Removed.
* html/canvas/WebMetalEnums.h: Removed.
* html/canvas/WebMetalEnums.idl: Removed.
* html/canvas/WebMetalFunction.cpp: Removed.
* html/canvas/WebMetalFunction.h: Removed.
* html/canvas/WebMetalFunction.idl: Removed.
* html/canvas/WebMetalLibrary.cpp: Removed.
* html/canvas/WebMetalLibrary.h: Removed.
* html/canvas/WebMetalLibrary.idl: Removed.
* html/canvas/WebMetalRenderCommandEncoder.cpp: Removed.
* html/canvas/WebMetalRenderCommandEncoder.h: Removed.
* html/canvas/WebMetalRenderCommandEncoder.idl: Removed.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.h: Removed.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.h: Removed.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.h: Removed.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPassDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPassDescriptor.h: Removed.
* html/canvas/WebMetalRenderPassDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.h: Removed.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPipelineDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPipelineDescriptor.h: Removed.
* html/canvas/WebMetalRenderPipelineDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPipelineState.cpp: Removed.
* html/canvas/WebMetalRenderPipelineState.h: Removed.
* html/canvas/WebMetalRenderPipelineState.idl: Removed.
* html/canvas/WebMetalRenderingContext.cpp: Removed.
* html/canvas/WebMetalRenderingContext.h: Removed.
* html/canvas/WebMetalRenderingContext.idl: Removed.
* html/canvas/WebMetalSize.h: Removed.
* html/canvas/WebMetalSize.idl: Removed.
* html/canvas/WebMetalTexture.cpp: Removed.
* html/canvas/WebMetalTexture.h: Removed.
* html/canvas/WebMetalTexture.idl: Removed.
* html/canvas/WebMetalTextureDescriptor.cpp: Removed.
* html/canvas/WebMetalTextureDescriptor.h: Removed.
* html/canvas/WebMetalTextureDescriptor.idl: Removed.
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::contextAsScriptValue):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebMetalEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webMetalEnabled const): Deleted.
* platform/Logging.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
(WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
* platform/graphics/cocoa/WebMetalLayer.h: Removed.
* platform/graphics/cocoa/WebMetalLayer.mm: Removed.
* platform/graphics/gpu/legacy/GPULegacyBuffer.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyBuffer.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyCommandBuffer.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyCommandBuffer.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyCommandQueue.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyCommandQueue.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyComputePipelineState.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyComputePipelineState.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyDepthStencilState.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyDepthStencilState.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyDevice.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyDevice.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyDrawable.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyDrawable.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyEnums.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyFunction.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyFunction.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyLibrary.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyLibrary.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.h: Removed.
* platform/graphics/gpu/legacy/GPULegacySize.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyTexture.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyTexture.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.h: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyBufferMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyCommandBufferMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyCommandQueueMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyComputeCommandEncoderMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyComputePipelineStateMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilStateMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyDeviceMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyDrawableMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyFunctionMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyLibraryMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderCommandEncoderMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassAttachmentDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassColorAttachmentDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDepthAttachmentDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineColorAttachmentDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineStateMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyTextureDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyTextureMetal.mm: Removed.
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setWebMetalEnabled): Deleted.
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebInspectorUI:

* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
* UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
* Versions/Inspector-iOS-12.2.json:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:
* Shared/WebPreferences.yaml:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webMetalEnabled]): Deleted.
(-[WebPreferences setWebMetalEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):
* Scripts/webkitperl/FeatureList.pm:
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/mac/GPUCommandQueue.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyBuffer.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyCommandQueue.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyDevice.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyFunction.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyLibrary.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h: Removed.
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setWebMetalEnabled): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:

LayoutTests:

* fast/canvas/webmetal/webmetal-dispatch-expected.txt: Removed.
* fast/canvas/webmetal/webmetal-dispatch.html: Removed.
* fast/canvas/webmetal/webmetal-runtime-flag-expected.txt: Removed.
* fast/canvas/webmetal/webmetal-runtime-flag.html: Removed.
* inspector/canvas/create-context-webmetal-expected.txt: Removed.
* inspector/canvas/create-context-webmetal.html: Removed.
* inspector/canvas/resolveCanvasContext-webmetal-expected.txt: Removed.
* inspector/canvas/resolveCanvasContext-webmetal.html: Removed.
* platform/gtk/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac/TestExpectations:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:
* platform/wpe/TestExpectations:

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

4 months agoAssertion failed in JSC::createError
tzagallo@apple.com [Fri, 29 Mar 2019 21:53:54 +0000 (21:53 +0000)]
Assertion failed in JSC::createError
https://bugs.webkit.org/show_bug.cgi?id=196305
<rdar://problem/49387382>

Reviewed by Saam Barati.

JSTests:

* stress/create-error-out-of-memory-rope-string-2.js: Added.
(assert):
(catch):

Source/JavaScriptCore:

JSC::createError assumes that `errorDescriptionForValue` will either
throw an exception or return a valid description string. However, that
is not true if the value is a rope string and we successfully resolve it,
but later fail to wrap the string in quotes with `tryMakeString`.

* runtime/ExceptionHelpers.cpp:
(JSC::createError):

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

4 months agoUpdate the CSS Text WPT test suite
jfernandez@igalia.com [Fri, 29 Mar 2019 21:52:53 +0000 (21:52 +0000)]
Update the CSS Text WPT test suite
https://bugs.webkit.org/show_bug.cgi?id=196397

Reviewed by Manuel Rego Casasnovas.

Updated several tests from the CSS Text test suite.

* resources/resource-files.json:
* web-platform-tests/css/css-text/META.yml:
* web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html:
* web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-007.html:
* web-platform-tests/css/css-text/white-space/break-spaces-004.html:
* web-platform-tests/css/css-text/white-space/break-spaces-005.html:
* web-platform-tests/css/css-text/white-space/break-spaces-006.html:
* web-platform-tests/css/css-text/white-space/break-spaces-007.html:
* web-platform-tests/css/css-text/white-space/break-spaces-008.html:
* web-platform-tests/css/css-text/white-space/pre-wrap-008.html:
* web-platform-tests/css/css-text/white-space/pre-wrap-015.html:
* web-platform-tests/css/css-text/white-space/pre-wrap-016.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-001-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-001.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-002-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-002.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-003-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-003.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004.html:
* web-platform-tests/css/css-text/word-break/w3c-import.log:
* web-platform-tests/css/css-text/word-break/word-break-break-all-010.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-011.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-012.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-013.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-015.html:
* web-platform-tests/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-expected.html: Added.
* web-platform-tests/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html: Added.

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

4 months agoWeb Inspector: add fast returns for instrumentation hooks that have no affect before...
drousso@apple.com [Fri, 29 Mar 2019 21:49:53 +0000 (21:49 +0000)]
Web Inspector: add fast returns for instrumentation hooks that have no affect before a frontend is connected
https://bugs.webkit.org/show_bug.cgi?id=196382
<rdar://problem/49403417>

Reviewed by Joseph Pecoraro.

Ensure that all instrumentation hooks use `FAST_RETURN_IF_NO_FRONTENDS` or check that
`developerExtrasEnabled`. There should be no activity to/from any inspector objects until
developer extras are enabled.

Source/JavaScriptCore:

* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::startTiming):
(Inspector::InspectorConsoleAgent::stopTiming):
(Inspector::InspectorConsoleAgent::count):
(Inspector::InspectorConsoleAgent::addConsoleMessage):

Source/WebCore:

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didClearWindowObjectInWorld):
(WebCore::InspectorInstrumentation::scriptExecutionBlockedByCSP):
(WebCore::InspectorInstrumentation::domContentLoadedEventFired):
(WebCore::InspectorInstrumentation::loadEventFired):
(WebCore::InspectorInstrumentation::frameDetachedFromParent):
(WebCore::InspectorInstrumentation::loaderDetachedFromFrame):
(WebCore::InspectorInstrumentation::frameStartedLoading):
(WebCore::InspectorInstrumentation::frameStoppedLoading):
(WebCore::InspectorInstrumentation::frameScheduledNavigation):
(WebCore::InspectorInstrumentation::frameClearedScheduledNavigation):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::frameWindowDiscardedImpl):
(WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
(WebCore::InspectorInstrumentation::didFailLoadingImpl):
(WebCore::InspectorInstrumentation::addMessageToConsoleImpl):
(WebCore::InspectorInstrumentation::consoleCountImpl):
(WebCore::InspectorInstrumentation::startConsoleTimingImpl):
(WebCore::InspectorInstrumentation::stopConsoleTimingImpl):

* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::frameWindowDiscarded):

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

4 months agoWeb Inspector: Storage: some cookie column headers are not localized
drousso@apple.com [Fri, 29 Mar 2019 20:56:20 +0000 (20:56 +0000)]
Web Inspector: Storage: some cookie column headers are not localized
https://bugs.webkit.org/show_bug.cgi?id=196406
<rdar://problem/48467422>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype.initialLayout):

* Localizations/en.lproj/localizedStrings.js:

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

4 months agoSet window.closed immediately when close() is invoked
cdumez@apple.com [Fri, 29 Mar 2019 20:46:57 +0000 (20:46 +0000)]
Set window.closed immediately when close() is invoked
https://bugs.webkit.org/show_bug.cgi?id=195409

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

* web-platform-tests/html/browsers/the-window-object/close-method.window-expected.txt:
* web-platform-tests/html/browsers/the-window-object/closed-attribute.window-expected.txt:

Source/WebCore:

Window.closed should return true if it is closing:
- https://html.spec.whatwg.org/#dom-window-closed

Window.close() sets the 'is closing' flag to true synchronously, as per:
- https://html.spec.whatwg.org/#dom-window-close (step 3.1)

No new tests, rebaselined existing tests.

* page/DOMWindow.cpp:
(WebCore::DOMWindow::closed const):

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

4 months ago[Simple line layout] Turn off inline boxtree generation for multiline content
zalan@apple.com [Fri, 29 Mar 2019 20:26:49 +0000 (20:26 +0000)]
[Simple line layout] Turn off inline boxtree generation for multiline content
https://bugs.webkit.org/show_bug.cgi?id=196404
<rdar://problem/49234033>

Reviewed by Simon Fraser.

Source/WebCore:

Currently simple line layout can't provide the correct line breaking context to the inline tree when the boxtree is
generated using the simple line runs. This patch limits the generation of such trees to single lines. Multiline content will
go through the "let's layout this content again" codepath.
This patch fixes disappearing content on Questar.

Test: fast/text/simple-line-layout-and-multiline-inlineboxtree.html

* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::canUseForLineBoxTree):

LayoutTests:

* fast/text/simple-line-layout-and-multiline-inlineboxtree-expected.html: Added.
* fast/text/simple-line-layout-and-multiline-inlineboxtree.html: Added.

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

4 months agoimported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html is a...
sroberts@apple.com [Fri, 29 Mar 2019 20:23:05 +0000 (20:23 +0000)]
imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196403

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations: Updating test expectations for flaky test

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

4 months ago[Web GPU] Replace unsigned longs in WebGPU with uint64_t
justin_fan@apple.com [Fri, 29 Mar 2019 20:18:38 +0000 (20:18 +0000)]
[Web GPU] Replace unsigned longs in WebGPU with uint64_t
https://bugs.webkit.org/show_bug.cgi?id=196401

Reviewed by Myles C. Maxfield.

Unsigned long is not guaranteed to be 64 bits on all platforms. In addition, rowPitch is updated
to u32 in the API and the implementation to match.

No new tests. No new behavior.

* Modules/webgpu/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::setSubData):
* Modules/webgpu/WebGPUBuffer.h:
* Modules/webgpu/WebGPUBufferBinding.h:
* Modules/webgpu/WebGPUCommandEncoder.cpp:
(WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
* Modules/webgpu/WebGPUCommandEncoder.h:
* Modules/webgpu/WebGPUCommandEncoder.idl:
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
* Modules/webgpu/WebGPURenderPassEncoder.h:
* platform/graphics/gpu/GPUBindGroupLayout.h:
* platform/graphics/gpu/GPUBuffer.h:
(WebCore::GPUBuffer::byteLength const):
* platform/graphics/gpu/GPUBufferBinding.h:
* platform/graphics/gpu/GPUBufferDescriptor.h:
* platform/graphics/gpu/GPUCommandBuffer.h:
* platform/graphics/gpu/GPURenderPassEncoder.h:
* platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
* platform/graphics/gpu/GPUVertexInputDescriptor.h:
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::setSubData):
* platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::copyBufferToBuffer):
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setVertexBuffers):

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

4 months agoREGRESSION (r243523): Six form-related watchOS layout tests are timing out
cdumez@apple.com [Fri, 29 Mar 2019 20:11:54 +0000 (20:11 +0000)]
REGRESSION (r243523): Six form-related watchOS layout tests are timing out
https://bugs.webkit.org/show_bug.cgi?id=196405
<rdar://problem/49428130>

Reviewed by Wenson Hsieh.

Tools:

Add a shouldPresentPopovers=false WebKitTestRunner option to cause WKTR to swizzle
the popover presentation methods to be no-ops. Use this in the new test added in
r243523 so that we do not swizzle those methods for all tests. This is needed because
those WatchOS tests rely on the popover getting presented and interactive.

* WebKitTestRunner/TestController.cpp:
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformInitialize):
(WTR::TestController::platformResetStateToConsistentValues):

LayoutTests:

* fast/forms/ios/file-upload-panel.html:

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

4 months agoREGRESSION (r243250): Text interactions are no longer suppressed when editing in...
wenson_hsieh@apple.com [Fri, 29 Mar 2019 20:09:02 +0000 (20:09 +0000)]
REGRESSION (r243250): Text interactions are no longer suppressed when editing in some websites
https://bugs.webkit.org/show_bug.cgi?id=196378
<rdar://problem/49231299>

Reviewed by Simon Fraser.

Source/WebCore:

Enabling async overflow scrolling by default in r243250 exposed an issue with hidden editable area detection
heuristics. Currently, an empty value for RenderLayer::selfClipRect is used to determine whether the layer
enclosing the editable element or form control is completely clipped by a parent (in other words, the clip rect
is empty). With async overflow scrolling, the enclosing layer of the editable element (as seen in the websites
affected by this bug) will now be a clipping root for painting, since it is composited. This means selfClipRect
returns a non-empty rect despite the layer being entirely clipped, which negates the heuristic.

To address this, we adjust the clipping heuristic to instead walk up the layer tree (crossing frame boundaries)
and look for enclosing ancestors with overflow clip. For each layer we find with an overflow clip, compute the
clip rect of the previous layer relative to the ancestor with overflow clip. If the clipping rect is empty, we
know that the layer is hidden.

This isn't a perfect strategy, since it may still report false negatives (reporting a layer as visible when it
is not) in some cases. One such edge case is a series of overflow hidden containers, nested in such a way that
each container is only partially clipped relative to its ancestor, but the deepest layer is completely clipped
relative to the topmost layer. However, this heuristic is relatively cheap (entailing a layer tree walk at
worst) and works for common use cases on the web without risking scenarios in which text selection that
shouldn't be suppressed ends up becoming suppressed.

Test: editing/selection/ios/hide-selection-in-textarea-with-transform.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::isTransparentOrFullyClippedRespectingParentFrames const):

LayoutTests:

Add a new layout test to exercise the scenario in which a transformed textarea is hidden inside an empty
overflow: hidden container.

* editing/selection/ios/hide-selection-in-textarea-with-transform-expected.txt: Added.
* editing/selection/ios/hide-selection-in-textarea-with-transform.html: Added.

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

4 months agoUnreviewed test gardening for imported/w3c/web-platform-tests/xhr/send-redirect-post...
achristensen@apple.com [Fri, 29 Mar 2019 20:00:58 +0000 (20:00 +0000)]
Unreviewed test gardening for imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm
https://bugs.webkit.org/show_bug.cgi?id=159724
<rdar://problem/48116418>

* TestExpectations:
* platform/ios-wk1/TestExpectations:
* platform/ios-wk2/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/mac/TestExpectations:
* platform/wpe/TestExpectations:
This test asserts on Cocoa WebKitLegacy platforms.  A patch I uploaded to https://bugs.webkit.org/show_bug.cgi?id=159724 shows why we do not intend to fix this.
This test crashes on iOS12 and Mojave because of rdar://problem/28233746
This test should not crash anywhere else, but it is flaky in WebKit and Gecko. This is being taken care of in https://github.com/w3c/web-platform-tests/issues/8191
Updated test expectations to reflect the sad state of things.

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

4 months ago[Curl] Add Server Trust Evaluation Support.
commit-queue@webkit.org [Fri, 29 Mar 2019 19:03:16 +0000 (19:03 +0000)]
[Curl] Add Server Trust Evaluation Support.
https://bugs.webkit.org/show_bug.cgi?id=191646

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2019-03-29
Reviewed by Fujii Hironori.

Source/WebCore:

Tests: http/tests/ssl/iframe-upgrade.https.html
       http/tests/ssl/mixedContent/insecure-websocket.html
       http/tests/ssl/upgrade-origin-usage.html

* platform/network/curl/AuthenticationChallenge.h:
* platform/network/curl/AuthenticationChallengeCurl.cpp:
(WebCore::AuthenticationChallenge::AuthenticationChallenge):
(WebCore::AuthenticationChallenge::protectionSpaceForPasswordBased):
(WebCore::AuthenticationChallenge::protectionSpaceForServerTrust):
(WebCore::AuthenticationChallenge::protectionSpaceFromHandle): Deleted.
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::disableServerTrustEvaluation):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::setupTransfer):
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::disableServerTrustEvaluation):

Source/WebKit:

Tests: http/tests/ssl/iframe-upgrade.https.html
       http/tests/ssl/mixedContent/insecure-websocket.html
       http/tests/ssl/upgrade-origin-usage.html

* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::curlDidFailWithError):
(WebKit::NetworkDataTaskCurl::tryServerTrustEvaluation):
(WebKit::NetworkDataTaskCurl::restartWithCredential):
* NetworkProcess/curl/NetworkDataTaskCurl.h:

Tools:

Implemented MiniBrowser UI for asking if user trusts the server.

* MiniBrowser/win/Common.cpp:
(askServerTrustEvaluation):
(replaceString):
* MiniBrowser/win/Common.h:
* MiniBrowser/win/MiniBrowserLib.rc:
* MiniBrowser/win/MiniBrowserLibResource.h:
* MiniBrowser/win/WebKitBrowserWindow.cpp:
(createPEMString):
(WebKitBrowserWindow::didReceiveAuthenticationChallenge):
(WebKitBrowserWindow::canTrustServerCertificate):
* MiniBrowser/win/WebKitBrowserWindow.h:

LayoutTests:

* platform/wincairo-wk1/TestExpectations:
* platform/wincairo/TestExpectations:

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

4 months agoPasting a table from Confluence strip of table cell content
rniwa@webkit.org [Fri, 29 Mar 2019 18:39:51 +0000 (18:39 +0000)]
Pasting a table from Confluence strip of table cell content
https://bugs.webkit.org/show_bug.cgi?id=196390

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was ultimately caused by FrameView of the document we use to sanitize the pasteboard content
having 0px by 0px dimension. This caused div with `overflow-x: auto` surrounding a table to have
the height of 0px. Because StyledMarkupAccumulator::renderedTextRespectingRange uses TextIterator
to serialize a text node and this div was an ancestor of the text node, TextIterator::handleTextNode
ended up exiting early.

Fixed the bug by giving FrameView, which is used to sanitize the content, a dimension of 800px by 600px.

Using TextIteratorIgnoresStyleVisibility is not a great alternative since removing invisible content
during paste is an important privacy feature.

Test: editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin.html

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

LayoutTests:

Added a regression test.

* editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin-expected.txt: Added.
* editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin.html: Added.

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

4 months agofast/mediastream/MediaStreamTrack-getSettings.html is a flaky failure
sroberts@apple.com [Fri, 29 Mar 2019 18:36:35 +0000 (18:36 +0000)]
fast/mediastream/MediaStreamTrack-getSettings.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196400

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations: Updating test expectations for flaky failure

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

4 months agoWebKitTestRunner crashes when running pointerevents/ios/touch-action-none-in-overflow...
commit-queue@webkit.org [Fri, 29 Mar 2019 17:44:14 +0000 (17:44 +0000)]
WebKitTestRunner crashes when running pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html
https://bugs.webkit.org/show_bug.cgi?id=196345

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

An enum used within a WTF::OptionSet needs to have only power-of-two values that are larger than 0.

* platform/TouchAction.h:
* rendering/style/StyleRareNonInheritedData.h:

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

4 months agoHTMLInputElement::setEditingValue should not fail if renderer doesn't exist
mcatanzaro@igalia.com [Fri, 29 Mar 2019 16:11:02 +0000 (16:11 +0000)]
HTMLInputElement::setEditingValue should not fail if renderer doesn't exist
https://bugs.webkit.org/show_bug.cgi?id=195708

Reviewed by Wenson Hsieh.

Source/WebCore:

HTMLInputElement::setEditingValue currently returns early if the element's renderer() is
null. This is causing the Epiphany password manager to fail to remember passwords on
https://www.geico.com/ except for navigations through page cache.

This check was originally added to avoid some assertion, but I don't know which one, and
there's definitely not any assertion hit nowadays in this case. Probably there are more
guards checking if renderer() is null elsewhere in the code nowadays, closer to where it's
really needed.

Test: fast/forms/editing-value-null-renderer.html

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::setEditingValue):

LayoutTests:

This is a copy of fast/forms/editing-value.html, except the form is not displayed. The input
value should still change.

* fast/forms/editing-value-null-renderer-expected.txt: Added.
* fast/forms/editing-value-null-renderer.html: Added.

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

4 months agoUnreviewed, rebaseline WPT test after r243638.
cdumez@apple.com [Fri, 29 Mar 2019 15:56:41 +0000 (15:56 +0000)]
Unreviewed, rebaseline WPT test after r243638.

LayoutTests/imported/w3c:

* web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/navigated-named-objects.window-expected.txt:

Source/WebCore:

* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:

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

4 months agoAll PointerEvent.isTrusted is always false.
graouts@webkit.org [Fri, 29 Mar 2019 15:54:02 +0000 (15:54 +0000)]
All PointerEvent.isTrusted is always false.
https://bugs.webkit.org/show_bug.cgi?id=196075
<rdar://problem/49158778>

Reviewed by Chris Dumez.

Source/WebCore:

Test: pointerevents/ios/pointer-events-is-trusted.html

The constructors we were using for some PointerEvent::create() methods were using initializers which are expected to be used with JS APIs
and thus generate untrusted events. We switch to using constructors using dedicated parameters which will set isTrusted to true.

* dom/PointerEvent.cpp:
(WebCore::PointerEvent::create):
(WebCore::PointerEvent::createPointerCancelEvent):
(WebCore::PointerEvent::PointerEvent):
(WebCore::m_isPrimary):
(WebCore::m_pointerType):
* dom/PointerEvent.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::cancelPointer):

LayoutTests:

Add tests to the macOS and iOS series of tests that check that isTrusted is indeed true. This uncovered a couple of issues with how some tests were written.

* pointerevents/ios/pointer-events-is-primary.html: Ensure we end both touches so that further tests run cleanly.
* pointerevents/ios/pointer-events-is-trusted-expected.txt: Added.
* pointerevents/ios/pointer-events-is-trusted.html: Added.
* pointerevents/mouse/pointer-event-basic-properties.html: Ensure we wait for the event to be handled before finishing the test.
* pointerevents/utils.js:
(prototype._handlePointerEvent):

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

4 months ago[GStreamer] imxvpudecoder detection and handling
philn@webkit.org [Fri, 29 Mar 2019 10:43:30 +0000 (10:43 +0000)]
[GStreamer] imxvpudecoder detection and handling
https://bugs.webkit.org/show_bug.cgi?id=196346

Reviewed by Xabier Rodriguez-Calvar.

When the imxvpudecoder is used, the texture sampling of the
directviv-uploaded texture returns an RGB value, so there's no need
to convert it. This patch also includes a refactoring of the
ImageRotation flag handling. The flag is now computed once only
and stored in an instance variable.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateGStreamerBase::setVideoSourceOrientation):
(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):
(WebCore::texMapFlagFromOrientation): Deleted.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:

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

4 months agoImplement ResizeObserver.
commit-queue@webkit.org [Fri, 29 Mar 2019 08:37:46 +0000 (08:37 +0000)]
Implement ResizeObserver.
https://bugs.webkit.org/show_bug.cgi?id=157743

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-03-29
Reviewed by Simon Fraser.

.:

Add ENABLE_RESIZE_OBSERVER.

* Source/cmake/WebKitFeatures.cmake:

LayoutTests/imported/w3c:

Set ResizeObserverEnabled for test runner and update expectations.

* web-platform-tests/interfaces/ResizeObserver.idl: Added.
* web-platform-tests/resize-observer/eventloop-expected.txt:
* web-platform-tests/resize-observer/eventloop.html:
* web-platform-tests/resize-observer/idlharness.window-expected.txt:
* web-platform-tests/resize-observer/idlharness.window.html:
* web-platform-tests/resize-observer/notify-expected.txt:
* web-platform-tests/resize-observer/notify.html:
* web-platform-tests/resize-observer/observe-expected.txt:
* web-platform-tests/resize-observer/observe.html:
* web-platform-tests/resize-observer/svg-expected.txt:
* web-platform-tests/resize-observer/svg.html:

Source/JavaScriptCore:

Add ENABLE_RESIZE_OBSERVER.

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Tests: resize-observer/modify-frametree-in-callback.html
       resize-observer/multi-frames.html
       resize-observer/observe-element-from-other-frame.html
       Imported from WPT by https://bugs.webkit.org/show_bug.cgi?id=193821

The data structure: Document has a ResizeObserver slot. ResizeObserver has a ResizeObservation slot.
ResizeObservation is related to one Element and the last reported size.
On the other hand, Element has a ResizeObservation slot.

At the beginning of willDisplayPage, it will check resize observations for current page if:
1. There is FrameView be layout and there are ResizeObservers in this page.
2. m_resizeObserverTimer has been started by observe() or hasSkippedResizeObservers().
During checkResizeObservations(), we'll gatherDocumentsNeedingResizeObservationCheck() first,
then notifyResizeObservers() for each document. During notifyResizeObservers(), it will gather
the m_activeObservations whose size changed and target element deeper than require depth.
The size changed shallower observations are skipped observations which will be delivered
in the next time. And an ErrorEvent will be reported.
After gathering, deliverResizeObservations create entries and invoke the callbacks with them.

The Element from other document could be observed.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/Document.cpp:
(WebCore::Document::getParserLocation const):
(WebCore::Document::addResizeObserver):
(WebCore::Document::removeResizeObserver):
(WebCore::Document::hasResizeObservers):
(WebCore::Document::gatherResizeObservations): Gather m_activeObservations at depth and return the shallowest depth.
(WebCore::Document::deliverResizeObservations): Deliver m_activeObservations, generate ResizeObserverEntries, and invoke the m_callbacks.
(WebCore::Document::hasSkippedResizeObservations const): To determine if Document has the size changed but not delivered observations.
(WebCore::Document::setHasSkippedResizeObservations):
(WebCore::Document::scheduleResizeObservations):
* dom/Document.h:
* dom/Element.cpp:
(WebCore::Element::~Element):
(WebCore::Element::disconnectFromResizeObservers):
(WebCore::Element::ensureResizeObserverData):
(WebCore::Element::resizeObserverData):
* dom/Element.h:
* dom/ElementRareData.cpp:
* dom/ElementRareData.h:
(WebCore::ElementRareData::resizeObserverData):
(WebCore::ElementRareData::setResizeObserverData):
(WebCore::ElementRareData::useTypes const):
* page/FrameView.cpp:
(WebCore::FrameView::didLayout):
* page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::layoutTimerFired): We need to start a ResizeObserver timer here, because for WK1 this might not trigger flushCompositingChanges.
* page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::willDisplayPage):
(WebCore::Page::hasResizeObservers const):
(WebCore::Page::gatherDocumentsNeedingResizeObservationCheck): Gather the documents with resize observers.
(WebCore::Page::checkResizeObservations): Gather documents then notifyResizeObservers for each document.
(WebCore::Page::scheduleResizeObservations):
(WebCore::Page::notifyResizeObservers): Gather m_activeObservations and deliver them. Report ErrorEvent if it has skipped observations.
* page/Page.h:
(WebCore::Page::setNeedsCheckResizeObservations): Page needs to check ResizeObservations if FrameView layout or m_resizeObserverTimer has been started.
(WebCore::Page::needsCheckResizeObservations const):
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::addMessage):
(WebCore::getParserLocationForConsoleMessage): Deleted.
* page/ResizeObservation.cpp: Added.
(WebCore::ResizeObservation::create):
(WebCore::ResizeObservation::ResizeObservation):
(WebCore::ResizeObservation::~ResizeObservation):
(WebCore::ResizeObservation::updateObservationSize):
(WebCore::ResizeObservation::computeObservedSize const):
(WebCore::ResizeObservation::computeTargetLocation const):
(WebCore::ResizeObservation::computeContentRect const):
(WebCore::ResizeObservation::elementSizeChanged const):
(WebCore::ResizeObservation::targetElementDepth const):
* page/ResizeObservation.h: Copied from Tools/DumpRenderTree/TestOptions.h.
(WebCore::ResizeObservation::target const):
* page/ResizeObserver.cpp: Added.
(WebCore::ResizeObserver::create):
(WebCore::ResizeObserver::ResizeObserver):
(WebCore::ResizeObserver::~ResizeObserver):
(WebCore::ResizeObserver::scheduleObservations):
(WebCore::ResizeObserver::observe):
(WebCore::ResizeObserver::unobserve):
(WebCore::ResizeObserver::disconnect):
(WebCore::ResizeObserver::targetDestroyed):
(WebCore::ResizeObserver::gatherObservations):
(WebCore::ResizeObserver::deliverObservations):
(WebCore::ResizeObserver::removeTarget):
(WebCore::ResizeObserver::removeAllTargets):
(WebCore::ResizeObserver::removeObservation):
(WebCore::ResizeObserver::hasPendingActivity const):
(WebCore::ResizeObserver::activeDOMObjectName const):
(WebCore::ResizeObserver::canSuspendForDocumentSuspension const):
(WebCore::ResizeObserver::stop):
* page/ResizeObserver.h: Added.
(WebCore::ResizeObserver::hasObservations const):
(WebCore::ResizeObserver::hasActiveObservations const):
(WebCore::ResizeObserver::maxElementDepth):
(WebCore::ResizeObserver::hasSkippedObservations const):
(WebCore::ResizeObserver::setHasSkippedObservations):
* page/ResizeObserver.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
* page/ResizeObserverCallback.h: Copied from Tools/DumpRenderTree/TestOptions.h.
* page/ResizeObserverCallback.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
* page/ResizeObserverEntry.h: Copied from Tools/DumpRenderTree/TestOptions.h.
(WebCore::ResizeObserverEntry::create):
(WebCore::ResizeObserverEntry::target const):
(WebCore::ResizeObserverEntry::contentRect const):
(WebCore::ResizeObserverEntry::ResizeObserverEntry):
* page/ResizeObserverEntry.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
* page/Settings.yaml:

Source/WebCore/PAL:

Add ENABLE_RESIZE_OBSERVER.

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

Add WebPreferences and FeatureDefines for ResizeObserver.

* Configurations/FeatureDefines.xcconfig:
* Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences resizeObserverEnabled]):
(-[WebPreferences setResizeObserverEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
(-[WebView _flushCompositingChanges]): checkResizeObservations() in the begining.

Source/WebKitLegacy/win:

* Interfaces/IWebPreferencesPrivate.idl:
* WebPreferenceKeysPrivate.h:
* WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings):
(WebPreferences::resizeObserverEnabled):
(WebPreferences::setResizeObserverEnabled):
* WebPreferences.h:
* WebView.cpp:
(WebView::notifyPreferencesChanged):

Tools:

Support resizeObserverEnabled webPreferences.

* DumpRenderTree/TestOptions.cpp:
(TestOptions::TestOptions):
* DumpRenderTree/TestOptions.h:
* DumpRenderTree/mac/DumpRenderTree.mm:
(setWebPreferencesForTestOptions):
* DumpRenderTree/win/DumpRenderTree.cpp:
(enableExperimentalFeatures):
* Scripts/webkitperl/FeatureList.pm:
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

Add tests for resize-observer of multiframe.

* resize-observer/modify-frametree-in-callback-expected.txt: Added.
* resize-observer/modify-frametree-in-callback.html: Added.
* resize-observer/multi-frames-expected.txt: Added.
* resize-observer/multi-frames.html: Added.
* resize-observer/observe-element-from-other-frame-expected.txt: Added.
* resize-observer/observe-element-from-other-frame.html: Added.
* resize-observer/resources/frame1.html: Added.
* resize-observer/resources/frame2.html: Added.
* resize-observer/resources/frame3.html: Added.
* resize-observer/resources/frame4.html: Added.
* resize-observer/resources/frameset1.html: Added.
* resize-observer/resources/frameset2.html: Added.
* resize-observer/resources/iframe1.html: Added.
* resize-observer/resources/resizeTestHelper.js: Added.
(ResizeTestHelper):
(ResizeTestHelper.prototype.get _currentStep):
(ResizeTestHelper.prototype._nextStep):
(ResizeTestHelper.prototype._handleNotification):
(ResizeTestHelper.prototype._handleTimeout):
(ResizeTestHelper.prototype._done):
(ResizeTestHelper.prototype.start):
(ResizeTestHelper.prototype.get rafCount):
(ResizeTestHelper.prototype._incrementRaf):
(ResizeTestHelper.prototype.startCountingRaf):

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

4 months ago[YARR] Precompute BMP / non-BMP status when constructing character classes
msaboff@apple.com [Fri, 29 Mar 2019 06:05:55 +0000 (06:05 +0000)]
[YARR] Precompute BMP / non-BMP status when constructing character classes
https://bugs.webkit.org/show_bug.cgi?id=196296

Reviewed by Keith Miller.

Changed CharacterClass::m_hasNonBMPCharacters into a character width bit field which
indicateis if the class includes characters from either BMP, non-BMP or both ranges.
This allows the recognizing code to eliminate checks for the width of a matched
characters when the class has only one width.  The character width is needed to
determine if we advance 1 or 2 character.  Also, the pre-computed width of character
classes that contains either all BMP or all non-BMP characters allows the parser to
use fixed widths for terms using those character classes.  Changed both the code gen
scripts and Yarr compiler to compute this bit field during the construction of
character classes.

For JIT'ed code of character classes that contain either all BMP or all non-BMP
characters, we can eliminate the generic check we were doing do compute how much
to advance after sucessfully matching a character in the class.

        Generic isBMP check      BMP only            non-BMP only
        --------------           --------------      --------------
        inc %r9d                 inc %r9d            add $0x2, %r9d
        cmp $0x10000, %eax
        jl isBMP
        cmp %edx, %esi
        jz atEndOfString
        inc %r9d
        inc %esi
 isBMP:

For character classes that contained non-BMP characters, we were always generating
the code in the left column.  The middle column is the code we generate for character
classes that contain only BMP characters.  The right column is the code we now
generate if the character class has only non-BMP characters.  In the fix width cases,
we can eliminate both the isBMP check as well as the atEndOfString check.  The
atEndOfstring check is eliminated since we know how many characters this character
class requires and that check can be factored out to the beginning of the current
alternative.  For character classes that contain both BMP and non-BMP characters,
we still generate the generic left column.

This change is a ~8% perf progression on UniPoker and a ~2% improvement on RexBench
as a whole.

* runtime/RegExp.cpp:
(JSC::RegExp::matchCompareWithInterpreter):
* runtime/RegExpInlines.h:
(JSC::RegExp::matchInline):
* yarr/YarrInterpreter.cpp:
(JSC::Yarr::Interpreter::checkCharacterClassDontAdvanceInputForNonBMP):
(JSC::Yarr::Interpreter::matchCharacterClass):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::optimizeAlternative):
(JSC::Yarr::YarrGenerator::matchCharacterClass):
(JSC::Yarr::YarrGenerator::advanceIndexAfterCharacterClassTermMatch):
(JSC::Yarr::YarrGenerator::tryReadUnicodeCharImpl):
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
* yarr/YarrPattern.cpp:
(JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
(JSC::Yarr::CharacterClassConstructor::reset):
(JSC::Yarr::CharacterClassConstructor::charClass):
(JSC::Yarr::CharacterClassConstructor::addSorted):
(JSC::Yarr::CharacterClassConstructor::addSortedRange):
(JSC::Yarr::CharacterClassConstructor::hasNonBMPCharacters):
(JSC::Yarr::CharacterClassConstructor::characterWidths):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::anycharCreate):
* yarr/YarrPattern.h:
(JSC::Yarr::operator|):
(JSC::Yarr::operator&):
(JSC::Yarr::operator|=):
(JSC::Yarr::CharacterClass::CharacterClass):
(JSC::Yarr::CharacterClass::hasNonBMPCharacters):
(JSC::Yarr::CharacterClass::hasOneCharacterSize):
(JSC::Yarr::CharacterClass::hasOnlyNonBMPCharacters):
(JSC::Yarr::PatternTerm::invert const):
(JSC::Yarr::PatternTerm::invert): Deleted.
* yarr/create_regex_tables:
* yarr/generateYarrUnicodePropertyTables.py:

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

4 months agoUnreviewed build fix.
Hironori.Fujii@sony.com [Fri, 29 Mar 2019 05:18:47 +0000 (05:18 +0000)]
Unreviewed build fix.

* wtf/CMakeLists.txt: Added SpanningTree.h to WTF_PUBLIC_HEADERS.

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

4 months agoCFDictionary encoder crashes on non-string keys.
timothy@apple.com [Fri, 29 Mar 2019 04:57:11 +0000 (04:57 +0000)]
CFDictionary encoder crashes on non-string keys.
https://bugs.webkit.org/show_bug.cgi?id=196388
rdar://problem/49339242

Reviewed by Ryosuke Niwa.

Allow non-string keys in CFDictionary encoding/decoding. Encode the correct
size for dictionaries and arrays when unknown keys or values are skipped.
Allow null array encoding and decoding like dictionary already allowed.

* Shared/cf/ArgumentCodersCF.cpp:
(IPC::encode):
(IPC::decode):

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

4 months agoBackwardsGraph needs to consider back edges as the backward's root successor
sbarati@apple.com [Fri, 29 Mar 2019 04:42:42 +0000 (04:42 +0000)]
BackwardsGraph needs to consider back edges as the backward's root successor
https://bugs.webkit.org/show_bug.cgi?id=195991

Reviewed by Filip Pizlo.

JSTests:

* stress/map-b3-licm-infinite-loop.js: Added.

Source/JavaScriptCore:

* b3/testb3.cpp:
(JSC::B3::testInfiniteLoopDoesntCauseBadHoisting):
(JSC::B3::run):

Source/WTF:

Previously, our backwards graph analysis was slightly wrong. The idea of
backwards graph is that the root of the graph has edges to terminals in
the original graph. And then the original directed edges in the graph are flipped.

However, we weren't considering loops as a form of terminality. For example,
we wouldn't consider an infinite loop as a terminal. So there were no edges
from the root to a node in the infinite loop. This lead us to make mistakes
when we used backwards dominators to compute control flow equivalence.

This is better understood in an example:

```
preheader:
while (1) {
    if (!isCell(v))
        continue;
    load structure ID
    if (cond)
       continue;
    return
}
```

In the previous version of this algorithm, the only edge from the backwards
root would be to the block containing the return. This would lead us to
believe that the loading of the structureID backwards dominates the preheader,
leading us to believe it's control flow equivalent to preheader. This is
obviously wrong, since we can loop forever if "v" isn't a cell.

The solution here is to treat any backedge in the graph as a "terminal" node.
Since a backedge implies the existence of a loop.

In the above example, the backwards root now has an edge to both blocks with
"continue". This prevents us from falsely claiming that the return is control
flow equivalent with the preheader.

This patch uses DFS spanning trees to compute back edges. An edge
u->v is a back edge when u is a descendent of v in the DFS spanning
tree of the Graph.

* WTF.xcodeproj/project.pbxproj:
* wtf/BackwardsGraph.h:
(WTF::BackwardsGraph::BackwardsGraph):
* wtf/SpanningTree.h: Added.
(SpanningTree::SpanningTree):
(SpanningTree::isDescendent):

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

4 months agoSupport <object>.contentWindow
cdumez@apple.com [Fri, 29 Mar 2019 02:34:56 +0000 (02:34 +0000)]
Support <object>.contentWindow
https://bugs.webkit.org/show_bug.cgi?id=195562

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing or failing later on.

* web-platform-tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-03-expected.txt:
* web-platform-tests/html/dom/interfaces-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-object-element/object-attributes-expected.txt:

Source/WebCore:

Support <object>.contentWindow as per:
- https://html.spec.whatwg.org/multipage/iframe-embed-object.html#dom-object-contentwindow

No new tests, updated / rebaselined existing tests.

* html/HTMLObjectElement.idl:

LayoutTests:

Update existing test to extend test coverage.

* fast/dom/HTMLObjectElement/object-as-frame-expected.txt:
* fast/dom/HTMLObjectElement/object-as-frame.html:

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

4 months agoFontFace constructor throws an exception when there is a name which starts with a...
mmaxfield@apple.com [Fri, 29 Mar 2019 02:26:47 +0000 (02:26 +0000)]
FontFace constructor throws an exception when there is a name which starts with a number
https://bugs.webkit.org/show_bug.cgi?id=196232
<rdar://problem/49293978>

Reviewed by Ryosuke Niwa.

Source/WebCore:

We were technically following the spec, but Chrome and Firefox are both consistent and it was making a website break.
This is just a short-term fix until the underlying https://bugs.webkit.org/show_bug.cgi?id=196381 is fixed.

Test: fast/text/font-face-family.html

* css/FontFace.cpp:
(WebCore::FontFace::setFamily):

LayoutTests:

* fast/text/font-face-family-expected.txt: Added.
* fast/text/font-face-family.html: Added.

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

4 months ago[Web GPU] Replace 'unsigned long' with 'unsigned' when implementing u32 variables
justin_fan@apple.com [Fri, 29 Mar 2019 02:19:37 +0000 (02:19 +0000)]
[Web GPU] Replace 'unsigned long' with 'unsigned' when implementing u32 variables
https://bugs.webkit.org/show_bug.cgi?id=194618
<rdar://problem/48055796>

Reviewed by Myles C. Maxfield.

WebIDL for "unsigned" on 64-bit is "unsigned long". Update Web GPU to match.

No new tests; no change in behavior.

* Modules/webgpu/GPUBindGroupLayoutBinding.h:
* Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.cpp:
(WebCore::WHLSL::Metal::calculateVertexBufferIndex):
* Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.h:
* Modules/webgpu/WebGPUBindGroupBinding.h:
* Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
(WebCore::validateBufferBindingType):
(WebCore::WebGPUBindGroupDescriptor::tryCreateGPUBindGroupDescriptor const):
* Modules/webgpu/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::setSubData):
* Modules/webgpu/WebGPUBuffer.h:
* Modules/webgpu/WebGPUBufferBinding.h:
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
(WebCore::WebGPURenderPassEncoder::draw):
* Modules/webgpu/WebGPURenderPassEncoder.h:
* platform/graphics/gpu/GPUBindGroupBinding.h:
* platform/graphics/gpu/GPUBindGroupLayout.h:
* platform/graphics/gpu/GPUBufferBinding.h:
* platform/graphics/gpu/GPUExtent3D.h:
* platform/graphics/gpu/GPULimits.h:
* platform/graphics/gpu/GPURenderPassEncoder.h:
* platform/graphics/gpu/GPUTextureDescriptor.h:
* platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
(WebCore::GPUBindGroupLayout::tryCreate):
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::GPUBindGroup::tryCreate):
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setVertexBuffers):
(WebCore::GPURenderPassEncoder::draw):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetInputStateForPipelineDescriptor):
* platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
(WebCore::storageModeForPixelFormatAndSampleCount):

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

4 months agogetBoundingClientRect always returns empty rect on a collapsed range
rniwa@webkit.org [Fri, 29 Mar 2019 01:56:51 +0000 (01:56 +0000)]
getBoundingClientRect always returns empty rect on a collapsed range
https://bugs.webkit.org/show_bug.cgi?id=196380

Reviewed by Wenson Hsieh.

Source/WebCore:

The bug was caused by Range::boundingRect merging rects via FloatRect::unite which ignores empty rects.
Use uniteIfNonZero instead to fix the bug. Note that we can't use uniteEvenIfEmpty because that would
set x, y to always 0, 0 as we would end up merging any rect with the initial empty rect.

Test: fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range.html

* dom/Range.cpp:
(WebCore::Range::boundingRect const):

LayoutTests:

Added a regression test.

* fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range-expected.txt: Added.
* fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range.html: Added.

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

4 months agoRe-sync web-platform-tests/html/browsers/the-window-object/ from upstream
cdumez@apple.com [Fri, 29 Mar 2019 01:43:31 +0000 (01:43 +0000)]
Re-sync web-platform-tests/html/browsers/the-window-object/ from upstream
https://bugs.webkit.org/show_bug.cgi?id=196379

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Re-sync web-platform-tests/html/browsers/the-window-object/ from upstream 3bfdeb8976fc.

* web-platform-tests/html/browsers/the-window-object/*: Updated.

LayoutTests:

* tests-options.json:

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

4 months agoOpcode.h(159,27): warning: adding 'unsigned int' to a string does not append to the...
Hironori.Fujii@sony.com [Fri, 29 Mar 2019 01:29:27 +0000 (01:29 +0000)]
Opcode.h(159,27): warning: adding 'unsigned int' to a string does not append to the string [-Wstring-plus-int]
https://bugs.webkit.org/show_bug.cgi?id=196343

Reviewed by Saam Barati.

Clang reports a compilation warning and recommend '&PADDING_STRING[PADDING_STRING_LENGTH]'
instead of 'PADDING_STRING + PADDING_STRING_LENGTH'.

* bytecode/Opcode.cpp:
(JSC::padOpcodeName): Moved padOpcodeName from Opcode.h because
this function is used only in Opcode.cpp. Changed macros
PADDING_STRING and PADDING_STRING_LENGTH to simple variables.
(JSC::compareOpcodePairIndices): Replaced pair with std::pair.
* bytecode/Opcode.h:
(JSC::padOpcodeName): Moved.

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

4 months agoResource Load Statistics: IPC to the WebsiteDataStore in the UI process from NetworkP...
wilander@apple.com [Fri, 29 Mar 2019 01:15:59 +0000 (01:15 +0000)]
Resource Load Statistics: IPC to the WebsiteDataStore in the UI process from NetworkProcess::deleteWebsiteDataForRegistrableDomains()
https://bugs.webkit.org/show_bug.cgi?id=196281
<rdar://problem/48938748>

Reviewed by Alex Christensen.

Source/WebKit:

The move of Resource Load Statistics to the network process requires that it
calls the UI process when clearing website data (previously the other way
around). This patch achieves that.

Specifically, NetworkProcess::deleteWebsiteDataForRegistrableDomains() now
filters its WebsiteDataTypes down to just the ones applicable for the UI
process and then calls DeleteWebsiteDataInUIProcessForRegistrableDomains over
IPC.

NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains() on
the UI process side makes use of the re-introduced
WebsiteDataStore::fetchDataForRegistrableDomains() function to get the relevant
data records and call WebsiteDataStore::removeData(). The re-introduced
WebsiteDataStore::fetchDataForRegistrableDomains() was removed as dead code in
https://trac.webkit.org/changeset/242056/webkit, then under the name
WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains(). The reason it
was dead code was the lack of IPC call that this patch adds.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
   Now calls DeleteWebsiteDataInUIProcessForRegistrableDomains over IPC if there
   are WebsiteDataTypes applicable to the UI process.
* NetworkProcess/NetworkProcess.h:
* Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::ownerProcess):
(WebKit::WebsiteData::filter):
    Convenience functions to manage process ownership of website data types.
* Shared/WebsiteData/WebsiteData.h:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsHasLocalStorage):
    Test infrastructure, called by the TestRunner.
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains):
    New function to be called from the network process.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::matches const):
    Now matches with WebCore::RegistrableDomain instead of a string.
(WebKit::WebsiteDataRecord::matchesTopPrivatelyControlledDomain const): Deleted.
    Replaced by WebsiteDataRecord::matches().
* UIProcess/WebsiteData/WebsiteDataRecord.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataForRegistrableDomains):
    Re-introduced. It was removed as dead code in r242056.
(WebKit::computeNetworkProcessAccessTypeForDataRemoval):
(WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
    Test infrastructure, called by the TestRunner.
* UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

This patch adds the function isStatisticsHasLocalStorage() to the
TestRunner. With it, the page can query the WebsiteDataStore in the
UI process to make sure that it sees LocalStorage.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::isStatisticsHasLocalStorage):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::isStatisticsHasLocalStorage):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

This test now covers LocalStorage too.

* http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt:
* http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html:

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

4 months agoAPI::Data::createWithoutCopying should do a null check before calling CFRelease
jiewen_tan@apple.com [Thu, 28 Mar 2019 23:47:00 +0000 (23:47 +0000)]
API::Data::createWithoutCopying should do a null check before calling CFRelease
https://bugs.webkit.org/show_bug.cgi?id=196276
<rdar://problem/48059859>

Reviewed by Alex Christensen.

Source/WebKit:

* Shared/Cocoa/APIDataCocoa.mm:
(API::Data::createWithoutCopying):

Tools:

Add an API test that will pass a nil to API::Data::createWithoutCopying via NavigationState::NavigationClient::webCryptoMasterKey.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/navigation-client-default-crypto.html:
* TestWebKitAPI/Tests/WebKitCocoa/WebCryptoMasterKey.mm: Added.
(-[WebCryptoMasterKeyNavigationDelegate _webCryptoMasterKeyForWebView:]):
(-[WebCryptoMasterKeyNavigationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TestWebKitAPI::TEST):

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

4 months ago[iOS] Automatic focus of input field is flaky
pvollan@apple.com [Thu, 28 Mar 2019 23:30:52 +0000 (23:30 +0000)]
[iOS] Automatic focus of input field is flaky
https://bugs.webkit.org/show_bug.cgi?id=196302

Reviewed by Brent Fulgham.

Sometimes the status of whether a keyboard is connected can be incorrect, both in the UI process, and in
the WebContent process. Fix this by sending the keyboard status to the WebContent process as part of the
Web page creation parameters. Stop caching the keyboard status in the Web process proxy, and call
[UIKeyboard isInHardwareKeyboardMode] instead, since this method is swizzled in the test harness.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(hardwareKeyboardAvailabilityChangedCallback):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::setKeyboardIsAttached): Deleted.
(WebKit::WebProcessProxy::keyboardIsAttached const): Deleted.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::isInHardwareKeyboardMode):
(WebKit::WebPageProxy::applicationWillEnterForeground):
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:

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

4 months agoThe following layout tests are flaky failures
sroberts@apple.com [Thu, 28 Mar 2019 23:11:43 +0000 (23:11 +0000)]
The following layout tests are flaky failures
http/wpt/webauthn/public-key-credential-get-success-hid.https.html
http/wpt/webauthn/public-key-credential-create-success-hid.https.html
https://bugs.webkit.org/show_bug.cgi?id=194780
https://bugs.webkit.org/show_bug.cgi?id=196377

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations: Updating test expectations for flaky failures

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

4 months agostorage/domstorage/localstorage/private-browsing-affects-storage.html is a flaky...
sroberts@apple.com [Thu, 28 Mar 2019 22:32:27 +0000 (22:32 +0000)]
storage/domstorage/localstorage/private-browsing-affects-storage.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196376

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations: Updating test expectations for flaky failure

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

4 months ago[Web GPU] Prototype compute pipeline with MSL
justin_fan@apple.com [Thu, 28 Mar 2019 22:13:22 +0000 (22:13 +0000)]
[Web GPU] Prototype compute pipeline with MSL
https://bugs.webkit.org/show_bug.cgi?id=196107
<rdar://problem/46289650>

Reviewed by Myles Maxfield.

Source/WebCore:

Add GPUComputePassEncoder, GPUComputePipeline, and GPUComputePipelineDescriptor.
Implement everything needed to prototype a compute pipeline in Web GPU using Metal shaders and bound resources.

Test: webgpu/compute-squares.html

Add files and symbols:
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:

Misc fixes:
* Modules/webgpu/WHLSL/WHLSLNameResolver.h: Missing include.
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Missing include.
* Modules/webgpu/WebGPUPipelineStageDescriptor.cpp: Added. Move pipeline stage validation logic here.
(WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const):
* Modules/webgpu/WebGPURenderPipeline.cpp: Remove unnecessary include.
* Modules/webgpu/WebGPURenderPipeline.h:
* Modules/webgpu/WebGPURenderPipelineDescriptor.cpp: Add missing inlcude.
(WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const): Moved to WebGPUPipelineStageDescriptor.cpp.
* platform/graphics/gpu/GPUPipelineDescriptorBase.h: Add missing include.
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Add missing include.
(WebCore::GPURenderPipeline::GPURenderPipeline): Remove unecessary ref of GPUPipelineLayout.
* platform/text/mac/TextEncodingRegistryMac.mm: Carbon.h was causing ambiguous reference build errors in this file.

Enable creating a GPUComputePassEncoder from a GPUCommandEncoder:
* Modules/webgpu/WebGPUCommandEncoder.cpp:
(WebCore::WebGPUCommandEncoder::beginRenderPass): No longer passing this WebGPUCommandEncoder to pass encoders.
(WebCore::WebGPUCommandEncoder::beginComputePass): Added.
* Modules/webgpu/WebGPUCommandEncoder.h:
* Modules/webgpu/WebGPUCommandEncoder.idl:

Add GPUComputePassEncoder:
* Modules/webgpu/WebGPUComputePassEncoder.cpp: Added.
(WebCore::WebGPUComputePassEncoder::create):
(WebCore::WebGPUComputePassEncoder::WebGPUComputePassEncoder):
(WebCore::WebGPUComputePassEncoder::setPipeline):
(WebCore::WebGPUComputePassEncoder::dispatch):
(WebCore::WebGPUComputePassEncoder::passEncoder):
(WebCore::WebGPUComputePassEncoder::passEncoder const):
* Modules/webgpu/WebGPUComputePassEncoder.h: Added.
* Modules/webgpu/WebGPUComputePassEncoder.idl: Added.
* platform/graphics/gpu/GPUComputePassEncoder.h: Added.
(WebCore::GPUComputePassEncoder::~GPUComputePassEncoder):
* platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm: Added.
(WebCore::GPUComputePassEncoder::tryCreate):
(WebCore::GPUComputePassEncoder::GPUComputePassEncoder):
(WebCore::GPUComputePassEncoder::setPipeline):
(WebCore::GPUComputePassEncoder::dispatch): Use a default calculation for threadsPerThreadgroup while MSL is still an accepted shader format.
(WebCore::GPUComputePassEncoder::platformPassEncoder const):
(WebCore::GPUComputePassEncoder::useResource):
(WebCore::GPUComputePassEncoder::setComputeBuffer):

Add GPUComputePipeline:
* Modules/webgpu/WebGPUComputePipeline.cpp: Added.
(WebCore::WebGPUComputePipeline::create):
(WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
* Modules/webgpu/WebGPUComputePipeline.h: Added.
(WebCore::WebGPUComputePipeline::computePipeline const):
* Modules/webgpu/WebGPUComputePipeline.idl: Added.
* Modules/webgpu/WebGPUComputePipelineDescriptor.cpp: Added.
(WebCore::WebGPUComputePipelineDescriptor::tryCreateGPUComputePipelineDescriptor const):
* Modules/webgpu/WebGPUComputePipelineDescriptor.h: Added.
* Modules/webgpu/WebGPUComputePipelineDescriptor.idl: Added.
* platform/graphics/gpu/GPUComputePipeline.h: Added.
(WebCore::GPUComputePipeline::platformComputePipeline const):
* platform/graphics/gpu/GPUComputePipelineDescriptor.h: Added.
(WebCore::GPUComputePipelineDescriptor::GPUComputePipelineDescriptor):
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm: Added.
(WebCore::tryCreateMtlComputeFunction):
(WebCore::tryCreateMTLComputePipelineState):
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):

Enable creating a GPUComputePipeline from a GPUDevice:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createComputePipeline const):
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.idl:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateComputePipeline const):
* platform/graphics/gpu/GPUDevice.h:

No longer unnecessarily ref the WebGPUCommandEncoder when creating pass encoder:
* Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup):
(WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder): Deleted.
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Deleted.
* Modules/webgpu/WebGPUProgrammablePassEncoder.h:
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::create):
(WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
(WebCore::WebGPURenderPassEncoder::setPipeline):
(WebCore::WebGPURenderPassEncoder::passEncoder):
(WebCore::WebGPURenderPassEncoder::passEncoder const):
* Modules/webgpu/WebGPURenderPassEncoder.h:

Updates to GPUBindGroup and *setBindGroup for compute function arguments:
* platform/graphics/gpu/GPUBindGroup.h:
(WebCore::GPUBindGroup::vertexArgsBuffer const):
(WebCore::GPUBindGroup::fragmentArgsBuffer const):
(WebCore::GPUBindGroup::computeArgsBuffer const):
(WebCore::GPUBindGroup::vertexArgsBuffer): Deleted. Const-qualified.
(WebCore::GPUBindGroup::fragmentArgsBuffer): Ditto.
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::tryGetResourceAsMTLSamplerState): Now just returns the MTLSamplerState to reduce reference churning.
(WebCore::GPUBindGroup::tryCreate):
(WebCore::GPUBindGroup::GPUBindGroup):
(WebCore::tryGetResourceAsSampler): Renamed to tryGetResourceAsMTLSamplerState.

Updates to GPUProgrammablePassEncoder and GPURenderPassEncoder:
* platform/graphics/gpu/GPUProgrammablePassEncoder.h:
(WebCore::GPUProgrammablePassEncoder::setVertexBuffer):
(WebCore::GPUProgrammablePassEncoder::setFragmentBuffer):
(WebCore::GPUProgrammablePassEncoder::setComputeBuffer): Added.
* platform/graphics/gpu/GPURenderPassEncoder.h:
(WebCore::GPURenderPassEncoder::~GPURenderPassEncoder):
* platform/graphics/gpu/GPURenderPipeline.h:
* platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Remove unecessary include.
(WebCore::GPUProgrammablePassEncoder::endPass): No longer virtual. Delegates shared behavior for derived classes.
(WebCore::GPUProgrammablePassEncoder::setBindGroup):
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::platformPassEncoder const):
(WebCore::GPURenderPassEncoder::setPipeline):
(WebCore::GPURenderPassEncoder::draw):
(WebCore::GPURenderPassEncoder::useResource): These private overrides are called only by base after checking for encoder existence.
(WebCore::GPURenderPassEncoder::setVertexBuffer): Ditto.
(WebCore::GPURenderPassEncoder::setFragmentBuffer): Ditto.
(WebCore::GPURenderPassEncoder::endPass): Deleted. Now handled by base class.

LayoutTests:

Add a basic test to create, execute, and verify the results of a Web GPU compute pipeline.

* webgpu/compute-squares-expected.txt: Added.
* webgpu/compute-squares.html: Added.
* webgpu/whlsl.html: Update some function names to match API changes.

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

4 months agoCodeBlock::jettison() should disallow repatching its own calls
tzagallo@apple.com [Thu, 28 Mar 2019 22:05:34 +0000 (22:05 +0000)]
CodeBlock::jettison() should disallow repatching its own calls
https://bugs.webkit.org/show_bug.cgi?id=196359
<rdar://problem/48973663>

Reviewed by Saam Barati.

JSTests:

* stress/call-link-info-osrexit-repatch.js: Added.
(foo):

Source/JavaScriptCore:

CodeBlock::jettison() calls CommonData::invalidate, which replaces the `hlt`
instruction with the jump to OSR exit. However, if the `hlt` was immediately
followed by a call to the CodeBlock being jettisoned, we would write over the
OSR exit address while unlinking all the incoming CallLinkInfos later in
CodeBlock::jettison().

Change it so that we set a flag, `clearedByJettison`, in all the CallLinkInfos
owned by the CodeBlock being jettisoned. If the flag is set, we will avoid
repatching the call during unlinking. This is safe because this call will never
be reachable again after the CodeBlock is jettisoned.

* bytecode/CallLinkInfo.cpp:
(JSC::CallLinkInfo::CallLinkInfo):
(JSC::CallLinkInfo::setCallee):
(JSC::CallLinkInfo::clearCallee):
(JSC::CallLinkInfo::setCodeBlock):
(JSC::CallLinkInfo::clearCodeBlock):
* bytecode/CallLinkInfo.h:
(JSC::CallLinkInfo::clearedByJettison):
(JSC::CallLinkInfo::setClearedByJettison):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::jettison):
* jit/Repatch.cpp:
(JSC::revertCall):

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

4 months agoFixed typing error I made in https://trac.webkit.org/changeset/243612/webkit
sroberts@apple.com [Thu, 28 Mar 2019 22:03:40 +0000 (22:03 +0000)]
Fixed typing error I made in https://trac.webkit.org/changeset/243612/webkit
https://bugs.webkit.org/show_bug.cgi?id=196357

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations: Fixing error in test expectations file

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

4 months ago[JSC] imports-oom.js intermittently fails
ysuzuki@apple.com [Thu, 28 Mar 2019 21:45:53 +0000 (21:45 +0000)]
[JSC] imports-oom.js intermittently fails
https://bugs.webkit.org/show_bug.cgi?id=196373

Reviewed by Saam Barati.

imports-oom.js ensures that a wasm module compilation / instantiation throws an OOM error instead of crashing when compiling / instantiating their entry points
with extremely low executable memory amount. And this test expects we at least once successfully compile, instantiate, and execute a wasm module to test that
wasm implementation is always throwing an OOM error. However, maybe due to wasm changes, the amount of executable memory consumed by wasm compilation is changed,
and now we may encounter an OOM error at the first compilation. Since imports-oom.js randomize the amount of executable memory used by the generated wasm module,
imports-oom.js intermittently fails when it first generates large wasm module which cannot be compiled.

This patch reduces the maxParams from 32 to 8 to reduce the size of randomly generated wasm module. Since we repeatedly generate wasm modules, this test soon encounter
an expected OOM error. But this avoids the situation that we get an OOM error when we compile a first wasm module.

* wasm/lowExecutableMemory/imports-oom.js:

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

4 months agoFix font family for WebKit.org
jond@apple.com [Thu, 28 Mar 2019 21:30:41 +0000 (21:30 +0000)]
Fix font family for WebKit.org
https://bugs.webkit.org/show_bug.cgi?id=196311

Reviewed by Myles C. Maxfield.

* wp-content/themes/webkit/header.php: Added SF Mono loading
* wp-content/themes/webkit/style.css:
(html): Use Text font by default
(h1,): Use Display font for large headings
(.nextrouter-copy): Use Display font for routers

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

4 months agoIDBRequest::dispatchEvent should check nullability of m_transaction before operations...
jiewen_tan@apple.com [Thu, 28 Mar 2019 21:26:38 +0000 (21:26 +0000)]
IDBRequest::dispatchEvent should check nullability of m_transaction before operations that rely on it to be non null
https://bugs.webkit.org/show_bug.cgi?id=196319
<rdar://problem/49355279>

Reviewed by Alex Christensen.

The test that triggers this crash is on Bug 196276.

* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::dispatchEvent):

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

4 months agoDebug assert in DOMSelection::containsNode when node belongs to a different tree
rniwa@webkit.org [Thu, 28 Mar 2019 21:23:49 +0000 (21:23 +0000)]
Debug assert in DOMSelection::containsNode when node belongs to a different tree
https://bugs.webkit.org/show_bug.cgi?id=196342

Reviewed by Antti Koivisto.

Source/WebCore:

The assertion was wrong. It's possible for Range::compareBoundaryPoints to return WRONG_DOCUMENT_ERR
when the node and the start container belong to two different trees.

Return false in such a case for now since it's unclear (unspecified) what these methods on Selection
should do with respect to shadow trees, preserving the current behavior of release builds.

Test: editing/selection/containsNode-with-no-common-ancestor.html

* page/DOMSelection.cpp:
(WebCore::DOMSelection::containsNode const):

LayoutTests:

Added a regression test to catch the debug assertion failure. The test always passed in release builds.

* editing/selection/containsNode-with-no-common-ancestor-expected.txt: Added.
* editing/selection/containsNode-with-no-common-ancestor.html: Added.

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

4 months agoUnreviewed, rebaseline web-platform-tests/html/dom/interfaces.html
cdumez@apple.com [Thu, 28 Mar 2019 21:23:05 +0000 (21:23 +0000)]
Unreviewed, rebaseline web-platform-tests/html/dom/interfaces.html

* web-platform-tests/html/dom/interfaces-expected.txt:

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

4 months agoUn-fix the build
timothy_horton@apple.com [Thu, 28 Mar 2019 20:03:34 +0000 (20:03 +0000)]
Un-fix the build

* wtf/Platform.h:
It is no longer necessary to exclude this from PLATFORM(IOSMAC).

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

4 months agoFix the build.
timothy_horton@apple.com [Thu, 28 Mar 2019 20:00:36 +0000 (20:00 +0000)]
Fix the build.

* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant showImageSheet]):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView actionSheetAssistant:showCustomSheetForElement:]):

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

4 months ago[JSC] Drop VM and Context cache map in JavaScriptCore.framework
ysuzuki@apple.com [Thu, 28 Mar 2019 19:37:58 +0000 (19:37 +0000)]
[JSC] Drop VM and Context cache map in JavaScriptCore.framework
https://bugs.webkit.org/show_bug.cgi?id=196341

Reviewed by Saam Barati.

Previously, we created Objective-C weak map to maintain JSVirtualMachine and JSContext wrappers corresponding to VM and JSGlobalObject.
But Objective-C weak map is really memory costly. Even if the entry is only one, it consumes 2.5KB per weak map. Since we can modify
JSC intrusively for JavaScriptCore.framework (and we already did it, like, holding JSWrapperMap in JSGlobalObject), we can just hold
a pointer to a wrapper in VM and JSGlobalObject.

This patch adds void* members to VM and JSGlobalObject, which holds a non-strong reference to a wrapper. When a wrapper is gone, we
clear this pointer too. This removes unnecessary two Objective-C weak maps, and save 5KB.

* API/JSContext.mm:
(-[JSContext initWithVirtualMachine:]):
(-[JSContext dealloc]):
(-[JSContext initWithGlobalContextRef:]):
(-[JSContext wrapperMap]):
(+[JSContext contextWithJSGlobalContextRef:]):
* API/JSVirtualMachine.mm:
(-[JSVirtualMachine initWithContextGroupRef:]):
(-[JSVirtualMachine dealloc]):
(+[JSVirtualMachine virtualMachineWithContextGroupRef:]):
(scanExternalObjectGraph):
(scanExternalRememberedSet):
(initWrapperCache): Deleted.
(wrapperCache): Deleted.
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]): Deleted.
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]): Deleted.
(-[JSVirtualMachine contextForGlobalContextRef:]): Deleted.
(-[JSVirtualMachine addContext:forGlobalContextRef:]): Deleted.
* API/JSVirtualMachineInternal.h:
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::setAPIWrapper):
(JSC::JSGlobalObject::apiWrapper const):
* runtime/VM.h:

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

4 months agoFix the !ENABLE(APPLE_PAY) build
timothy_horton@apple.com [Thu, 28 Mar 2019 19:32:53 +0000 (19:32 +0000)]
Fix the !ENABLE(APPLE_PAY) build

* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::shouldAllowUserAgentScripts const):

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

4 months agoCrash at IDBDatabaseInfo::infoForExistingObjectStore and IDBDatabaseInfo::infoForExis...
sihui_liu@apple.com [Thu, 28 Mar 2019 19:18:10 +0000 (19:18 +0000)]
Crash at IDBDatabaseInfo::infoForExistingObjectStore and IDBDatabaseInfo::infoForExistingObjectStore
https://bugs.webkit.org/show_bug.cgi?id=196120
<rdar://problem/39869767>

Reviewed by Ryosuke Niwa.

No new tests because it is unclear how the crash happens. Added release logging to help debug.

* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::performCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):

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

4 months agoWeb Inspector: Show Resource Initiator in Network Tab detail views
joepeck@webkit.org [Thu, 28 Mar 2019 18:47:05 +0000 (18:47 +0000)]
Web Inspector: Show Resource Initiator in Network Tab detail views
https://bugs.webkit.org/show_bug.cgi?id=196316
<rdar://problem/49352679>

Reviewed by Devin Rousso.

* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.resourceRequestWillBeSent):
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype._initiatorCallFramesFromPayload):
Initialize call frames from the initiator payload.

* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get initiatorCallFrames):
Initialization and accessor.

* UserInterface/Views/CallFrameTreeElement.js:
(WI.CallFrameTreeElement):
Selecting a native element won't do anything so just don't allow selection.

* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers .go-to-link):
(.resource-headers .call-stack):
(.resource-headers .call-stack:hover):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype.hidden):
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
Add an "Initiator" line in the summary with a way to view the whole
initiator backtrace if one exists.

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

4 months agohttp/wpt/cache-storage/quota-third-party.https.html is a flaky failure
sroberts@apple.com [Thu, 28 Mar 2019 18:38:55 +0000 (18:38 +0000)]
http/wpt/cache-storage/quota-third-party.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196358

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations: Updating test expectations for flaky failure

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

4 months agostorage/indexeddb/modern/idbtransaction-objectstore-failures-private.html is a flaky...
sroberts@apple.com [Thu, 28 Mar 2019 18:18:27 +0000 (18:18 +0000)]
storage/indexeddb/modern/idbtransaction-objectstore-failures-private.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196357

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations: Updating test expectations for flaky failure

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

4 months agoWeb Inspector: Canvas: unbinding a canvas should always remove the agent as an observer
drousso@apple.com [Thu, 28 Mar 2019 18:08:03 +0000 (18:08 +0000)]
Web Inspector: Canvas: unbinding a canvas should always remove the agent as an observer
https://bugs.webkit.org/show_bug.cgi?id=196324
<rdar://problem/49357109>

Reviewed by Matt Baker.

No change in functionality.

* html/CanvasBase.cpp:
(WebCore::CanvasBase::notifyObserversCanvasChanged):
(WebCore::CanvasBase::notifyObserversCanvasResized):
(WebCore::CanvasBase::notifyObserversCanvasDestroyed):

* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::bindCanvas):
(WebCore::InspectorCanvasAgent::unbindCanvas):

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

4 months ago[MSE][GStreamer] Remove dead code in MediaPlayerPrivateGStreamer::doSeek()
aboya@igalia.com [Thu, 28 Mar 2019 18:05:13 +0000 (18:05 +0000)]
[MSE][GStreamer] Remove dead code in MediaPlayerPrivateGStreamer::doSeek()
https://bugs.webkit.org/show_bug.cgi?id=196352

Reviewed by Xabier Rodriguez-Calvar.

MediaPlayerPrivateGStreamerMSE overrides doSeek() and seek(), so this
branch is never reached.

This patch does not introduce behavior changes.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::doSeek):

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

4 months agoIn-memory code cache should not share bytecode across domains
tzagallo@apple.com [Thu, 28 Mar 2019 17:50:19 +0000 (17:50 +0000)]
In-memory code cache should not share bytecode across domains
https://bugs.webkit.org/show_bug.cgi?id=196321

Reviewed by Geoffrey Garen.

Use the SourceProvider's URL to make sure that the hosts match for the
two SourceCodeKeys in operator==.

* parser/SourceCodeKey.h:
(JSC::SourceCodeKey::host const):
(JSC::SourceCodeKey::operator== const):

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

4 months ago[WPE][GTK] webkit_web_resource_get_data_finish can return NULL without setting error
mcatanzaro@igalia.com [Thu, 28 Mar 2019 17:50:18 +0000 (17:50 +0000)]
[WPE][GTK] webkit_web_resource_get_data_finish can return NULL without setting error
https://bugs.webkit.org/show_bug.cgi?id=186276

Reviewed by Carlos Garcia Campos.

Source/WebKit:

Currently it's possible for webkit_web_resource_get_data_finish() to return NULL without
setting the error parameter. This is illegal because it is an API guarantee (and a GObject
convention) that if an error parameter exists, it should be set whenever a function call
returns NULL. Epiphany correctly dereferences the error in this case without checking if it
is NULL, because it knows it does not have to, and crashes. Fix this. We'll return a byte
array of length 1 containing a NUL character. This isn't great, but there's not really any
better solution without deprecating the API or returning an error code to indicate an empty
resource, and it at least fixes the Epiphany crash.

This does not fix bug #186276, in which this function incorrectly returns no data when it
ought to. But that is a different bug. Now, at least we won't crash when no data is
available.

* UIProcess/API/glib/WebKitWebResource.cpp:
(resourceDataCallback):

Tools:

* TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:
(webViewLoadChanged):
(testWebResourceGetDataError):
(testWebResourceGetDataEmpty):
(beforeAll):
(webViewloadChanged): Deleted.

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

4 months ago[macOS WK2] Overlays on instagram.com are shifted if you click on a photo after scrolling
simon.fraser@apple.com [Thu, 28 Mar 2019 16:44:27 +0000 (16:44 +0000)]
[macOS WK2] Overlays on instagram.com are shifted if you click on a photo after scrolling
https://bugs.webkit.org/show_bug.cgi?id=196330
rdar://problem/49100304

Source/WebCore:

Reviewed by Antti Koivisto.

When we call ScrollingTree::applyLayerPositions() on the main thread after a flush,
we need to ensure that the most recent version of the scrolling tree has been committed,
because it has to have state (like requested scroll position and layout viewport rect)
that match the layer flush.

To fix this we have to have the main thread wait for the commit to complete, so
ThreadedScrollingTree keeps track of a pending commit count, and uses a condition
variable to allow the main thread to safely wait for it to reach zero.

Tracing shows that this works as expected, and the main thread is never blocked for
more than a few tens of microseconds.

Also lock the tree mutex in ScrollingTree::handleWheelEvent(), since we enter the
scrolling tree here and we don't want that racing with applyLayerPositions() on the
main thread.

Test: scrollingcoordinator/mac/fixed-scrolled-body.html

* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::applyLayerPositions):
* page/scrolling/ScrollingTree.h:
* page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::commitTreeState):
(WebCore::ThreadedScrollingTree::incrementPendingCommitCount):
(WebCore::ThreadedScrollingTree::decrementPendingCommitCount):
(WebCore::ThreadedScrollingTree::waitForPendingCommits):
(WebCore::ThreadedScrollingTree::applyLayerPositions):
* page/scrolling/ThreadedScrollingTree.h:
* page/scrolling/mac/ScrollingCoordinatorMac.mm:
(WebCore::ScrollingCoordinatorMac::commitTreeState):

LayoutTests:

Reviewed by NOBODY (OOPS!).

* scrollingcoordinator/mac/fixed-scrolled-body-expected.html: Added.
* scrollingcoordinator/mac/fixed-scrolled-body.html: Added.

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

4 months ago[iPad] Tapping on a popup form control may not show a popover
dbates@webkit.org [Thu, 28 Mar 2019 16:36:18 +0000 (16:36 +0000)]
[iPad] Tapping on a popup form control may not show a popover
https://bugs.webkit.org/show_bug.cgi?id=196322
<rdar://problem/49229632>

Reviewed by Wenson Hsieh.

Stop taking advantage of -[WKContentView inputView] being called when we invoke -reloadInputViews
to "lazily" allocate the input peripheral for the currently focused element. In theory, UIKit only
needs to call -inputView when it actually needs to display the input view (the keyboard). For
popup menu buttons, like <select>, no keyboard is needed. Instead we should create the peripheral
as part of the logic in the UI process to focus a new element before we call -reloadInputViews.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView inputView]): Extract logic to allocate the peripheral from here and moved it to createInputPeripheralWithView().
(-[WKContentView accessoryTab:]): While I am here, add a FIXME comment to explain why we need to
end the input sessions and nullify the input peripheral before we tell the web process to switch
focus as opposed to letting this happen after the web process tells us it focused a new element.
(createInputPeripheralWithView): Added.
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Write in terms of createInputPeripheralWithView(). Create the input peripheral after becoming
first responder because creating the peripheral has known side-effects: for popup buttons it
tells the popup controller to present the popover. For key input to popovers to work from the get-go,
the content view must be the first responder. See <https://bugs.webkit.org/show_bug.cgi?id=196272>
for more details.

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

4 months ago[SimpleLineLayout] Disable SLL when text-underline-position is not auto.
zalan@apple.com [Thu, 28 Mar 2019 16:02:24 +0000 (16:02 +0000)]
[SimpleLineLayout] Disable SLL when text-underline-position is not auto.
https://bugs.webkit.org/show_bug.cgi?id=196338
<rdar://problem/47975167>

Reviewed by Daniel Bates.

Source/WebCore:

Disable simple line layout unconditionally on non-auto text-underline-position content. We don't support it yet.

Test: fast/text/simple-line-layout-with-text-underline-position.html

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForStyle):

LayoutTests:

* fast/text/simple-line-layout-with-text-underline-position-expected.html: Added.
* fast/text/simple-line-layout-with-text-underline-position.html: Added.

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

4 months agoREGRESSION (r242911?): High Sierra Release WK2 Perf bot timing out while running...
ryanhaddad@apple.com [Thu, 28 Mar 2019 15:54:20 +0000 (15:54 +0000)]
REGRESSION (r242911?): High Sierra Release WK2 Perf bot timing out while running IndexedDB/large-number-of-inserts.html
https://bugs.webkit.org/show_bug.cgi?id=195952

Unreviewed test gardening.

* Skipped: Skip the affected test so the bot will finish the run.

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

4 months agoSilence lot of warnings when compiling with clang
commit-queue@webkit.org [Thu, 28 Mar 2019 14:18:38 +0000 (14:18 +0000)]
Silence lot of warnings when compiling with clang
https://bugs.webkit.org/show_bug.cgi?id=196310

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2019-03-28
Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Initialize variable with default constructor.

* API/glib/JSCOptions.cpp:
(jsc_options_foreach):

Source/WebCore:

No change in behavior.

* accessibility/AccessibilityObject.h: add missing override
clause.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcChangeState): add missing format string to log.
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h: add
missing virtual destructor.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
add missing override clause and remove unused private member.

Source/WebKit:

* UIProcess/API/glib/WebKitInjectedBundleClient.cpp: add missing
override clause.
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: add
missing override clause.

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

4 months ago[FreeType] Incorrect application of glyph positioning in the Y direction
carlosgc@webkit.org [Thu, 28 Mar 2019 13:58:38 +0000 (13:58 +0000)]
[FreeType] Incorrect application of glyph positioning in the Y direction
https://bugs.webkit.org/show_bug.cgi?id=161493

Reviewed by Michael Catanzaro.

Source/WebCore:

Use the first glyph origin as the initial advance of every complex text run.

* platform/graphics/cairo/FontCairo.cpp:
(WebCore::FontCascade::drawGlyphs): Update the yOffset using the height advance.
* platform/graphics/cairo/GraphicsContextImplCairo.cpp:
(WebCore::GraphicsContextImplCairo::drawGlyphs): Ditto.
* platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): Set the initial advance.

LayoutTests:

Rebaseline fast/text/international/hebrew-vowels.html.

* platform/gtk/fast/text/international/hebrew-vowels-expected.png:
* platform/gtk/fast/text/international/hebrew-vowels-expected.txt:

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

4 months ago[macOS] Select element doesn't show popup if select element had lost focus while...
rniwa@webkit.org [Thu, 28 Mar 2019 06:22:42 +0000 (06:22 +0000)]
[macOS] Select element doesn't show popup if select element had lost focus while popup was previosuly shown
https://bugs.webkit.org/show_bug.cgi?id=196336

Reviewed by Tim Horton.

Source/WebCore:

* rendering/RenderMenuList.cpp:
(RenderMenuList::popupDidHide): Added a comment.

Source/WebKit:

The bug was caused by WebPopupMenu::hide never notifying PopupClient that the popup had been dismissed.
This resulted in RenderMenuList::m_popupIsVisible to be never reset.

Also fixed a bug in WebPopupMenuProxyMac::hidePopupMenu that this function was never dismissing
the popup as the selector "dismissPopUp", on the contrary to its name, does not dimiss the popup.
Send cancelTracking to NSMenu instead, which DOES dismiss the popup.

Tests: fast/forms/select/mac-wk2/blur-dismisses-select-popup.html
       fast/forms/select/mac-wk2/open-select-popup-after-dismissing-by-blur.html

* UIProcess/mac/WebPopupMenuProxyMac.mm:
(WebKit::WebPopupMenuProxyMac::hidePopupMenu):
* WebProcess/WebCoreSupport/WebPopupMenu.cpp:
(WebKit::WebPopupMenu::hide):

Source/WebKitLegacy/mac:

Fixed the bug that we were not actually dismissing the popup in PopupMenuMac::hide as done in WebKit2.

Unfortunately no new tests since intenals.isSelectPopupVisible would always return false in WebKit1.

* WebCoreSupport/PopupMenuMac.mm:
(PopupMenuMac::hide):

LayoutTests:

Added regression tests for dismissing the select element's popup menu by bluring the element then re-opening the popup.
Unfortunately these tests are only enabled in WebKit2 since intenals.isSelectPopupVisible would always return false in WebKit1.

* TestExpectations:
* fast/forms/select/mac-wk2: Added.
* fast/forms/select/mac-wk2/blur-dismisses-select-popup-expected.html: Added.
* fast/forms/select/mac-wk2/blur-dismisses-select-popup.html: Added.
* fast/forms/select/mac-wk2/open-select-popup-after-dismissing-by-blur-expected.txt: Added.
* fast/forms/select/mac-wk2/open-select-popup-after-dismissing-by-blur.html: Added.
* platform/mac-wk2/TestExpectations:

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

4 months agoJetStream 2 should not report time values as scores
sbarati@apple.com [Thu, 28 Mar 2019 01:47:29 +0000 (01:47 +0000)]
JetStream 2 should not report time values as scores
https://bugs.webkit.org/show_bug.cgi?id=196334

Reviewed by Yusuke Suzuki.

PerformanceTests:

* JetStream2/JetStreamDriver.js:
(toTimeValue):
(Driver.prototype.async.reportScoreToRunBenchmarkRunner):

Websites/browserbench.org:

* JetStream2.0/JetStreamDriver.js:
(toTimeValue):
(Driver.prototype.async.reportScoreToRunBenchmarkRunner):

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

4 months agovalidateOSREntryValue with Int52 should box the value being checked into double format
sbarati@apple.com [Thu, 28 Mar 2019 01:06:01 +0000 (01:06 +0000)]
validateOSREntryValue with Int52 should box the value being checked into double format
https://bugs.webkit.org/show_bug.cgi?id=196313
<rdar://problem/49306703>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/validate-int-52-ai-state.js: Added.

Source/JavaScriptCore:

* dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::validateAIState):

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

4 months ago[ARKit] Black view when opening a 3D model usdz file in new tab
dino@apple.com [Thu, 28 Mar 2019 01:02:05 +0000 (01:02 +0000)]
[ARKit] Black view when opening a 3D model usdz file in new tab
https://bugs.webkit.org/show_bug.cgi?id=196333
<rdar://problem/47693367>

Reviewed by Tim Horton.

When opening a new WKSystemPreviewView, we were exiting if there was no
presentingViewController. This code was unnecessary, and causing blank
content when opening a new tab.

* UIProcess/ios/WKSystemPreviewView.mm:
(-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]):
Remove the code looking for a presentingViewController.

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

4 months ago[GTK] Unreviewed test gardening
aboya@igalia.com [Thu, 28 Mar 2019 00:58:38 +0000 (00:58 +0000)]
[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=196329

* platform/gtk/TestExpectations:
* platform/gtk/http/tests/inspector/network/har/har-page-expected.txt:
* platform/gtk/http/tests/inspector/network/resource-sizes-network-expected.txt:
* platform/gtk/js/intl-datetimeformat-expected.txt: Added.
* platform/wpe/TestExpectations:

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

4 months agoNeed a way to include WebKitAdditions code in WebKit API headers
wenson_hsieh@apple.com [Wed, 27 Mar 2019 23:34:04 +0000 (23:34 +0000)]
Need a way to include WebKitAdditions code in WebKit API headers
https://bugs.webkit.org/show_bug.cgi?id=196173

Reviewed by Tim Horton.

Introduce a mechanism that allows us to insert code from WebKitAdditions into public or private SDK headers
using `#import`s of the form:

```
#if USE(APPLE_INTERNAL_SDK)
#import <WebKitAdditions/WKWebViewConfigurationAdditions.h>
#endif
```

The resulting header in the built products directory will contain the contents of the imported file inserted in
place of the `#if USE(APPLE_INTERNAL_SDK) … #endif` block; however, when building with the Apple internal SDK,
the additions header content will be imported by the usual means.

* mac/postprocess-framework-headers.sh:
* mac/replace-webkit-additions-includes.py: Added.

Add a step when post-processing framework headers to replace instances of `#if USE(APPLE_INTERNAL_SDK) … #endif`
with the text content of the additions files. The replacement script first searches in the built products
directory for the matching additions file, and falls back to the SDK if no matching file is found. If neither
are present (e.g. a build using the public SDK), then the block is simply replaced by the empty string.

(read_content_from_webkit_additions):
(main):

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

4 months agoREGRESSION (r242686): package-root creates roots with broken symlinks in WebKit.frame...
aestes@apple.com [Wed, 27 Mar 2019 23:09:51 +0000 (23:09 +0000)]
REGRESSION (r242686): package-root creates roots with broken symlinks in WebKit.framework/XPCServices/
https://bugs.webkit.org/show_bug.cgi?id=196317

Reviewed by Dan Bernstein.

Source/WebKit:

Removed some remnants of the Storage Process.

* Configurations/BaseTarget.xcconfig:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Storage.sb: Removed.
* WebKit.xcodeproj/project.pbxproj:

Tools:

package-root copies built products into a staging directory using ditto(1), which does not
follow symbolic links as it traverses a directory. Now that the files in
WebKit.framework/XPCServices/ are symbolic links to a location outside of the framework
itself, these become broken links when ditto'd into the staging directory.

To account for this, change package-root to copy using cp(1) in a mode that follows symlinks.

* Scripts/package-root:

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

4 months agoThe following layout tests are flaky Image Only Failures
sroberts@apple.com [Wed, 27 Mar 2019 22:16:22 +0000 (22:16 +0000)]
The following layout tests are flaky Image Only Failures
imported/w3c/web-platform-tests/mathml/relations/css-styling/mathvariant-bold.html
imported/w3c/web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck.html
imported/w3c/web-platform-tests/mathml/relations/css-styling/mathvariant-italic.html
https://bugs.webkit.org/show_bug.cgi?id=196112

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/mac/TestExpectations: Marking tests as flaky

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

4 months agoInclude the CFNetworking task UUID to the NSError when a resource-load fails
krollin@apple.com [Wed, 27 Mar 2019 21:48:04 +0000 (21:48 +0000)]
Include the CFNetworking task UUID to the NSError when a resource-load fails
https://bugs.webkit.org/show_bug.cgi?id=196156

Reviewed by Alex Christensen.

In order to help track the connection between a failed resource-load
and a user-visible error message, include the CFNetworking task UUID
in the associated error as an element of the userInfo property. This
can then be pulled out and reported in the logging at the point the
error is reported to the user.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):

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

4 months ago[ews-app] Update display text of Submit for ews analysis
aakash_jain@apple.com [Wed, 27 Mar 2019 21:09:44 +0000 (21:09 +0000)]
[ews-app] Update display text of Submit for ews analysis
https://bugs.webkit.org/show_bug.cgi?id=196309

Reviewed by Dewei Zhu.

* BuildSlaveSupport/ews-app/ews/templates/statusbubble.html:

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

4 months ago[Web GPU] Standardize Web GPU object reference counting and creation logic
justin_fan@apple.com [Wed, 27 Mar 2019 20:47:55 +0000 (20:47 +0000)]
[Web GPU] Standardize Web GPU object reference counting and creation logic
https://bugs.webkit.org/show_bug.cgi?id=196183

Reviewed by Dean Jackson.

Source/WebCore:

Make getters return raw refs/pointers and provide const versions if necessary.
All Web GPU objects are non-nullable, but become no-op if invalid, and descriptors are not moved unless needed.

No new tests; no change in behavior.

Getter updates and const qualifications:
* Modules/webgpu/WebGPUAdapter.h:
(WebCore::WebGPUAdapter::options const):
* Modules/webgpu/WebGPUBindGroup.h:
(WebCore::WebGPUBindGroup::bindGroup):
(WebCore::WebGPUBindGroup::bindGroup const): Deleted.
* Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
(WebCore::WebGPUBindGroupDescriptor::tryCreateGPUBindGroupDescriptor const):
* Modules/webgpu/WebGPUBindGroupDescriptor.h:
* Modules/webgpu/WebGPUBindGroupLayout.h:
(WebCore::WebGPUBindGroupLayout::bindGroupLayout const):
* Modules/webgpu/WebGPUBuffer.h:
(WebCore::WebGPUBuffer::buffer):
(WebCore::WebGPUBuffer::buffer const):
* Modules/webgpu/WebGPURenderPassDescriptor.cpp:
(WebCore::WebGPURenderPassDescriptor::tryCreateGPURenderPassDescriptor const):
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
* Modules/webgpu/WebGPUSampler.h:
(WebCore::WebGPUSampler::sampler const):
* Modules/webgpu/WebGPUSwapChain.h:
(WebCore::WebGPUSwapChain::swapChain):
(WebCore::WebGPUSwapChain::swapChain const): Deleted.
* Modules/webgpu/WebGPUTexture.h:
(WebCore::WebGPUTexture::texture):
(WebCore::WebGPUTexture::texture const): Deleted.
* Modules/webgpu/WebGPUTextureView.h:
(WebCore::WebGPUTextureView::texture):
(WebCore::WebGPUTextureView::texture const): Deleted.
* platform/graphics/gpu/GPUBindGroupBinding.h:
* platform/graphics/gpu/GPUBindGroupDescriptor.h:
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::tryGetResourceAsMTLSamplerState):

Web GPU object creation logic:
* Modules/webgpu/WebGPUCommandEncoder.cpp:
(WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const):
(WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const):
(WebCore::WebGPUCommandEncoder::beginRenderPass):
(WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
* Modules/webgpu/WebGPUCommandEncoder.h:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createBuffer const):
(WebCore::WebGPUDevice::createTexture const):
(WebCore::WebGPUDevice::createPipelineLayout const):
(WebCore::WebGPUDevice::createBindGroup const):
(WebCore::WebGPUDevice::createShaderModule const):
(WebCore::WebGPUDevice::createRenderPipeline const):
(WebCore::WebGPUDevice::getQueue const):
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUPipelineLayout.cpp:
(WebCore::WebGPUPipelineLayout::create):
(WebCore::WebGPUPipelineLayout::WebGPUPipelineLayout):
* Modules/webgpu/WebGPUPipelineLayout.h:
(WebCore::WebGPUPipelineLayout::pipelineLayout):
* Modules/webgpu/WebGPUPipelineLayoutDescriptor.cpp:
(WebCore::WebGPUPipelineLayoutDescriptor::tryCreateGPUPipelineLayoutDescriptor const):
* Modules/webgpu/WebGPUPipelineLayoutDescriptor.h:
* Modules/webgpu/WebGPUQueue.cpp:
(WebCore::WebGPUQueue::create):
(WebCore::WebGPUQueue::WebGPUQueue):
(WebCore::WebGPUQueue::submit):
* Modules/webgpu/WebGPUQueue.h:
* Modules/webgpu/WebGPUShaderModule.cpp:
(WebCore::WebGPUShaderModule::create):
(WebCore::WebGPUShaderModule::WebGPUShaderModule):
* Modules/webgpu/WebGPUShaderModule.h:
(WebCore::WebGPUShaderModule::module const):
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateBuffer):
(WebCore::GPUDevice::tryCreateTexture const):
(WebCore::GPUDevice::tryCreateShaderModule const):
(WebCore::GPUDevice::tryCreateRenderPipeline const):
(WebCore::GPUDevice::tryGetQueue const):
(WebCore::GPUDevice::createShaderModule const): Deleted.
(WebCore::GPUDevice::createRenderPipeline const): Deleted.
(WebCore::GPUDevice::getQueue const): Deleted.
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/GPUPipelineLayout.cpp:
(WebCore::GPUPipelineLayout::create):
(WebCore::GPUPipelineLayout::GPUPipelineLayout):
* platform/graphics/gpu/GPUPipelineLayout.h:
(WebCore::GPUPipelineLayout::bindGroupLayouts const):
* platform/graphics/gpu/GPUPipelineLayoutDescriptor.h:
* platform/graphics/gpu/GPURenderPipeline.h:
* platform/graphics/gpu/GPUShaderModule.h:
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::tryCreate):
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::setSubData):
* platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::tryCreate):
* platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
(WebCore::GPUDevice::tryCreate):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::GPURenderPipeline::tryCreate):
(WebCore::GPURenderPipeline::GPURenderPipeline):
(WebCore::GPURenderPipeline::create): Deleted.
* platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm:
(WebCore::GPUShaderModule::tryCreate):
(WebCore::GPUShaderModule::create): Deleted.

Add WebGPUPipelineLayoutDescriptor.cpp to project:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:

LayoutTests:

GPUShaderModule is no longer nullable.

* webgpu/shader-modules.html:

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

4 months ago[ iOS Sim ] REGRESSION (r242277) Layout Test http/tests/cookies/same-site/lax-samesit...
cdumez@apple.com [Wed, 27 Mar 2019 20:47:52 +0000 (20:47 +0000)]
[ iOS Sim ] REGRESSION (r242277) Layout Test http/tests/cookies/same-site/lax-samesite-cookie-after-cross-site-history-load.php is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=195425
<rdar://problem/48682403>

Reviewed by Alex Christensen.

When process-swapping on history navigation, we lookup the WebProcessProxy we'd like to use from the
process identifier that is saved on the WebBackForwardListItem, to try and load the item in the process
in which it was previously loaded. However, we were failing to check if the WebProcess in question was
still running so we could potentially try to use a process that's already exited.

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

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

4 months agoUnreviewed, rolling out r243346.
sroberts@apple.com [Wed, 27 Mar 2019 20:29:45 +0000 (20:29 +0000)]
Unreviewed, rolling out r243346.

Causing timeouts in animation tests across 10 builds

Reverted changeset:

"[Web Animations] JS wrapper may be deleted while animation is
yet to dispatch its finish event"
https://bugs.webkit.org/show_bug.cgi?id=196118
https://trac.webkit.org/changeset/243346

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

4 months ago[JSC] Owner of watchpoints should validate at GC finalizing phase
ysuzuki@apple.com [Wed, 27 Mar 2019 20:29:29 +0000 (20:29 +0000)]
[JSC] Owner of watchpoints should validate at GC finalizing phase
https://bugs.webkit.org/show_bug.cgi?id=195827

Reviewed by Filip Pizlo.

JSTests:

* stress/gc-should-reap-dead-watchpoints.js: Added.
(foo):
(A.prototype.y):
(A):

Source/JavaScriptCore:

This patch fixes JSC's watchpoint liveness issue by the following two policies.

1. Watchpoint should have owner cell, and "fire" operation should be gaurded with owner cell's isLive check.

Watchpoints should hold its owner cell, and fire procedure should be guarded by `owner->isLive()`.
When the owner cell is destroyed, these watchpoints are destroyed too. But this destruction can
be delayed due to incremental sweeper. So the following condition can happen.

When we have a watchpoint like the following.

    class XXXWatchpoint {
        ObjectPropertyCondition m_key;
        JSCell* m_owner;
    };

Both m_key's cell and m_owner is now unreachable from the root. So eventually, m_owner cell's destructor
is called and this watchpoint will be destroyed. But before that, m_key's cell can be destroyed. And this
watchpoint's fire procedure can be called since m_owner's destructor is not called yet. In this situation,
we encounter the destroyed cell held in m_key. This problem can be avoided if we guard fire procedure with
`m_owner->isLive()`. Until the owner cell is destroyed, this guard avoids "fire" procedure execution. And
once the destructor of m_owner is called, this watchpoint will be destroyed too.

2. Watchpoint liveness should be maintained by owner cell's unconditional finalizer

Watchpoints often hold weak references to the other cell (like, m_key in the above example). If we do not
delete watchpoints with dead cells when these weak cells become dead, these watchpoints continue holding dead cells,
and watchpoint's fire operation can use these dead cells accidentally. isLive / isStillLive check for these weak cells
in fire operation is not useful. Because these dead cells can be reused to the other live cells eventually, and this
isLive / isStillLive checks fail to see these cells are live if they are reused. Appropriate way is deleting watchpoints
with dead cells when finalizing GC. In this patch, we do this in unconditional finalizers in owner cells of watchpoints.
We already did this in CodeBlock etc. We add the same thing to StructureRareData which owns watchpoints for toString operations.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/AdaptiveInferredPropertyValueWatchpointBase.h:
(JSC::AdaptiveInferredPropertyValueWatchpointBase::StructureWatchpoint::StructureWatchpoint): Deleted.
(JSC::AdaptiveInferredPropertyValueWatchpointBase::PropertyWatchpoint::PropertyWatchpoint): Deleted.
* bytecode/CodeBlockJettisoningWatchpoint.h:
(JSC::CodeBlockJettisoningWatchpoint::CodeBlockJettisoningWatchpoint): Deleted.
* bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp:
(JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::LLIntPrototypeLoadAdaptiveStructureWatchpoint):
(JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::fireInternal):
* bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.h:
(JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::key const): Deleted.
* bytecode/StructureStubClearingWatchpoint.cpp:
(JSC::StructureStubClearingWatchpoint::fireInternal):
(JSC::WatchpointsOnStructureStubInfo::isValid const):
* bytecode/StructureStubClearingWatchpoint.h:
(JSC::StructureStubClearingWatchpoint::StructureStubClearingWatchpoint): Deleted.
* dfg/DFGAdaptiveInferredPropertyValueWatchpoint.cpp:
(JSC::DFG::AdaptiveInferredPropertyValueWatchpoint::isValid const):
* dfg/DFGAdaptiveInferredPropertyValueWatchpoint.h:
* dfg/DFGAdaptiveStructureWatchpoint.cpp:
(JSC::DFG::AdaptiveStructureWatchpoint::fireInternal):
* dfg/DFGAdaptiveStructureWatchpoint.h:
(JSC::DFG::AdaptiveStructureWatchpoint::key const): Deleted.
* dfg/DFGDesiredWatchpoints.cpp:
(JSC::DFG::ArrayBufferViewWatchpointAdaptor::add):
* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::setupGetByIdPrototypeCache):
* runtime/ArrayBuffer.cpp:
(JSC::ArrayBuffer::notifyIncommingReferencesOfTransfer):
* runtime/ArrayBufferNeuteringWatchpointSet.cpp: Renamed from Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.cpp.
(JSC::ArrayBufferNeuteringWatchpointSet::ArrayBufferNeuteringWatchpointSet):
(JSC::ArrayBufferNeuteringWatchpointSet::destroy):
(JSC::ArrayBufferNeuteringWatchpointSet::create):
(JSC::ArrayBufferNeuteringWatchpointSet::createStructure):
(JSC::ArrayBufferNeuteringWatchpointSet::fireAll):
* runtime/ArrayBufferNeuteringWatchpointSet.h: Renamed from Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.h.
* runtime/FunctionRareData.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint):
* runtime/ObjectPropertyChangeAdaptiveWatchpoint.h:
(JSC::ObjectPropertyChangeAdaptiveWatchpoint::ObjectPropertyChangeAdaptiveWatchpoint): Deleted.
* runtime/StructureRareData.cpp:
(JSC::StructureRareData::finalizeUnconditionally):
* runtime/StructureRareData.h:
* runtime/VM.cpp:
(JSC::VM::VM):

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

4 months agorun-webkit-tests should check for leaks in WebKit processes
ddkilzer@apple.com [Wed, 27 Mar 2019 20:25:15 +0000 (20:25 +0000)]
run-webkit-tests should check for leaks in WebKit processes
<https://webkit.org/b/193772>
<rdar://problem/46526680>

Reviewed by Ryosuke Niwa.

This works by doing the following:
- Add a "#LIST CHILD PROCESSES" command to WebKitTestRunnner.
  The list of child processes are returned one per line:
  process.name: pid
- Run the "#LIST CHILD PROCESSES" command just before the
  "#CHECK FOR WORLD LEAKS" command, and store the list of child
  processes on the ServerProcess object.
- When the `--leaks` switch is handled, run check_for_leaks() on
  each child process after the main test harness.

* DumpRenderTree/mac/DumpRenderTree.mm:
(handleControlCommand):
- Use strncmp() instead of strcmp().
- Add support for handling "#LIST CHILD PROCESSES" command.

* Scripts/webkitpy/port/base.py:
(Port.check_for_leaks):
* Scripts/webkitpy/port/darwin.py:
(DarwinPort.check_for_leaks):
- Rename redundant 'process_pid' argument to 'process_id'.

* Scripts/webkitpy/port/driver.py:
(Driver.do_post_tests_work):
- Restructure the logic since "#CHECK FOR WORLD LEAKS" is no
  longer the only command this sends to WebKitTestRunner.
- If the `--leaks` switch is present, send the
  "#LIST CHILD PROCESSES" to WebKitTestRunner and store the
  result using Port.set_webkit_processes().
(Driver._parse_child_processes_output):
- Add helper method to parse list of child process names and
  process IDs returned from WebKitTestRunner.

* Scripts/webkitpy/port/ios_device.py:
(IOSDevicePort.check_for_leaks):
- Rename redundant 'process_pid' argument to 'process_id'.

* Scripts/webkitpy/port/leakdetector.py:
(LeakDetector._parse_leaks_output):
- Return early if there is no leaks_output.
(LeakDetector.check_for_leaks):
- Rename redundant 'process_pid' argument to 'process_id'.

* Scripts/webkitpy/port/server_process.py:
(ServerProcess.__init__):
(ServerProcess.child_processes):
(ServerProcess.set_child_processes):
- Add instance variable to Port to store list of child process
  names and process IDs returned from WebKitTestRunner.
(ServerProcess._start):
- Clear self._child_processes.
(ServerProcess.stop):
- If self._child_processes is set, call
  self._port.check_for_leaks() for each child process.

* Scripts/webkitpy/port/server_process_unittest.py:
(TrivialMockPort.check_for_leaks):
- Rename redundant 'process_pid' argument to 'process_id'.

* Scripts/webkitpy/port/simulator_process.py:
(SimulatorProcess.stop):
- If self._child_processes is set, call
  self._port.check_for_leaks() for each child process.

* Scripts/webkitpy/port/watch_device.py:
(WatchDevicePort.check_for_leaks):
- Rename redundant 'process_pid' argument to 'process_id'.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::dumpResponse):
- Extract method from findAndDumpWorldLeaks() so that it may be
  reused by findAndDumpWebKitProcessIdentifiers().
(WTR::TestController::findAndDumpWebKitProcessIdentifiers):
- Add method to output process name and process ID of both the
  WebContent and Networking processes.
(WTR::TestController::findAndDumpWorldLeaks):
- Fix missing newline in output when there were no abandoned
  documents.
- Call dumpResponse() for extracted code.
(WTR::TestController::handleControlCommand):
- Restructure the logic for "#CHECK FOR WORLD LEAKS".
- Use strncmp() instead of strcmp().
- Call findAndDumpWebKitProcessIdentifiers() when
  "#LIST CHILD PROCESSES" command is sent.
* WebKitTestRunner/TestController.h:
(WTR::TestController::dumpResponse):
(WTR::TestController::findAndDumpWebKitProcessIdentifiers):
- Declare methods.

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

4 months ago[ iOS Simulator ] REGRESSION (r237702) Layout Test http/tests/security/xss-DENIED...
cdumez@apple.com [Wed, 27 Mar 2019 19:56:02 +0000 (19:56 +0000)]
[ iOS Simulator ] REGRESSION (r237702) Layout Test http/tests/security/xss-DENIED-script-inject-into-inactive-window.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=195385
<rdar://problem/48657425>

Reviewed by Alex Christensen.

Before r237702, the test used to detect that _openedWindowDocument had become frameless (i.e. lost its browsing context)
by checking if _openedWindowDocument.location.href is the empty String. However, r237702 updating Location to return
"about:blank" instead of "" when frameless, to match the latest specification. As a result, I had updated the test to
expect _openedWindowDocument.location.href to be "about:blank". However, I had not noticed that the document's initial
URL (while it had a browsing context) was also "about:blank". Therefore, checking that location.href is "about:blank"
would actually not guarantee that the document has no browsing context.

To address the issue, check that _openedWindowDocument.defaultView is null instead since this is guaranteed to be null
for Documents that do not have a browsing context as per:
- https://html.spec.whatwg.org/multipage/window-object.html#dom-document-defaultview

* http/tests/security/xss-DENIED-script-inject-into-inactive-window.html:

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

4 months ago[ContentChangeObserver] Always dispatch the synthetic click asynchronously
zalan@apple.com [Wed, 27 Mar 2019 19:41:22 +0000 (19:41 +0000)]
[ContentChangeObserver] Always dispatch the synthetic click asynchronously
https://bugs.webkit.org/show_bug.cgi?id=196278
<rdar://problem/49299968>

Reviewed by Simon Fraser.

This patch ensures that all completeSyntheticClick() calls happen in an asynchronous manner (unless the feature is turned off).

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

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

4 months ago[ContentChangeObserver] Stop using the global _WKContentChange
zalan@apple.com [Wed, 27 Mar 2019 19:05:27 +0000 (19:05 +0000)]
[ContentChangeObserver] Stop using the global _WKContentChange
https://bugs.webkit.org/show_bug.cgi?id=196288
<rdar://problem/49228081>

Reviewed by Simon Fraser.

Source/WebCore:

This patch ensures that activities on frames don't overwrite the observed state on other frames.
(Unfortunately the global variable is still used in WebKitLegacy (see webkit.org/b/196286)).

Tests: fast/events/touch/ios/content-observation/remove-subframe-while-observing.html
       fast/events/touch/ios/content-observation/subframe.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::observedContentChange const): Deleted.
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::observedContentChange const):
(WebCore::ContentChangeObserver::setHasNoChangeState):
(WebCore::ContentChangeObserver::setHasIndeterminateState):
(WebCore::ContentChangeObserver::setHasVisibleChangeState):
(WebCore::ContentChangeObserver::setObservedContentState):

LayoutTests:

* fast/events/touch/ios/content-observation/remove-subframe-while-observing-expected.txt: Added.
* fast/events/touch/ios/content-observation/remove-subframe-while-observing.html: Added.
* fast/events/touch/ios/content-observation/subframe.html: Added.
* platform/ios-device-wk1/TestExpectations:
* platform/ios-simulator-wk1/TestExpectations:

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

4 months agoRemove the SVG tear off objects for SVGPathSeg, SVGPathSegList and SVGAnimatedPathSegList
commit-queue@webkit.org [Wed, 27 Mar 2019 18:56:05 +0000 (18:56 +0000)]
Remove the SVG tear off objects for SVGPathSeg, SVGPathSegList and SVGAnimatedPathSegList
https://bugs.webkit.org/show_bug.cgi?id=196085

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-27
Reviewed by Simon Fraser.

Source/WebCore:

The SVGPathSegList is similar to the other SVGLists, e.g. SVGNUmberList
and SVGPointList except in two things:

1. Its items can be different but they are derived from the same base
   class SVGPathSeg.

2. The SVGPathSeg items are only used for DOM. When drawing or animating
   we have to have an SVGPathByteStream and convert it to a Path. Converting
   an SVGPathByteStream to SVGPathSeg items and vice versa is expensive.
   Building a Path from an SVGPathByteStream is also expensive. So an extra
   care needs to be taken for when these conversions happen.

In addition to handling the SVGPathSeg items, SVGPathSegList will manage
the associated SVGPathByteStream and Path objects. SVGPathSegList will be
lazy in getting updated objects when a change happens. For example, when
the byte stream changes, SVGPathSegList will clear its items and nullify
the Path object. But it will not build any of them until they are explicitly
requested.

Like what was done for other SVG properties when removing their tear off
objects, a new accessor, a new animator and a new animation function will
be added for the SVGAnimatedPathSegList.

All the header files of the concrete classes of SVGPathSeg will be removed
because they are small structures which hold some data items and they provide
setters and getters for these items. Here is the new file structures and
their contents:

-- SVGPathSeg.h still has the class SVGPathSeg which is now a superclass
   of SVGProperty.

-- SVGPathSegValue.h will have the template class SVGPathSegValue which
   holds an std::tuple of packed arguments. It provides setters and getters
   for these arguments. SVGPathSegValue.h will also have specialized
   classed derived from SVGPathSegValue and hold different arguments.

-- SVGPathSegImpl.h will have the final concrete SVGPathSeg classes.

Note SVGPathSeg concrete classes do not need to have a reference to the
the context SVGPathElement. SVGPathSeg will be owned by its SVGPathSegList
which will be owned by the SVGAnimatedPathSegList which will be owned by
the SVGPathElement.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSSVGPathSegCustom.cpp:
* bindings/scripts/CodeGenerator.pm:
(IsSVGPathSegTypeName):
(IsSVGPathSegType):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
* rendering/svg/SVGPathData.cpp:
(WebCore::pathFromPathElement):
* svg/SVGAnimatedPath.cpp: Removed.
* svg/SVGAnimatedPath.h: Removed.
* svg/SVGAnimatedType.h:
(WebCore::SVGAnimatedType::type const):
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGPathByteStream.h:
(WebCore::SVGPathByteStream::SVGPathByteStream):
This constructor is used by SVGAnimationPathSegListFunction to convert
the 'form', 'to' and 'toAtEndOfDuration' strings to SVGPathByteStreams.

(WebCore::SVGPathByteStream::resize): Deleted.
(WebCore::SVGPropertyTraits<SVGPathByteStream>::initialValue): Deleted.
(WebCore::SVGPropertyTraits<SVGPathByteStream>::fromString): Deleted.
(WebCore::SVGPropertyTraits<SVGPathByteStream>::parse): Deleted.
(WebCore::SVGPropertyTraits<SVGPathByteStream>::toString): Deleted.
* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::SVGPathElement):
(WebCore::SVGPathElement::parseAttribute):
(WebCore::SVGPathElement::svgAttributeChanged):
(WebCore::SVGPathElement::getTotalLength const):
(WebCore::SVGPathElement::getPointAtLength const):
(WebCore::SVGPathElement::getPathSegAtLength const):
(WebCore::SVGPathElement::createSVGPathSegClosePath): Deleted.
(WebCore::SVGPathElement::createSVGPathSegMovetoAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegMovetoRel): Deleted.
(WebCore::SVGPathElement::createSVGPathSegLinetoAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegLinetoRel): Deleted.
(WebCore::SVGPathElement::createSVGPathSegCurvetoCubicAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegCurvetoCubicRel): Deleted.
(WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticRel): Deleted.
(WebCore::SVGPathElement::createSVGPathSegArcAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegArcRel): Deleted.
(WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalRel): Deleted.
(WebCore::SVGPathElement::createSVGPathSegLinetoVerticalAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegLinetoVerticalRel): Deleted.
(WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel): Deleted.
(WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs): Deleted.
(WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel): Deleted.
The SVGPathSeg creation functions are moved to the header file.

(WebCore::SVGPathElement::registerAttributes): Deleted.
(WebCore::SVGPathElement::pathByteStream const): Deleted.
(WebCore::SVGPathElement::pathForByteStream const): Deleted.
(WebCore::SVGPathElement::lookupOrCreateDWrapper): Deleted.
(WebCore::SVGPathElement::animatedPropertyWillBeDeleted): Deleted.
(WebCore::SVGPathElement::pathSegList): Deleted.
(WebCore::SVGPathElement::normalizedPathSegList): Deleted.
(WebCore::SVGPathElement::animatedPathSegList): Deleted.
(WebCore::SVGPathElement::animatedNormalizedPathSegList): Deleted.
(WebCore::SVGPathElement::approximateMemoryCost const): Deleted.
(WebCore::SVGPathElement::pathSegListChanged): Deleted.
Managing the SVGPathByteStream and the drawing Path objects will be the
responsibility of SVGPathSegList.

* svg/SVGPathElement.h:
* svg/SVGPathSeg.h:
* svg/SVGPathSegArc.h: Removed.
* svg/SVGPathSegArcAbs.h: Removed.
* svg/SVGPathSegArcRel.h: Removed.
* svg/SVGPathSegClosePath.h: Removed.
* svg/SVGPathSegCurvetoCubic.h: Removed.
* svg/SVGPathSegCurvetoCubicAbs.h: Removed.
* svg/SVGPathSegCurvetoCubicRel.h: Removed.
* svg/SVGPathSegCurvetoCubicSmooth.h: Removed.
* svg/SVGPathSegCurvetoCubicSmoothAbs.h: Removed.
* svg/SVGPathSegCurvetoCubicSmoothRel.h: Removed.
* svg/SVGPathSegCurvetoQuadratic.h: Removed.
* svg/SVGPathSegCurvetoQuadraticAbs.h: Removed.
* svg/SVGPathSegCurvetoQuadraticRel.h: Removed.
* svg/SVGPathSegCurvetoQuadraticSmoothAbs.h: Removed.
* svg/SVGPathSegCurvetoQuadraticSmoothRel.h: Removed.
* svg/SVGPathSegImpl.h: Added.
* svg/SVGPathSegLinetoAbs.h: Removed.
* svg/SVGPathSegLinetoHorizontal.h: Removed.
* svg/SVGPathSegLinetoHorizontalAbs.h: Removed.
* svg/SVGPathSegLinetoHorizontalRel.h: Removed.
* svg/SVGPathSegLinetoRel.h: Removed.
* svg/SVGPathSegLinetoVertical.h: Removed.
* svg/SVGPathSegLinetoVerticalAbs.h: Removed.
* svg/SVGPathSegLinetoVerticalRel.h: Removed.
The definition of these classes are now in SVGPathSegImpl.h.

* svg/SVGPathSegList.cpp: Removed.
* svg/SVGPathSegList.h:
* svg/SVGPathSegListBuilder.cpp:
(WebCore::SVGPathSegListBuilder::SVGPathSegListBuilder):
(WebCore::SVGPathSegListBuilder::moveTo):
(WebCore::SVGPathSegListBuilder::lineTo):
(WebCore::SVGPathSegListBuilder::lineToHorizontal):
(WebCore::SVGPathSegListBuilder::lineToVertical):
(WebCore::SVGPathSegListBuilder::curveToCubic):
(WebCore::SVGPathSegListBuilder::curveToCubicSmooth):
(WebCore::SVGPathSegListBuilder::curveToQuadratic):
(WebCore::SVGPathSegListBuilder::curveToQuadraticSmooth):
(WebCore::SVGPathSegListBuilder::arcTo):
(WebCore::SVGPathSegListBuilder::closePath):
* svg/SVGPathSegListBuilder.h:
The concrete SVGPathSeg classes can now create instances of their classes
without having to go through the SVGPathElement.

* svg/SVGPathSegListSource.cpp:
(WebCore::SVGPathSegListSource::SVGPathSegListSource):
* svg/SVGPathSegListSource.h:
* svg/SVGPathSegListValues.cpp: Removed.
* svg/SVGPathSegListValues.h: Removed.
* svg/SVGPathSegMovetoAbs.h: Removed.
* svg/SVGPathSegMovetoRel.h: Removed.
* svg/SVGPathSegValue.h: Added.
(WebCore::SVGPathSegValue::create):
(WebCore::SVGPathSegValue::clone const):
(WebCore::SVGPathSegValue::SVGPathSegValue):
(WebCore::SVGPathSegValue::argument const):
(WebCore::SVGPathSegValue::setArgument):
(WebCore::SVGPathSegLinetoHorizontal::x const):
(WebCore::SVGPathSegLinetoHorizontal::setX):
(WebCore::SVGPathSegLinetoVertical::y const):
(WebCore::SVGPathSegLinetoVertical::setY):
(WebCore::SVGPathSegSingleCoordinate::x const):
(WebCore::SVGPathSegSingleCoordinate::setX):
(WebCore::SVGPathSegSingleCoordinate::y const):
(WebCore::SVGPathSegSingleCoordinate::setY):
(WebCore::SVGPathSegCurvetoQuadratic::x const):
(WebCore::SVGPathSegCurvetoQuadratic::setX):
(WebCore::SVGPathSegCurvetoQuadratic::y const):
(WebCore::SVGPathSegCurvetoQuadratic::setY):
(WebCore::SVGPathSegCurvetoQuadratic::x1 const):
(WebCore::SVGPathSegCurvetoQuadratic::setX1):
(WebCore::SVGPathSegCurvetoQuadratic::y1 const):
(WebCore::SVGPathSegCurvetoQuadratic::setY1):
(WebCore::SVGPathSegCurvetoCubicSmooth::x const):
(WebCore::SVGPathSegCurvetoCubicSmooth::setX):
(WebCore::SVGPathSegCurvetoCubicSmooth::y const):
(WebCore::SVGPathSegCurvetoCubicSmooth::setY):
(WebCore::SVGPathSegCurvetoCubicSmooth::x2 const):
(WebCore::SVGPathSegCurvetoCubicSmooth::setX2):
(WebCore::SVGPathSegCurvetoCubicSmooth::y2 const):
(WebCore::SVGPathSegCurvetoCubicSmooth::setY2):
(WebCore::SVGPathSegCurvetoCubic::x const):
(WebCore::SVGPathSegCurvetoCubic::setX):
(WebCore::SVGPathSegCurvetoCubic::y const):
(WebCore::SVGPathSegCurvetoCubic::setY):
(WebCore::SVGPathSegCurvetoCubic::x1 const):
(WebCore::SVGPathSegCurvetoCubic::setX1):
(WebCore::SVGPathSegCurvetoCubic::y1 const):
(WebCore::SVGPathSegCurvetoCubic::setY1):
(WebCore::SVGPathSegCurvetoCubic::x2 const):
(WebCore::SVGPathSegCurvetoCubic::setX2):
(WebCore::SVGPathSegCurvetoCubic::y2 const):
(WebCore::SVGPathSegCurvetoCubic::setY2):
(WebCore::SVGPathSegArc::x const):
(WebCore::SVGPathSegArc::setX):
(WebCore::SVGPathSegArc::y const):
(WebCore::SVGPathSegArc::setY):
(WebCore::SVGPathSegArc::r1 const):
(WebCore::SVGPathSegArc::setR1):
(WebCore::SVGPathSegArc::r2 const):
(WebCore::SVGPathSegArc::setR2):
(WebCore::SVGPathSegArc::angle const):
(WebCore::SVGPathSegArc::setAngle):
(WebCore::SVGPathSegArc::largeArcFlag const):
(WebCore::SVGPathSegArc::setLargeArcFlag):
(WebCore::SVGPathSegArc::sweepFlag const):
(WebCore::SVGPathSegArc::setSweepFlag):
* svg/SVGPathSegWithContext.h: Removed.

* svg/SVGPathUtilities.cpp:
(WebCore::buildSVGPathByteStreamFromSVGPathSegList):
(WebCore::buildSVGPathSegListFromByteStream):
(WebCore::buildStringFromByteStream):
(WebCore::buildSVGPathByteStreamFromSVGPathSegListValues): Deleted.
(WebCore::appendSVGPathByteStreamFromSVGPathSeg): Deleted.
(WebCore::buildSVGPathSegListValuesFromByteStream): Deleted.
(WebCore::buildStringFromSVGPathSegListValues): Deleted.
* svg/SVGPathUtilities.h:
Since the class SVGPathSegListValues is removed, all the parsing functions
have now to deal with SVGPathSegList directly.

* svg/SVGPoint.h:
* svg/SVGValue.h:
* svg/properties/SVGAnimatedPathSegListPropertyTearOff.cpp: Removed.
* svg/properties/SVGAnimatedPathSegListPropertyTearOff.h: Removed.
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
(WebCore::SVGAnimatedPathSegList::create):
(WebCore::SVGAnimatedPathSegList::currentPathByteStream):
(WebCore::SVGAnimatedPathSegList::currentPath):
(WebCore::SVGAnimatedPathSegList::approximateMemoryCost const):
Provides an easy way to access the current SVGPathByteStream and Path
objects from the SVGAnimatedPathSegList.

* svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
(WebCore::SVGAnimationPathSegListFunction::progress):
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):

LayoutTests:

* svg/dom/SVGPathSegList-appendItem-expected.txt:
* svg/dom/SVGPathSegList-appendItem.xhtml:
* svg/dom/SVGPathSegList-clear-and-initialize-expected.txt:
* svg/dom/SVGPathSegList-clear-and-initialize.xhtml:
* svg/dom/SVGPathSegList-insertItemBefore-expected.txt:
* svg/dom/SVGPathSegList-insertItemBefore.xhtml:
* svg/dom/SVGPathSegList-replaceItem-expected.txt:
* svg/dom/SVGPathSegList-replaceItem.xhtml:
These changes are required because SVGPathSegList will be following the SVG2
specs regarding adding new items to the list.

See https://www.w3.org/TR/SVG/types.html#TermListInterface.

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

4 months agohttp/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with...
sroberts@apple.com [Wed, 27 Mar 2019 18:33:51 +0000 (18:33 +0000)]
http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196307

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations: Marking test as flaky while waiting for a fix

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

4 months agoFix some more deprecation warnings in WKDrawingView
timothy_horton@apple.com [Wed, 27 Mar 2019 18:22:59 +0000 (18:22 +0000)]
Fix some more deprecation warnings in WKDrawingView
https://bugs.webkit.org/show_bug.cgi?id=196282
<rdar://problem/47637608>

Reviewed by Wenson Hsieh.

* Platform/spi/ios/PencilKitSPI.h:
* SourcesCocoa.txt:
* UIProcess/ios/PencilKitSoftLink.h:
* UIProcess/ios/PencilKitSoftLink.mm:
* UIProcess/ios/WKContentViewInteraction.mm:
* UIProcess/ios/WKDrawingCoordinator.h:
* UIProcess/ios/WKDrawingCoordinator.mm:
(-[WKDrawingCoordinator initWithContentView:]):
(-[WKDrawingCoordinator currentInk]):
(-[WKDrawingCoordinator undoManagerForInkPicker:]):
(-[WKDrawingCoordinator containingViewForInkPicker:]):
(-[WKDrawingCoordinator inkPickerDidToggleRuler:]):
(-[WKDrawingCoordinator inkPickerDidChangeInk:]):
(-[WKDrawingCoordinator installInkPickerForDrawing:]):
(-[WKDrawingCoordinator uninstallInkPicker]):
(-[WKDrawingCoordinator inkPicker]): Deleted.
(-[WKDrawingCoordinator didChangeRulerState:]): Deleted.
(-[WKDrawingCoordinator didChangeInk:]): Deleted.
* UIProcess/ios/WKDrawingView.mm:
(-[WKDrawingView _canvasViewWillBeginDrawing:]):
* UIProcess/ios/WKInkPickerView.h: Removed.
* UIProcess/ios/WKInkPickerView.mm: Removed.
* WebKit.xcodeproj/project.pbxproj:
Adopt the new names.

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

4 months agoAVAudioSessionRouteSharingPolicyLongForm has been deprecated
ryanhaddad@apple.com [Wed, 27 Mar 2019 18:22:24 +0000 (18:22 +0000)]
AVAudioSessionRouteSharingPolicyLongForm has been deprecated
https://bugs.webkit.org/show_bug.cgi?id=196301

Unrereivewed build fix.

* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSession::setCategory):
(WebCore::AudioSession::routeSharingPolicy const):

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

4 months agoXMLHttpRequestUpload's loadstart event not correct initialized
cdumez@apple.com [Wed, 27 Mar 2019 18:10:51 +0000 (18:10 +0000)]
XMLHttpRequestUpload's loadstart event not correct initialized
https://bugs.webkit.org/show_bug.cgi?id=196174
<rdar://problem/49191412>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/xhr/event-error-order.sub.html:
Update test after https://github.com/web-platform-tests/wpt/pull/13365

* web-platform-tests/xhr/abort-during-upload-expected.txt:
* web-platform-tests/xhr/event-error-order.sub-expected.txt:
* web-platform-tests/xhr/event-loadstart-upload-expected.txt:
* web-platform-tests/xhr/event-timeout-order-expected.txt:
* web-platform-tests/xhr/send-response-event-order-expected.txt:
Rebaseline several WPT tests that are now passing.

Source/WebCore:

Align progress event firing with the XHR specification.

No new tests, rebaselined existing tests.

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):
As per [1], the loadstart event fired on the XMLHttpRequestUpload object should use
loaded=0 and total=`req’s body’s total bytes`.
[1] https://xhr.spec.whatwg.org/#the-send()-method (step 11.2.)

(WebCore::XMLHttpRequest::didSendData):
As per [2], the progress / load / loadend should use loaded=transmitted and total=length.
[2] https://xhr.spec.whatwg.org/#ref-for-process-request-end-of-body (steps 5, 6 and 7)

(WebCore::XMLHttpRequest::didReceiveData):
As per [3], we should fire the readystatechange event *before* the progress event.
This is covered by web-platform-tests/xhr/send-response-event-order.htm which was failing
differently after the other changes in this patch.
[3] https://xhr.spec.whatwg.org/#ref-for-process-response (steps 9.4 and 9.5)

(WebCore::XMLHttpRequest::dispatchErrorEvents):
As per [4], in case of an error, we should fire the provided 'event' and 'loadend' with
loaded=0 and total=0.
[4] https://xhr.spec.whatwg.org/#request-error-steps (steps 7 and 8)

* xml/XMLHttpRequestUpload.cpp:
(WebCore::XMLHttpRequestUpload::dispatchProgressEvent):
* xml/XMLHttpRequestUpload.h:
Simplify XMLHttpRequestUpload. It no longer needs to store loaded / total as data
members now that they are always passed by the call site. lengthComputable is set
to !!total as [5] says to set it to true if length/total is not 0.
[5] https://xhr.spec.whatwg.org/#concept-event-fire-progress

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

4 months agoREGRESSION (r242687): Fullscreen YouTube videos show blank white space at top
simon.fraser@apple.com [Wed, 27 Mar 2019 18:06:49 +0000 (18:06 +0000)]
REGRESSION (r242687): Fullscreen YouTube videos show blank white space at top
https://bugs.webkit.org/show_bug.cgi?id=196304
rdar://problem/49175760

Reviewed by Zalan Bujtas.

Source/WebCore:

repositionRelatedLayers() should not short-circuit when topContentInset is zero,
because topContentInset might be changing from non-zero to zero, and then we need
to move layers around.

Test: scrollingcoordinator/mac/top-content-inset-to-zero.html

* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::repositionRelatedLayers):

LayoutTests:

* scrollingcoordinator/mac/top-content-inset-to-zero-expected.html: Added.
* scrollingcoordinator/mac/top-content-inset-to-zero.html: Added.

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

4 months agohttp/tests/cache/disk-cache/memory-cache-revalidation-updates-disk-cache.html is...
sroberts@apple.com [Wed, 27 Mar 2019 17:59:32 +0000 (17:59 +0000)]
http/tests/cache/disk-cache/memory-cache-revalidation-updates-disk-cache.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=16297

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations: Updated test expectations to include iOS Simulator

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

4 months agofast/viewport/ios/use-minimum-device-width-for-page-without-viewport-meta.html is...
sroberts@apple.com [Wed, 27 Mar 2019 16:42:39 +0000 (16:42 +0000)]
fast/viewport/ios/use-minimum-device-width-for-page-without-viewport-meta.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196298

Unreviewed test gardening

* platform/ios-simulator-wk2/TestExpectations: Updating test expectation for flaky failure

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

4 months agofast/visual-viewport/ios/min-scale-greater-than-one.html is a flaky failure
sroberts@apple.com [Wed, 27 Mar 2019 16:37:01 +0000 (16:37 +0000)]
fast/visual-viewport/ios/min-scale-greater-than-one.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196300

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations: Updating test expectation for flaky failure

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

4 months agoLayout Test js/math-clz32.html is failing
pvollan@apple.com [Wed, 27 Mar 2019 16:12:22 +0000 (16:12 +0000)]
Layout Test js/math-clz32.html is failing
https://bugs.webkit.org/show_bug.cgi?id=196209

Reviewed by Ross Kirsling.

Source/WTF:

Use the correct number of loop iterations when counting leading zeros. Also, the
count was off by one for the Win64 case.

* wtf/MathExtras.h:
(WTF::clz):

LayoutTests:

* platform/win/TestExpectations:

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

4 months agoUnreviewed. Fix individual benchmark description urls to go to in-depth.html instead...
sbarati@apple.com [Wed, 27 Mar 2019 15:22:28 +0000 (15:22 +0000)]
Unreviewed. Fix individual benchmark description urls to go to in-depth.html instead of about.html

PerformanceTests:

* JetStream2/JetStreamDriver.js:
(Driver.prototype.prepareToRun.text.div.id.string_appeared_here.h3):

Websites/browserbench.org:

* JetStream2.0/JetStreamDriver.js:
(Driver.prototype.prepareToRun.text.div.id.string_appeared_here.h3):

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

4 months ago[iOS WK2] Fixed elements in frames can be misplaced sometimes
simon.fraser@apple.com [Wed, 27 Mar 2019 15:22:03 +0000 (15:22 +0000)]
[iOS WK2] Fixed elements in frames can be misplaced sometimes
https://bugs.webkit.org/show_bug.cgi?id=196290

Reviewed by Frédéric Wang.

Source/WebCore:

In a page containing position:fixed inside an async-scrolling iframe, if the
main page is scrolled down, and you reload, then the fixed element in the iframe can
get misplaced or disappear.

The bug was that the reconcileViewportConstrainedLayerPositions() recursive state node
walk would cross frame boundaries, hitting subframe ScrollingStateFixedNodes with a viewport rect
for the main page.

Fix by giving ScrollingStateTree the responsibility for the recursive tree walk, and
have it bail at at frame boundaries.

Test: scrollingcoordinator/ios/fixed-in-frame-layer-reconcile-layer-position.html

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::reconcileViewportConstrainedLayerPositions):
* page/scrolling/ScrollingStateFixedNode.cpp:
(WebCore::ScrollingStateFixedNode::reconcileLayerPositionForViewportRect):
* page/scrolling/ScrollingStateNode.cpp:
(WebCore::ScrollingStateNode::reconcileLayerPositionForViewportRect): Deleted.
* page/scrolling/ScrollingStateNode.h:
(WebCore::ScrollingStateNode::reconcileLayerPositionForViewportRect):
* page/scrolling/ScrollingStateStickyNode.cpp:
(WebCore::ScrollingStateStickyNode::reconcileLayerPositionForViewportRect):
* page/scrolling/ScrollingStateTree.cpp:
(WebCore::ScrollingStateTree::reconcileLayerPositionsRecursive):
(WebCore::ScrollingStateTree::reconcileViewportConstrainedLayerPositions):
* page/scrolling/ScrollingStateTree.h:

LayoutTests:

* scrollingcoordinator/ios/fixed-in-frame-layer-reconcile-layer-position-expected.txt: Added.
* scrollingcoordinator/ios/fixed-in-frame-layer-reconcile-layer-position.html: Added.

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

4 months agoBuild failure with gstreamer 1.12.5 if USE_GSTREAMER_GL is enabled
philn@webkit.org [Wed, 27 Mar 2019 12:14:07 +0000 (12:14 +0000)]
Build failure with gstreamer 1.12.5 if USE_GSTREAMER_GL is enabled
https://bugs.webkit.org/show_bug.cgi?id=196178

Reviewed by Xabier Rodriguez-Calvar.

The gst/gl/gl.h header needs to be included before
GraphicsContext3D.h to avoid declaration conflicts with
OpenGLShims.

Based on a patch from Mike Gorse <mgorse@suse.com>

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):

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

4 months ago[GStreamer] Remove the HLS queue buffering query hack
philn@webkit.org [Wed, 27 Mar 2019 11:34:53 +0000 (11:34 +0000)]
[GStreamer] Remove the HLS queue buffering query hack
https://bugs.webkit.org/show_bug.cgi?id=196244

Reviewed by Xabier Rodriguez-Calvar.

Because the http src element now provides network statistics to
the player we can now compute an estimation of the data loading in
case the buffering query isn't handled by any element of the
pipeline.

No new tests, existing HLS tests cover this change.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
(WebCore::findHLSQueue): Deleted.
(WebCore::isHLSProgressing): Deleted.

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

4 months agoUnreviewed. Add GLib API test cases after r243434.
carlosgc@webkit.org [Wed, 27 Mar 2019 10:59:47 +0000 (10:59 +0000)]
Unreviewed. Add GLib API test cases after r243434.

* TestWebKitAPI/Tests/WebKitGLib/TestLoaderClient.cpp:
(testWebViewActiveURI):
(serverCallback):
* TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:
(sendRequestCallback):

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

4 months agoGeolocation request not complete when watch request was started in a different web...
carlosgc@webkit.org [Wed, 27 Mar 2019 09:36:29 +0000 (09:36 +0000)]
Geolocation request not complete when watch request was started in a different web process
https://bugs.webkit.org/show_bug.cgi?id=195996

Reviewed by Alex Christensen.

Source/WebKit:

In WebGeolocationManagerProxy::startUpdating() we do nothing when the provider is already updating. We should
reply with a DidChangePosition using the last known position, if available. If we are updating, but we still
don't have a known position, the request will be completed when
WebGeolocationManagerProxy::providerDidChangePosition() is called since it always notifies all web
processes.

* UIProcess/WebGeolocationManagerProxy.cpp:
(WebKit::WebGeolocationManagerProxy::providerDidChangePosition): Cache the position.
(WebKit::WebGeolocationManagerProxy::startUpdating): Reply using cached position if already known.
* UIProcess/WebGeolocationManagerProxy.h:
(WebKit::WebGeolocationManagerProxy::lastPosition const): Return cached position.
* WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
(WebKit::WebGeolocationClient::lastPosition): Remove the FIXME since we don't want this feature.

Tools:

Add a test case.

* TestWebKitAPI/Tests/WebKit/Geolocation.cpp:
(TestWebKitAPI::runJavaScriptAlert):
(TestWebKitAPI::TEST):

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

4 months agoUnreviewed Windows build fix
said@apple.com [Wed, 27 Mar 2019 01:05:32 +0000 (01:05 +0000)]
Unreviewed Windows build fix
https://bugs.webkit.org/show_bug.cgi?id=196083
<rdar://problem/49121836>

* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::isSupportedAttributeType):

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

4 months ago[macOS] Correct kerberos-related sandbox violations
bfulgham@apple.com [Wed, 27 Mar 2019 00:55:19 +0000 (00:55 +0000)]
[macOS] Correct kerberos-related sandbox violations
https://bugs.webkit.org/show_bug.cgi?id=196279
<rdar://problem/48622502>

Reviewed by Per Arne Vollan.

We need to allow communications with a Kerberos-related service on macOS
until <rdar://problem/35542803> is fixed.

* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

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

4 months agoFTL: Emit code to validate AI's state when running the compiled code
sbarati@apple.com [Wed, 27 Mar 2019 00:08:46 +0000 (00:08 +0000)]
FTL: Emit code to validate AI's state when running the compiled code
https://bugs.webkit.org/show_bug.cgi?id=195924
<rdar://problem/49003422>

Reviewed by Filip Pizlo.

This patch adds code that between the execution of each node that validates
the types that AI proves. This option is too expensive to turn on for our
regression testing, but we think it will be valuable in other types of running
modes, such as when running with a fuzzer.

This patch also adds options to only probabilistically run this validation
after the execution of each node. As the probability is lowered, there is
less of a perf hit.

This patch just adds this validation in the FTL. A follow-up patch will land
it in the DFG too: https://bugs.webkit.org/show_bug.cgi?id=196219

* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::LowerDFGToB3):
(JSC::FTL::DFG::LowerDFGToB3::compileBlock):
(JSC::FTL::DFG::LowerDFGToB3::validateAIState):
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::lowJSValue):
* runtime/Options.h:

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

4 months agoSkip WebAssembly test on 32-bit systems
dinfuehr@igalia.com [Wed, 27 Mar 2019 00:02:55 +0000 (00:02 +0000)]
Skip WebAssembly test on 32-bit systems
https://bugs.webkit.org/show_bug.cgi?id=196206

Reviewed by Saam Barati.

Invoking runDefault executes test immediately even though
that test should be skipped due to missing WASM support.
Therefore remove runDefault.

* wasm/regress/web-assembly-link-error-exception-check.js:

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