WebKit-https.git
5 months agoUnreviewed, speculative fix for CLoop build on CPU(UNKNOWN)
ysuzuki@apple.com [Mon, 25 Mar 2019 18:13:09 +0000 (18:13 +0000)]
Unreviewed, speculative fix for CLoop build on CPU(UNKNOWN)
https://bugs.webkit.org/show_bug.cgi?id=195982

* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):

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

5 months ago[WTF] Fix typo when forcing WTF_CPU_X86
commit-queue@webkit.org [Mon, 25 Mar 2019 17:57:13 +0000 (17:57 +0000)]
[WTF] Fix typo when forcing WTF_CPU_X86
https://bugs.webkit.org/show_bug.cgi?id=196204

Patch by Xan L√≥pez <xan@igalia.com> on 2019-03-25
Reviewed by Michael Catanzaro.

Fix a typo when setting the WTF_CPU variable for X86.

* CMakeLists.txt:

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

5 months ago[GTK] Gardening, update expected results for several smart-delete-paragraph tests
dpino@igalia.com [Mon, 25 Mar 2019 16:11:31 +0000 (16:11 +0000)]
[GTK] Gardening, update expected results for several smart-delete-paragraph tests

Unreviewed test gardening.

* platform/gtk/editing/deleting/smart-delete-paragraph-001-expected.txt: Added.
* platform/gtk/editing/deleting/smart-delete-paragraph-002-expected.txt: Added.
* platform/gtk/editing/deleting/smart-delete-paragraph-004-expected.txt: Added.

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

5 months agoUnreviewed, tiny fix after r243388 to address API test failures on iOS
cdumez@apple.com [Mon, 25 Mar 2019 15:37:37 +0000 (15:37 +0000)]
Unreviewed, tiny fix after r243388 to address API test failures on iOS

m_processType was properly initialized on macOS but not iOS.

* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeProcess):

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

5 months agoUpdate WebGPU class names based on sketch.idl
justin_fan@apple.com [Mon, 25 Mar 2019 15:29:17 +0000 (15:29 +0000)]
Update WebGPU class names based on sketch.idl
https://bugs.webkit.org/show_bug.cgi?id=194260

Reviewed by Dean Jackson.
Source/WebCore:

Update all exposed Web GPU interface names to GPU* prefix.

Existing Web GPU tests updated to expect new names.

* Modules/webgpu/WebGPU.idl:
* Modules/webgpu/WebGPUAdapter.idl:
* Modules/webgpu/WebGPUBindGroup.idl:
* Modules/webgpu/WebGPUBindGroupLayout.idl:
* Modules/webgpu/WebGPUBuffer.idl:
* Modules/webgpu/WebGPUDevice.idl:
* Modules/webgpu/WebGPUInputStepMode.h: Removed.
* Modules/webgpu/WebGPUPipelineLayout.idl:
* Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
* Modules/webgpu/WebGPUQueue.idl:
* Modules/webgpu/WebGPURenderPassEncoder.idl:
* Modules/webgpu/WebGPURenderPipeline.idl:
* Modules/webgpu/WebGPUSampler.idl:
* Modules/webgpu/WebGPUTexture.idl:
* Modules/webgpu/WebGPUTextureView.idl:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:

LayoutTests:

Update all exposed Web GPU interface names to GPU* prefix.

* webgpu/adapter-options.html:
* webgpu/bind-groups.html:
* webgpu/map-read-buffers.html:
* webgpu/map-write-buffers.html:
* webgpu/pipeline-layouts.html:
* webgpu/queue-creation.html:
* webgpu/render-command-encoding.html:
* webgpu/render-pipelines.html:
* webgpu/textures-textureviews.html:
* webgpu/webgpu-enabled.html:

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

5 months agoA single leading space is not considered as a word break even when word-break: break...
jfernandez@igalia.com [Mon, 25 Mar 2019 15:07:35 +0000 (15:07 +0000)]
A single leading space is not considered as a word break even when word-break: break-all is set
https://bugs.webkit.org/show_bug.cgi?id=195361

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Imported additonal WPT from the CSS Text Suite that verify the
change doesn't regress in any case, specially for the word-break:
break-word feature.

* web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-007-expected.html: Added.
* web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-007.html: Added.
* web-platform-tests/css/css-text/overflow-wrap/w3c-import.log:
* web-platform-tests/css/css-text/white-space/pre-wrap-008-expected.html: Added.
* web-platform-tests/css/css-text/white-space/pre-wrap-008.html: Added.
* web-platform-tests/css/css-text/white-space/w3c-import.log:
* web-platform-tests/css/css-text/word-break/w3c-import.log:
* web-platform-tests/css/css-text/word-break/word-break-break-all-015-expected.html: Added.
* web-platform-tests/css/css-text/word-break/word-break-break-all-015.html: Added.

Source/WebCore:

We must consider leading white-spaces as potential soft-breaking
opportunities that may avoid breaking in the middle of the word.

However, 'break-word: break-all' [1] implies that we should ignore
previous opportunities and break at any character (among the ones
valid for 'break-all') that prevents the line to overflow. Note,
that these breakable characters are different from the ones
provided by 'line-break: anywhere' [2].

This change is covered by the already existent tests of the CSS
Text 3 suite of the Web Platform Tests.

The word-break-break-all-010.html was precisely designed to cover
the basic issue fixed with this change, verifying that the word is
indeed broken even if a single leading space constitutes a
previous soft-breaking opportunity.

There are other Web Platform Tests. which already pass before this
change, to verify that such leading white-space must be used
instead of breaking the word in any other case, including
overflow-wrap: break-word and even the deprecated word-break:
break-word.

   - white-space/pre-wrap-008.html
   - white-space/pre-wrap-015.html
   - white-space/pre-wrap-016.html
   - overflow-wrap/overflow-wrap-break-word-004.html
   - overflow-wrap/overflow-wrap-break-word-005.html
   - overflow-wrap/overflow-wrap-break-word-007.html
   - word-break/word-break-break-all-011.html
   - word-break/word-break-break-all-014.html

The reason why the word-break-break-all-010.html passes in Mac
platform is that for that case the SimpleLineLayout codepath is
executed instead, which doesn't have this bug, present in the old
line-breaking logic implemented in the BreakingContext class.

In order to verify the validity of this change, I've added several
tests under fast/text with the SimpleLineLayout disabled.

Tests: fast/text/overflow-wrap-break-word-004.html
       fast/text/overflow-wrap-break-word-005.html
       fast/text/overflow-wrap-break-word-007.html
       fast/text/whitespace/pre-wrap-008.html
       fast/text/whitespace/pre-wrap-015.html
       fast/text/whitespace/pre-wrap-016.html
       fast/text/word-break-break-all-010.html
       fast/text/word-break-break-all-011.html
       fast/text/word-break-break-all-015.html
       imported/w3c/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-007.html
       imported/w3c/web-platform-tests/css/css-text/white-space/pre-wrap-008.html
       imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-015.html

* rendering/line/BreakingContext.h:
(WebCore::BreakingContext::handleText):

LayoutTests:

Removed some entries from the GTK expectation file.
Added tests to verify the codepath with SimpleLineLayout disabled.

* fast/text/overflow-wrap-break-word-004-expected.html: Added.
* fast/text/overflow-wrap-break-word-004.html: Added.
* fast/text/overflow-wrap-break-word-005-expected.html: Added.
* fast/text/overflow-wrap-break-word-005.html: Added.
* fast/text/overflow-wrap-break-word-007-expected.html: Added.
* fast/text/overflow-wrap-break-word-007.html: Added.
* fast/text/whitespace/pre-wrap-008-expected.html: Added.
* fast/text/whitespace/pre-wrap-008.html: Added.
* fast/text/whitespace/pre-wrap-015-expected.html: Added.
* fast/text/whitespace/pre-wrap-015.html: Added.
* fast/text/whitespace/pre-wrap-016-expected.html: Added.
* fast/text/whitespace/pre-wrap-016.html: Added.
* fast/text/word-break-break-all-010-expected.html: Added.
* fast/text/word-break-break-all-010.html: Added.
* fast/text/word-break-break-all-011-expected.html: Added.
* fast/text/word-break-break-all-011.html: Added.
* fast/text/word-break-break-all-015-expected.html: Added.
* fast/text/word-break-break-all-015.html: Added.
* platform/gtk/TestExpectations:
  - word-break-break-all-010.html passes now thanks to this change.

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

5 months ago[GTK][WPE] Gardening, update test expectations.
dpino@igalia.com [Mon, 25 Mar 2019 14:42:42 +0000 (14:42 +0000)]
[GTK][WPE] Gardening, update test expectations.

Unreviewed test gardening.

* platform/gtk/TestExpectations:
* platform/gtk/fast/text/ja-sans-serif-expected.png: Removed.
Test harnessing suggested to remove this file as it was not being used.
* platform/wpe/TestExpectations:

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

5 months agoReflect HTMLLinkElement.as according to the spec
commit-queue@webkit.org [Mon, 25 Mar 2019 10:30:55 +0000 (10:30 +0000)]
Reflect HTMLLinkElement.as according to the spec
https://bugs.webkit.org/show_bug.cgi?id=196189

Patch by Rob Buis <rbuis@igalia.com> on 2019-03-25
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Update improved test result and import reflected-as-value.html.

* web-platform-tests/html/dom/reflection-metadata-expected.txt:
* web-platform-tests/preload/reflected-as-value-expected.txt: Added.
* web-platform-tests/preload/reflected-as-value.html: Added.

Source/WebCore:

The 'as' attribute is an enumerated attribute [1] and should
reflect using a finite set of keywords, so lowercase the as getter
to match the defined set of destinations [2].

Test: imported/w3c/web-platform-tests/preload/reflected-as-value.html

[1] https://html.spec.whatwg.org/#enumerated-attribute
[2] https://fetch.spec.whatwg.org/#concept-request-destination

* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::as const):

LayoutTests:

Update improved test result.

* platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-metadata-expected.txt:

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

5 months ago[GTK][WPE] Do not allow changes in active URI before provisional load starts for...
carlosgc@webkit.org [Mon, 25 Mar 2019 09:11:58 +0000 (09:11 +0000)]
[GTK][WPE] Do not allow changes in active URI before provisional load starts for non-API requests
https://bugs.webkit.org/show_bug.cgi?id=194208

Reviewed by Michael Catanzaro.

* UIProcess/API/glib/WebKitWebView.cpp:
(webkitWebViewWillStartLoad): Block updates of active URL.
(webkitWebViewLoadChanged): Unblock updates of active URL on WEBKIT_LOAD_STARTED.

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

5 months agoRemove NavigatorContentUtils in WebCore/Modules
gyuyoung.kim@webkit.org [Mon, 25 Mar 2019 08:07:14 +0000 (08:07 +0000)]
Remove NavigatorContentUtils in WebCore/Modules
https://bugs.webkit.org/show_bug.cgi?id=196070

Reviewed by Alex Christensen.

NavigatorContentUtils was to support the custom scheme spec [1].
However, in WebKit side, no port has supported the feature in
WebKit layer after EFL port was removed. So there has been the
only IDL implementation of the NavigatorContentUtils in WebCore.
Source/JavaScriptCore:

So we don't need to keep the implementation in WebCore anymore.

[1] https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

So we don't need to keep the implementation in WebCore anymore.

[1] https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers

No new tests because this patch is just to remove the feature.

* CMakeLists.txt:
* Modules/navigatorcontentutils/NavigatorContentUtils.cpp: Removed.
* Modules/navigatorcontentutils/NavigatorContentUtils.h: Removed.
* Modules/navigatorcontentutils/NavigatorContentUtils.idl: Removed.
* Modules/navigatorcontentutils/NavigatorContentUtilsClient.h: Removed.
* Sources.txt:

Source/WebCore/PAL:

So we don't need to keep the implementation in WebCore anymore.

[1] https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

So we don't need to keep the implementation in WebCore anymore.

[1] https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers

* Configurations/FeatureDefines.xcconfig:
* WebProcess/WebCoreSupport/WebNavigatorContentUtilsClient.h: Removed.

Source/WebKitLegacy/mac:

So we don't need to keep the implementation in WebKit.

* Configurations/FeatureDefines.xcconfig:

Tools:

So we don't need to keep the implementation in WebCore anymore.

[1] https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

So we don't need to keep the implementation in WebCore anymore.

[1] https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers

* fast/dom/NavigatorContentUtils/is-protocol-handler-registered-expected.txt: Removed.
* fast/dom/NavigatorContentUtils/is-protocol-handler-registered.html: Removed.
* fast/dom/NavigatorContentUtils/register-protocol-handler-expected.txt: Removed.
* fast/dom/NavigatorContentUtils/register-protocol-handler.html: Removed.
* fast/dom/NavigatorContentUtils/unregister-protocol-handler-expected.txt: Removed.
* fast/dom/NavigatorContentUtils/unregister-protocol-handler.html: Removed.
* platform/gtk/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac/TestExpectations:
* platform/wincairo/TestExpectations:
* platform/wpe/TestExpectations:

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

5 months ago[css-grid] Fix grid container baseline alignment for orthogonal items
rego@igalia.com [Mon, 25 Mar 2019 07:46:54 +0000 (07:46 +0000)]
[css-grid] Fix grid container baseline alignment for orthogonal items
https://bugs.webkit.org/show_bug.cgi?id=196141

Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Imported test from WPT. This patch is making some of the test cases pass but not all.
Some are still failing in WebKit as it never uses the central baseline on vertical writing modes (bug #94410),
also "text-orientation" is not supported yet in WebKit (bug #196139),
even the prefixed version "-webkit-text-orientation" doesn't fix anything in this test case.

* web-platform-tests/css/css-grid/alignment/grid-container-baseline-001-expected.txt: Added.
* web-platform-tests/css/css-grid/alignment/grid-container-baseline-001.html: Added.
* web-platform-tests/css/css-grid/alignment/w3c-import.log:

Source/WebCore:

Grid container baseline was wrongly computed when done in reference to an orthogonal item.

Test: imported/w3c/web-platform-tests/css/css-grid/alignment/grid-container-baseline-001.html

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::firstLineBaseline const): Simple change to use logicalTopForChild()
so it takes into account grid container and item writing modes.

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

5 months agoUnreviewed WPE build fix.
zandobersek@gmail.com [Mon, 25 Mar 2019 06:24:45 +0000 (06:24 +0000)]
Unreviewed WPE build fix.

* UIProcess/wpe/WebPasteboardProxyWPE.cpp:
Add an explicit CompletionHandler.h include to avoid a trip-up in
unified builds.

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

5 months ago[WinCairo] WebProcessDataStoreParameters.h(32): error C2653: 'SandboxExtension':...
Hironori.Fujii@sony.com [Mon, 25 Mar 2019 05:09:28 +0000 (05:09 +0000)]
[WinCairo] WebProcessDataStoreParameters.h(32): error C2653: 'SandboxExtension': is not a class or namespace name
https://bugs.webkit.org/show_bug.cgi?id=196192

Unreviewed for WinCairo port.

* Shared/WebProcessDataStoreParameters.h: Added #include "SandboxExtension.h".

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

5 months agoUnreviewed, forgot to refactor variable name for windows build in
keith_miller@apple.com [Mon, 25 Mar 2019 02:53:27 +0000 (02:53 +0000)]
Unreviewed, forgot to refactor variable name for windows build in
r243418.

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

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

5 months ago[JSC] Move test into directory for WASM tests
dinfuehr@igalia.com [Mon, 25 Mar 2019 00:41:25 +0000 (00:41 +0000)]
[JSC] Move test into directory for WASM tests
https://bugs.webkit.org/show_bug.cgi?id=196187

Reviewed by Mark Lam.

Move Test into wasm-directory. Otherwise this test
is also executed on systems without WASM support.

* wasm/regress/web-assembly-link-error-exception-check.js: Renamed from JSTests/stress/web-assembly-link-error-exception-check.js.

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

5 months ago[watchOS] Remove unused Proximity Networking code
aestes@apple.com [Sun, 24 Mar 2019 20:42:37 +0000 (20:42 +0000)]
[watchOS] Remove unused Proximity Networking code
https://bugs.webkit.org/show_bug.cgi?id=196188

Reviewed by Tim Horton.

Source/WebKit:

* Configurations/WebKit.xcconfig:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::NetworkProcess):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformPrepareToSuspend):
(WebKit::NetworkProcess::platformProcessDidResume):
(WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
(WebKit::NetworkProcess::platformProcessDidTransitionToForeground):
* NetworkProcess/watchos/NetworkProximityAssertion.h: Removed.
* NetworkProcess/watchos/NetworkProximityAssertion.mm: Removed.
* NetworkProcess/watchos/NetworkProximityManager.h: Removed.
* NetworkProcess/watchos/NetworkProximityManager.mm: Removed.
* SourcesCocoa.txt:
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration wirelessContextIdentifier]):
(-[_WKProcessPoolConfiguration setWirelessContextIdentifier:]):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* WebKit.xcodeproj/project.pbxproj:

