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

Reviewed by Devin Rousso.

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

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

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

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

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

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

Unreviewed test gardening.

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

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

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

Unreviewed test gardening.

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

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

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

Reviewed by Matt Baker.

No change in functionality.

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

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

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

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

Reviewed by Xabier Rodriguez-Calvar.

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

This patch does not introduce behavior changes.

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

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

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

Reviewed by Geoffrey Garen.

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

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

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

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

Reviewed by Carlos Garcia Campos.

Source/WebKit:

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

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

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

Tools:

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

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

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

Source/WebCore:

Reviewed by Antti Koivisto.

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

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

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

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

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

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

LayoutTests:

Reviewed by NOBODY (OOPS!).

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

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

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

Reviewed by Wenson Hsieh.

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

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

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

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

Reviewed by Daniel Bates.

Source/WebCore:

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

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

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

LayoutTests:

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

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

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

Unreviewed test gardening.

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

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

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

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

Source/JavaScriptCore:

Initialize variable with default constructor.

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

Source/WebCore:

No change in behavior.

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

Source/WebKit:

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

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

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

Reviewed by Michael Catanzaro.

Source/WebCore:

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

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

LayoutTests:

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

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

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

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

Reviewed by Tim Horton.

Source/WebCore:

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

Source/WebKit:

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

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

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

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

Source/WebKitLegacy/mac:

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

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

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

LayoutTests:

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

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

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

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

Reviewed by Yusuke Suzuki.

PerformanceTests:

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

Websites/browserbench.org:

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

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

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

Reviewed by Yusuke Suzuki.

JSTests:

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

Source/JavaScriptCore:

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

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

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

Reviewed by Tim Horton.

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

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

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

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

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

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

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

Reviewed by Tim Horton.

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

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

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

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

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

(read_content_from_webkit_additions):
(main):

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

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

Reviewed by Dan Bernstein.

Source/WebKit:

Removed some remnants of the Storage Process.

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

Tools:

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

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

* Scripts/package-root:

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

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

Unreviewed test gardening.

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

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

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

Reviewed by Alex Christensen.

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

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

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

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

Reviewed by Dewei Zhu.

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

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

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

Reviewed by Dean Jackson.

Source/WebCore:

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

No new tests; no change in behavior.

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

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

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

LayoutTests:

GPUShaderModule is no longer nullable.

* webgpu/shader-modules.html:

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

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

Reviewed by Alex Christensen.

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

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

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

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

Causing timeouts in animation tests across 10 builds

Reverted changeset:

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

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

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

Reviewed by Filip Pizlo.

JSTests:

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

Source/JavaScriptCore:

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

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

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

When we have a watchpoint like the following.

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

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

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

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

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

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

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

Reviewed by Ryosuke Niwa.

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

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

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

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

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

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

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

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

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

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

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

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

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

Reviewed by Alex Christensen.

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

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

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

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

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

Reviewed by Simon Fraser.

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

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

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

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

Reviewed by Simon Fraser.

Source/WebCore:

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

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

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

LayoutTests:

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

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

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

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

Source/WebCore:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

LayoutTests:

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

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

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

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

Unreviewed test gardening.

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

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

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

Reviewed by Wenson Hsieh.

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

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

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

Unrereivewed build fix.

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

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

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

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

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

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

Source/WebCore:

Align progress event firing with the XHR specification.

No new tests, rebaselined existing tests.

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

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

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

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

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

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

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

Reviewed by Zalan Bujtas.

Source/WebCore:

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

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

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

LayoutTests:

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

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

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

Unreviewed test gardening.

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

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

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

Unreviewed test gardening

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

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

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

Unreviewed test gardening.

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

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

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

Reviewed by Ross Kirsling.

Source/WTF:

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

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

LayoutTests:

* platform/win/TestExpectations:

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

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

PerformanceTests:

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

Websites/browserbench.org:

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

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

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

Reviewed by Frédéric Wang.

Source/WebCore:

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

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

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

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

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

LayoutTests:

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

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

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

Reviewed by Xabier Rodriguez-Calvar.

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

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

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

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

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

Reviewed by Xabier Rodriguez-Calvar.

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

No new tests, existing HLS tests cover this change.

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

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

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

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

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

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

Reviewed by Alex Christensen.

Source/WebKit:

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

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

Tools:

Add a test case.

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

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

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

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

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

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

Reviewed by Per Arne Vollan.

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

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

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

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

Reviewed by Filip Pizlo.

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

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

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

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

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

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

Reviewed by Saam Barati.

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

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

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

4 months ago[macOS] The network process is not exiting reliably when the WebProcessPool is destroyed
cdumez@apple.com [Tue, 26 Mar 2019 23:54:11 +0000 (23:54 +0000)]
[macOS] The network process is not exiting reliably when the WebProcessPool is destroyed
https://bugs.webkit.org/show_bug.cgi?id=196277
<rdar://problem/49127581>

Reviewed by Alex Christensen.

When, an AuxiliaryProcess receives the AuxiliaryProcess::Terminate IPC, it calls stopRunLoop()
to exit. WebProcess overrides AuxiliaryProcess::stopRunLoop() to call exit(0) on the main
thread. Other auxiliary processes such as the NetworkProcess would end up calling
platformStopRunLoop(). On iOS and iOSMac, platformStopRunLoop() calls XPCServiceExit(), which
makes sense since auxiliary processes run their run loop by calling xpc_main(). However, on
macOS, platformStopRunLoop() was calling RunLoop::main().stop() to exit instead, which was
unreliable as demonstrated by the test app attached to the radar.

Updating platformStopRunLoop() to call XPCServiceExit() on macOS fixes the problem and I now
see the NetworkProcess exiting reliably there. This is the approach I have chosen in this
patch since it appears to be reliable and it makes the code consistent on all Cocoa platforms.

* Shared/AuxiliaryProcess.cpp:
* Shared/Cocoa/AuxiliaryProcessCocoa.mm:
(WebKit::AuxiliaryProcess::platformStopRunLoop):
* Shared/ios/AuxiliaryProcessIOS.mm:
(WebKit::AuxiliaryProcess::platformStopRunLoop): Deleted.
* Shared/mac/AuxiliaryProcessMac.mm:
(WebKit::AuxiliaryProcess::platformStopRunLoop): Deleted.

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

4 months agoUpdate the way generate-xcfilelists returns strings from functions
krollin@apple.com [Tue, 26 Mar 2019 23:51:10 +0000 (23:51 +0000)]
Update the way generate-xcfilelists returns strings from functions
https://bugs.webkit.org/show_bug.cgi?id=195975
<rdar://problem/49040807>

Reviewed by Dean Jackson.

There are places where generate-xcfilelists executes assignments with
statements like:

    FOO=$(some_function)

where "some_function" return a string by echoing it. E.g.

    some_function()
    {
        echo "Hello, World"
    }

This is a common idiom, but it has a problem if "some_function" needs
to call "exit" in an attempt to halt the entire script right then and
there. Since "some_function" is called inside of $(), it's being
executed in a sub-shell. Calling exit in that sub-shell simply exits
that shell; it doesn't not exit the outer shell in which the main part
of the script is still running. As such, the main script keeps
executing when the intent was for the script to halt.