Source/WTF:

* wtf/FeatureDefines.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:
(TEST):

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

5 months agoWeb Inspector: Canvas: WebGL action icon shouldn't invert when selected
drousso@apple.com [Sun, 24 Mar 2019 20:23:32 +0000 (20:23 +0000)]
Web Inspector: Canvas: WebGL action icon shouldn't invert when selected
https://bugs.webkit.org/show_bug.cgi?id=196135

Reviewed by Timothy Hatcher.

* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._classNameForAction):
(WI.RecordingActionTreeElement._classNameForAction.classNameForActionName): Deleted.
Remove unnecessary logging and memoization.

* UserInterface/Views/RecordingActionTreeElement.css:
(.tree-outline:focus .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Added.
(@media (prefers-color-scheme: dark)):
(.item.recording-action:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Added.
(.tree-outline:focus .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer) > .icon): Deleted.
(.item.recording-action.has-context-replacer > .icon): Deleted.
(.item.recording-action:not(.invalid, .initial-state, .has-context-replacer) > .icon): Deleted.
Simplify styles between light and dark mode.

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

5 months agoWeb Inspector: testCellRoleForRequiredChidren accessibility audit checks for rows...
commit-queue@webkit.org [Sun, 24 Mar 2019 20:21:57 +0000 (20:21 +0000)]
Web Inspector: testCellRoleForRequiredChidren accessibility audit checks for rows in cells
https://bugs.webkit.org/show_bug.cgi?id=195988

Patch by Simon Welsh <simon@welsh-au.com> on 2019-03-24
Reviewed by Timothy Hatcher.

The audit now checks that rows contain cells, allowing any of the four
cell-based roles.

* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.addDefaultTestsIfNeeded):
(WI.AuditManager):
(WI.AuditManager.prototype.addDefaultTestsIfNeeded.const.testCellRoleForRequiredChidren): Deleted.

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

5 months agoWeb Inspector: Canvas: missing icons for WebGL2 contexts
drousso@apple.com [Sun, 24 Mar 2019 20:21:13 +0000 (20:21 +0000)]
Web Inspector: Canvas: missing icons for WebGL2 contexts
https://bugs.webkit.org/show_bug.cgi?id=196136

Reviewed by Timothy Hatcher.

* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled > .glyph): Added.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas:matches(.canvas-2d, .bitmaprenderer) .icon): Added.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas:matches(.webgl, .webgl2, .webgpu, .webmetal) .icon): Added.
(@media (prefers-color-scheme: dark)):
(.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.canvas-2d .icon): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.casnvas.webgl .icon): Deleted.
Use the 2D icon for BitmapRenderer and the 3D icon for WebGL2, WebMetals, and WebGPU.
Drive-by: the start/stop button text was too dark when disabled in dark mode.
* UserInterface/Models/Canvas.js:
Drive-by: "gpu" => "webgpu", to match the protocol string.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243424 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 months agoUnreviewed, fix -Wpessimizing-move warning
mcatanzaro@igalia.com [Sun, 24 Mar 2019 17:17:03 +0000 (17:17 +0000)]
Unreviewed, fix -Wpessimizing-move warning
https://bugs.webkit.org/show_bug.cgi?id=195905
<rdar://problem/49121824>

* svg/properties/SVGPropertyList.h:

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

5 months agoRolling out r243032 and r243071 because the fix is incorrect.
mark.lam@apple.com [Sun, 24 Mar 2019 04:15:56 +0000 (04:15 +0000)]
Rolling out r243032 and r243071 because the fix is incorrect.
https://bugs.webkit.org/show_bug.cgi?id=195892
<rdar://problem/48981239>

Not reviewed.

JSTests:

* stress/check-object-property-condition-liveness-before-accessing-it-when-watchpoints-fire.js: Removed.

Source/JavaScriptCore:

The fix is incorrect: it relies on being able to determine liveness of an object
in an ObjectPropertyCondition based on the state of the object's MarkedBit.
However, there's no guarantee that GC has run and that the MarkedBit is already
set even if the object is live.  As a result, we may not re-install adaptive
watchpoints based on presumed dead objects which are actually live.

I'm rolling this out, and will implement a more comprehensive fix to handle
watchpoint liveness later.

* bytecode/AdaptiveInferredPropertyValueWatchpointBase.cpp:
(JSC::AdaptiveInferredPropertyValueWatchpointBase::fire):
* bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp:
(JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::fireInternal):
* bytecode/ObjectPropertyCondition.cpp:
(JSC::ObjectPropertyCondition::dumpInContext const):
* bytecode/StructureStubClearingWatchpoint.cpp:
(JSC::StructureStubClearingWatchpoint::fireInternal):
* dfg/DFGAdaptiveStructureWatchpoint.cpp:
(JSC::DFG::AdaptiveStructureWatchpoint::fireInternal):
* runtime/StructureRareData.cpp:
(JSC::ObjectToStringAdaptiveStructureWatchpoint::fireInternal):

LayoutTests:

* platform/mac/TestExpectations:

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

5 months ago[Web GPU] Prototype compute pipeline with MSL
justin_fan@apple.com [Sun, 24 Mar 2019 01:35:13 +0000 (01:35 +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@243419 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 months agoRefactor clz/ctz and fix getLSBSet.
keith_miller@apple.com [Sun, 24 Mar 2019 01:32:06 +0000 (01:32 +0000)]
Refactor clz/ctz and fix getLSBSet.
https://bugs.webkit.org/show_bug.cgi?id=196162

Reviewed by Saam Barati.

Source/JavaScriptCore:

Refactor references of clz32/64 and ctz32 to use clz and ctz,
respectively.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGOperations.cpp:
* runtime/JSBigInt.cpp:
(JSC::JSBigInt::digitDiv):
(JSC::JSBigInt::absoluteDivWithBigIntDivisor):
(JSC::JSBigInt::calculateMaximumCharactersRequired):
(JSC::JSBigInt::toStringBasePowerOfTwo):
(JSC::JSBigInt::compareToDouble):
* runtime/MathObject.cpp:
(JSC::mathProtoFuncClz32):

Source/WTF:

This patch makes clz32/64 and ctz32 generic so they work on any
numeric type. Since these methods work on any type we don't need
to have a separate implementation of getLSBSet, which also
happened to be getMSBSet. This patch also adds getMSBSet as there
may be users who want that in the future.

* wtf/MathExtras.h:
(WTF::clz):
(WTF::ctz):
(WTF::getLSBSet):
(WTF::getMSBSet):
(getLSBSet): Deleted.
(WTF::clz32): Deleted.
(WTF::clz64): Deleted.
(WTF::ctz32): Deleted.

Tools:

Add tests for clz, ctz, getLSBSet, and getMSBSet.

* TestWebKitAPI/Tests/WTF/MathExtras.cpp:
(TestWebKitAPI::TEST):

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

5 months agoUnreviewed, fix typo in comment added in r243379.
cdumez@apple.com [Sun, 24 Mar 2019 00:47:08 +0000 (00:47 +0000)]
Unreviewed, fix typo in comment added in r243379.

* UIProcess/API/Cocoa/WKProcessGroup.mm:
(-[WKProcessGroup setDelegate:]):

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

5 months agoREGRESSION (iOS 8): Scrollbar can't be hidden when webkit-overflow-scrolling is set...
simon.fraser@apple.com [Sat, 23 Mar 2019 22:00:44 +0000 (22:00 +0000)]
REGRESSION (iOS 8): Scrollbar can't be hidden when webkit-overflow-scrolling is set to touch
https://bugs.webkit.org/show_bug.cgi?id=137043
rdar://problem/16595330

Reviewed by Zalan Bujtas.

Source/WebCore:

Plumb horizontalScrollbarHiddenByStyle/verticalScrollbarHiddenByStyle through ScrollableAreaParameters
to the UI process, and use it to set UIScrollView indicators visible or not.

Tests: fast/scrolling/ios/scrollbar-hiding.html:

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::operator<<):
* page/scrolling/ScrollingCoordinatorTypes.h:
* page/scrolling/ScrollingTreeNode.h:
* page/scrolling/ScrollingTreeOverflowScrollingNode.cpp:
(WebCore::ScrollingTreeOverflowScrollingNode::dumpProperties const):
* page/scrolling/ScrollingTreeScrollingNode.h:
* platform/ScrollableArea.h:
(WebCore::ScrollableArea::horizontalScrollbarHiddenByStyle const):
(WebCore::ScrollableArea::verticalScrollbarHiddenByStyle const):
* rendering/RenderLayer.cpp:
(WebCore::scrollbarHiddenByStyle):
(WebCore::RenderLayer::horizontalScrollbarHiddenByStyle const):
(WebCore::RenderLayer::verticalScrollbarHiddenByStyle const):
* rendering/RenderLayer.h:

Source/WebKit:

Plumb horizontalScrollbarHiddenByStyle/verticalScrollbarHiddenByStyle through ScrollableAreaParameters
to the UI process, and use it to set UIScrollView indicators visible or not.

The scroll snap changes in ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren() fix a bug
where hasChangedProperty(HorizontalSnapOffsets) was nested inside another set of hasChangedProperty()
tests, so would never get called.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ScrollableAreaParameters>::encode):
(IPC::ArgumentCoder<ScrollableAreaParameters>::decode):
* UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

LayoutTests:

Test that dumps the UI-side scrolling tree, showing e.g. "horizontal scrollbar hidden by style"
in the dump.

This test was previously a render tree dump, which did not test whether scrollbars were visible.

* fast/scrolling/ios/scrollbar-hiding-expected.txt:
* fast/scrolling/ios/scrollbar-hiding.html:
* platform/ios/fast/scrolling/ios/scrollbar-hiding-expected.txt: Removed.

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

5 months ago[ContentChangeObserver] Taping on a form control should always result in click.
zalan@apple.com [Sat, 23 Mar 2019 21:07:51 +0000 (21:07 +0000)]
[ContentChangeObserver] Taping on a form control should always result in click.
https://bugs.webkit.org/show_bug.cgi?id=196177

Reviewed by Simon Fraser.

Source/WebKit:

This patch enures that we send a synthetic click when the traget node is a form control (button, edit field etc) even if
the mousemove brings up some hover content.

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

LayoutTests:

* fast/events/touch/ios/content-observation/tap-on-input-type-button-element-expected.txt: Added.
* fast/events/touch/ios/content-observation/tap-on-input-type-button-element.html: Added.
* fast/events/touch/ios/content-observation/tap-on-input-type-text-element-expected.txt: Added.
* fast/events/touch/ios/content-observation/tap-on-input-type-text-element.html: Added.

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

5 months ago[ContentChangeObserver] Add support for observing opacity.
zalan@apple.com [Sat, 23 Mar 2019 20:58:37 +0000 (20:58 +0000)]
[ContentChangeObserver] Add support for observing opacity.
https://bugs.webkit.org/show_bug.cgi?id=196172

Reviewed by Simon Fraser.

Source/WebCore:

This patch adds support for observing opacity changes. At this point we only track one transition at a time.
if the page registers transition on both left and opacity, the first is getting observed only.

Tests: fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-with-opacity-and-left.html
       fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-with-transition.html
       fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove.html
       fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart-with-transition.html
       fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::isConsideredHidden):
(WebCore::ContentChangeObserver::didAddTransition):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::isObservedPropertyForTransition const):

LayoutTests:

* fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-expected.txt: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-with-opacity-and-left-expected.txt: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-with-opacity-and-left.html: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-with-transition-expected.txt: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-with-transition.html: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove.html: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart-expected.txt: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart-with-transition-expected.txt: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart-with-transition.html: Added.
* fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart.html: Added.

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

5 months ago[ContentChangeObserver] Check if the transitioned content is visible at onAnimationEnd
zalan@apple.com [Sat, 23 Mar 2019 20:47:47 +0000 (20:47 +0000)]
[ContentChangeObserver] Check if the transitioned content is visible at onAnimationEnd
https://bugs.webkit.org/show_bug.cgi?id=196171

Reviewed by Simon Fraser.

Source/WebCore:

At onAnimationEnd we don't yet have the final computed style for the transitioned content.
However the current state (before computing the final style) might already be qualified to be visible.
Introduce "CompletedTransition" to indicate that the transition is all set as far observing is concerned
(as opposed to "EndedTransition" where we still need to observe the content for the final style change).

Test: fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start-with-non-0px-end.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:

LayoutTests:

* fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start-with-non-0px-end-expected.txt: Added.
* fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start-with-non-0px-end.html: Added.

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

5 months ago[Apple Pay] Stop calling PKPaymentAuthorizationViewController class methods on iOS
aestes@apple.com [Sat, 23 Mar 2019 16:39:01 +0000 (16:39 +0000)]
[Apple Pay] Stop calling PKPaymentAuthorizationViewController class methods on iOS
https://bugs.webkit.org/show_bug.cgi?id=196163
<rdar://problem/48787564>

Reviewed by Anders Carlsson.

Source/WebCore/PAL:

* pal/spi/cocoa/PassKitSPI.h:

Source/WebKit:

Now that we've transitioned to PKPaymentAuthorizationController on iOS, we should stop
calling PKPaymentAuthorizationViewController class methods on iOS in favor of their
PKPaymentAuthorizationController alternatives.

While we're here, we should also transition to calling
+paymentServicesMerchantURLForAPIType:completion: on both
PKPaymentAuthorizationViewController and PKPaymentAuthorizationController.

* Platform/cocoa/PaymentAuthorizationViewController.mm:
(-[WKPaymentAuthorizationViewControllerDelegate _paymentServicesMerchantURLForAPIType:completion:]):
* Platform/cocoa/WKPaymentAuthorizationDelegate.h:
* Platform/cocoa/WKPaymentAuthorizationDelegate.mm:
(-[WKPaymentAuthorizationDelegate _initWithRequest:presenter:]):
(-[WKPaymentAuthorizationDelegate _paymentServicesMerchantURLForAPIType:completion:]):
* Platform/ios/PaymentAuthorizationController.mm:
(-[WKPaymentAuthorizationControllerDelegate _paymentServicesMerchantURLForAPIType:completion:]):
* Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments): Deleted.
* Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):
* Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):

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

5 months ago[GTK][WPE] check-webkit-style doesn't complain about identifiers with underscores...
commit-queue@webkit.org [Sat, 23 Mar 2019 11:25:58 +0000 (11:25 +0000)]
[GTK][WPE] check-webkit-style doesn't complain about identifiers with underscores in files under glib, gtk or wpe dirs
https://bugs.webkit.org/show_bug.cgi?id=196143

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-03-23
Reviewed by Michael Catanzaro.

Fix the check for the exception of identifiers starting with webkit_ in files under glib, gtk or wpe
directories.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_identifier_name_in_declaration):
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_names):

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

5 months agoUnreviewed. Fix GTK build after r243409.
carlosgc@webkit.org [Sat, 23 Mar 2019 10:56:59 +0000 (10:56 +0000)]
Unreviewed. Fix GTK build after r243409.

Build failure is actually unrelated to r243409, it's yet another unified build failure that happens when source
file list changes.

* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformShowCertificate): Use WebCore namespace for CertificateInfo parameter.

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

5 months ago[GTK] Remove build time dependency on Geoclue2
carlosgc@webkit.org [Sat, 23 Mar 2019 10:37:41 +0000 (10:37 +0000)]
[GTK] Remove build time dependency on Geoclue2
https://bugs.webkit.org/show_bug.cgi?id=195994

Reviewed by Michael Catanzaro.

.:

Remove USE_GEOCLUE build option.

* Source/cmake/FindGeoClue2.cmake: Removed.
* Source/cmake/OptionsGTK.cmake:

Source/WebCore:

Remove old Geoclue implementation.