The solution to this is to use a different idiom for returning
strings. The one we now is to pass in the name of the variable to
receive the string result:

    some_function()
    {
        variable_name=$1
        eval $variable_name ="Hello, World"
    }

The call site now looks like

    some_function FOO

Because there's no invocation of a sub-shell, some_function can now
call "exit" if it wants to, and the entire script will exit at that
point.

* Scripts/generate-xcfilelists:

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

4 months agoUpdate BrowserBench for JetStream2.
jond@apple.com [Tue, 26 Mar 2019 23:50:33 +0000 (23:50 +0000)]
Update BrowserBench for JetStream2.
https://bugs.webkit.org/show_bug.cgi?id=196273

Reviewed by Saam Barati.

* index.html:
* resources/JetStream2-Logo.png: Added.
* resources/JetStream2-Logo@2x.png: Added.
* resources/main.css:
(.benchmark:hover img): Improved hover effect for the JetStream2 logo.

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

4 months ago[Cocoa] Refactor some helper functions for building UserAgent strings
wenson_hsieh@apple.com [Tue, 26 Mar 2019 23:41:42 +0000 (23:41 +0000)]
[Cocoa] Refactor some helper functions for building UserAgent strings
https://bugs.webkit.org/show_bug.cgi?id=195990

Reviewed by Brent Fulgham.

Add an optional argument to standardUserAgentWithApplicationName to request the desktop version of the user
agent in Cocoa platforms. Work towards refactoring some codepaths to make the implementation of the "Request
Desktop Site" feature in Safari a bit more straightforward.

No change in behavior.

* platform/UserAgent.h:
* platform/ios/UserAgentIOS.mm:
(WebCore::standardUserAgentWithApplicationName):

The corresponding macOS version is currently hard-coded — the followup bug webkit.org/b/196275 tracks making
this dynamically fetch the paired macOS version when building for iOS.

* platform/mac/UserAgentMac.mm:
(WebCore::standardUserAgentWithApplicationName):

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

4 months agoInhibit CFNetwork logging in private sessions
krollin@apple.com [Tue, 26 Mar 2019 23:29:13 +0000 (23:29 +0000)]
Inhibit CFNetwork logging in private sessions
https://bugs.webkit.org/show_bug.cgi?id=196268
<rdar://problem/48210793>

Reviewed by Alex Christensen.

Before performing any logging, the NetworkProcess checks to see if
it's performing an operation associated with a private (ephemeral)
browsing session. If so, it skips the logging. However, networking
layers below the NetworkProcess don't know about private browsing, so
they would still perform their own logging. CFNetwork now has a flag
that lets us control that, so set it to False if private browsing.

Source/WebKit:

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::configurationForSessionID):

Source/WTF:

* wtf/Platform.h:

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

4 months agoAdd basic layout test coverage for File Picker on iOS
cdumez@apple.com [Tue, 26 Mar 2019 23:24:35 +0000 (23:24 +0000)]
Add basic layout test coverage for File Picker on iOS
https://bugs.webkit.org/show_bug.cgi?id=196265

Reviewed by Wenson Hsieh.

Source/WebKit:

Add layout test infrastructure to test the file picker on iOS.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _dismissFilePicker]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView dismissFilePicker]):
(-[WKContentView _contentsOfUserInterfaceItem:]):
* UIProcess/ios/forms/WKFileUploadPanel.h:
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel currentAvailableActionTitles]):

Tools:

Add layout test infrastructure to test the file picker on iOS.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::dismissFilePicker):
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::dismissFilePicker):
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::createWebViewWithOptions):
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):
* WebKitTestRunner/ios/TestControllerIOS.mm:
(overridePresentViewController):
(WTR::TestController::platformInitialize):
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::dismissFilePicker):

LayoutTests:

Add new layout test.

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

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

4 months agoLayout tests editing/deleting/delete-emoji-1.html
sroberts@apple.com [Tue, 26 Mar 2019 22:59:28 +0000 (22:59 +0000)]
Layout tests editing/deleting/delete-emoji-1.html
editing/deleting/delete-emoji-9.html
editing/deleting/delete-emoji.html are failing
webkit.org/b/191709

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations: Updating test expectations waiting for rebaseline

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

4 months agoimported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is a flaky crash...
sroberts@apple.com [Tue, 26 Mar 2019 22:13:49 +0000 (22:13 +0000)]
imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is a flaky crash and a failing test
https://bugs.webkit.org/show_bug.cgi?id=196274

Unreviewed test gardening.

* TestExpectations:
* platform/mac/TestExpectations: Updating test expectaion for flaky crash

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

4 months ago[iOS][WK2] Use a better concept to describe the reason we defer zooming a focused...
dbates@webkit.org [Tue, 26 Mar 2019 22:08:52 +0000 (22:08 +0000)]
[iOS][WK2] Use a better concept to describe the reason we defer zooming a focused element: selectabiltiy
https://bugs.webkit.org/show_bug.cgi?id=196264

Reviewed by Wenson Hsieh.

Rename shouldDeferZoomingToSelectionWhenRevealingFocusedElement() to mayContainSelectableText() to describe
the criterion that we will use to decide whether to defer zooming or not. We defer zooming only for elements
that may support text selection on initial focus because we do not have an up-to-date selection rect at that
time. For element, like <select>, that do not support text selection, we can zoom them immediately when focused.

* UIProcess/ios/WKContentViewInteraction.mm:
(mayContainSelectableText): Renamed from shouldDeferZoomingToSelectionWhenRevealingFocusedElement.
List all the input types in the switch block and remove the default case to force the compiler to check that we
covered all cases. This will prevent unforseen keyboard issues (why isn't the keyboard shown? or why is the keyboard shown?)
for future input types that we may add.
(rectToRevealWhenZoomingToFocusedElement): Update for renaming.
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]): Add a
comment to explain why we may need to defer the zoom: the focused element supports text selection and we need
to wait for the web process to call back to provide an up-to-date selection rect for us to zoom and reveal.
(-[WKContentView _didReceiveEditorStateUpdateAfterFocus]): Update for renaming.
(shouldDeferZoomingToSelectionWhenRevealingFocusedElement): Deleted.

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

4 months agoImplement async paste method on UIWKInteractionViewProtocol
wenson_hsieh@apple.com [Tue, 26 Mar 2019 21:15:16 +0000 (21:15 +0000)]
Implement async paste method on UIWKInteractionViewProtocol
https://bugs.webkit.org/show_bug.cgi?id=196267
<rdar://problem/49236346>

Reviewed by Tim Horton.

Source/WebKit:

Implement a new UIWKInteractionViewProtocol hook to perform a paste command, and invoke the given completion
handler when pasting is finished.

Test: UIPasteboardTests.PasteWithCompletionHandler

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

Tools:

Add a new test to exercise the new SPI. Additionally, add staging forward declarations for
-pasteWithCompletionHandler:, and remove some old existing staging declarations for other bits of UIKit SPI that
are now a part of all iOS 12 internal SDKs.