* PlatformGTK.cmake:
* SourcesGTK.txt:
* platform/geoclue/GeolocationProviderGeoclue.cpp: Removed.
* platform/geoclue/GeolocationProviderGeoclue.h: Removed.
* platform/geoclue/GeolocationProviderGeoclueClient.h: Removed.

Source/WebCore/platform/gtk/po:

* POTFILES.in: Add GeoclueGeolocationProvider.cpp.

Source/WebKit:

Add GeoclueGeolocationProvider class to provide geolocation position updates using Geoclue2 DBus service.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* UIProcess/API/glib/WebKitGeolocationManager.cpp:
(_WebKitGeolocationPosition::_WebKitGeolocationPosition):
(webkitGeolocationManagerStop):
(webkitGeolocationManagerSetEnableHighAccuracy):
(webkitGeolocationManagerDispose):
(webkit_geolocation_manager_class_init):
* UIProcess/geoclue/GeoclueGeolocationProvider.cpp: Added.
(WebKit::GeoclueGeolocationProvider::GeoclueGeolocationProvider):
(WebKit::GeoclueGeolocationProvider::~GeoclueGeolocationProvider):
(WebKit::GeoclueGeolocationProvider::start):
(WebKit::GeoclueGeolocationProvider::stop):
(WebKit::GeoclueGeolocationProvider::setEnableHighAccuracy):
(WebKit::GeoclueGeolocationProvider::destroyManagerLater):
(WebKit::GeoclueGeolocationProvider::destroyManager):
(WebKit::GeoclueGeolocationProvider::setupManager):
(WebKit::GeoclueGeolocationProvider::createClient):
(WebKit::GeoclueGeolocationProvider::setupClient):
(WebKit::GeoclueGeolocationProvider::startClient):
(WebKit::GeoclueGeolocationProvider::stopClient):
(WebKit::GeoclueGeolocationProvider::requestAccuracyLevel):
(WebKit::GeoclueGeolocationProvider::clientLocationUpdatedCallback):
(WebKit::GeoclueGeolocationProvider::createLocation):
(WebKit::GeoclueGeolocationProvider::locationUpdated):
(WebKit::GeoclueGeolocationProvider::didFail):
* UIProcess/geoclue/GeoclueGeolocationProvider.h: Added.

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

5 months ago[JSC] Shrink sizeof(RegExp)
ysuzuki@apple.com [Sat, 23 Mar 2019 07:58:07 +0000 (07:58 +0000)]
[JSC] Shrink sizeof(RegExp)
https://bugs.webkit.org/show_bug.cgi?id=196133

Reviewed by Mark Lam.

Some applications have many RegExp cells. But RegExp cells are very large (144B).
This patch reduces the size from 144B to 48B by,

1. Allocate Yarr::YarrCodeBlock in non-GC heap. We can avoid this allocation if JIT is disabled.
2. m_captureGroupNames and m_namedGroupToParenIndex are moved to RareData. They are only used when RegExp has named capture groups.

* runtime/RegExp.cpp:
(JSC::RegExp::finishCreation):
(JSC::RegExp::estimatedSize):
(JSC::RegExp::compile):
(JSC::RegExp::matchConcurrently):
(JSC::RegExp::compileMatchOnly):
(JSC::RegExp::deleteCode):
(JSC::RegExp::printTraceData):
* runtime/RegExp.h:
* runtime/RegExpInlines.h:
(JSC::RegExp::hasCodeFor):
(JSC::RegExp::matchInline):
(JSC::RegExp::hasMatchOnlyCodeFor):

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

5 months agoUndo collision with r243390.
simon.fraser@apple.com [Sat, 23 Mar 2019 00:59:53 +0000 (00:59 +0000)]
Undo collision with r243390.

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

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

5 months agoFix internal builds.
simon.fraser@apple.com [Sat, 23 Mar 2019 00:56:20 +0000 (00:56 +0000)]
Fix internal builds.

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

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

5 months agoUnreviewed, fix test failures after r243269.
drousso@apple.com [Fri, 22 Mar 2019 23:34:29 +0000 (23:34 +0000)]
Unreviewed, fix test failures after r243269.

In debug builds, it's possible that the Web Inspector frontend is told to stop a timeline
recording before all of the recorded records have had a chance to be completed/processed.

As an example
```
    setTimeout(() => {
        <stop recording>
    });
```
it may happen that the "stop recording" event will be dispatched before the timeout has
finished executing, meaning that the event that contains the recorded data for that timeout
will be ignored by the frontend.

Rework the tests so that they don't dispatch the "stop recording" event until the expected
record is received by the frontend, rather than having the test code itself say when to stop.

* inspector/timeline/resources/timeline-event-utilities.js:
(savePageData): Added.
(TestPage.registerInitializer.InspectorTest.TimelineEvent.captureTimelineWithScript):
(finishRecording): Deleted.
* inspector/timeline/timeline-event-CancelAnimationFrame.html:
* inspector/timeline/timeline-event-CancelAnimationFrame-expected.txt:
* inspector/timeline/timeline-event-EventDispatch.html:
* inspector/timeline/timeline-event-EventDispatch-expected.txt:
* inspector/timeline/timeline-event-FireAnimationFrame.html:
* inspector/timeline/timeline-event-FireAnimationFrame-expected.txt:
* inspector/timeline/timeline-event-RequestAnimationFrame.html:
* inspector/timeline/timeline-event-RequestAnimationFrame-expected.txt:
* inspector/timeline/timeline-event-TimerFire.html:
* inspector/timeline/timeline-event-TimerFire-expected.txt:
* inspector/timeline/timeline-event-TimerInstall.html:
* inspector/timeline/timeline-event-TimerInstall-expected.txt:
* inspector/timeline/timeline-event-TimerRemove.html:
* inspector/timeline/timeline-event-TimerRemove-expected.txt:

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

5 months agoFlaky AVEncoderBitRateKey symbol not found crash on imported/w3c/web-platform-tests...
eric.carlson@apple.com [Fri, 22 Mar 2019 22:54:50 +0000 (22:54 +0000)]
Flaky AVEncoderBitRateKey symbol not found crash on imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-constructor.html
https://bugs.webkit.org/show_bug.cgi?id=193724
<rdar://problem/47483831>

Reviewed by Jer Noble.

The soft link macros occasionally fail to load constants from AVFoundation.framework
which are actually in one of its sub-frameworks. While we investigate the cause
cause of the failure, ise the SOFT_LINK_CONSTANT_MAY_FAIL so we can detect the failure
and return a local copy of the string instead of crashing.

No new tests, this should prevent existing tests from crashing.

* platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
(WebCore::myAVFormatIDKey):
(WebCore::myAVNumberOfChannelsKey):
(WebCore::myAVSampleRateKey):
(WebCore::myAVEncoderBitRateKey):

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

5 months agoWeb Inspector: Sources: "Reveal in Resources Tab" still shown when Sources tab is...
drousso@apple.com [Fri, 22 Mar 2019 22:19:38 +0000 (22:19 +0000)]
Web Inspector: Sources: "Reveal in Resources Tab" still shown when Sources tab is enabled
https://bugs.webkit.org/show_bug.cgi?id=196134

Reviewed by Joseph Pecoraro.

* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.prototype.populateContextMenu):
Drive-by: find the first call frame that has a source code location, rather than naively
always using the top call frame.

* UserInterface/Views/SearchResultTreeElement.js:
(WI.SearchResultTreeElement.prototype.populateContextMenu):

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

5 months agoREGRESSION: Flaky ASSERTION FAILED: !m_killed seen with http/tests/security/cross...
youenn@apple.com [Fri, 22 Mar 2019 22:12:32 +0000 (22:12 +0000)]
REGRESSION: Flaky ASSERTION FAILED: !m_killed seen with http/tests/security/cross-origin-worker-indexeddb.html
https://bugs.webkit.org/show_bug.cgi?id=196024
<rdar://problem/49117272>

Reviewed by Alexey Proskuryakov.

Do not proceed with opening the database if it is being closed.
Speculative fix, this should stop making test crashing on bots.

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):

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

5 months agostorage/indexeddb/closed-cursor-private.html is crashing on debug
youenn@apple.com [Fri, 22 Mar 2019 22:11:41 +0000 (22:11 +0000)]
storage/indexeddb/closed-cursor-private.html is crashing on debug
https://bugs.webkit.org/show_bug.cgi?id=196101

Reviewed by Alex Christensen.

In case of immediate close for user delete, the transaction might be deleted.
If the request for space is pending, it will be executed with an error as parameter.
In that case, the call to didCommitTransaction will not find any existing transaction.
Speculative fix, test should no longer crash.

* Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseConnection::didCommitTransaction):

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

5 months agoWeb Inspector: Safari Canvas Inspector seems to show the canvas being rendered twice...
drousso@apple.com [Fri, 22 Mar 2019 22:03:22 +0000 (22:03 +0000)]
Web Inspector: Safari Canvas Inspector seems to show the canvas being rendered twice per frame.
https://bugs.webkit.org/show_bug.cgi?id=196082
<rdar://problem/49113496>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: inspector/canvas/recording-2d.html
       inspector/canvas/recording-bitmaprenderer.html
       inspector/canvas/recording-html-2d.html
       inspector/canvas/recording-webgl.html
       inspector/canvas/setRecordingAutoCaptureFrameCount.html

WebGL `<canvas>` follow a different "rendering" path such that `HTMLCanvasElement::paint`
isn't called. Previously, there was a 0s timer that was started after the first action of a
frame was recorded (for the case that the `<canvas>` isn't attached to the DOM) that would
automatically stop the recording. It was possible that actions in two different "frame"s
were recorded as part of the same frame, because the WebGL `<canvas>` would instead fall
back to the timer to know when the "frame" had ended.

Now, there is additional instrumentation for the WebGL specific rendering path.
Additionally, replace the 0s timer with a microtask for more "immediate" calling.

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::paint):
Ensure that the `InspectorInstrumentation` call is last. This matches what we expect, as
before we were instrumenting right before is it about to paint.

* platform/graphics/GraphicsContext3D.h:
(WebCore::GraphicsContext3D::Client::~Client): Added.
(WebCore::GraphicsContext3D::addClient): Added.
(WebCore::GraphicsContext3D::removeClient): Added.
(WebCore::GraphicsContext3D::setWebGLContext): Deleted.
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::markLayerComposited):
(WebCore::GraphicsContext3D::forceContextLost):
(WebCore::GraphicsContext3D::recycleContext):
(WebCore::GraphicsContext3D::dispatchContextChangedNotification):
* html/canvas/WebGLRenderingContextBase.h:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D):
(WebCore::WebGLRenderingContextBase::didComposite): Added.
(WebCore::WebGLRenderingContextBase::forceContextLost):
(WebCore::WebGLRenderingContextBase::recycleContext):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedNotification): Added.
(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Deleted.
Introduce a `GraphicsContext3DClient` abstract class, rather than passing the
`WebGLRenderingContextBase` directly to the `GraphicsContext3D` (layering violation).
Notify the client whenever the `GraphicsContext3D` composites, which will in turn notify the
`InspectorCanvasAgent` so that it knows that the "frame" is over.

* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::requestNode):
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::resolveCanvasContext):
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::requestShaderSource):
(WebCore::InspectorCanvasAgent::updateShader):
(WebCore::InspectorCanvasAgent::setShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
(WebCore::InspectorCanvasAgent::didEnableExtension):
(WebCore::InspectorCanvasAgent::didCreateProgram):
(WebCore::InspectorCanvasAgent::willDeleteProgram):
(WebCore::InspectorCanvasAgent::isShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::isShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::assertInspectorCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::assertInspectorProgram):
(WebCore::InspectorCanvasAgent::findInspectorProgram):
(WebCore::InspectorCanvasAgent::canvasRecordingTimerFired): Deleted.
Replace raw pointers with `RefPtr`s. This is primarily used so that the microtask (instead
of a timer) that is enqueued after the first action of each frame  is recorded can access a
ref-counted instance of an `InspectorCanvas`, ensuring that it isn't destructed.

* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::canvasElement):
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::finalizeFrame):
(WebCore::InspectorCanvas::releaseObjectForRecording): Added.
(WebCore::InspectorCanvas::getCanvasContentAsDataURL):
(WebCore::InspectorCanvas::appendActionSnapshotIfNeeded):
(WebCore::InspectorCanvas::buildInitialState):
(WebCore::InspectorCanvas::releaseInitialState): Deleted.
(WebCore::InspectorCanvas::releaseFrames): Deleted.
(WebCore::InspectorCanvas::releaseData): Deleted.
Move the recording payload construction logic to `InspectorCanvas` so the actual data
doesn't need to leave that class.
Drive-by: unify the logic for getting the contents of a canvas from `InspectorCanvasAgent`.
LayoutTests:

* inspector/canvas/recording-2d.html:
* inspector/canvas/recording-bitmaprenderer.html:
* inspector/canvas/recording-html-2d.html:
* inspector/canvas/recording-webgl.html:
* inspector/canvas/setRecordingAutoCaptureFrameCount.html:

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

5 months agoEnable ThinLTO support in Production builds
krollin@apple.com [Fri, 22 Mar 2019 18:56:41 +0000 (18:56 +0000)]
Enable ThinLTO support in Production builds
https://bugs.webkit.org/show_bug.cgi?id=190758
<rdar://problem/45413233>

Reviewed by Daniel Bates.

Source/bmalloc:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/JavaScriptCore:

Tweak JavaScriptCore's Base.xcconfig to be more in-line with other
.xcconfig files with regards to LTO settings. However, don't actually
enable LTO for JavaScriptCore. LTO is not enabled for JavaScriptCore
due to <rdar://problem/24543547>.

* Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WebCore:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

Removed the conditionals that disabled LTO on 32-bit systems since we
no longer build for those.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

No new tests since there should be no observable behavior difference.

* Configurations/Base.xcconfig:

Source/WebCore/PAL:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

Removed the conditionals that disabled LTO on 32-bit systems since we
no longer build for those.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WebInspectorUI:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WebKit:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WTF:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

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

5 months agoUnreviewed build fix after r243388.
cdumez@apple.com [Fri, 22 Mar 2019 18:49:04 +0000 (18:49 +0000)]
Unreviewed build fix after r243388.

* WebProcess/WebProcess.h:

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

5 months ago[macOS] Fix sandbox violation
pvollan@apple.com [Fri, 22 Mar 2019 18:12:40 +0000 (18:12 +0000)]
[macOS] Fix sandbox violation
https://bugs.webkit.org/show_bug.cgi?id=196153
<rdar://problem/49123855>

Reviewed by Brent Fulgham.

The sandbox on macOS is blocking the mach lookup.

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

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

5 months agoPlacate exception check validation in genericTypedArrayViewProtoFuncLastIndexOf().
mark.lam@apple.com [Fri, 22 Mar 2019 17:59:07 +0000 (17:59 +0000)]
Placate exception check validation in genericTypedArrayViewProtoFuncLastIndexOf().
https://bugs.webkit.org/show_bug.cgi?id=196154
<rdar://problem/49145307>

Reviewed by Filip Pizlo.

JSTests:

Also added //@ runDefault constraint to web-assembly-link-error-exception-check.js.
There's no need to run this test on more than 1 test configuration.

* stress/typed-array-lastIndexOf-exception-check.js: Added.
* stress/web-assembly-link-error-exception-check.js:

Source/JavaScriptCore:

* runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):

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

5 months agoUnreviewed, fix the build with recent SDKs.
ryanhaddad@apple.com [Fri, 22 Mar 2019 17:57:55 +0000 (17:57 +0000)]
Unreviewed, fix the build with recent SDKs.

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

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

5 months ago[BMalloc] No need to delay deallocating chunks based on recent use
msaboff@apple.com [Fri, 22 Mar 2019 17:43:29 +0000 (17:43 +0000)]
[BMalloc] No need to delay deallocating chunks based on recent use
https://bugs.webkit.org/show_bug.cgi?id=196121

Reviewed by Mark Lam.

The "used since last scavenge" logic is not needed for small chunks since their memory isn't decommitted directly.
We can deallocate small chunks immediately as that adds them to the LargeRange free list.  That free list employs the
"used since last scavenge" logic before the scavenger decommits the backing memory.