* TestWebKitAPI/Tests/ios/UIPasteboardTests.mm:

While we're here, also change a few iOS 11.3 checks to just be about PLATFORM(IOS) (since we don't build for iOS
prior to 12, these version checks are effectively only about iOS vs. tvOS or watchOS).

* TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm:
* TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:
(-[DragAndDropSimulator _sendQueuedAdditionalItemRequest]):
* TestWebKitAPI/ios/UIKitSPI.h:

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

4 months ago[ews-build] Use PostgreSQL for ews.webkit.org database
aakash_jain@apple.com [Tue, 26 Mar 2019 21:04:53 +0000 (21:04 +0000)]
[ews-build] Use PostgreSQL for ews.webkit.org database
https://bugs.webkit.org/show_bug.cgi?id=196270

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews-app/settings.py:

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

4 months agoLayout tests http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in...
sroberts@apple.com [Tue, 26 Mar 2019 20:42:10 +0000 (20:42 +0000)]
Layout tests http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource.html are flaky time outs
https://bugs.webkit.org/show_bug.cgi?id=196269

Unreviewed test gardening.

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

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

4 months ago[ews] Reset simctl states on reboot
jbedard@apple.com [Tue, 26 Mar 2019 20:41:59 +0000 (20:41 +0000)]
[ews] Reset simctl states on reboot
https://bugs.webkit.org/show_bug.cgi?id=196260

Rubber-stamped by Aakash Jain.

* EWSTools/start-queue-mac.sh:

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

4 months agoRemove the SVG tear off objects for SVGLength, SVGLengthList and SVGAnimatedLengthList
said@apple.com [Tue, 26 Mar 2019 20:14:32 +0000 (20:14 +0000)]
Remove the SVG tear off objects for SVGLength, SVGLengthList and SVGAnimatedLengthList
https://bugs.webkit.org/show_bug.cgi?id=196083

Reviewed by Simon Fraser.

Source/WebCore:

-- SVGLength will be a superclass of SVGValueProperty<SVGLengthValue>. It
   is a wrapper of SVGLengthValue. It will be provide the DOM methods. It
   can setValueAsString() and return valueAsString().

-- SVGLengthList will be a superclass of SVGValuePropertyList<SVGLength>.
   The base class will provide all the DOM methods. SVGLengthList will be
   responsible for parsing a String to a SVGLength items. It can also
   build a string representing the stored items.

-- SVGAnimatedLengthList will be defined as SVGAnimatedPropertyList<SVGLengthList>.
   Like SVGAnimatedPointList, all the required methods and attributes
   will be handled by SVGAnimatedPropertyList.

-- SVGAnimatedLengthAccessor and SVGAnimatedLengthListAccessor will be
   added to access the members of types SVGAnimatedLength and
   SVGAnimatedLengthList.

-- SVGAnimatedLengthAnimator and SVGAnimatedLengthListAnimator will be
   created by the the new accessors to animate attributes of types
   SVGAnimatedLength and SVGAnimatedLengthList.

-- SVGAnimationLengthFunction and SVGAnimationLengthListFunction will be
   responsible for progressing the animVal() of attributes of types
   SVGAnimatedLength and SVGAnimatedLengthList.

-- SVGValuePropertyAnimator is a new template class which can animate a
   none reflecting attribute which should be backed by a value property,
   e.g. SVGLength.

-- SVGValuePropertyListAnimator is a new template class which can animate a
   none reflecting attribute which should be backed by a value property
   list, e.g. SVGLengthList.

Notes:

    -- SVGElement::isAnimatedStyleAttribute() will return true if the
       attribute is known by SVGPropertyAnimatorFactory. Or it's has
       a reflecting SVGAnimatedPropertyLength property and its name is
       one of the names listed in isAnimatedStylePropertyAttribute() of
       the propertyRegistry() of the SVGElement.

    -- SVGElement::commitPropertyChange() has to handle the attributes
       for which isAnimatedStylePropertyAttribute() returns true different
       from the other ones. styleReclac() needs updated attributes since
       it does not access the reflecting properties in the SVGELement.

    -- SVGTextContentElement does not need a customized SVGAnimatedLength.
       All SVGTextContentElement::textLengthAnimated() needs to know is
       whether m_textLength->baseVal() holds an empty SVGLength. If it
       does, it sets its value to getComputedTextLength().

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
(WebCore::updateCharacterData):
(WebCore::SVGTextLayoutAttributesBuilder::fillCharacterDataMap):
* svg/SVGAnimateElementBase.cpp:
(WebCore::SVGAnimateElementBase::hasValidAttributeType const):
* svg/SVGAnimatedLength.cpp: Removed.
* svg/SVGAnimatedLength.h: Removed.
* svg/SVGAnimatedLengthList.cpp: Removed.
* svg/SVGAnimatedLengthList.h: Removed.
* svg/SVGAnimatedType.h:
(WebCore::SVGAnimatedType::type const):
* svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::isTargetAttributeCSSProperty):
(WebCore::inheritsFromProperty):
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::isSupportedAttribute):
(WebCore::SVGAnimatorFactory::create):
These changes were required because some of the tests were trying to
animated unsupported attributes. To differentiate between between the
these two cases:
    1) the attribute is animate-able by the legacy controller.
    2) animating the attribute or the attribute itself is not supported
       by the element.

We want SVGAnimatorFactory tell us whether it can create an animator for
a given attribute or not.