* bmalloc/Chunk.h:
(bmalloc::Chunk::usedSinceLastScavenge): Deleted.
(bmalloc::Chunk::clearUsedSinceLastScavenge): Deleted.
(bmalloc::Chunk::setUsedSinceLastScavenge): Deleted.
* bmalloc/Heap.cpp:
(bmalloc::Heap::scavenge):
(bmalloc::Heap::allocateSmallPage):

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

5 months agoImplement WebProcess freezer opt-in completely on WebContent process side
cdumez@apple.com [Fri, 22 Mar 2019 17:40:51 +0000 (17:40 +0000)]
Implement WebProcess freezer opt-in completely on WebContent process side
https://bugs.webkit.org/show_bug.cgi?id=196149

Reviewed by Brady Eidson.

Implement WebProcess freezer opt-in completely on WebContent process side, we do not need
to involve the UIProcess with this and rely on IPC which may be fragile.

In the future, we may want to set freezable state from the UIProcess when the API supports
it. We can move the logic to be fully on the UIProcess side then. In the mean time, it is
likely best not to rely on IPC and process coordination for this.

* UIProcess/WebProcessProxy.cpp:
(WebKit::globalPageMap):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::setIsInProcessCache):
(WebKit::WebProcessProxy::markIsNoLongerInPrewarmedPool):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::validateFreezerStatus): Deleted.
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::removeProvisionalPageProxy):
(WebKit::WebProcessProxy::WebPageProxyMap::WebPageProxyMap): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::size const): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::values): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::values const): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::begin): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::end): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::get): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::contains const): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::isEmpty const): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::set): Deleted.
(WebKit::WebProcessProxy::WebPageProxyMap::take): Deleted.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setIsInProcessCache):
(WebKit::WebProcess::markIsNoLongerPrewarmed):
(WebKit::WebProcess::actualPrepareToSuspend):
(WebKit::WebProcess::setFreezable): Deleted.
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::updateProcessName):
(WebKit::WebProcess::shouldFreezeOnSuspension const):
(WebKit::WebProcess::updateFreezerStatus):

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

5 months ago[Flatpak] Manifest expanding fails for qt WPE extension
commit-queue@webkit.org [Fri, 22 Mar 2019 17:40:14 +0000 (17:40 +0000)]
[Flatpak] Manifest expanding fails for qt WPE extension
https://bugs.webkit.org/show_bug.cgi?id=196148

Patch by Philippe Normand <pnormand@igalia.com> on 2019-03-22
Reviewed by Alex Christensen.

* flatpak/flatpakutils.py:
(expand_submodules_recurse): The last recurse manifest expand
iteration might lead to a single module so take it into account
and don't try to recurse further.

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

5 months agoPlacate exception check validation in constructJSWebAssemblyLinkError().
mark.lam@apple.com [Fri, 22 Mar 2019 17:21:37 +0000 (17:21 +0000)]
Placate exception check validation in constructJSWebAssemblyLinkError().
https://bugs.webkit.org/show_bug.cgi?id=196152
<rdar://problem/49145257>

Reviewed by Michael Saboff.

JSTests:

* stress/web-assembly-link-error-exception-check.js: Added.

Source/JavaScriptCore:

* wasm/js/WebAssemblyLinkErrorConstructor.cpp:
(JSC::constructJSWebAssemblyLinkError):

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

5 months ago[ iOS Simulator] REGRESSION (r241821) Layout Test platform/ipad/fast/viewport/viewpor...
cdumez@apple.com [Fri, 22 Mar 2019 17:02:13 +0000 (17:02 +0000)]
[ iOS Simulator] REGRESSION (r241821) Layout Test platform/ipad/fast/viewport/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport.html is a flaky failure on bots
https://bugs.webkit.org/show_bug.cgi?id=195348
<rdar://problem/48622090>

Reviewed by Alex Christensen.

Make sure webView.configuration.preferences._shouldIgnoreMetaViewport gets reset
to NO when test.options().shouldIgnoreMetaViewport is false.

* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformConfigureViewForTest):

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

5 months agoPrewarmed processes should be usable with any website data store
cdumez@apple.com [Fri, 22 Mar 2019 17:01:14 +0000 (17:01 +0000)]
Prewarmed processes should be usable with any website data store
https://bugs.webkit.org/show_bug.cgi?id=196104

Reviewed by Alex Christensen.

Source/WebKit:

Split WebsiteDataStore-specific data out of WebProcessCreationParameters and into a new
WebProcessDataStoreParameters struct so that we do not need a WebsiteDataStore in order
to lauch and initialize a WebProcess. When the process finally gets used and we thus
know which WebsiteDataStore they will be used for, we send the WebProcessDataStoreParameters
to the process to that it can do its data store-specific initialization.

This allows prewarmed processes not not have a WebsiteDataStore assocated with them. They
can then be used for any WebsiteDataStore when we need them.

This is also used by our dummy WebProcessProxy since it does not have a backing process and
thus has no associated WebsiteDataStore.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* Shared/WebProcessDataStoreParameters.h: Added.
(WebKit::WebProcessDataStoreParameters::encode const):
(WebKit::WebProcessDataStoreParameters::decode):
* UIProcess/API/C/WKContext.cpp:
(WKContextWarmInitialProcess):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _warmInitialProcess]):
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::notifyProcessPoolToPrewarm):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::sendWebProcessDataStoreParameters):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::prewarmProcess):
(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
* UIProcess/WebProcessPool.h:
(WebKit::WebProcessPool::sendToOneProcess):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::setWebsiteDataStore):
(WebKit::WebProcessProxy::addExistingWebPage):
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::websiteDataStore const):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
(WebKit::WebMediaKeyStorageManager::setWebsiteDataStore):
* WebProcess/MediaCache/WebMediaKeyStorageManager.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::setWebsiteDataStoreParameters):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/WebProcessSupplement.h:
(WebKit::WebProcessSupplement::initialize):
(WebKit::WebProcessSupplement::setWebsiteDataStore):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::platformSetWebsiteDataStoreParameters):
* WebProcess/win/WebProcessWin.cpp:
(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::platformSetWebsiteDataStoreParameters):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm:
(runInitialWarmedProcessUsedTest):
(TEST):

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

5 months agoUnreviewed, rolling out r243356.
ryanhaddad@apple.com [Fri, 22 Mar 2019 16:54:54 +0000 (16:54 +0000)]
Unreviewed, rolling out r243356.

Causes assertion failures with WebGL layout tests on macOS and
iOS.

Reverted changeset:

"Web Inspector: Safari Canvas Inspector seems to show the
canvas being rendered twice per frame."
https://bugs.webkit.org/show_bug.cgi?id=196082
https://trac.webkit.org/changeset/243356

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

5 months agoFix the build after r243354
timothy_horton@apple.com [Fri, 22 Mar 2019 16:42:07 +0000 (16:42 +0000)]
Fix the build after r243354

* wtf/Platform.h:

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

5 months agoREGRESSION (r242687): Flicker when pinch-zooming pages in macOS Safari
simon.fraser@apple.com [Fri, 22 Mar 2019 16:38:57 +0000 (16:38 +0000)]
REGRESSION (r242687): Flicker when pinch-zooming pages in macOS Safari
https://bugs.webkit.org/show_bug.cgi?id=196126
rdar://problem/49095791

Reviewed by Antti Koivisto.

The scrolling tree doesn't have an accurate picture of the main view's scroll position
during pinch-zooming, so don't have it apply layer positions if a transient zoom is
in progress.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
(WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):

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

5 months agoHandle UI side hit testing for ScrollPositioningBehavior::Stationary positioned nodes
antti@apple.com [Fri, 22 Mar 2019 16:28:55 +0000 (16:28 +0000)]
Handle UI side hit testing for ScrollPositioningBehavior::Stationary positioned nodes
https://bugs.webkit.org/show_bug.cgi?id=196100
<rdar://problem/49117933>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/scrolling/ios/overflow-scroll-overlap-6.html

* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState):
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::positionedNodesWithRelatedOverflow):

Add a separate map of positioned node ids for easy access.

* page/scrolling/cocoa/ScrollingTreePositionedNode.h:
(WebCore::ScrollingTreePositionedNode::scrollPositioningBehavior const):
(WebCore::ScrollingTreePositionedNode::relatedOverflowScrollingNodes const):
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):

Source/WebKit:

Test: fast/scrolling/ios/overflow-scroll-overlap-6.html

* UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
(WebKit::RemoteLayerTreeNode::relatedScrollContainerIDs const):
(WebKit::RemoteLayerTreeNode::relatedScrollContainerPositioningBehavior const):

Make more generic and save the associated positioning behavior.

(WebKit::RemoteLayerTreeNode::nonAncestorScrollContainerIDs const): Deleted.
(WebKit::RemoteLayerTreeNode::addNonAncestorScrollContainerID): Deleted.
(WebKit::RemoteLayerTreeNode::clearNonAncestorScrollContainerIDs): Deleted.
* UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::setRelatedScrollContainerBehaviorAndIDs):
* UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(WebKit::isScrolledBy):

Stationary relationship means the layer won't scroll the scroller.

* UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):

LayoutTests:

* fast/scrolling/ios/overflow-scroll-overlap-6-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-6.html: Added.

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

5 months agoREGRESSION (r243094): ePub files do not render or open in Books
cdumez@apple.com [Fri, 22 Mar 2019 16:27:14 +0000 (16:27 +0000)]
REGRESSION (r243094): ePub files do not render or open in Books
https://bugs.webkit.org/show_bug.cgi?id=196119
<rdar://problem/49121686>

Reviewed by Brady Eidson.

Do not delay the WebProcess launch until a load when contructing a web view and the client
may observe when its injected bundle is loaded via WKProcessGroupDelegate's
didCreateConnectionToWebProcessPlugIn.

* UIProcess/API/Cocoa/WKProcessGroup.mm:
(-[WKProcessGroup setDelegate:]):
* UIProcess/WebInspectorUtilities.cpp:
(WebKit::inspectorProcessPool):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createWebPage):
* UIProcess/WebProcessPool.h:

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

5 months agoREGRESSION(r243094): Automation: browser crash in WebAutomationSession::exitFullscree...
commit-queue@webkit.org [Fri, 22 Mar 2019 16:03:31 +0000 (16:03 +0000)]
REGRESSION(r243094): Automation: browser crash in WebAutomationSession::exitFullscreenWindowForPage()
https://bugs.webkit.org/show_bug.cgi?id=196140

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-03-22
Reviewed by Chris Dumez.

Since r243094, the WebPageProxy fullscreen manager is not created in the constructor, but once the page has a
process launched.

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::exitFullscreenWindowForPage): Null check WebPageProxy::fullScreenManager() before
using it.

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

5 months agoUnreviewed test gardening of plugin tests
simon.fraser@apple.com [Fri, 22 Mar 2019 15:54:54 +0000 (15:54 +0000)]
Unreviewed test gardening of plugin tests
https://bugs.webkit.org/show_bug.cgi?id=196150

For reasons unknown, my machine and bots produce different results for these plug-in tests.
My machine behaves like the test plug-in does not exist.

* platform/mac-wk1/compositing/plugins/composited-plugin-expected.txt: Removed.
* platform/mac-wk1/compositing/plugins/no-backing-store-expected.txt: Removed.
* platform/mac-wk1/compositing/plugins/small-to-large-composited-plugin-expected.txt: Removed.

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

5 months agoChange macosx() to macos() in WK_API... and JSC_API... macros.
timothy@apple.com [Fri, 22 Mar 2019 15:45:13 +0000 (15:45 +0000)]
Change macosx() to macos() in WK_API... and JSC_API... macros.
https://bugs.webkit.org/show_bug.cgi?id=196106

Reviewed by Brian Burg.

Source/JavaScriptCore:

* API/JSBasePrivate.h:
* API/JSContext.h:
* API/JSContextPrivate.h:
* API/JSContextRef.h:
* API/JSContextRefInternal.h:
* API/JSContextRefPrivate.h:
* API/JSManagedValue.h:
* API/JSObjectRef.h:
* API/JSObjectRefPrivate.h:
* API/JSRemoteInspector.h:
* API/JSScript.h:
* API/JSTypedArray.h:
* API/JSValue.h:
* API/JSValuePrivate.h:
* API/JSValueRef.h:
* API/JSVirtualMachinePrivate.h:

Source/WebCore/PAL:

* pal/spi/cocoa/NSTouchBarSPI.h:

Source/WebKit:

* Shared/API/Cocoa/WKBrowsingContextHandle.h:
* Shared/API/Cocoa/WKDragDestinationAction.h:
* Shared/API/Cocoa/WKMain.h:
* Shared/API/Cocoa/_WKFrameHandle.h:
* Shared/API/Cocoa/_WKHitTestResult.h:
* Shared/API/Cocoa/_WKNSWindowExtras.h:
* Shared/API/Cocoa/_WKRemoteObjectInterface.h:
* Shared/API/Cocoa/_WKRemoteObjectRegistry.h:
* Shared/API/Cocoa/_WKRenderingProgressEvents.h:
* Shared/API/Cocoa/_WKSameDocumentNavigationType.h:
* UIProcess/API/C/WKPage.h:
* UIProcess/API/Cocoa/NSAttributedString.h:
* UIProcess/API/Cocoa/WKBackForwardList.h:
* UIProcess/API/Cocoa/WKBackForwardListItem.h:
* UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
* UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
* UIProcess/API/Cocoa/WKContentRuleList.h:
* UIProcess/API/Cocoa/WKContentRuleListStore.h:
* UIProcess/API/Cocoa/WKError.h:
* UIProcess/API/Cocoa/WKErrorPrivate.h:
* UIProcess/API/Cocoa/WKFrameInfo.h:
* UIProcess/API/Cocoa/WKFrameInfoPrivate.h:
* UIProcess/API/Cocoa/WKHTTPCookieStore.h:
* UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
* UIProcess/API/Cocoa/WKNavigation.h:
* UIProcess/API/Cocoa/WKNavigationAction.h:
* UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
* UIProcess/API/Cocoa/WKNavigationDelegate.h:
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/API/Cocoa/WKNavigationResponse.h:
* UIProcess/API/Cocoa/WKOpenPanelParameters.h:
* UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h:
* UIProcess/API/Cocoa/WKPreferences.h:
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/API/Cocoa/WKProcessPool.h:
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/WKScriptMessage.h:
* UIProcess/API/Cocoa/WKSecurityOrigin.h:
* UIProcess/API/Cocoa/WKSnapshotConfiguration.h:
* UIProcess/API/Cocoa/WKUIDelegate.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKURLSchemeHandler.h:
* UIProcess/API/Cocoa/WKURLSchemeTask.h:
* UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h:
* UIProcess/API/Cocoa/WKUserContentController.h:
* UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
* UIProcess/API/Cocoa/WKUserScript.h:
* UIProcess/API/Cocoa/WKUserScriptPrivate.h:
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/Cocoa/WKWebView.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/API/Cocoa/WKWindowFeatures.h:
* UIProcess/API/Cocoa/WKWindowFeaturesPrivate.h:
* UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
* UIProcess/API/Cocoa/_WKApplicationManifest.h:
* UIProcess/API/Cocoa/_WKAttachment.h:
* UIProcess/API/Cocoa/_WKAutomationDelegate.h:
* UIProcess/API/Cocoa/_WKAutomationSession.h:
* UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:
* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
* UIProcess/API/Cocoa/_WKContextMenuElementInfo.h:
* UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
* UIProcess/API/Cocoa/_WKDownload.h:
* UIProcess/API/Cocoa/_WKDownloadDelegate.h:
* UIProcess/API/Cocoa/_WKElementAction.h:
* UIProcess/API/Cocoa/_WKExperimentalFeature.h:
* UIProcess/API/Cocoa/_WKFindOptions.h:
* UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
* UIProcess/API/Cocoa/_WKFormInputSession.h:
* UIProcess/API/Cocoa/_WKFullscreenDelegate.h:
* UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h:
* UIProcess/API/Cocoa/_WKInspector.h:
* UIProcess/API/Cocoa/_WKInspectorWindow.h:
* UIProcess/API/Cocoa/_WKInternalDebugFeature.h:
* UIProcess/API/Cocoa/_WKLayoutMode.h:
* UIProcess/API/Cocoa/_WKLinkIconParameters.h:
* UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
* UIProcess/API/Cocoa/_WKSessionState.h:
* UIProcess/API/Cocoa/_WKTextInputContext.h:
* UIProcess/API/Cocoa/_WKThumbnailView.h:
* UIProcess/API/Cocoa/_WKUserContentExtensionStore.h:
* UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
* UIProcess/API/Cocoa/_WKUserContentFilter.h:
* UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
* UIProcess/API/Cocoa/_WKUserContentWorld.h:
* UIProcess/API/Cocoa/_WKUserInitiatedAction.h:
* UIProcess/API/Cocoa/_WKUserStyleSheet.h:
* UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
* UIProcess/API/Cocoa/_WKWebsiteDataSize.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStore.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* WebProcess/API/Cocoa/WKWebProcess.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:
* WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
* WebProcess/InjectedBundle/API/mac/WKDOMElement.h:
* WebProcess/InjectedBundle/API/mac/WKDOMNode.h:
* WebProcess/InjectedBundle/API/mac/WKDOMRange.h:
* WebProcess/InjectedBundle/API/mac/WKDOMText.h:
* WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

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

5 months agoUnreviewed build fix.
yousuke.kimoto@sony.com [Fri, 22 Mar 2019 13:49:45 +0000 (13:49 +0000)]
Unreviewed build fix.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:

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

5 months ago[Web Animations] com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCor...
commit-queue@webkit.org [Fri, 22 Mar 2019 13:46:56 +0000 (13:46 +0000)]
[Web Animations] com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCore::WebAnimation::timeToNextTick const + 757
https://bugs.webkit.org/show_bug.cgi?id=196125
<rdar://problem/46520059>

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

Because of floating point math in playState() that wouldn't account for timeEpsilon, we would get into a state where the animation phase
was "after" but the play state was "running" when the current time was about a microsecond away from the active time boundary. This meant
that the early return statement in WebAnimation::timeToNextTick() would not be hit while we would not handle the possibility of being in
the "after" phase in the rest of the function, therefore eventually hitting the ASSERT_NOT_REACHED() at the end of the function.

We now account for timeEpsilon in playState() and correctly report we're in the "finished" play state when in the "after" phase also.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::playState const):

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

5 months agoBack out local changes to Alex's Subversion working directory
ddkilzer@apple.com [Fri, 22 Mar 2019 12:56:32 +0000 (12:56 +0000)]
Back out local changes to Alex's Subversion working directory

They were accidentally committed.

* Scripts/webkitpy/common/system/abstractexecutive.py:
(AbstractExecutive.wait_newest):
* Scripts/webkitpy/common/system/executive.py:
(Executive.running_pids):
* Scripts/webkitpy/common/system/executive_mock.py:
(MockExecutive.running_pids):
* Scripts/webkitpy/common/system/executive_unittest.py:
(ExecutiveTest.serial_test_running_pids):
* Scripts/webkitpy/port/darwin.py:
(DarwinPort.check_for_leaks):
* Scripts/webkitpy/port/leakdetector.py:
(LeakDetector.check_for_leaks):
- This was the hack attached to Bug 193772.

* WebKitTestRunner/mac/WebKitTestRunnerEvent.mm:
(+[WebKitTestRunnerEvent mouseLocation]):
- This works around a crash on an internal build.

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

5 months ago[MSE][GStreamer] Don't construct segments on PlaybackPipeline::flush
aboya@igalia.com [Fri, 22 Mar 2019 12:22:23 +0000 (12:22 +0000)]
[MSE][GStreamer] Don't construct segments on PlaybackPipeline::flush
https://bugs.webkit.org/show_bug.cgi?id=195867

Reviewed by Xabier Rodriguez-Calvar.

LayoutTests/imported/w3c:

These tests check that video and audio are roughly in sync with each
other and with the reported player position during MSE playback.

* web-platform-tests/media-source/mediasource-correct-frames-after-reappend-expected.txt: Added.
* web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html: Added.
* web-platform-tests/media-source/mediasource-correct-frames-expected.txt: Added.
* web-platform-tests/media-source/mediasource-correct-frames.html: Added.
* web-platform-tests/media-source/mp4/test-boxes-audio.mp4: Added.
* web-platform-tests/media-source/mp4/test-boxes-video.mp4: Added.

Source/WebCore:

The previous approach did not really work for flushes on only one
branch, as setting reset-time in FLUSH_STOP affects the running time
of the entire pipeline, causing timing issues in the other branch.

Since it's preferable not to interfere with the other branch if
possible, setting reset-time to FALSE fixes that problem.

Also, it's not necessary to fabricate a segment. Since we are not
seeking, only the base needs to be adjusted, and gstbasesrc already
handles this correctly by default.

This fixes an audio/video synchronization bug in YT when some
automatic quality changes occur.

Tests: imported/w3c/web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html
       imported/w3c/web-platform-tests/media-source/mediasource-correct-frames.html

* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
(WebCore::PlaybackPipeline::flush):

LayoutTests:

Drawing an MSE video in a canvas seems to be failing in Mac. That
functionality is necessary for the tests introduced with this patch,
therefore they fail there. Marking them as Skip.

* platform/mac/TestExpectations:

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

5 months agoMove implementation of mathsize to a single place
fred.wang@free.fr [Fri, 22 Mar 2019 10:03:57 +0000 (10:03 +0000)]
Move implementation of mathsize to a single place
https://bugs.webkit.org/show_bug.cgi?id=196129

Patch by Frederic Wang <fwang@igalia.com> on 2019-03-22
Reviewed by Ryosuke Niwa.

Currently, mathsize is partially implemented in the MathML UA stylesheet and partially
implemented in the MathML DOM classes using addPropertyToPresentationAttributeStyle. This
patch moves the whole implementation to the latter place, so that it's easier to understand.
It will also allow to conditionally disable the mathsize values removed from MathML Core.

No new tests, already covered by existing tests.

* css/mathml.css: Remove mathsize rules.
* mathml/MathMLElement.cpp:
(WebCore::convertMathSizeIfNeeded): Convert "small", "normal" and "big" to the values that
used to be in the UA stylesheet. Also add a comment that we don't support all MathML lengths.
(WebCore::MathMLElement::collectStyleForPresentationAttribute): Don't skip "small", "normal"
or "big".
(WebCore::convertToPercentageIfNeeded): Renamed to convertMathSizeIfNeeded.

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

5 months agoFix the build after r243354
timothy_horton@apple.com [Fri, 22 Mar 2019 09:40:41 +0000 (09:40 +0000)]
Fix the build after r243354
https://bugs.webkit.org/show_bug.cgi?id=196138
<rdar://problem/49145951>

* wtf/Platform.h:

* TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
(TEST):
* TestWebKitAPI/ios/UIKitSPI.h:

* Platform/spi/ios/UIKitSPI.h:
* Shared/DocumentEditingContext.mm:
(WebKit::DocumentEditingContext::toPlatformContext):
* UIProcess/ios/WKContentViewInteraction.mm:

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

5 months agoVersioning.
bshafiei@apple.com [Fri, 22 Mar 2019 07:54:30 +0000 (07:54 +0000)]
Versioning.

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

5 months agoUnreviewed, build fix for Windows
ysuzuki@apple.com [Fri, 22 Mar 2019 07:39:47 +0000 (07:39 +0000)]
Unreviewed, build fix for Windows
https://bugs.webkit.org/show_bug.cgi?id=196122

* runtime/FunctionExecutable.cpp:

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

5 months agoSkip tests running out of memory on ARM/MIPS
dinfuehr@igalia.com [Fri, 22 Mar 2019 07:28:07 +0000 (07:28 +0000)]
Skip tests running out of memory on ARM/MIPS
https://bugs.webkit.org/show_bug.cgi?id=196131

Unreviewed. Skip test if memory is limited.

* microbenchmarks/put-by-val-direct-large-index.js:

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

5 months ago[JSC] Shrink sizeof(FunctionExecutable) by 16bytes
ysuzuki@apple.com [Fri, 22 Mar 2019 07:14:43 +0000 (07:14 +0000)]
[JSC] Shrink sizeof(FunctionExecutable) by 16bytes
https://bugs.webkit.org/show_bug.cgi?id=196122

Reviewed by Saam Barati.

This patch reduces sizeof(FunctionExecutable) by 16 bytes.

1. ScriptExecutable::m_numParametersForCall and ScriptExecutable::m_numParametersForConstruct are not used in a meaningful way. Removed them.
2. ScriptExecutable::m_lastLine and ScriptExecutable::m_endColumn can be calculated from UnlinkedFunctionExecutable. So FunctionExecutable does not need to hold it.
   This patch adds GlobalExecutable, which are non-function ScriptExecutables, and move m_lastLine and m_endColumn to this class.
3. FunctionExecutable still needs to have the feature overriding m_lastLine and m_endColumn. We move overridden data in FunctionExecutable::RareData.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::UnlinkedFunctionExecutable::link):
* runtime/EvalExecutable.cpp:
(JSC::EvalExecutable::EvalExecutable):
* runtime/EvalExecutable.h:
* runtime/FunctionExecutable.cpp:
(JSC::FunctionExecutable::FunctionExecutable):
(JSC::FunctionExecutable::ensureRareDataSlow):
(JSC::FunctionExecutable::overrideInfo):
* runtime/FunctionExecutable.h:
* runtime/GlobalExecutable.cpp: Copied from Source/JavaScriptCore/tools/FunctionOverrides.h.
* runtime/GlobalExecutable.h: Copied from Source/JavaScriptCore/tools/FunctionOverrides.h.
(JSC::GlobalExecutable::lastLine const):
(JSC::GlobalExecutable::endColumn const):
(JSC::GlobalExecutable::recordParse):
(JSC::GlobalExecutable::GlobalExecutable):
* runtime/ModuleProgramExecutable.cpp:
(JSC::ModuleProgramExecutable::ModuleProgramExecutable):
* runtime/ModuleProgramExecutable.h:
* runtime/ProgramExecutable.cpp:
(JSC::ProgramExecutable::ProgramExecutable):
* runtime/ProgramExecutable.h:
* runtime/ScriptExecutable.cpp:
(JSC::ScriptExecutable::clearCode):
(JSC::ScriptExecutable::installCode):
(JSC::ScriptExecutable::hasClearableCode const):
(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::ScriptExecutable::typeProfilingEndOffset const):
(JSC::ScriptExecutable::recordParse):
(JSC::ScriptExecutable::lastLine const):
(JSC::ScriptExecutable::endColumn const):
* runtime/ScriptExecutable.h:
(JSC::ScriptExecutable::hasJITCodeForCall const):
(JSC::ScriptExecutable::hasJITCodeForConstruct const):
(JSC::ScriptExecutable::recordParse):
(JSC::ScriptExecutable::lastLine const): Deleted.
(JSC::ScriptExecutable::endColumn const): Deleted.
* tools/FunctionOverrides.h:

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

5 months ago[JSC] Shrink sizeof(RegExpObject)
ysuzuki@apple.com [Fri, 22 Mar 2019 06:45:20 +0000 (06:45 +0000)]
[JSC] Shrink sizeof(RegExpObject)
https://bugs.webkit.org/show_bug.cgi?id=196130

Reviewed by Saam Barati.

sizeof(RegExpObject) is 48B due to one bool flag. We should compress this flag into lower bit of RegExp* field so that we can make RegExpObject 32B.
It saves memory footprint 1.3% in RAMification's regexp.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewRegexp):
(JSC::DFG::SpeculativeJIT::compileSetRegExpObjectLastIndex):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
(JSC::FTL::DFG::LowerDFGToB3::compileSetRegExpObjectLastIndex):
* runtime/RegExpObject.cpp:
(JSC::RegExpObject::RegExpObject):
(JSC::RegExpObject::visitChildren):
(JSC::RegExpObject::getOwnPropertySlot):
(JSC::RegExpObject::defineOwnProperty):
* runtime/RegExpObject.h:

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

5 months ago[JSC] Fix build after r243232 on unsupported 64bit architectures
tpopela@redhat.com [Fri, 22 Mar 2019 05:56:02 +0000 (05:56 +0000)]
[JSC] Fix build after r243232 on unsupported 64bit architectures
https://bugs.webkit.org/show_bug.cgi?id=196072

Reviewed by Keith Miller.

As Keith suggested we already expect 16 free bits at the top of any
pointer for JSValue even for the unsupported 64 bit arches.

* bytecode/CodeOrigin.h:

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

5 months agoRemove the SVG tear off objects for SVGNumber, SVGNumberList and SVGAnimatedNumberList
commit-queue@webkit.org [Fri, 22 Mar 2019 04:45:26 +0000 (04:45 +0000)]
Remove the SVG tear off objects for SVGNumber, SVGNumberList and SVGAnimatedNumberList
https://bugs.webkit.org/show_bug.cgi?id=196084

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

Source/WebCore:

To remove the tear off objects for these interfaces, we need to do the
following:

-- SVGNumber will be a superclass of SVGValueProperty<float>. It provides
   the DOM interface functions.

-- SVGNumberList will be a superclass of SVGValuePropertyList<SVGNumber>.
   It provides creation, parsing and converting to string functions.

-- SVGAnimatedNumberList will be defined as SVGAnimatedPropertyList<SVGNumberList>.

To make things work as expected:

-- Properties of type SVGAnimatedNumberList have to be registered with
   SVGPropertyOwnerRegistry.
-- An accessor, an animator and an animation function should be defined
   for SVGAnimatedNumberList.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
(WebCore::updateCharacterData):
(WebCore::SVGTextLayoutAttributesBuilder::fillCharacterDataMap):
* svg/SVGAnimatedNumberList.cpp: Removed.
* svg/SVGAnimatedNumberList.h: Removed.
* svg/SVGAnimatedPointList.cpp: Removed.
* svg/SVGAnimatedPointList.h: Removed.
* svg/SVGAnimatedType.h:
(WebCore::SVGAnimatedType::type const):
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement):
(WebCore::SVGComponentTransferFunctionElement::registerAttributes):
(WebCore::SVGComponentTransferFunctionElement::parseAttribute):
* svg/SVGComponentTransferFunctionElement.h:
(WebCore::SVGComponentTransferFunctionElement::tableValues const):
(WebCore::SVGComponentTransferFunctionElement::tableValuesAnimated):
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
(WebCore::SVGFEColorMatrixElement::registerAttributes):
(WebCore::SVGFEColorMatrixElement::parseAttribute):
(WebCore::SVGFEColorMatrixElement::build const):
* svg/SVGFEColorMatrixElement.h:
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
(WebCore::SVGFEConvolveMatrixElement::registerAttributes):
(WebCore::SVGFEConvolveMatrixElement::parseAttribute):
(WebCore::SVGFEConvolveMatrixElement::build const):
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGNumber.h:
(WebCore::SVGNumber::create):
(WebCore::SVGNumber::clone const):
(WebCore::SVGNumber::valueForBindings):
(WebCore::SVGNumber::setValueForBindings):
(WebCore::SVGNumber::SVGNumber): Deleted.
* svg/SVGNumberList.h:
(WebCore::SVGNumberList::create):
(WebCore::SVGNumberList::parse):
(WebCore::SVGNumberList::SVGNumberList): Deleted.
* svg/SVGNumberListValues.cpp: Removed.
* svg/SVGNumberListValues.h: Removed.
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::SVGTextPositioningElement):
(WebCore::SVGTextPositioningElement::registerAttributes):
(WebCore::SVGTextPositioningElement::parseAttribute):
* svg/SVGTextPositioningElement.h:
(WebCore::SVGTextPositioningElement::rotate const):
(WebCore::SVGTextPositioningElement::rotateAnimated):
* svg/SVGValue.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
(WebCore::SVGAnimationNumberListFunction::progress):
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):

LayoutTests:

* svg/dom/SVGNumberList-basics-expected.txt:
* svg/dom/SVGNumberList-basics.xhtml:
This change is required because SVGNumberList 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@243362 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 months agoWebKit1 test gardening.
simon.fraser@apple.com [Fri, 22 Mar 2019 04:44:27 +0000 (04:44 +0000)]
WebKit1 test gardening.

* platform/mac-wk1/TestExpectations:
* platform/mac-wk1/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt: Added.
* platform/mac-wk1/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/overflow-auto-with-touch-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/overflow-overlay-with-touch-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/textarea-scroll-touch-expected.txt: Added.
* platform/mac-wk1/compositing/plugins/composited-plugin-expected.txt: Added.
* platform/mac-wk1/compositing/plugins/no-backing-store-expected.txt: Added.
* platform/mac-wk1/compositing/plugins/small-to-large-composited-plugin-expected.txt: Added.
* platform/mac-wk1/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt: Added.
* platform/mac-wk1/compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt: Added.

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