* svg/SVGCircleElement.cpp:
(WebCore::SVGCircleElement::SVGCircleElement):
(WebCore::SVGCircleElement::parseAttribute):
(WebCore::SVGCircleElement::svgAttributeChanged):
(WebCore::SVGCircleElement::registerAttributes): Deleted.
* svg/SVGCircleElement.h:
* svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::SVGCursorElement):
(WebCore::SVGCursorElement::parseAttribute):
(WebCore::SVGCursorElement::svgAttributeChanged):
(WebCore::SVGCursorElement::registerAttributes): Deleted.
* svg/SVGCursorElement.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::commitPropertyChange):
(WebCore::SVGElement::isAnimatedStyleAttribute const):
* svg/SVGElement.h:
* svg/SVGEllipseElement.cpp:
(WebCore::SVGEllipseElement::SVGEllipseElement):
(WebCore::SVGEllipseElement::parseAttribute):
(WebCore::SVGEllipseElement::svgAttributeChanged):
(WebCore::SVGEllipseElement::registerAttributes): Deleted.
* svg/SVGEllipseElement.h:
* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::SVGFilterElement):
(WebCore::SVGFilterElement::registerAttributes):
(WebCore::SVGFilterElement::parseAttribute):
* svg/SVGFilterElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
(WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute):
(WebCore::SVGFilterPrimitiveStandardAttributes::registerAttributes): Deleted.
* svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::x const):
(WebCore::SVGFilterPrimitiveStandardAttributes::y const):
(WebCore::SVGFilterPrimitiveStandardAttributes::width const):
(WebCore::SVGFilterPrimitiveStandardAttributes::height const):
(WebCore::SVGFilterPrimitiveStandardAttributes::xAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::yAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::widthAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::heightAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::isKnownAttribute): Deleted.
* svg/SVGForeignObjectElement.cpp:
(WebCore::SVGForeignObjectElement::SVGForeignObjectElement):
(WebCore::SVGForeignObjectElement::parseAttribute):
(WebCore::SVGForeignObjectElement::registerAttributes): Deleted.
* svg/SVGForeignObjectElement.h:
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::SVGImageElement):
(WebCore::SVGImageElement::parseAttribute):
(WebCore::SVGImageElement::registerAttributes): Deleted.
* svg/SVGImageElement.h:
* svg/SVGLength.h:
(WebCore::SVGLength::create):
(WebCore::SVGLength::clone const):
(WebCore::SVGLength::unitType):
(WebCore::SVGLength::valueForBindings):
(WebCore::SVGLength::setValueForBindings):
(WebCore::SVGLength::valueInSpecifiedUnits):
(WebCore::SVGLength::setValueInSpecifiedUnits):
(WebCore::SVGLength::setValueAsString):
(WebCore::SVGLength::newValueSpecifiedUnits):
(WebCore::SVGLength::convertToSpecifiedUnits):
(WebCore::SVGLength::valueAsString): Deleted.
(WebCore::SVGLength::SVGLength): Deleted.
* svg/SVGLengthList.h:
(WebCore::SVGLengthList::create):
(WebCore::SVGLengthList::lengthMode const):
(WebCore::SVGLengthList::parse):
(WebCore::SVGLengthList::SVGLengthList):
* svg/SVGLengthListValues.cpp: Removed.
* svg/SVGLengthListValues.h: Removed.
* svg/SVGLineElement.cpp:
(WebCore::SVGLineElement::SVGLineElement):
(WebCore::SVGLineElement::parseAttribute):
(WebCore::SVGLineElement::svgAttributeChanged):
(WebCore::SVGLineElement::registerAttributes): Deleted.
* svg/SVGLineElement.h:
* svg/SVGLinearGradientElement.cpp:
(WebCore::SVGLinearGradientElement::SVGLinearGradientElement):
(WebCore::SVGLinearGradientElement::parseAttribute):
(WebCore::SVGLinearGradientElement::svgAttributeChanged):
(WebCore::SVGLinearGradientElement::registerAttributes): Deleted.
* svg/SVGLinearGradientElement.h:
* svg/SVGMarkerElement.cpp:
(WebCore::SVGMarkerElement::SVGMarkerElement):
(WebCore::SVGMarkerElement::registerAttributes):
(WebCore::SVGMarkerElement::parseAttribute):
* svg/SVGMarkerElement.h:
* svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::SVGMaskElement):
(WebCore::SVGMaskElement::registerAttributes):
(WebCore::SVGMaskElement::parseAttribute):
(WebCore::SVGMaskElement::svgAttributeChanged):
* svg/SVGMaskElement.h:
* svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::SVGPatternElement):
(WebCore::SVGPatternElement::registerAttributes):
(WebCore::SVGPatternElement::parseAttribute):
* svg/SVGPatternElement.h:
* svg/SVGPoint.h:
* svg/SVGRadialGradientElement.cpp:
(WebCore::SVGRadialGradientElement::SVGRadialGradientElement):
(WebCore::SVGRadialGradientElement::parseAttribute):
(WebCore::SVGRadialGradientElement::svgAttributeChanged):
(WebCore::SVGRadialGradientElement::registerAttributes): Deleted.
* svg/SVGRadialGradientElement.h:
* svg/SVGRectElement.cpp:
(WebCore::SVGRectElement::SVGRectElement):
(WebCore::SVGRectElement::parseAttribute):
(WebCore::SVGRectElement::svgAttributeChanged):
(WebCore::SVGRectElement::registerAttributes): Deleted.
* svg/SVGRectElement.h:
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::SVGSVGElement):
(WebCore::SVGSVGElement::parseAttribute):
(WebCore::SVGSVGElement::svgAttributeChanged):
(WebCore::SVGSVGElement::registerAttributes): Deleted.
* svg/SVGSVGElement.h:
* svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::SVGTextContentElement):
(WebCore::SVGTextContentElement::registerAttributes):
(WebCore::SVGTextContentElement::parseAttribute):
(WebCore::SVGTextContentElement::svgAttributeChanged):
(WebCore::SVGTextContentElement::textLengthAnimated):
* svg/SVGTextContentElement.h:
(WebCore::SVGTextContentElement::specifiedTextLength const):
(WebCore::SVGTextContentElement::textLength const):
(WebCore::SVGTextContentElement::specifiedTextLength): Deleted.
(WebCore::SVGTextContentElement::textLengthAnimated): Deleted.
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::SVGAnimatedCustomLengthAttribute): Deleted.
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::synchronize): Deleted.
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::animatedProperty): Deleted.
* svg/SVGTextPathElement.cpp:
(WebCore::SVGTextPathElement::SVGTextPathElement):
(WebCore::SVGTextPathElement::registerAttributes):
(WebCore::SVGTextPathElement::parseAttribute):
* svg/SVGTextPathElement.h:
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::SVGTextPositioningElement):
(WebCore::SVGTextPositioningElement::parseAttribute):
(WebCore::SVGTextPositioningElement::svgAttributeChanged):
(WebCore::SVGTextPositioningElement::registerAttributes): Deleted.
* svg/SVGTextPositioningElement.h:
(WebCore::SVGTextPositioningElement::x const):
(WebCore::SVGTextPositioningElement::y const):
(WebCore::SVGTextPositioningElement::dx const):
(WebCore::SVGTextPositioningElement::dy const):
(WebCore::SVGTextPositioningElement::xAnimated):
(WebCore::SVGTextPositioningElement::yAnimated):
(WebCore::SVGTextPositioningElement::dxAnimated):
(WebCore::SVGTextPositioningElement::dyAnimated):
(WebCore::SVGTextPositioningElement::isKnownAttribute): Deleted.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::SVGUseElement):
(WebCore::SVGUseElement::parseAttribute):
(WebCore::SVGUseElement::svgAttributeChanged):
(WebCore::SVGUseElement::registerAttributes): Deleted.
* svg/SVGUseElement.h:
* svg/SVGValue.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimator.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
(WebCore::SVGAnimationLengthListFunction::SVGAnimationLengthListFunction):
(WebCore::SVGAnimationLengthListFunction::progress):
(WebCore::SVGAnimationNumberListFunction::progress):
(WebCore::SVGAnimationPointListFunction::progress):
* svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
(WebCore::SVGAnimationLengthFunction::SVGAnimationLengthFunction):
(WebCore::SVGAnimationLengthFunction::progress):
* svg/properties/SVGAttributeAnimator.cpp:
(WebCore::SVGAttributeAnimator::isAnimatedStylePropertyAniamtor const):
* svg/properties/SVGAttributeAnimator.h:
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyAnimatorFactory.h:
(WebCore::SVGPropertyAnimatorFactory::createLengthAnimator):
(WebCore::SVGPropertyAnimatorFactory::createLengthListAnimator):
(WebCore::SVGPropertyAnimatorFactory::attributeAnimatorCreator):
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):
(WebCore::SVGPropertyOwnerRegistry::isAnimatedLengthAttribute):
* svg/properties/SVGPropertyRegistry.h:
* svg/properties/SVGValuePropertyAnimator.h: Added.
(WebCore::SVGValuePropertyAnimator::SVGValuePropertyAnimator):
* svg/properties/SVGValuePropertyAnimatorImpl.h: Added.
* svg/properties/SVGValuePropertyListAnimator.h: Added.
(WebCore::SVGValuePropertyListAnimator::SVGValuePropertyListAnimator):
* svg/properties/SVGValuePropertyListAnimatorImpl.h: Added.