5 months agoClean up some TiledCoreAnimationDrawingArea members
simon.fraser@apple.com [Fri, 22 Mar 2019 04:22:05 +0000 (04:22 +0000)]
Clean up some TiledCoreAnimationDrawingArea members
https://bugs.webkit.org/show_bug.cgi?id=196124

Reviewed by Tim Horton.

The giant m_transform was unused.

Group the bools etc.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):

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

5 months agoREGRESSION: (r242132) tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainf...
simon.fraser@apple.com [Fri, 22 Mar 2019 04:15:58 +0000 (04:15 +0000)]
REGRESSION: (r242132) tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe.html is a timeout
https://bugs.webkit.org/show_bug.cgi?id=196115

Unreviewed test gardening.

Scroll snap doesn't work on macOS with async overflow scrolling, so revert the changes to these tests.

* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:

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

5 months ago'custom-configuration-test-group-form' should update test name when selected test...
dewei_zhu@apple.com [Fri, 22 Mar 2019 03:34:28 +0000 (03:34 +0000)]
'custom-configuration-test-group-form' should update test name when selected test or platform changes.
https://bugs.webkit.org/show_bug.cgi?id=196114

Reviewed by Ryosuke Niwa.

r240104 fixes commit sets unnecessarily get updated even there is no change.
However, this made changing test or platform no longer triggers 'commitSetChange' action.
Test name should change not only when 'commitSet' gets change, but also platform or test changes.
Renaming the action name from 'commitSetChange' to a more accurate description 'testConfigChange'.
Dispatch 'testConfigChange' when platform or test changes.

* browser-tests/custom-analysis-task-configurator-tests.js: Changed action name to 'commitSetChange'.
* public/v3/components/custom-analysis-task-configurator.js:
(CustomAnalysisTaskConfigurator.prototype._didUpdateSelectedPlatforms): Should dispatch 'commitSetChange' action.
(CustomAnalysisTaskConfigurator.prototype._updateCommitSetMap): Changed action name to 'commitSetChange'.
* public/v3/components/custom-configuration-test-group-form.js: Added a unit test for this change.
(CustomConfigurationTestGroupForm.prototype.didConstructShadowTree):

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

5 months agoCertain WebProcesses should opt-out of the freezer.
beidson@apple.com [Fri, 22 Mar 2019 03:00:44 +0000 (03:00 +0000)]
Certain WebProcesses should opt-out of the freezer.
<rdar://problem/42846139> and https://bugs.webkit.org/show_bug.cgi?id=196062

Reviewed by Andy Estes.

Source/bmalloc:

* bmalloc.xcodeproj/project.pbxproj:
* bmalloc/darwin/MemoryStatusSPI.h:

Source/WebKit:

WebProcesses should opt-in and opt-out of the freezer as is appropriate.
By default a WebProcess is freezer eligible.
If any of the following become true then it should become ineligible:
- The WebProcess is a pre-warmed process.
- The WebProcess is in the process cache.
- The WebProcess is not actively hosting any web pages (e.g. it only has suspending web pages)

The most complicated part of the above is guaranteeing that any operation that changes
the active pages hosted by the process causes a recalculation of the freezer opt-in state.

To do that this replaces the basic WebPageProxyMap with a custom class.

* UIProcess/WebProcessProxy.cpp:
(WebKit::globalPageMap):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::validateFreezerStatus):
(WebKit::WebProcessProxy::setIsInProcessCache):
(WebKit::WebProcessProxy::markIsNoLongerInPrewarmedPool):
(WebKit::WebProcessProxy::didFinishLaunching):
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::WebPageProxyMap::WebPageProxyMap):
(WebKit::WebProcessProxy::WebPageProxyMap::size const):
(WebKit::WebProcessProxy::WebPageProxyMap::values):
(WebKit::WebProcessProxy::WebPageProxyMap::values const):
(WebKit::WebProcessProxy::WebPageProxyMap::begin):
(WebKit::WebProcessProxy::WebPageProxyMap::end):
(WebKit::WebProcessProxy::WebPageProxyMap::get):
(WebKit::WebProcessProxy::WebPageProxyMap::contains const):
(WebKit::WebProcessProxy::WebPageProxyMap::isEmpty const):
(WebKit::WebProcessProxy::WebPageProxyMap::set):
(WebKit::WebProcessProxy::WebPageProxyMap::take):

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setFreezable):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

5 months agoWeb Inspector: Safari Canvas Inspector seems to show the canvas being rendered twice...
drousso@apple.com [Fri, 22 Mar 2019 02:47:35 +0000 (02:47 +0000)]
Web Inspector: Safari Canvas Inspector seems to show the canvas being rendered twice per frame.
https://bugs.webkit.org/show_bug.cgi?id=196082
<rdar://problem/49113496>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: inspector/canvas/recording-2d.html
       inspector/canvas/recording-bitmaprenderer.html
       inspector/canvas/recording-html-2d.html
       inspector/canvas/recording-webgl.html
       inspector/canvas/setRecordingAutoCaptureFrameCount.html

WebGL `<canvas>` follow a different "rendering" path such that `HTMLCanvasElement::paint`
isn't called. Previously, there was a 0s timer that was started after the first action of a
frame was recorded (for the case that the `<canvas>` isn't attached to the DOM) that would
automatically stop the recording. It was possible that actions in two different "frame"s
were recorded as part of the same frame, because the WebGL `<canvas>` would instead fall
back to the timer to know when the "frame" had ended.

Now, there is additional instrumentation for the WebGL specific rendering path.
Additionally, replace the 0s timer with a microtask for more "immediate" calling.

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::paint):
Ensure that the `InspectorInstrumentation` call is last. This matches what we expect, as
before we were instrumenting right before is it about to paint.

* platform/graphics/GraphicsContext3D.h:
(WebCore::GraphicsContext3D::Client::~Client): Added.
(WebCore::GraphicsContext3D::addClient): Added.
(WebCore::GraphicsContext3D::removeClient): Added.
(WebCore::GraphicsContext3D::setWebGLContext): Deleted.
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::markLayerComposited):
(WebCore::GraphicsContext3D::forceContextLost):
(WebCore::GraphicsContext3D::recycleContext):
(WebCore::GraphicsContext3D::dispatchContextChangedNotification):
* html/canvas/WebGLRenderingContextBase.h:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D):
(WebCore::WebGLRenderingContextBase::didComposite): Added.
(WebCore::WebGLRenderingContextBase::forceContextLost):
(WebCore::WebGLRenderingContextBase::recycleContext):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedNotification): Added.
(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Deleted.
Introduce a `GraphicsContext3DClient` abstract class, rather than passing the
`WebGLRenderingContextBase` directly to the `GraphicsContext3D` (layering violation).
Notify the client whenever the `GraphicsContext3D` composites, which will in turn notify the
`InspectorCanvasAgent` so that it knows that the "frame" is over.

* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::requestNode):
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::resolveCanvasContext):
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::requestShaderSource):
(WebCore::InspectorCanvasAgent::updateShader):
(WebCore::InspectorCanvasAgent::setShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
(WebCore::InspectorCanvasAgent::didEnableExtension):
(WebCore::InspectorCanvasAgent::didCreateProgram):
(WebCore::InspectorCanvasAgent::willDeleteProgram):
(WebCore::InspectorCanvasAgent::isShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::isShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::assertInspectorCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::assertInspectorProgram):
(WebCore::InspectorCanvasAgent::findInspectorProgram):
(WebCore::InspectorCanvasAgent::canvasRecordingTimerFired): Deleted.
Replace raw pointers with `RefPtr`s. This is primarily used so that the microtask (instead
of a timer) that is enqueued after the first action of each frame  is recorded can access a
ref-counted instance of an `InspectorCanvas`, ensuring that it isn't destructed.

* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::canvasElement):
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::finalizeFrame):
(WebCore::InspectorCanvas::releaseObjectForRecording): Added.
(WebCore::InspectorCanvas::getCanvasContentAsDataURL):
(WebCore::InspectorCanvas::appendActionSnapshotIfNeeded):
(WebCore::InspectorCanvas::buildInitialState):
(WebCore::InspectorCanvas::releaseInitialState): Deleted.
(WebCore::InspectorCanvas::releaseFrames): Deleted.
(WebCore::InspectorCanvas::releaseData): Deleted.
Move the recording payload construction logic to `InspectorCanvas` so the actual data
doesn't need to leave that class.
Drive-by: unify the logic for getting the contents of a canvas from `InspectorCanvasAgent`.
LayoutTests:

* inspector/canvas/recording-2d.html:
* inspector/canvas/recording-bitmaprenderer.html:
* inspector/canvas/recording-html-2d.html:
* inspector/canvas/recording-webgl.html:
* inspector/canvas/setRecordingAutoCaptureFrameCount.html:

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

5 months agoWeb Inspector: Timelines - Cannot export on about:blank - suggested filename containi...
joepeck@webkit.org [Fri, 22 Mar 2019 02:33:38 +0000 (02:33 +0000)]
Web Inspector: Timelines - Cannot export on about:blank - suggested filename containing a colon silently fails
https://bugs.webkit.org/show_bug.cgi?id=196109

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

* UserInterface/Base/FileUtilities.js:
(WI.FileUtilities.sanitizeFilename):
(WI.FileUtilities.inspectorURLForFilename):
New utility functions.

* UserInterface/Test.html:
Include FileUtilities.

* UserInterface/Base/Main.js:
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.export):
* UserInterface/Debug/ProtocolTrace.js:
(WI.ProtocolTrace.prototype.get saveData):
(WI.ProtocolTrace):
* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype._handleContextMenu):
(WI.ConsoleMessageView):
* UserInterface/Views/ContextMenuUtilities.js:
* UserInterface/Views/HeapSnapshotContentView.js:
(WI.HeapSnapshotContentView.prototype._exportSnapshot):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.get saveData):
(WI.LogContentView.prototype._handleContextMenuEvent):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._exportHAR):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._exportRecording):
(WI.RecordingContentView.prototype._exportReduction):
* UserInterface/Views/ScriptContentView.js:
(WI.ScriptContentView.prototype.get saveData):
* UserInterface/Views/ShaderProgramContentView.js:
(WI.ShaderProgramContentView.prototype.get saveData):
* UserInterface/Views/TextContentView.js:
(WI.TextContentView.prototype.get saveData):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView.prototype.get saveData):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView.prototype._exportTimelineRecording):
Update "web-inspector:///" URL building code to use the utility.

LayoutTests:

* inspector/unit-tests/file-utilities-expected.txt: Added.
* inspector/unit-tests/file-utilities.html: Added.
Tests for FileUtilities.js

* inspector/unit-tests/object-utilities.html:
* inspector/unit-tests/promise-utilities.html:

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

5 months agoAdopt UIWKDocumentContext
timothy_horton@apple.com [Fri, 22 Mar 2019 02:26:09 +0000 (02:26 +0000)]
Adopt UIWKDocumentContext
https://bugs.webkit.org/show_bug.cgi?id=196040
<rdar://problem/48642440>

Reviewed by Ryosuke Niwa.

New API test: WebKit.DocumentEditingContext

* dom/Range.h:
* editing/TextGranularity.h:
Make TextGranularity encodable by providing EnumTraits.

* editing/TextIterator.cpp:
(WebCore::plainTextReplacingNoBreakSpace):
* editing/TextIterator.h:
Expose an nbsp-replacing variant of plainText that takes Positions instead of Ranges.

* Platform/spi/ios/UIKitSPI.h:
* Scripts/webkit/messages.py:
* Shared/DocumentEditingContext.h: Added.
* Shared/DocumentEditingContext.mm: Added.
(WebKit::toNSRange):
(WebKit::DocumentEditingContext::toPlatformContext):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext::Range>::encode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext::Range>::decode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext::TextRect>::encode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext::TextRect>::decode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext>::encode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext>::decode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContextRequest>::encode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContextRequest>::decode):
Add DocumentEditingContext(Request), and coders.
Also expose DocumentEditingContext::toPlatformContext, which populates
a UIWKDocumentContext with the relevant values.

* SourcesCocoa.txt:
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(toWebDocumentRequestOptions):
(toWebRequest):
(-[WKContentView adjustSelectionWithDelta:completionHandler:]):
(-[WKContentView requestDocumentContext:completionHandler:]):
(-[WKContentView selectPositionAtPoint:withContextRequest:completionHandler:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::adjustSelectionWithDelta):
(WebKit::WebPageProxy::requestDocumentEditingContext):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
Plumb DocumentEditingContext(Request) around.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::adjustSelectionWithDelta):
Adjust the current selection given deltas to apply to the location and length.

(WebKit::visiblePositionAdjacentToVisiblePosition):
(WebKit::visiblePositionForPointInRootViewCoordinates):
(WebKit::WebPage::requestDocumentEditingContext):
Retrieve the relevant part of the selection, as well as the context,
given either the selection, or a rect.
If we're collecting context for a rect, we split the context between
before and after (except for the part that intersects the selection).
The three strings will always be directly adjacent, and any of the three
can sometimes be null.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm: Added.
(makeRequest):
(-[TestWKWebView synchronouslyRequestDocumentContext:]):
(-[TestWKWebView synchronouslyAdjustSelectionWithDelta:]):
(applyStyle):
(TEST):
Add tests for UIWKDocumentContext.

* TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:
(TEST):
(recursiveFindWKContentView): Deleted.
* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(recursiveFindWKContentView):
(-[TestWKWebView wkContentView]):
* TestWebKitAPI/ios/UIKitSPI.h:
Share the WKContentView finding code between tests.

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

5 months ago[ Mac WK2 ] Layout Test http/tests/security/contentSecurityPolicy/block-all-mixed...
cdumez@apple.com [Fri, 22 Mar 2019 01:58:13 +0000 (01:58 +0000)]
[ Mac WK2 ] Layout Test http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=194350
<rdar://problem/47937466>

Reviewed by Alex Christensen.

Bypass the HTMLPreloadScanner in the test or compass.jpg resource may end up getting loaded twice and log extra
lines in the test output.

* http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies-expected.txt:
* http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-image-with-enforced-and-report-policies.php:
* platform/mac-wk2/TestExpectations:
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies-expected.txt:

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

5 months agoWeb Inspector: Use CSS variables for text color in Computed panel
nvasilyev@apple.com [Fri, 22 Mar 2019 01:22:47 +0000 (01:22 +0000)]
Web Inspector: Use CSS variables for text color in Computed panel
https://bugs.webkit.org/show_bug.cgi?id=196117

Reviewed by Timothy Hatcher.

* UserInterface/Views/ComputedStyleSection.css:
(.computed-style-section):
(.computed-style-section .computed-property-item .property-trace-item .selector):
(.computed-style-section .computed-property-item .go-to-link):

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

5 months agoLong press gesture recognizers in WKWebView are conflicting with internal scroll...
commit-queue@webkit.org [Fri, 22 Mar 2019 01:03:18 +0000 (01:03 +0000)]
Long press gesture recognizers in WKWebView are conflicting with internal scroll view long press gesture recognizers
https://bugs.webkit.org/show_bug.cgi?id=195726
rdar://problem/48582449

Patch by James Magahern <jmagahern@apple.com> on 2019-03-21
Reviewed by Megan Gardner.

We just need to add another clause to WKContentViewInteraction's
canPreventGestureRecognizer whitelist.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView gestureRecognizer:canPreventGestureRecognizer:]):

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

5 months agoUnreviewed test gardening.
simon.fraser@apple.com [Fri, 22 Mar 2019 00:49:18 +0000 (00:49 +0000)]
Unreviewed test gardening.

Fix this test by turning on async scrolling so that mock scrollbars don't show up.

* fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking-expected.html:

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

5 months agoUnreviewed test gardening.
simon.fraser@apple.com [Fri, 22 Mar 2019 00:33:55 +0000 (00:33 +0000)]
Unreviewed test gardening.

Revert some iOS layout test results that were rebaselined with async scrolling enabled.