LayoutTests:

* platform/win/TestExpectations:
* svg/animations/svglength-element-removed-crash.svg:
* svg/dom/SVGLengthList-appendItem-expected.txt:
* svg/dom/SVGLengthList-appendItem.xhtml:
* svg/dom/SVGLengthList-basics-expected.txt:
* svg/dom/SVGLengthList-basics.xhtml:
* svg/dom/SVGLengthList-initialize-expected.txt:
* svg/dom/SVGLengthList-initialize.xhtml:
* svg/dom/SVGLengthList-insertItemBefore-expected.txt:
* svg/dom/SVGLengthList-insertItemBefore.xhtml:
* svg/dom/SVGLengthList-removeItem-expected.txt:
* svg/dom/SVGLengthList-removeItem.xhtml:
* svg/dom/SVGLengthList-replaceItem-expected.txt:
* svg/dom/SVGLengthList-replaceItem.xhtml:
This changes are required because SVGLengthList 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@243515 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoWebAssembly: Fix f32.min, f64.min and f64.max operations on NaN
tzagallo@apple.com [Tue, 26 Mar 2019 19:29:02 +0000 (19:29 +0000)]
WebAssembly: Fix f32.min, f64.min and f64.max operations on NaN
https://bugs.webkit.org/show_bug.cgi?id=196217

Reviewed by Saam Barati.

JSTests:

Re-enable all NaN tests for f32.min, f64.min and f64.max.

* wasm/spec-tests/f32.wast.js:
* wasm/spec-tests/f64.wast.js:
* wasm/wasm.json:

Source/JavaScriptCore:

Generalize the fix for f32.max to properly handle NaN by doing an extra GreatherThan
comparison in r243446 to all min and max float operations.

* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::addOp<OpType::F32Min>):
(JSC::Wasm::AirIRGenerator::addFloatingPointMinOrMax):
(JSC::Wasm::AirIRGenerator::addOp<OpType::F32Max>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::F64Min>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::F64Max>):
* wasm/wasm.json:

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

4 months ago[iOS WK2] position:fixed inside oveflow:scroll is jumpy
simon.fraser@apple.com [Tue, 26 Mar 2019 19:23:52 +0000 (19:23 +0000)]
[iOS WK2] position:fixed inside oveflow:scroll is jumpy
https://bugs.webkit.org/show_bug.cgi?id=196238

Reviewed by Antti Koivisto.
Source/WebCore:

We were inadvertently making Positioned nodes for position:fixed, which is unnecessary because
Fixed nodes handle them, and harmful because they introduced unwanted layer movement.

Tests: scrollingcoordinator/ios/fixed-in-overflow-scroll-scrolling-tree.html
       scrollingcoordinator/ios/fixed-in-overflow-scroll.html

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):

LayoutTests:

fixed-in-overflow-scroll-scrolling-tree.html actually tests the fix.
For some reason fixed-in-overflow-scroll.html doesn't show the jumpiness, but it's
a good test to have nonetheless.

Other minor cleanup.

* resources/ui-helper.js:
(window.UIHelper.immediateScrollElementAtContentPointToOffset):
* scrollingcoordinator/ios/fixed-in-overflow-scroll-expected.html: Added.
* scrollingcoordinator/ios/fixed-in-overflow-scroll-scrolling-tree-expected.txt: Added.
* scrollingcoordinator/ios/fixed-in-overflow-scroll-scrolling-tree.html: Copied from LayoutTests/scrollingcoordinator/ios/ui-scrolling-tree.html.
* scrollingcoordinator/ios/fixed-in-overflow-scroll.html: Added.
* scrollingcoordinator/ios/ui-scrolling-tree.html:

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

4 months agoIntl.DateTimeFormat should obey 2-digit hour
andy@vanwagoner.family [Tue, 26 Mar 2019 19:18:46 +0000 (19:18 +0000)]
Intl.DateTimeFormat should obey 2-digit hour
https://bugs.webkit.org/show_bug.cgi?id=195974

Reviewed by Keith Miller.

Source/JavaScriptCore:

* runtime/IntlDateTimeFormat.cpp:
(JSC::IntlDateTimeFormat::initializeDateTimeFormat):

LayoutTests:

* js/intl-datetimeformat-expected.txt:
* js/script-tests/intl-datetimeformat.js:

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

4 months ago[macOS] Fix sandbox violations
pvollan@apple.com [Tue, 26 Mar 2019 19:15:56 +0000 (19:15 +0000)]
[macOS] Fix sandbox violations
https://bugs.webkit.org/show_bug.cgi?id=196262
<rdar://problem/47738015>

Reviewed by Brent Fulgham.

Fix various observed sandbox violations.

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

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

4 months agoPrimary cluster of measurement set should always contain latest point.
dewei_zhu@apple.com [Tue, 26 Mar 2019 19:04:37 +0000 (19:04 +0000)]
Primary cluster of measurement set should always contain latest point.
https://bugs.webkit.org/show_bug.cgi?id=196243

Reviewed by Ryosuke Niwa.

Fix a bug in measurement-set api that primary cluster may not contain latest data point as
'carry_over' row may not be updated.

* public/api/measurement-set.php: Should always keep 'carry_over' data points up to date.
* server-tests/api-measurement-set-tests.js: Added an unit test for this change.
Fixed a typo.

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

4 months ago[ews-build] Use PostgreSQL for ews-build database
aakash_jain@apple.com [Tue, 26 Mar 2019 18:20:22 +0000 (18:20 +0000)]
[ews-build] Use PostgreSQL for ews-build database
https://bugs.webkit.org/show_bug.cgi?id=196229

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/master.cfg:

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

4 months ago[ews-build] Get master_hostname dynamically in master.cfg
aakash_jain@apple.com [Tue, 26 Mar 2019 18:13:37 +0000 (18:13 +0000)]
[ews-build] Get master_hostname dynamically in cfg
https://bugs.webkit.org/show_bug.cgi?id=196255

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/master.cfg: Get hostname dynamically. Also do not
send events data in test mode.

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

4 months agoWeb Inspector: Sources: fix typo in CSS selector to always show add breakpoint button
drousso@apple.com [Tue, 26 Mar 2019 18:12:37 +0000 (18:12 +0000)]
Web Inspector: Sources: fix typo in CSS selector to always show add breakpoint button
https://bugs.webkit.org/show_bug.cgi?id=196241

Reviewed by Matt Baker.

* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.paused-reason, .breakpoints).collapsed > .header > .options,):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.paused-reason, .breakpoins).collapsed > .header > .options,): Deleted.

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

4 months agovertexAttribPointer must restrict offset parameter
dino@apple.com [Tue, 26 Mar 2019 18:00:55 +0000 (18:00 +0000)]
vertexAttribPointer must restrict offset parameter
https://bugs.webkit.org/show_bug.cgi?id=196261
<rdar://problem/48458086>

Reviewed by Antoine Quint.

Source/WebCore:

This WebGL function should fail if the offset parameter is
not within [0, max 32-bit int].

Test: fast/canvas/webgl/vertexAttribPointer-with-bad-offset.html

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::vertexAttribPointer):

LayoutTests:

Add a test where the offset parameter is out of bounds.

* fast/canvas/webgl/vertexAttribPointer-with-bad-offset-expected.txt: Added.
* fast/canvas/webgl/vertexAttribPointer-with-bad-offset.html: Added.

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

4 months agoAssertion failure !isInAcceleratedCompositingMode() in DrawingAreaProxyCoordinatedGra...
commit-queue@webkit.org [Tue, 26 Mar 2019 17:57:58 +0000 (17:57 +0000)]
Assertion failure !isInAcceleratedCompositingMode() in DrawingAreaProxyCoordinatedGraphics::incorporateUpdate when forceCompositingMode is turned on
https://bugs.webkit.org/show_bug.cgi?id=195879

Patch by Tomoki Imai <Tomoki.Imai@sony.com> on 2019-03-26
Reviewed by Carlos Garcia Campos.

The root cause is that DrawingAreaProxyCoordinatedGraphics::isInAcceleratedCompositingMode checks both of alwaysUseCompositing() and !m_layerTreeContext.isEmpty().
alwaysUseCompositing() refers preferences, which is written by the application (UIProcess).
On the other hand, m_layerTreeContext is changed when it receives enterAcceleratedCompositingMode/exitAcceleratedCompositingMode from WebProcess.

It results when we set forceCompositingMode and acceleratedCompositingEnabled to true, WebProcess and UIProcess is out of sync until WebProcess sends enterAcceleratedCompositingMode message.
In such situation, WebProcess sends incorporateUpdate to UIProcess because WebProcess is in non-AC mode, but isInAcceleratedCompositingMode becomes true in UIProcess side.

* UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp:
(WebKit::DrawingAreaProxyCoordinatedGraphics::~DrawingAreaProxyCoordinatedGraphics): Should call exitAcceleratedCompositingMode even when alwaysUseCompositing is true.
(WebKit::DrawingAreaProxyCoordinatedGraphics::enterAcceleratedCompositingMode): enterAcceleratedCompositingMode should check enterAcceleratedCompositingMode is not called twice.
* UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: Remove alwaysUseCompositing from isInAcceleratedCompositingMode

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

4 months agoRemove mousemoveEventHandlingPreventsDefault internal setting and quirk
graouts@webkit.org [Tue, 26 Mar 2019 17:29:54 +0000 (17:29 +0000)]
Remove mousemoveEventHandlingPreventsDefault internal setting and quirk
https://bugs.webkit.org/show_bug.cgi?id=196254
<rdar://problem/49124334>

Unreviewed. Fix build broken by previous commit.

* dom/Event.cpp:
* dom/Event.h:
(WebCore::Event::hasEncounteredListener const): Deleted.
(WebCore::Event::setHasEncounteredListener): Deleted.
* dom/EventTarget.cpp:
(WebCore::EventTarget::innerInvokeEventListeners):

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

4 months ago[ContentChangeObserver] Skip anonymous renderers when checking for "willRespondToMous...
zalan@apple.com [Tue, 26 Mar 2019 17:27:05 +0000 (17:27 +0000)]
[ContentChangeObserver] Skip anonymous renderers when checking for "willRespondToMouseClickEvents"
https://bugs.webkit.org/show_bug.cgi?id=196259
<rdar://problem/49240029>

Reviewed by Dean Jackson.

Source/WebCore:

Anonymous renderers don't have associated DOM nodes so they can't have event listeners either. Let's skip them.

Test: fast/events/touch/ios/content-observation/crash-on-anonymous-renderer.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const):

LayoutTests:

* fast/events/touch/ios/content-observation/crash-on-anonymous-renderer-expected.txt: Added.
* fast/events/touch/ios/content-observation/crash-on-anonymous-renderer.html: Added.

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

4 months ago[ews-app] Set db_constraint to False for Foreign Keys
aakash_jain@apple.com [Tue, 26 Mar 2019 17:13:30 +0000 (17:13 +0000)]
[ews-app] Set db_constraint to False for Foreign Keys
https://bugs.webkit.org/show_bug.cgi?id=196252

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/models/build.py:
* BuildSlaveSupport/ews-app/ews/models/step.py:

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

4 months ago[ews-build] is_test_mode_enabled should default to True
aakash_jain@apple.com [Tue, 26 Mar 2019 17:12:23 +0000 (17:12 +0000)]
[ews-build] is_test_mode_enabled should default to True
https://bugs.webkit.org/show_bug.cgi?id=196248

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/master.cfg: Reverse the environment variable used to decide is_test_mode_enabled.

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

4 months ago[ews-app] Add webkitperl to ENABLED_QUEUES
aakash_jain@apple.com [Tue, 26 Mar 2019 17:08:17 +0000 (17:08 +0000)]
[ews-app] Add webkitperl to ENABLED_QUEUES
https://bugs.webkit.org/show_bug.cgi?id=196253

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

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

4 months agoRemove mousemoveEventHandlingPreventsDefault internal setting and quirk
graouts@webkit.org [Tue, 26 Mar 2019 16:57:38 +0000 (16:57 +0000)]
Remove mousemoveEventHandlingPreventsDefault internal setting and quirk
https://bugs.webkit.org/show_bug.cgi?id=196254
<rdar://problem/49124334>

Reviewed by Dean Jackson.

Source/WebCore:

* page/Quirks.cpp:
(WebCore::Quirks::shouldMousemoveEventHandlingPreventDefault const): Deleted.
* page/Quirks.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setMouseEventsSimulationEnabled):
(WebCore::RuntimeEnabledFeatures::mousemoveEventHandlingPreventsDefaultEnabled const): Deleted.
(WebCore::RuntimeEnabledFeatures::setMousemoveEventHandlingPreventsDefaultEnabled): Deleted.

Source/WebKit:

* Shared/WebPreferences.yaml:

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

4 months agoLayout tests fast/events/wheel-event-destroys-overflow.html
sroberts@apple.com [Tue, 26 Mar 2019 16:39:11 +0000 (16:39 +0000)]
Layout tests fast/events/wheel-event-destroys-overflow.html
fast/events/wheelevent-mousewheel-interaction.html
fast/events/wheel-event-destroys-frame.html
fast/events/wheelevent-basic.html
fast/events/wheelevent-in-text-node.html are a flaky timeouts
https://bugs.webkit.org/show_bug.cgi?id=195719

Unreviewed test gardening.

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

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