* platform/ios-wk2/compositing/geometry/limit-layer-bounds-transformed-overflow-expected.txt: Removed.
* platform/ios-wk2/compositing/layer-creation/overflow-scroll-overlap-expected.txt: Removed.
* platform/ios-wk2/compositing/layer-creation/scroll-partial-update-expected.txt: Removed.
* platform/ios-wk2/compositing/overflow/content-gains-scrollbars-expected.txt: Removed.
* platform/ios-wk2/compositing/overflow/overflow-scroll-expected.txt:
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt: Removed.
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layers-expected.txt: Removed.
* platform/ios-wk2/compositing/overflow/remove-overflow-crash2-expected.txt:
* platform/ios-wk2/compositing/overflow/scrollbar-painting-expected.txt:
* platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
* platform/ios/compositing/layers-inside-overflow-scroll-expected.txt:
* platform/ios/compositing/overflow/scroll-ancestor-update-expected.txt:
* platform/ios/compositing/reflections/nested-reflection-on-overflow-expected.txt:
* platform/ios/compositing/self-painting-layers-expected.txt:

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

5 months agoFix key path extraction code in IndexedDB to check own property
sihui_liu@apple.com [Fri, 22 Mar 2019 00:03:31 +0000 (00:03 +0000)]
Fix key path extraction code in IndexedDB to check own property
https://bugs.webkit.org/show_bug.cgi?id=196099

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Updated test expectations to PASS.

* web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt:
* web-platform-tests/IndexedDB/keygenerator-inject-expected.txt:
* web-platform-tests/IndexedDB/keypath-exceptions-expected.txt: Added.
* web-platform-tests/IndexedDB/wasm-module-value-expected.txt:

Source/WebCore:

Covered by existing tests.

* Modules/indexeddb/IDBFactory.cpp:
(WebCore::IDBFactory::cmp):
We don't need to check the second parameters if the first is already invalid.

* Modules/indexeddb/IDBKeyRange.cpp:
(WebCore::IDBKeyRange::bound):
Ditto.

* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::putOrAdd):
we should not clear the exception during serialization because the execeptions may be explicitly thrown by parameters.

* bindings/js/IDBBindingUtilities.cpp:
(WebCore::get):
Fix implementation according to https://www.w3.org/TR/IndexedDB-2/#extract-key-from-value.

(WebCore::canInjectNthValueOnKeyPath):
Check the last identifier.

LayoutTests:

Rebaseline the tests because we will have same exception but different exception messages after the patch.

* storage/indexeddb/clone-exception-expected.txt:
* storage/indexeddb/clone-exception-private-expected.txt:
* storage/indexeddb/exceptions-expected.txt:
* storage/indexeddb/exceptions-private-expected.txt:
* storage/indexeddb/objectstore-basics-expected.txt:
* storage/indexeddb/objectstore-basics-private-expected.txt:
* storage/indexeddb/objectstore-basics-workers-expected.txt:
* storage/indexeddb/structured-clone-expected.txt:
* storage/indexeddb/structured-clone-private-expected.txt:
* storage/indexeddb/wasm-exceptions-expected.txt:

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

5 months ago[iOS WK2] Turn on async overflow scrolling by default
simon.fraser@apple.com [Thu, 21 Mar 2019 23:55:39 +0000 (23:55 +0000)]
[iOS WK2] Turn on async overflow scrolling by default
https://bugs.webkit.org/show_bug.cgi?id=196011
rdar://problem/48453859

Reviewed by Antti Koivisto.
Source/WebKit:

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:

Tools:

Explicitly turn off the async overflow scrolling internal feature for tests by default,
since so many basic layout tests have different results when compositing is triggered for
overflow.

Individual tests will re-enable with <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

Explicitly turn on async overflow scrolling in any test that:
1. Used -webkit-overflow-scrolling:touch
2. Called settings.setAsyncOverflowScrollingEnabled(true)

* accessibility/ios-simulator/scroll-in-overflow-div.html:
* compositing/clipping/border-radius-async-overflow-clipping-layer.html:
* compositing/clipping/border-radius-async-overflow-non-stacking.html:
* compositing/clipping/border-radius-async-overflow-stacking.html:
* compositing/geometry/fixed-inside-overflow-scroll.html:
* compositing/ios/overflow-scroll-touch-tiles.html:
* compositing/ios/overflow-scroll-update-overlap.html:
* compositing/layer-creation/absolute-in-async-overflow-scroll.html:
* compositing/overflow/absolute-in-overflow-expected.html:
* compositing/overflow/absolute-in-overflow.html:
* compositing/overflow/clipping-ancestor-with-accelerated-scrolling-ancestor.html:
* compositing/overflow/iframe-inside-overflow-clipping.html:
* compositing/overflow/nested-scrolling.html:
* compositing/overflow/overflow-auto-with-touch-expected.txt:
* compositing/overflow/overflow-auto-with-touch-no-overflow.html:
* compositing/overflow/overflow-auto-with-touch-toggle.html:
* compositing/overflow/overflow-auto-with-touch.html:
* compositing/overflow/overflow-clip-with-accelerated-scrolling-ancestor.html:
* compositing/overflow/overflow-hidden-with-touch.html:
* compositing/overflow/overflow-overlay-with-touch-expected.txt:
* compositing/overflow/overflow-overlay-with-touch-no-overflow.html:
* compositing/overflow/overflow-overlay-with-touch.html:
* compositing/overflow/overflow-scroll-with-touch-no-overflow.html:
* compositing/overflow/overflow-scroll.html:
* compositing/overflow/overflow-visible-with-touch.html:
* compositing/overflow/remove-overflow-crash.html:
* compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
* compositing/overflow/scrolling-content-clip-to-viewport.html:
* compositing/overflow/scrolling-without-painting.html:
* compositing/overflow/should-not-override-z-index-for-element-with-non-auto-z-index-and-overflow-scroll-and-touch.html:
* compositing/overflow/subpixel-overflow.html:
* compositing/overflow/textarea-scroll-touch-expected.txt:
* compositing/overflow/textarea-scroll-touch.html:
* compositing/overflow/updating-scrolling-content.html:
* compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
* compositing/rtl/rtl-scrolling-with-transformed-descendants.html:
* compositing/scrolling/fixed-inside-scroll-expected.html:
* compositing/scrolling/fixed-inside-scroll.html:
* compositing/scrolling/overflow-scrolling-layers-are-self-painting.html:
* compositing/scrolling/touch-scroll-to-clip.html:
* compositing/scrolling/touch-scrolling-repaint-expected.html:
* compositing/scrolling/touch-scrolling-repaint-spans-expected.html:
* compositing/scrolling/touch-scrolling-repaint-spans.html:
* compositing/scrolling/touch-scrolling-repaint.html:
* css3/scroll-snap/nested-elements.html:
* css3/scroll-snap/scroll-snap-children-with-overflow.html:
* css3/scroll-snap/scroll-snap-offsets.html:
* css3/scroll-snap/scroll-snap-positions.html:
* css3/scroll-snap/scroll-snap-programmatic-overflow-scroll.html:
* css3/scroll-snap/scroll-snap-style-changed-align.html:
* fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-overflow.html:
* fast/events/ios/touch-events-during-scroll-deceleration-in-overflow.html:
* fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html:
* fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html:
* fast/events/touch/ios/drag-block-without-overflow-scroll.html:
* fast/scrolling/ios/change-scrollability-on-content-resize-nested.html:
* fast/scrolling/ios/change-scrollability-on-content-resize.html:
* fast/scrolling/ios/clipping-ancestor-with-accelerated-scrolling-ancestor.html:
* fast/scrolling/ios/fixed-inside-overflow-inside-iframe-expected.html:
* fast/scrolling/ios/fixed-inside-overflow-inside-iframe.html:
* fast/scrolling/ios/iframe-inside-overflow-clipping.html:
* fast/scrolling/ios/overflow-clip-with-accelerated-scrolling-ancestor.html:
* fast/scrolling/ios/overflow-scroll-inherited.html:
* fast/scrolling/ios/overflow-scroll-overlap-2.html:
* fast/scrolling/ios/overflow-scroll-overlap-3.html:
* fast/scrolling/ios/overflow-scroll-overlap-4.html:
* fast/scrolling/ios/overflow-scroll-overlap-5.html:
* fast/scrolling/ios/overflow-scroll-overlap.html:
* fast/scrolling/ios/overflow-scroll-touch.html:
* fast/scrolling/ios/overflow-scrolling-ancestor-clip-size.html:
* fast/scrolling/ios/overflow-scrolling-ancestor-clip.html:
* fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking.html:
* fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking-expected.html:
* fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking.html:
* fast/scrolling/ios/reconcile-layer-position-recursive.html:
* fast/scrolling/ios/remove-overflow-crash.html:
* fast/scrolling/ios/scroll-into-view-with-top-content-inset.html:
* fast/scrolling/ios/scrollbar-hiding.html:
* fast/scrolling/ios/scrolling-content-clip-to-viewport.html:
* fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor.html:
* fast/scrolling/ios/table-cell-touch-scrolling.html:
* fast/scrolling/ios/textarea-scroll-touch.html:
* fast/scrolling/ios/touch-scroll-back-forward.html:
* fast/scrolling/ios/touch-scroll-pointer-events-none.html:
* fast/scrolling/ios/touch-stacking.html:
* platform/ios-wk2/TestExpectations:
* platform/ios-wk2/compositing/geometry/limit-layer-bounds-transformed-overflow-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/overflow-scroll-overlap-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/scroll-partial-update-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/content-gains-scrollbars-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/overflow-scroll-expected.txt:
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layers-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/remove-overflow-crash2-expected.txt:
* platform/ios-wk2/compositing/overflow/scrollbar-painting-expected.txt:
* platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
* platform/ios/compositing/layers-inside-overflow-scroll-expected.txt:
* platform/ios/compositing/overflow/scroll-ancestor-update-expected.txt:
* platform/ios/compositing/reflections/nested-reflection-on-overflow-expected.txt:
* platform/ios/compositing/self-painting-layers-expected.txt:
* platform/ios/fast/scrolling/find-text-in-overflow-node-indicator-position-limit.html:
* platform/ios/fast/scrolling/find-text-in-overflow-node-indicator-position.html:
* platform/ios/fast/scrolling/find-text-in-overflow-node.html:
* platform/ios/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container.html:
* platform/mac/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt:
* pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html:
* scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll-expected.html:
* scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll.html:
* scrollingcoordinator/ios/relative-layer-should-move-with-scroll-expected.html:
* scrollingcoordinator/ios/relative-layer-should-move-with-scroll.html:
* scrollingcoordinator/ios/scroll-element-at-point.html:
* scrollingcoordinator/scrolling-tree/gain-scrolling-node-parent.html:
* scrollingcoordinator/scrolling-tree/lose-scrolling-node-parent.html:
* scrollingcoordinator/scrolling-tree/overflow-in-fixed.html:
* scrollingcoordinator/scrolling-tree/positioned-nodes-complex.html:
* scrollingcoordinator/scrolling-tree/positioned-nodes.html:
* scrollingcoordinator/scrolling-tree/remove-scrolling-role.html:
* scrollingcoordinator/scrolling-tree/reparent-across-compositing-layers.html:
* scrollingcoordinator/scrolling-tree/reparent-with-layer-removal.html:
* scrollingcoordinator/scrolling-tree/resources/doc-with-sticky.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:

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

5 months ago[Web Animations] JS wrapper may be deleted while animation is yet to dispatch its...
graouts@webkit.org [Thu, 21 Mar 2019 23:53:59 +0000 (23:53 +0000)]
[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
<rdar://problem/46614137>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: webanimations/js-wrapper-kept-alive.html

We need to teach WebAnimation to keep its JS wrapper alive if it's relevant or could become relevant again by virtue of having a timeline.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::stop): Drive-by fix for the missing superclass method call.
(WebCore::WebAnimation::hasPendingActivity const):
* animation/WebAnimation.h:

LayoutTests:

Add a test that starts a short animation, sets a custom property on it, registers a "finish" event listener on it and deletes
the sole reference to it in the JS world before triggering garbage collection. Prior to this fix, this test would time out
because the JS wrapper would be garbage-collected prior to the animation completing and thus the event listener would not
be called. To complete successfully, this test checks that it receives the event and its target is the same animation object
that was originally created by checking the custom property is still set.

* webanimations/js-wrapper-kept-alive-expected.txt: Added.
* webanimations/js-wrapper-kept-alive.html: Added.

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

5 months agoRemove last use of LegacySync IPC messages
achristensen@apple.com [Thu, 21 Mar 2019 23:35:39 +0000 (23:35 +0000)]
Remove last use of LegacySync IPC messages
https://bugs.webkit.org/show_bug.cgi?id=196113

Reviewed by Chris Dumez.

Also rename "Delayed" to "Synchronous" now that there's only one type of synchronous message.

* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::syncTerminateWorkerFromClient):
* NetworkProcess/ServiceWorker/WebSWServerConnection.h:
* NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
* Platform/IPC/Connection.cpp:
(IPC::Connection::dispatchMessage):
* Platform/IPC/HandleMessage.h:
(IPC::handleMessageSynchronous):
(IPC::handleMessageSynchronousWantsConnection):
(IPC::handleMessageLegacySync): Deleted.
(IPC::handleMessageDelayed): Deleted.
(IPC::handleMessageDelayedWantsConnection): Deleted.
* PluginProcess/PluginControllerProxy.messages.in:
* PluginProcess/WebProcessConnection.messages.in:
* Scripts/webkit/LegacyMessageReceiver-expected.cpp:
(WebKit::WebPage::didReceiveSyncWebPageMessage):
* Scripts/webkit/MessageReceiver-expected.cpp:
(WebKit::WebPage::didReceiveSyncMessage):
* Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
(Messages::WebPage::TestSyncMessage::send):
(Messages::WebPage::TestSynchronousMessage::send):
(WebKit::WebPage::didReceiveSyncMessage):
(Messages::WebPage::TestDelayedMessage::send): Deleted.
* Scripts/webkit/MessagesSuperclass-expected.h:
(Messages::WebPage::TestSynchronousMessage::name):
(Messages::WebPage::TestSynchronousMessage::TestSynchronousMessage):
(Messages::WebPage::TestDelayedMessage::receiverName): Deleted.
(Messages::WebPage::TestDelayedMessage::name): Deleted.
(Messages::WebPage::TestDelayedMessage::TestDelayedMessage): Deleted.
(Messages::WebPage::TestDelayedMessage::arguments const): Deleted.
* Scripts/webkit/messages.py:
* Scripts/webkit/messages_unittest.py:
* Scripts/webkit/test-legacy-messages.in:
* Scripts/webkit/test-messages.in:
* Scripts/webkit/test-superclass-messages.in:
* Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
* Shared/Plugins/NPObjectMessageReceiver.messages.in:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* UIProcess/Plugins/PluginProcessProxy.messages.in:
* UIProcess/WebFullScreenManagerProxy.messages.in:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebPasteboardProxy.messages.in:
* UIProcess/WebProcessPool.messages.in:
* UIProcess/WebProcessProxy.messages.in:
* UIProcess/WebStorage/StorageManager.messages.in:
* UIProcess/mac/SecItemShimProxy.messages.in:
* WebProcess/Plugins/PluginProcessConnection.messages.in:
* WebProcess/Plugins/PluginProxy.messages.in:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::syncTerminateWorker):
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebProcess.messages.in:

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

5 months agoRemove an invalid assertion in DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareN...
mark.lam@apple.com [Thu, 21 Mar 2019 23:34:31 +0000 (23:34 +0000)]
Remove an invalid assertion in DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined().
https://bugs.webkit.org/show_bug.cgi?id=196116
<rdar://problem/48976951>

Reviewed by Filip Pizlo.

JSTests:

* stress/dfg-compare-eq-via-nonSpeculativeNonPeepholeCompareNullOrUndefined.js: Added.

Source/JavaScriptCore:

The DFG backend should not make assumptions about what optimizations the front end
will or will not do.  The assertion asserts that the operand cannot be known to be
a cell.  However, it is not guaranteed that the front end will fold away this case.
Also, the DFG backend is perfectly capable of generating code to handle the case
where the operand is a cell.

The attached test case demonstrates a case where the operand can be a known cell.
The test needs to be run with the concurrent JIT and GC, and is racy.  It used to
trip up this assertion about once every 10 runs or so.

* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):

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