4 months agoUnreviewed, rolling out r243493.
commit-queue@webkit.org [Tue, 26 Mar 2019 16:36:36 +0000 (16:36 +0000)]
Unreviewed, rolling out r243493.
https://bugs.webkit.org/show_bug.cgi?id=196257

broke the non-gst-gl build (Requested by philn on #webkit).

Reverted changeset:

"Build failure with gstreamer 1.12.5 if USE_GSTREAMER_GL is
enabled"
https://bugs.webkit.org/show_bug.cgi?id=196178
https://trac.webkit.org/changeset/243493

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

4 months agoAddress NSWindow sometimes using WebKitTestRunnerEvent too early
ap@apple.com [Tue, 26 Mar 2019 15:58:36 +0000 (15:58 +0000)]
Address NSWindow sometimes using WebKitTestRunnerEvent too early
https://bugs.webkit.org/show_bug.cgi?id=196211
rdar://problem/49110552

Reviewed by Tim Horton.

* WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize):
Make sure that EventSenderProxy always exists when running tests. We used to create
it when resetting before the first test, which is a bit too late.

* WebKitTestRunner/TestController.h:
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::platformCreateWebView):
(WTR::TestController::platformCreateOtherPage):
(WTR::TestController::finishCreatingPlatformWebView):
* WebKitTestRunner/mac/PlatformWebViewMac.mm:
(WTR::PlatformWebView::PlatformWebView):
Moved some code that made NSWindow use NSEvent during web view creation. We may
need to move more if some other case us found, but this is enough for now.

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

4 months agoLayout Test js/math-clz32.html is failing
pvollan@apple.com [Tue, 26 Mar 2019 14:50:24 +0000 (14:50 +0000)]
Layout Test js/math-clz32.html is failing
https://bugs.webkit.org/show_bug.cgi?id=196209

Unreviewed test gardening.

* platform/win/TestExpectations:

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

4 months ago[GTK] Unreviewed gardening, update test expectations and baselines
dpino@igalia.com [Tue, 26 Mar 2019 13:22:05 +0000 (13:22 +0000)]
[GTK] Unreviewed gardening, update test expectations and baselines

* platform/gtk/TestExpectations:
* platform/gtk/compositing/overflow/textarea-scroll-touch-expected.txt:
New expected results after r243031.
* platform/gtk/http/tests/inspector/network/har/har-page-expected.txt:
New expected results after r243347.

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

4 months agoBuild failure with gstreamer 1.12.5 if USE_GSTREAMER_GL is enabled
commit-queue@webkit.org [Tue, 26 Mar 2019 13:11:32 +0000 (13:11 +0000)]
Build failure with gstreamer 1.12.5 if USE_GSTREAMER_GL is enabled
https://bugs.webkit.org/show_bug.cgi?id=196178

Patch by Mike Gorse <mgorse@alum.wpi.edu> on 2019-03-26
Reviewed by Philippe Normand.

No new tests (build fix).

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
Include gst/gl/gl.h before including GraphicsContext3D.h.

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

4 months ago[WPE][Qt] Uninitialized racy ViewBackend
commit-queue@webkit.org [Tue, 26 Mar 2019 12:09:50 +0000 (12:09 +0000)]
[WPE][Qt] Uninitialized racy ViewBackend
https://bugs.webkit.org/show_bug.cgi?id=196247

Patch by Philippe Normand <pnormand@igalia.com> on 2019-03-26
Reviewed by Carlos Garcia Campos.

* UIProcess/API/wpe/qt/WPEQtView.h: Initialize the backend pointer to nullptr.

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

4 months agoUnreviewed. Fix typo in GLib geolocation API after r243285.
carlosgc@webkit.org [Tue, 26 Mar 2019 11:18:29 +0000 (11:18 +0000)]
Unreviewed. Fix typo in GLib geolocation API after r243285.

gelocation -> geolocation.

Source/WebKit:

* UIProcess/API/glib/WebKitGeolocationManager.cpp:
(webkit_geolocation_manager_class_init):
(webkit_geolocation_manager_update_position):
(webkit_geolocation_manager_failed):
(webkit_gelocation_manager_update_position): Deleted.
(webkit_gelocation_manager_failed): Deleted.
* UIProcess/API/gtk/WebKitGeolocationManager.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/WebKitGeolocationManager.h:
* UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

Tools:

* TestWebKitAPI/Tests/WebKitGLib/TestGeolocationManager.cpp:
(testGeolocationManagerWatchPosition):

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

4 months ago[GTK][WPE] Disable process warming
commit-queue@webkit.org [Tue, 26 Mar 2019 10:16:46 +0000 (10:16 +0000)]
[GTK][WPE] Disable process warming
https://bugs.webkit.org/show_bug.cgi?id=196208

Patch by Patrick Griffis <pgriffis@igalia.com> on 2019-03-26
Reviewed by Chris Dumez.

Fixes crash caused by r243384.

Process warming is incompatible with our launcher as it expects a valid
WebsiteDataStore at initialization time for sandbox permissions.

* UIProcess/glib/WebProcessPoolGLib.cpp:
(WebKit::WebProcessPool::platformInitialize):

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

4 months ago[GStreamer] Sound loop with Google Hangouts and WhatsApp notifications
philn@webkit.org [Tue, 26 Mar 2019 09:34:07 +0000 (09:34 +0000)]
[GStreamer] Sound loop with Google Hangouts and WhatsApp notifications
https://bugs.webkit.org/show_bug.cgi?id=189471

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The media duration is now cached (again). The loop issue was
triggered by the previous version of the code returning positive
infinite duration in didEnd(), followed by the timeupdate event
propagation that would trick the HTMLMediaElement into a new call
to play(). Now the cached duration is updated to current position
at EOS (for forward playback direction only), so the media element
no longer triggers a new play call for those cases.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::platformDuration const):
(WebCore::MediaPlayerPrivateGStreamer::durationMediaTime const):
(WebCore::MediaPlayerPrivateGStreamer::currentMediaTime const):
(WebCore::MediaPlayerPrivateGStreamer::didEnd):
(WebCore::MediaPlayerPrivateGStreamer::durationChanged):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::currentMediaTime const):

LayoutTests:

* platform/gtk/TestExpectations:
* platform/gtk/media/video-playing-and-pause-expected.txt:

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

4 months agoHit-testing on layers overlapping scrollers should hit-test on text boxes
antti@apple.com [Tue, 26 Mar 2019 07:12:47 +0000 (07:12 +0000)]
Hit-testing on layers overlapping scrollers should hit-test on text boxes
https://bugs.webkit.org/show_bug.cgi?id=195373
<rdar://problem/48649865>

Reviewed by Simon Fraser.

Source/WebCore:

* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::paint):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paint):

Collect event region for overflowing line boxes.

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

Collect event region for overflowing simple lines.

LayoutTests:

* fast/scrolling/ios/overflow-scroll-overlap-3.html:

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

4 months agoDo not terminate the NetworkProcess if a third party application sends a NSCredential...
commit-queue@webkit.org [Tue, 26 Mar 2019 06:12:55 +0000 (06:12 +0000)]
Do not terminate the NetworkProcess if a third party application sends a NSCredential with a SecIdentityRef
https://bugs.webkit.org/show_bug.cgi?id=196213

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-25
Reviewed by Geoff Garen.