5 months ago[ews-build] Retry API test in case of failures
aakash_jain@apple.com [Thu, 21 Mar 2019 23:11:58 +0000 (23:11 +0000)]
[ews-build] Retry API test in case of failures
https://bugs.webkit.org/show_bug.cgi?id=196004

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/steps.py:
(UnApplyPatchIfRequired.doStepIf): Updated doStepIf to include patchFailedAPITests.
(CompileWebKitToT.doStepIf): Ditto.
(RunAPITests.evaluateCommand): Check if tests failed and retry them if required.
(ReRunAPITests): Re-run API tests.
(ReRunAPITests.evaluateCommand): Check if tests failed and retry on clean build if required.
(RunAPITestsWithoutPatch): Run API tests without patch.
(RunAPITestsWithoutPatch.doStepIf):
(RunAPITestsWithoutPatch.hideStepIf):
(RunAPITestsWithoutPatch.evaluateCommand):
(AnalyzeAPITestsResults): Analyze API test results from previous runs.
(AnalyzeAPITestsResults.start):
(AnalyzeAPITestsResults.analyzeResults): Analyze API test results.
(AnalyzeAPITestsResults.getBuildStepByName): Search for a build step by name.
(AnalyzeAPITestsResults.getTestsResults): Get the test results from previous API tesst steps.
* BuildSlaveSupport/ews-build/steps_unittest.py: Monkey patched FakeBuild.

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

5 months agoInband Text Track cues interspersed with Data cues can display out of order.
jer.noble@apple.com [Thu, 21 Mar 2019 23:01:53 +0000 (23:01 +0000)]
Inband Text Track cues interspersed with Data cues can display out of order.
https://bugs.webkit.org/show_bug.cgi?id=196095

Reviewed by Eric Carlson.

The compareCueIntervalForDisplay() comparator depends on a virtual function, isPositionedAbove(TextTrackCue* other),
but this comparison returns inconsistent results for cueA->isPositionedAbove(cueB) and cueB->isPositionedAbove(cueA)
if the two cues are different subclasses of TextTrackCue.

The underlying algorithm should be fixed in a future patch, but for now, remove all non-displaying cues from the array
of activeCues before sorting, rather than after when iterating over the sorted list of activeCues.

* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):

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

5 months agoWeb Automation: support uploading non-local file paths
bburg@apple.com [Thu, 21 Mar 2019 22:54:25 +0000 (22:54 +0000)]
Web Automation: support uploading non-local file paths
https://bugs.webkit.org/show_bug.cgi?id=196081
<rdar://problem/45819897>

Reviewed by Devin Rousso and Joseph Pecoraro.

To support cases where supplied file paths do not exist on the session host, add support for
receiving file contents via Automation.setFilesToSelectForFileUpload.

* UIProcess/Automation/Automation.json: Add new parameter.

* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
Add support for receiving and saving file contents to a temporary directory. Rewrite the used paths so
that WebCore knows to look at the revised paths where the file contents have been saved.

(WebKit::WebAutomationSession::platformGenerateLocalFilePathForRemoteFile):
Since WebKit does not have usable FileSystem implementations for all ports, shell out the actual
saving of base64-encoded file data. Provide a Cocoa implementation, since that's what I can test.

* UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm:
(WebKit::WebAutomationSession::platformGenerateLocalFilePathForRemoteFile):
Use WTF::FileSystem to create a temporary directory, and use Cocoa methods to actually write the file.

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

5 months agoCache API and IDB space usages should be initialized on first quota check
youenn@apple.com [Thu, 21 Mar 2019 22:52:18 +0000 (22:52 +0000)]
Cache API and IDB space usages should be initialized on first quota check
https://bugs.webkit.org/show_bug.cgi?id=195707

Reviewed by Chris Dumez.

Source/WebCore:

Add a way to require IDBServer to create a quota user for a given origin.
Make sure that removing a user might kick-in processing of pending requests.
In the case of processing pending requests, we should not decide on the first task
except if it is triggered by a request space response.
Update processPendingRequests accordingly.

Tests: http/tests/IndexedDB/storage-limit-1.https.html
       http/tests/IndexedDB/storage-limit-2.https.html

* Modules/indexeddb/server/IDBServer.h:
(WebCore::IDBServer::IDBServer::initializeQuotaUser):
* storage/StorageQuotaManager.cpp:
(WebCore::StorageQuotaManager::removeUser):
(WebCore::StorageQuotaManager::askForMoreSpace):
(WebCore::StorageQuotaManager::processPendingRequests):
* storage/StorageQuotaManager.h:

Source/WebKit:

When the quota manager is created, make sure it delays quota check decisions until IDB and Cache API quota users are initialized.
For IDB, the creation is synchronous but it may not be synchronous for Cache API.
For that purpose, add a temporary quota user that will stay uninitialized until these two quota users are added.
Once added, the temporary quota user is removed.
The addition of the real users is made asynchronously as this is triggered by the creation of one of the two quota users.

In the case of a Cache API caches being cleared, make sure to reset the size to zero and to redo the quota user initialization dance.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::QuotaUserInitializer::initialize):
(WebKit::QuotaUserInitializer::~QuotaUserInitializer):
(WebKit::QuotaUserInitializer::QuotaUserInitializer):
(WebKit::NetworkProcess::storageQuotaManager):
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::initializeQuotaUser):
* NetworkProcess/cache/CacheStorageEngine.h:
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clear):

LayoutTests:

* TestExpectations:
Marking http/tests/cache-storage/cache-clearing-origin.https.html as
flaky on iOS as it is already marked flaky in MacOS.
* platform/mac-wk2/TestExpectations:
* http/tests/IndexedDB/storage-limit-1.https-expected.txt: Added.
* http/tests/IndexedDB/storage-limit-1.https.html: Added.
* http/tests/IndexedDB/storage-limit-2.https-expected.txt: Added.
* http/tests/IndexedDB/storage-limit-2.https.html: Added.
* http/tests/IndexedDB/storage-limit.https.html:
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:

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

5 months agoFix iOS build after r243337
achristensen@apple.com [Thu, 21 Mar 2019 22:51:32 +0000 (22:51 +0000)]
Fix iOS build after r243337
https://bugs.webkit.org/show_bug.cgi?id=195935

* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
(WebCore::playbackSessionModel const): Deleted.

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

5 months agoHardening: Use WeakPtrs in PlaybackSessionInterface{Mac,AVKit}
bfulgham@apple.com [Thu, 21 Mar 2019 22:36:08 +0000 (22:36 +0000)]
Hardening: Use WeakPtrs in PlaybackSessionInterface{Mac,AVKit}
https://bugs.webkit.org/show_bug.cgi?id=195935
<rdar://problem/49007015>

Reviewed by Eric Carlson.

The PlaybackSessionInterface{Mac,AVKit} implementations store their playback session model
and playback controls manager members as bare pointers, something we've been working
to eliminate.

This patch corrects this oversight.

No new tests since no changes in behavior.

* platform/cocoa/PlaybackSessionModel.h:
* platform/ios/PlaybackSessionInterfaceAVKit.h:
* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
(WebCore::playbackSessionModel const): Moved to implementation since WEBCORE_EXPORT is not
supposed to be used with inline methods.
* platform/mac/PlaybackSessionInterfaceMac.h:
* platform/mac/PlaybackSessionInterfaceMac.mm:
(WebCore::PlaybackSessionInterfaceMac::PlaybackSessionInterfaceMac):
(WebCore::PlaybackSessionInterfaceMac::playbackSessionModel const):
(WebCore::PlaybackSessionInterfaceMac::beginScrubbing):
(WebCore::PlaybackSessionInterfaceMac::endScrubbing):
(WebCore::PlaybackSessionInterfaceMac::playBackControlsManager):
* platform/mac/VideoFullscreenInterfaceMac.mm:
(WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac):
* platform/mac/WebPlaybackControlsManager.mm:
(-[WebPlaybackControlsManager seekToTime:toleranceBefore:toleranceAfter:]):
(-[WebPlaybackControlsManager setCurrentAudioTouchBarMediaSelectionOption:]):
(-[WebPlaybackControlsManager setCurrentLegibleTouchBarMediaSelectionOption:]):

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

5 months agoRemove the SVG tear off objects for SVGPoint, SVGPointList and SVGAnimatedPointList
said@apple.com [Thu, 21 Mar 2019 22:21:58 +0000 (22:21 +0000)]
Remove the SVG tear off objects for SVGPoint, SVGPointList and SVGAnimatedPointList
https://bugs.webkit.org/show_bug.cgi?id=195905

Source/WebCore:

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

To remove the SVG tear off objects for SVGPoint, SVGPointList and
SVGAnimatedPointList, these changes are needed:

-- Define SVGPoint to be a superclass of SVGValueProperty<FloatPoint>.

-- Define SVGAnimatedPointList to be a superclass of SVGAnimatedPropertyList<SVGPointList>

-- Add SVGPropertyList which is a superclass of SVGList. Its items are
   defined to RefCounted. It is the base class of SVGValuePropertyList
   and it will be  the base class of SVGPathSegList in a later patch.

-- Add SVGValuePropertyList which is the base class of all the lists whose
   items are backed by a value objects like SVGPoint. The difference between
   SVGPropertyList and SVGValuePropertyList is the former class can store
   a Ref pointer of the base class like SVGPathSeg while the later type
   has to store the same type for all the items.

-- Add SVGAnimatedPropertyList which is the base class for all the animated
   lists. Note that:
   1) SVGElement owns SVGAnimatedPropertyList
   2) SVGAnimatedPropertyList owns m_baseVal whose type is SVGList
   3) m_baseVal owns the items whose type is a superclass of SVGProperty.
   When changing an item, it calls its owner which is an SVGList.
   SVGList calls its owner which is SVGAnimatedPropertyList.
   SVGAnimatedPropertyList calls its owner which SVGElement to commit
   the change. Later SVGAnimatedPropertyList::synchronize() is called
   which returns the property valueAsString() to update the reflecting
   attribute.

-- New accessor, animator and animation function are added to access
   and animate a member of type SVGAnimatedPropertyList.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/svg/SVGPathData.cpp:
(WebCore::pathFromCircleElement):
(WebCore::pathFromEllipseElement):
(WebCore::pathFromLineElement):
(WebCore::pathFromPathElement):
(WebCore::pathFromPolygonElement):
(WebCore::pathFromPolylineElement):
(WebCore::pathFromRectElement):
(WebCore::pathFromGraphicsElement):
* rendering/svg/SVGPathData.h:
The IDL of SVGPolyElement interface requires the following attribute:
    readonly attribute SVGPointList points;
For which we return:
    SVGPointList& points() { return m_points->baseVal(); }
But for all the other properties we return the currentValue(). So to have
the two functions with the same name, the following function is added:
    const SVGPointList& points() const { return m_points->currentValue(); }
This definition requires changing all callers to be const.

* rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::operator<<):
* svg/SVGAnimatedPointList.cpp: Removed.
* svg/SVGAnimatedPointList.h: Removed.
* svg/SVGAnimatedType.h:
(WebCore::SVGAnimatedType::type const):
This function had a bad design. It was designed to use the index of the
variant as the AnimatedPropertyType. But when some of the types are removed
from SVGValueVariant, this broke things. This fix is temporary till the
class SVGValueVariant is removed.

* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGExternalResourcesRequired.cpp:
* svg/SVGParserUtilities.cpp:
(WebCore::pointsListFromSVGData): Deleted.
* svg/SVGParserUtilities.h:
* svg/SVGPoint.h:
(WebCore::SVGPoint::create):
(WebCore::SVGPoint::clone const):
(WebCore::SVGPoint::x):
(WebCore::SVGPoint::setX):
(WebCore::SVGPoint::y):
(WebCore::SVGPoint::setY):
(WebCore::SVGPoint::matrixTransform const):
(WebCore::SVGPoint::matrixTransform): Deleted.
(WebCore::SVGPoint::SVGPoint): Deleted.
* svg/SVGPoint.idl:
matrixTransform() should not throw an exception.

* svg/SVGPointList.h:
(WebCore::SVGPointList::create):
(WebCore::SVGPointList::parse):
(WebCore::SVGPointList::SVGPointList): Deleted.
Move the parse() and valueAsString() methods to SVGPointList. It is now
a superclass of SVGValuePropertyList. Its items are of type Ref<SVGPoint>.

* svg/SVGPointListValues.cpp: Removed.
* svg/SVGPointListValues.h: Removed.
* svg/SVGPolyElement.cpp:
(WebCore::SVGPolyElement::SVGPolyElement):
(WebCore::SVGPolyElement::parseAttribute):
(WebCore::SVGPolyElement::approximateMemoryCost const):
(WebCore::SVGPolyElement::registerAttributes): Deleted.
(WebCore::SVGPolyElement::points): Deleted.
(WebCore::SVGPolyElement::animatedPoints): Deleted.
* svg/SVGPolyElement.h:
(WebCore::SVGPolyElement::points const):
(WebCore::SVGPolyElement::points):
(WebCore::SVGPolyElement::animatedPoints):
(WebCore::SVGPolyElement::pointList const): Deleted.
(WebCore::SVGPolyElement::attributeRegistry): Deleted.
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::setCurrentTranslate):
(WebCore::SVGSVGElement::currentTranslate): Deleted.
* svg/SVGSVGElement.h:
* svg/SVGSVGElement.idl:
Define currentTranslate property to be of type Ref<SVGPoint>. When requesting
it just return a reference to it.

* svg/SVGValue.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimatedPropertyList.h: Added.
Define the accessor, the animator and the animated type of SVGPointList.

(WebCore::SVGAnimatedPropertyList::create):
(WebCore::SVGAnimatedPropertyList::~SVGAnimatedPropertyList):
(WebCore::SVGAnimatedPropertyList::baseVal const):
(WebCore::SVGAnimatedPropertyList::baseVal):
(WebCore::SVGAnimatedPropertyList::animVal const):
(WebCore::SVGAnimatedPropertyList::animVal):
(WebCore::SVGAnimatedPropertyList::currentValue const):
(WebCore::SVGAnimatedPropertyList::SVGAnimatedPropertyList):
(WebCore::SVGAnimatedPropertyList::ensureAnimVal):
* svg/properties/SVGAnimationAdditiveListFunction.h: Added.
(WebCore::SVGAnimationAdditiveListFunction::SVGAnimationAdditiveListFunction):
(WebCore::SVGAnimationAdditiveListFunction::toAtEndOfDuration const):
(WebCore::SVGAnimationAdditiveListFunction::adjustAnimatedList):
* svg/properties/SVGAnimationAdditiveListFunctionImpl.h: Added.
(WebCore::SVGAnimationPointListFunction::progress):
Define the animation function for animating SVGPointList.

* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyList.h: Added.
(WebCore::SVGPropertyList::SVGPropertyList):
(WebCore::SVGPropertyList::~SVGPropertyList):
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):
* svg/properties/SVGValuePropertyList.h: Added.
(WebCore::SVGValuePropertyList::operator=):
(WebCore::SVGValuePropertyList::operator Vector<typename PropertyType::ValueType> const):
(WebCore::SVGValuePropertyList::resize):
(WebCore::SVGValuePropertyList::SVGValuePropertyList):

LayoutTests:

Reviewed by Simon Fraser.

* svg/dom/SVGPointList-basics-expected.txt:
* svg/dom/SVGPointList-basics.xhtml:
This change is required because SVGPointList 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@243336 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 months agoJSC::createError should clear exception thrown by errorDescriptionForValue
tzagallo@apple.com [Thu, 21 Mar 2019 22:04:56 +0000 (22:04 +0000)]
JSC::createError should clear exception thrown by errorDescriptionForValue
https://bugs.webkit.org/show_bug.cgi?id=196089

Reviewed by Mark Lam.

errorDescriptionForValue returns a nullString in case of failure, but it
might also throw an OOM exception when resolving a rope string. We need
to clear any potential exceptions thrown by errorDescriptionForValue
before returning the OOM from JSC::createError.

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

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

5 months ago[ews-build] Update queues configurations
aakash_jain@apple.com [Thu, 21 Mar 2019 22:00:52 +0000 (22:00 +0000)]
[ews-build] Update queues configurations
https://bugs.webkit.org/show_bug.cgi?id=196074

Reviewed by Dewei Zhu.

* BuildSlaveSupport/ews-build/config.json: Updated queues from iOS11 to iOS12,
added new bots, reassigned bots for various builders, moved few builders to another scheduler.

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