Source/WebKit:

A release assertion added in r230225 was reachable.  I reached it in a unit test that responds to a challenge
with a SecIdentityRef wrapped in an NSCredential.

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

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm: Added.
(credentialWithIdentityAndKeychainPath):
(-[ChallengeDelegate webView:didFinishNavigation:]):
(-[ChallengeDelegate webView:didReceiveAuthenticationChallenge:completionHandler:]):
(TestWebKitAPI::TEST):

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

4 months agoExpected shouldn't assume its contained types are copyable
commit-queue@webkit.org [Tue, 26 Mar 2019 05:53:57 +0000 (05:53 +0000)]
Expected shouldn't assume its contained types are copyable
https://bugs.webkit.org/show_bug.cgi?id=195986

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-25
Reviewed by JF Bastien.

Source/WebCore:

* contentextensions/ContentExtensionParser.cpp:
(WebCore::ContentExtensions::loadAction):

Source/WTF:

* wtf/Expected.h:
(std::experimental::fundamentals_v3::__expected_detail::constexpr_base::constexpr_base):
(std::experimental::fundamentals_v3::operator==):
(std::experimental::fundamentals_v3::operator!=):
* wtf/Unexpected.h:
(std::experimental::fundamentals_v3::unexpected::unexpected):

Tools:

* TestWebKitAPI/Tests/WTF/Expected.cpp:
(TestWebKitAPI::NonCopyable::operator== const):
(TestWebKitAPI::NonCopyable::operator!= const):
(TestWebKitAPI::TEST):

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

4 months agoRegression(r242369) Trying to change profile picture on linked in shows file picker...
cdumez@apple.com [Tue, 26 Mar 2019 05:48:08 +0000 (05:48 +0000)]
Regression(r242369) Trying to change profile picture on linked in shows file picker, not the image picker
https://bugs.webkit.org/show_bug.cgi?id=196205
<rdar://problem/49083324>

Reviewed by Geoffrey Garen.

Update our FileUploadPanel code on iOS to properly deal with the MIME types containing
wild cards (e.g. "image/*") that are defined in the HTML specification:
- https://html.spec.whatwg.org/multipage/input.html#attr-input-accept

Previously, we would fail to convert those to UTIs.

* UIProcess/ios/forms/WKFileUploadPanel.mm:

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

4 months agoRemove some now-unnecessary dynamic class lookup
timothy_horton@apple.com [Tue, 26 Mar 2019 04:45:13 +0000 (04:45 +0000)]
Remove some now-unnecessary dynamic class lookup
https://bugs.webkit.org/show_bug.cgi?id=196237

Reviewed by Simon Fraser.

Source/WebKit:

* Shared/DocumentEditingContext.mm:
(WebKit::DocumentEditingContext::toPlatformContext):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
(makeRequest):
(TEST):

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

4 months agoLeak of SVGFontFaceElement when RenderStyle holds onto a FontRances which uses it
rniwa@webkit.org [Tue, 26 Mar 2019 03:34:43 +0000 (03:34 +0000)]
Leak of SVGFontFaceElement when RenderStyle holds onto a FontRances which uses it
https://bugs.webkit.org/show_bug.cgi?id=196059

Reviewed by Zalan Bujtas.

SVGFontFaceElement keeps its RenderStyle alive via ElementRareData but RenderStyle can hold onto FontRanges
and therefore CSSFontSource, which in turn keeps SVGFontFaceElement alive, making a reference cycle.

More precisely, there are two reference cycles:
SVGFontFaceElement (1) -> ElementRareData -> StyleInheritedData -> FontCascade -> FontCascadeFonts (2)
FontCascadeFonts (2) -> FontRanges (3)
FontCascadeFonts (2) -> CSSFontSelector -> CSSFontFaceSet -> CSSSegmentedFontFace -> FontRanges (3)
FontRanges (3) -> CSSFontAccessor > CSSFontFace > CSSFontSource -> SVGFontFaceElement (1)

No new tests. Unfortunately, writing a test proved to be intractable. The leak can be reproduced by running
svg/text/text-text-05-t.svg then svg/zoom/page/zoom-img-preserveAspectRatio-support-1.html consecutively.

* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::CSSFontFaceSource):
(WebCore::CSSFontFaceSource::load):
(WebCore::CSSFontFaceSource::font):
(WebCore::CSSFontFaceSource::isSVGFontFaceSource const):
* css/CSSFontFaceSource.h:

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

4 months agoUnreviewed, rolling out r243450.
Hironori.Fujii@sony.com [Tue, 26 Mar 2019 03:30:12 +0000 (03:30 +0000)]
Unreviewed, rolling out r243450.

AppleWin and WinCairo port builds get broken.

Reverted changeset:

"Add test for fix of #196095"
https://bugs.webkit.org/show_bug.cgi?id=196097
https://trac.webkit.org/changeset/243450

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

4 months ago[WPE][GTK] Make building WebVR (w/OpenVR) not depend on ENABLE_EXPERIMENTAL_FEATURES
aperez@igalia.com [Tue, 26 Mar 2019 02:18:13 +0000 (02:18 +0000)]
[WPE][GTK] Make building WebVR (w/OpenVR) not depend on ENABLE_EXPERIMENTAL_FEATURES
https://bugs.webkit.org/show_bug.cgi?id=196223

Reviewed by Michael Catanzaro.

Disentangle USE_OPENVR from ENABLE_EXPERIMENTAL_FEATURES, making it
unneeded to include ThirdParty/openvr/ in release tarballs.

* Source/cmake/OptionsGTK.cmake: Set USE_OPENVR to OFF by default,
instead of making it use the value of ENABLE_EXPERIMENTAL_FEATURES.
* Source/cmake/OptionsWPE.cmake: Ditto.

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

4 months agoGet rid of ENABLE(ANIMATED_KEYBOARD_SCROLLING)
timothy_horton@apple.com [Tue, 26 Mar 2019 01:44:50 +0000 (01:44 +0000)]
Get rid of ENABLE(ANIMATED_KEYBOARD_SCROLLING)
https://bugs.webkit.org/show_bug.cgi?id=196224

Reviewed by Simon Fraser.

* Platform/spi/ios/AccessibilitySupportSPI.h:
* UIProcess/ios/WKKeyboardScrollingAnimator.mm:
(-[WKKeyboardScrollingAnimator invalidate]):
(perpendicularAbsoluteUnitVector):
(-[WKKeyboardScrollingAnimator beginWithEvent:]):
(-[WKKeyboardScrollingAnimator stopAnimatedScroll]):
(-[WKKeyboardScrollingAnimator willStartInteractiveScroll]):
(-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
(-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
(-[WKKeyboardScrollingAnimator startRepeatTimerIfNeeded]): Deleted.
(-[WKKeyboardScrollingAnimator stopRepeatTimer]): Deleted.
(-[WKKeyboardScrollingAnimator performDiscreteScroll]): Deleted.

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