WebKit-https.git
5 months agoUnreviewed, fix test failures after r243119.
drousso@apple.com [Tue, 19 Mar 2019 18:41:37 +0000 (18:41 +0000)]
Unreviewed, fix test failures after r243119.

* inspector/timeline/line-column.html:
* inspector/timeline/setInstruments-programmatic-capture.html:
Make sure to call `enable` for any ancillary agents.

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

5 months agoUnreviewed, rolling out r243142.
cdumez@apple.com [Tue, 19 Mar 2019 18:38:59 +0000 (18:38 +0000)]
Unreviewed, rolling out r243142.

Caused assertion hits in WK2 Debug

Reverted changeset:

"Spew: Unhandled web process message
'VisitedLinkTableController:VisitedLinkStateChanged'"
https://bugs.webkit.org/show_bug.cgi?id=194787
https://trac.webkit.org/changeset/243142

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

5 months ago[iOS] Focus not preserved when switching between tabs
dbates@webkit.org [Tue, 19 Mar 2019 18:25:21 +0000 (18:25 +0000)]
[iOS] Focus not preserved when switching between tabs
https://bugs.webkit.org/show_bug.cgi?id=195820
<rdar://problem/43614450>

Reviewed by Brent Fulgham.

Source/WebKit:

Fixes a usability annoyance when using a hardware keyboard; focus is not preserved when switching between tabs.
Do not unconditionally tell the WebProcess to blur the currently focused element when the content view (WKContentView)
resigns first responder. Instead only tell it to blur when the content view is resigning because either the
accessory view was dismissed (Done button was pressed) or the keyboard was dismissed (the hide keyboard button
was pressed).

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm: Add new ivar to track whether the content view is resigning
first responder status because the accessory view is being dismissed.
(-[WKContentView resignFirstResponderForWebView]): Only tell WebKit to blur the focused element if we are
resigning because the accessory view is being dismissed or the keyboard was hidden. We continue to do all
other steps when resigning, including hiding the keyboard. Note that by not telling WebKit to blur the
focused element we let it's focus controller manage the focused element with respect to the current
page activation state (i.e. whether the content view is first responder or not). When the content view
becomes the first responder then WebKit's focus controller will be told that the page has become activated
and will tell the UIProcess to focus the currently focused element, which will bring up the keyboard.
(-[WKContentView accessoryDone]): Update state so we know that a subsequent call to resign first responder
was due to the accessory view being dismissed.

Tools:

Add tests to ensure that we restore focus when resigning and becoming first responder.

* TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(TestWebKitAPI::TEST):

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

5 months agoWeb Inspector: DOM: "Capture Screenshot" should only be shown if the node is attached
drousso@apple.com [Tue, 19 Mar 2019 18:03:33 +0000 (18:03 +0000)]
Web Inspector: DOM: "Capture Screenshot" should only be shown if the node is attached
https://bugs.webkit.org/show_bug.cgi?id=195793
<rdar://problem/48916594>

Reviewed by Joseph Pecoraro.

* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.get attached): Added.

* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._populateTagContextMenu):

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

5 months agoRenderElement::startAnimation should take const Animation&
zalan@apple.com [Tue, 19 Mar 2019 17:59:24 +0000 (17:59 +0000)]
RenderElement::startAnimation should take const Animation&
https://bugs.webkit.org/show_bug.cgi?id=195929

Reviewed by Daniel Bates.

* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):
* page/animation/KeyframeAnimation.cpp:
(WebCore::KeyframeAnimation::startAnimation):
(WebCore::KeyframeAnimation::endAnimation):
* rendering/RenderElement.h:
(WebCore::RenderElement::startAnimation):
(WebCore::RenderElement::animationFinished):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::startAnimation):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::startAnimation):
(WebCore::RenderLayerModelObject::animationFinished):
* rendering/RenderLayerModelObject.h:

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

5 months agoWeb Inspector: Heap: lazily create the agent
drousso@apple.com [Tue, 19 Mar 2019 17:50:19 +0000 (17:50 +0000)]
Web Inspector: Heap: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195590
<rdar://problem/48791750>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/agents/InspectorHeapAgent.h:
* inspector/agents/InspectorHeapAgent.cpp:
(Inspector::InspectorHeapAgent::~InspectorHeapAgent): Deleted.

* inspector/agents/InspectorConsoleAgent.h:
(Inspector::InspectorConsoleAgent::setInspectorHeapAgent): Added.
* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::InspectorConsoleAgent):
(Inspector::InspectorConsoleAgent::takeHeapSnapshot):
(Inspector::InspectorConsoleAgent::~InspectorConsoleAgent): Deleted.

* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
(Inspector::JSGlobalObjectInspectorController::createLazyAgents):

Source/WebCore:

No change in functionality.

* inspector/agents/page/PageHeapAgent.cpp:
(WebCore::PageHeapAgent::disable):
* inspector/agents/WebHeapAgent.h:
* inspector/agents/WebHeapAgent.cpp:
(WebCore::WebHeapAgent::WebHeapAgent):
(WebCore::WebHeapAgent::enable): Added.
(WebCore::WebHeapAgent::disable):

* inspector/agents/page/PageConsoleAgent.h:
* inspector/agents/page/PageConsoleAgent.cpp:
(WebCore::PageConsoleAgent::PageConsoleAgent):
* inspector/agents/WebConsoleAgent.h:
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::WebConsoleAgent):
* inspector/agents/worker/WorkerConsoleAgent.h:
* inspector/agents/worker/WorkerConsoleAgent.cpp:
(WebCore::WorkerConsoleAgent::WorkerConsoleAgent):

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
(WebCore::WorkerInspectorController::createLazyAgents):

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

5 months ago[iOS] Remove overridden rules in sandbox
pvollan@apple.com [Tue, 19 Mar 2019 17:49:21 +0000 (17:49 +0000)]
[iOS] Remove overridden rules in sandbox
https://bugs.webkit.org/show_bug.cgi?id=193840
<rdar://problem/47558526>

Reviewed by Brent Fulgham.

On iOS, there are some rules overridden in the same sandbox file. The overridden rules
should be removed.

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

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

5 months ago[JSC] microbenchmarks/generate-multiple-llint-entrypoints.js is running out of execut...
ticaiolima@gmail.com [Tue, 19 Mar 2019 17:44:55 +0000 (17:44 +0000)]
[JSC] microbenchmarks/generate-multiple-llint-entrypoints.js is running out of executable memory on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=195950

Unreviewed, reducing the amount of memory used on this test to avoid
OOM on devices with memory restrictions.

* microbenchmarks/generate-multiple-llint-entrypoints.js:

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

5 months agoMake WebKit/NSAttributedString.h a public header.
timothy@apple.com [Tue, 19 Mar 2019 17:44:15 +0000 (17:44 +0000)]
Make WebKit/NSAttributedString.h a public header.
https://bugs.webkit.org/show_bug.cgi?id=195944

Reviewed by Dean Jackson.

* WebKit.xcodeproj/project.pbxproj:

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

5 months agoFix GraphicsLayer-related crashes after r243129
simon.fraser@apple.com [Tue, 19 Mar 2019 17:37:39 +0000 (17:37 +0000)]
Fix GraphicsLayer-related crashes after r243129
https://bugs.webkit.org/show_bug.cgi?id=195953

Reviewed by Dean Jackson.

Extending the lifetime of GraphicsLayers by referencing them in the scrolling tree (r243129)
revealed a bug where RenderLayerCompositor was failing to clear itself as the client of
GraphicsLayers that it owned, causing crashes.

Fix by using the GraphicsLayer::unparentAndClear() helper to clean up all the GraphicsLayers
owned by RenderLayerCompositor.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::~RenderLayerCompositor):
* rendering/RenderLayerCompositor.h:

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

5 months ago[Async overflow] Handle positioned nodes in a few more places
simon.fraser@apple.com [Tue, 19 Mar 2019 17:37:35 +0000 (17:37 +0000)]
[Async overflow] Handle positioned nodes in a few more places
https://bugs.webkit.org/show_bug.cgi?id=195946

Reviewed by Zalan Bujtas.

When I added support for positioned nodes in the scrolling tree I missed handling
the ScrollCoordinationRole::Positioning in a few places.

I wasn't able to come up with a test for this; when a positioned node toggles between
tiled and non-tiled, hitting the code in didChangePlatformLayerForLayer(), we already
update the node with the new layer.

* rendering/RenderLayer.cpp:
(WebCore::outputPaintOrderTreeRecursive): Logging.
* rendering/RenderLayerBacking.cpp:
(WebCore::operator<<): Logging.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer): Update the node's layer.
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer): Handle detaching of this node type.

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

5 months ago[BMalloc] Scavenger should react to recent memory activity
msaboff@apple.com [Tue, 19 Mar 2019 17:31:01 +0000 (17:31 +0000)]
[BMalloc] Scavenger should react to recent memory activity
https://bugs.webkit.org/show_bug.cgi?id=195895

Reviewed by Geoffrey Garen.

This change adds a recently used bit to objects that are scavenged.  When an object is allocated, that bit is set.
When we scavenge, if the bit is set, we clear it.  If the bit was already clear, we decommit the object.  The timing
to scavenging has been changed as well.  We perform our first scavne almost immediately after bmalloc is initialized
(10ms later).  Subsequent scavenging is done as a multiple of the time it took to scavenge.  We bound this computed
time between a minimum and maximum.  Through empirical testing, the multiplier, minimum and maximum are
150x, 100ms and 10,000ms respectively.  For mini-mode, when the JIT is disabled, we use much more aggressive values of
50x, 25ms and 500ms.

Eliminated partial scavenging since this change allows for any scavenge to be partial or full based on recent use of
the objects on the various free lists.

* bmalloc/Chunk.h:
(bmalloc::Chunk::usedSinceLastScavenge):
(bmalloc::Chunk::clearUsedSinceLastScavenge):
(bmalloc::Chunk::setUsedSinceLastScavenge):
* bmalloc/Heap.cpp:
(bmalloc::Heap::scavenge):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::tryAllocateLarge):
(bmalloc::Heap::scavengeToHighWatermark): Deleted.
* bmalloc/Heap.h:
* bmalloc/IsoDirectory.h:
* bmalloc/IsoDirectoryInlines.h:
(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::scavenge):
(bmalloc::passedNumPages>::scavengeToHighWatermark): Deleted.
* bmalloc/IsoHeapImpl.h:
* bmalloc/IsoHeapImplInlines.h:
(bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark): Deleted.
* bmalloc/LargeRange.h:
(bmalloc::LargeRange::LargeRange):
(bmalloc::LargeRange::usedSinceLastScavenge):
(bmalloc::LargeRange::clearUsedSinceLastScavenge):
(bmalloc::LargeRange::setUsedSinceLastScavenge):
(): Deleted.
* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::Scavenger):
(bmalloc::Scavenger::threadRunLoop):
(bmalloc::Scavenger::timeSinceLastPartialScavenge): Deleted.
(bmalloc::Scavenger::partialScavenge): Deleted.
* bmalloc/Scavenger.h:
* bmalloc/SmallPage.h:
(bmalloc::SmallPage::usedSinceLastScavenge):
(bmalloc::SmallPage::clearUsedSinceLastScavenge):
(bmalloc::SmallPage::setUsedSinceLastScavenge):

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

5 months agoDrop NetworkCacheStatistics code
cdumez@apple.com [Tue, 19 Mar 2019 17:05:55 +0000 (17:05 +0000)]
Drop NetworkCacheStatistics code
https://bugs.webkit.org/show_bug.cgi?id=195910

Reviewed by Antti Koivisto.

Drop NetworkCacheStatistics code. It was a temporary experiment and has not been used in a long time.

* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::Cache):
(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::Cache::storeRedirect):
(WebKit::NetworkCache::Cache::update):
(WebKit::NetworkCache::Cache::clear):
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheStatistics.cpp: Removed.
* NetworkProcess/cache/NetworkCacheStatistics.h: Removed.
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::traverseRecordsFiles):
* NetworkProcess/cache/NetworkCacheStorage.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::platformInitializeNetworkProcess):
* Sources.txt:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::registerUserDefaultsIfNeeded):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* UIProcess/soup/WebProcessPoolSoup.cpp:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* WebKit.xcodeproj/project.pbxproj:

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

5 months agoSpew: Unhandled web process message 'VisitedLinkTableController:VisitedLinkStateChanged'
cdumez@apple.com [Tue, 19 Mar 2019 16:48:40 +0000 (16:48 +0000)]
Spew: Unhandled web process message 'VisitedLinkTableController:VisitedLinkStateChanged'
https://bugs.webkit.org/show_bug.cgi?id=194787
<rdar://problem/48175520>

Reviewed by Geoffrey Garen.

The unhandled 'VisitedLinkTableController:VisitedLinkStateChanged' message logging happens
when IPC is sent to a WebProcess which does not have a VisitedLinkTableController with the
given identifier. VisitedLinkTableController are kept alive by the WebPage in the WebProcess
side so this indicates that there is no WebPage using this VisitedLinkTableController anymore.

In the UIProcess side, our tracking of who is using which VisitedLinkStore was very poor.
WebPageProxy objects would ask their process to register itself with the page's visitedLinkStore
as soon as the WebPage object has been created on the WebProcess side. This part was fine.
However, unregistration from the visitedLinkStores would only happen when either the
visitedLinkStore would get destroyed or when the WebProcess would shutdown. This means that
WebProcess could stay registered with a visitedLinkStore even after the page that was using it
has been closed, which would lead to such logging.

To address the issue, the WebProcessProxy now keeps track for which pages are using which
visitedLinkStore. When a visitedLinkStore is used by a page for the first time, the
WebProcessProxy will register itself with the visitedLinkStore. Similarly, when the last page
using a given visitedLinkStore is closed, the process unregisters itself from the
visitedLinkStore, thus avoiding the bug.

I also simplified a lot the logic for having a page telling the WebProcessProxy it started
using a visitedLinkStore. Previously, it would have to wait until the process is done launching
before notifying the WebProcessProxy. Now, the WebPageProxy merely tells the WebProcessProxy
that it is starting to use a visitedLinkStore as soon as it sent the CreateWebPage IPC to the
WebProcess (no matter if the process is still launching or not). At this point, the
WebProcessProxy registers the page as a user of the visitedLinkStore and takes care of waiting
until it is done launching before registering itself with the visitedLinkStore.

* UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::initializeWebPage):
(WebKit::ProvisionalPageProxy::processDidFinishLaunching): Deleted.
(WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
* UIProcess/ProvisionalPageProxy.h:
* UIProcess/VisitedLinkStore.cpp:
(WebKit::VisitedLinkStore::~VisitedLinkStore):
(WebKit::VisitedLinkStore::addProcess):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::finishAttachingToWebProcess):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
(WebKit::WebPageProxy::processDidFinishLaunching): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::addVisitedLinkStoreUser):
(WebKit::WebProcessProxy::removeVisitedLinkStoreUser):
(WebKit::WebProcessProxy::addWebUserContentControllerProxy):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::addVisitedLinkStore): Deleted.
(WebKit::WebProcessProxy::didDestroyVisitedLinkStore): Deleted.
* UIProcess/WebProcessProxy.h:

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

5 months agoMake WTFLogChannelState and WTFLogLevel enum classes
commit-queue@webkit.org [Tue, 19 Mar 2019 16:47:04 +0000 (16:47 +0000)]
Make WTFLogChannelState and WTFLogLevel enum classes
https://bugs.webkit.org/show_bug.cgi?id=195904

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-19
Reviewed by Eric Carlson.

Source/WebCore:

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::removeSamplesFromTrackBuffer):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
(WebCore::LibWebRTCMediaEndpoint::statsLogInterval const):
* dom/Document.cpp:
(WebCore::messageLevelFromWTFLogLevel):
* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::seekTask):
(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::HTMLMediaElement::sourceWasAdded):
(WebCore::HTMLMediaElement::sourceWasRemoved):
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
(WebCore::channelConfigurationForString):
* platform/Logging.cpp:
(WebCore::isLogChannelEnabled):
(WebCore::setLogChannelToAccumulate):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::initializePeerConnectionFactoryAndThreads):
* rendering/RenderLayerCompositor.cpp:
(WebCore::compositingLogEnabled):

Source/WebKit:

* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::NetworkRTCProvider):

Source/WTF:

* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Logger.h:
(WTF::Logger::logAlways const):
(WTF::Logger::error const):
(WTF::Logger::warning const):
(WTF::Logger::info const):
(WTF::Logger::debug const):
(WTF::Logger::willLog const):
(WTF::Logger::log):
* wtf/MemoryPressureHandler.cpp:
* wtf/RefCountedLeakCounter.cpp:

Tools:

* TestWebKitAPI/Tests/WebCore/Logging.cpp:
(TestWebKitAPI::TEST_F):

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

5 months agoREGRESSION(r243058): [GStreamer] 3 tests now timing out
philn@webkit.org [Tue, 19 Mar 2019 14:53:09 +0000 (14:53 +0000)]
REGRESSION(r243058): [GStreamer] 3 tests now timing out
https://bugs.webkit.org/show_bug.cgi?id=195888

Reviewed by Xabier Rodriguez-Calvar.

A breaking change was introduced in r243058. Now on-disk-buffering
is disabled when the reported Content-Length is 0 or not present
at all. This broke the progress event logic in didLoadProgress()
because leading to progress events not being fired as expected.

The proposed solution is to make webkitwebsrc notify the player
every time the network process receives data from the network. So
the player can now easily determine if the load progressed by
checking the reported statistics.

No new tests, existing media tests cover this change.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(CachedResourceStreamingClient::dataReceived):

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

5 months ago[GStreamer][EME] Backported mssdemux protection data crash fix
calvaris@igalia.com [Tue, 19 Mar 2019 14:48:49 +0000 (14:48 +0000)]
[GStreamer][EME] Backported mssdemux protection data crash fix
https://bugs.webkit.org/show_bug.cgi?id=195918

Reviewed by Philippe Normand.

* gstreamer/jhbuild.modules:
* gstreamer/patches/gst-plugins-bad-0005-mssdemux-fix-protection-data-double-free.patch: Added.

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

5 months ago[MSE] Use tolerance in eraseBeginTime
aboya@igalia.com [Tue, 19 Mar 2019 14:38:45 +0000 (14:38 +0000)]
[MSE] Use tolerance in eraseBeginTime
https://bugs.webkit.org/show_bug.cgi?id=195911

Reviewed by Jer Noble.

Source/WebCore:

https://bugs.webkit.org/show_bug.cgi?id=190085 introduced tolerance
when erasing frames during the Coded Frame Processing algorithm in
such a way that, in files with less than perfect timestamps, a frame
existing before after the current append is not erased accidentally
due to small overlaps.

This patch takes care of the opposite problem: we don't want an old
frame being accidentally NOT erased by a new one with the same
timestamps just because these overlaps make
highestPresentationTimestamp very slightly higher than the frame PTS.

This bug in practice causes some frames of the old quality to not be
erased when the new quality is appended, resulting in some seemingly
still frames from a different quality appearing at some points during
WebM video in presence of quality changes.

This bug can be reduced to this minimal test case that illustrates the
timestamp imprecission of a typical WebM file:

function sampleRun(generation) {
    return concatenateSamples([
        makeASample(     0,      0, 166667, 1000000, 1, SAMPLE_FLAG.SYNC, generation),
        makeASample(167000, 167000, 166667, 1000000, 1, SAMPLE_FLAG.NONE, generation),
        makeASample(333000, 333000, 166667, 1000000, 1, SAMPLE_FLAG.SYNC, generation), // overlaps previous frame
        makeASample(500000, 500000, 166667, 1000000, 1, SAMPLE_FLAG.NONE, generation),
    ]);
}

After appending this twice it would be expected that the second
generation takes fully over the first, since the timestamps are
completely the same. Due to the bug, sync frames with an overlap, like
the third one in that list, actually persist from the first
generation, due to lack of tolerance when comparing the start of a new
frame with highestPresentationTimestamp.

This patch introduces the tolerance in that case too to fix this
problem.

Test: media/media-source/media-source-append-twice-overlapping-sync-frame.html

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

LayoutTests:

* media/media-source/media-source-append-twice-overlapping-sync-frame-expected.txt: Added.
* media/media-source/media-source-append-twice-overlapping-sync-frame.html: Added.

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

5 months agoUnreviewed GTK build fix
mcatanzaro@igalia.com [Tue, 19 Mar 2019 13:46:25 +0000 (13:46 +0000)]
Unreviewed GTK build fix
https://bugs.webkit.org/show_bug.cgi?id=195863
<rdar://problem/49006248>

Patch by Diego Pino.

* svg/SVGTests.h:

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

5 months ago[JSC] LLIntEntryPoint creates same DirectJITCode for all functions
ticaiolima@gmail.com [Tue, 19 Mar 2019 13:36:05 +0000 (13:36 +0000)]
[JSC] LLIntEntryPoint creates same DirectJITCode for all functions
https://bugs.webkit.org/show_bug.cgi?id=194648

Reviewed by Keith Miller.

JSTests:

* microbenchmarks/generate-multiple-llint-entrypoints.js: Added.

Source/JavaScriptCore:

1. Making LLIntThunks singleton.

Motivation: Former implementation has one LLIntThunk per type per VM.
However, the generated code for every kind of thunk is essentially the
same and we end up wasting memory (right now jitAllocationGranule = 32 bytes)
when we have 2 or more VM instantiated. Turn these thunks into
singleton will avoid such wasting.

Tradeoff: This change comes with a price, because we will keep thunks
allocated even when there is no VM instantiated. Considering WebCore use case,
the situation of having no VM instantiated is uncommon, since once a
VM is created through `commomVM()`, it will never be destroyed. Given
that, this change does not impact the overall memory comsumption of
WebCore/JSC. It also doesn't impact memory footprint, since thunks are
generated lazily (see results below).

Since we are keeping a static `MacroAssemblerCodeRef<JITThunkPtrTag>`,
we have the assurance that JITed code will never be deallocated,
given it is being pointed by `RefPtr<ExecutableMemoryHandle> m_executableMemory`.
To understand why we decided to make LLIntThunks singleton instead of
removing them, please see the comment on `llint/LLIntThunks.cpp`.

2. Making all LLIntEntrypoints singleton

Motivation: With singleton LLIntThunks, we also can have singleton
DirectJITCodes and NativeJITCodes for each LLIntEntrypoint type and
avoid multiple allocations of objects with the same content.

Tradeoff: As explained before, once we allocate an entrypoint, it
will be alive until the program exits. However, the gains we can
achieve in some use cases justifies such allocations.

As DirectJITCode and NativeJITCode are ThreadSafeRefCounted and we are using
`codeBlock->setJITCode(makeRef(*jitCode))`, their reference counter
will never be less than 1.

3. Memory usage analysis

This change reduces memory usage on stress/generate-multiple-llint-entrypoints.js
by 2% and is neutral on JetStream 2. Following results were generated
running each benchmark 6 times and using 95% Student's t distribution
confidence interval.

microbenchmarks/generate-multiple-llint-entrypoints.js (Changes uses less memory):
    Mean of memory peak on ToT: 122576896 bytes (confidence interval: 67747.2316)
    Mean of memory peak on Changes: 119248213.33 bytes (confidence interval: 50251.2718)

JetStream2 (Neutral):
    Mean of memory peak on ToT: 5442742272 bytes (confidence interval: 134381565.9117)
    Mean of memory peak on Changes: 5384949760 bytes (confidence interval: 158413904.8352)

4. Performance Analysis

This change is performance neutral on JetStream 2 and Speedometer 2.
See results below.:

JetStream 2 (Neutral):
    Mean of score on ToT: 139.58 (confidence interval: 2.44)
    Mean of score on Changes: 141.46 (confidence interval: 4.24)

Speedometer run #1
   ToT: 110 +- 2.9
   Changes: 110 +- 1.8

Speedometer run #2
   ToT: 110 +- 1.6
   Changes: 108 +- 2.3

Speedometer run #3
   ToT: 110 +- 3.0
   Changes: 110 +- 1.4

* jit/JSInterfaceJIT.h:
(JSC::JSInterfaceJIT::JSInterfaceJIT):
* llint/LLIntEntrypoint.cpp:

Here we are changing the usage or DirectJITCode by NativeJITCode on cases
where there is no difference from address of calls with and without
ArithCheck.

(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):
(JSC::LLInt::setEntrypoint):
* llint/LLIntEntrypoint.h:
* llint/LLIntThunks.cpp:
(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::functionForCallEntryThunk):
(JSC::LLInt::functionForConstructEntryThunk):
(JSC::LLInt::functionForCallArityCheckThunk):
(JSC::LLInt::functionForConstructArityCheckThunk):
(JSC::LLInt::evalEntryThunk):
(JSC::LLInt::programEntryThunk):
(JSC::LLInt::moduleProgramEntryThunk):
(JSC::LLInt::functionForCallEntryThunkGenerator): Deleted.
(JSC::LLInt::functionForConstructEntryThunkGenerator): Deleted.
(JSC::LLInt::functionForCallArityCheckThunkGenerator): Deleted.
(JSC::LLInt::functionForConstructArityCheckThunkGenerator): Deleted.
(JSC::LLInt::evalEntryThunkGenerator): Deleted.
(JSC::LLInt::programEntryThunkGenerator): Deleted.
(JSC::LLInt::moduleProgramEntryThunkGenerator): Deleted.
* llint/LLIntThunks.h:
* runtime/ScriptExecutable.cpp:
(JSC::setupLLInt):
(JSC::ScriptExecutable::prepareForExecutionImpl):

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

5 months agoUnreviewed, rolling out r243132.
mcatanzaro@igalia.com [Tue, 19 Mar 2019 13:25:16 +0000 (13:25 +0000)]
Unreviewed, rolling out r243132.

Broke GTK build

Reverted changeset:

"Make WTFLogChannelState and WTFLogLevel enum classes"
https://bugs.webkit.org/show_bug.cgi?id=195904
https://trac.webkit.org/changeset/243132

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

5 months agoLayer with no backing store should still hit-test over a scroller
antti@apple.com [Tue, 19 Mar 2019 11:07:42 +0000 (11:07 +0000)]
Layer with no backing store should still hit-test over a scroller
https://bugs.webkit.org/show_bug.cgi?id=195378
<rdar://problem/48652078>

Reviewed by Simon Fraser.

Source/WebCore:

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

Move collecting event region from paint to compositing update time.
This solves a number of problems including regions for non-painting layers.

* platform/graphics/GraphicsLayer.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):

Use the existing visibleToHitTesting() helper.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents):

Use flag for event region collecting, don't paint content.

(WebCore::RenderLayer::paintList):

We can bail out immediately if there is no overflow.

(WebCore::RenderLayer::paintForegroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
(WebCore::RenderLayer::collectEventRegionForFragments):

Move to a separate function.

* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):

Update event region on backing configuration update. This is called after anything interesting changes on a sublayer.

(WebCore::RenderLayerBacking::updateEventRegion):
(WebCore::RenderLayerBacking::paintIntoLayer):
* rendering/RenderLayerBacking.h:

Source/WebKit:

* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::makeNode):
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(WebKit::collectDescendantViewsAtPoint):

No need for special WKTiledBackingView, tiled views now have correct event regions.

LayoutTests:

Reorganize the tests a bit and add some new ones.

* fast/scrolling/ios/overflow-scroll-overlap-2-expected.txt:
* fast/scrolling/ios/overflow-scroll-overlap-2.html:
* fast/scrolling/ios/overflow-scroll-overlap-3-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-3.html: Added.
* fast/scrolling/ios/overflow-scroll-overlap-4-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-4.html: Added.
* fast/scrolling/ios/overflow-scroll-overlap.html:
* fast/scrolling/resources/overflow-scroll-overlap.js: Added.
(sleep):
(async.runTest):
(logScroll):
(outputCase):

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

5 months agoUnreviewed follow-up to r243073, fixing WPE MiniBrowser launching.
zandobersek@gmail.com [Tue, 19 Mar 2019 08:31:05 +0000 (08:31 +0000)]
Unreviewed follow-up to r243073, fixing WPE MiniBrowser launching.

* Scripts/webkitdirs.pm:
(builtDylibPathForName): Adjust the shared library name that's changed
with the API version bump in r243073.

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

5 months agoMake WTFLogChannelState and WTFLogLevel enum classes
commit-queue@webkit.org [Tue, 19 Mar 2019 06:36:11 +0000 (06:36 +0000)]
Make WTFLogChannelState and WTFLogLevel enum classes
https://bugs.webkit.org/show_bug.cgi?id=195904

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-18
Reviewed by Eric Carlson.

Source/WebCore:

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::removeSamplesFromTrackBuffer):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
(WebCore::LibWebRTCMediaEndpoint::statsLogInterval const):
* dom/Document.cpp:
(WebCore::messageLevelFromWTFLogLevel):
* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::seekTask):
(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::HTMLMediaElement::sourceWasAdded):
(WebCore::HTMLMediaElement::sourceWasRemoved):
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
(WebCore::channelConfigurationForString):
* platform/Logging.cpp:
(WebCore::isLogChannelEnabled):
(WebCore::setLogChannelToAccumulate):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::initializePeerConnectionFactoryAndThreads):
* rendering/RenderLayerCompositor.cpp:
(WebCore::compositingLogEnabled):

Source/WebKit:

* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::NetworkRTCProvider):

Source/WTF:

* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Logger.h:
(WTF::Logger::logAlways const):
(WTF::Logger::error const):
(WTF::Logger::warning const):
(WTF::Logger::info const):
(WTF::Logger::debug const):
(WTF::Logger::willLog const):
(WTF::Logger::log):
* wtf/MemoryPressureHandler.cpp:
* wtf/RefCountedLeakCounter.cpp:

Tools:

* TestWebKitAPI/Tests/WebCore/Logging.cpp:
(TestWebKitAPI::TEST_F):

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

5 months agoDisable flaky test added in r2431100
achristensen@apple.com [Tue, 19 Mar 2019 05:46:42 +0000 (05:46 +0000)]
Disable flaky test added in r2431100
https://webkit.org/b/195785

* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(TestWebKitAPI::TEST):
Apparently bots don't hit 150kb/s as reliably as I do locally.  Can't say I'm too surprised.

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

5 months agoRemove the SVG property tear off objects for SVGStringList
commit-queue@webkit.org [Tue, 19 Mar 2019 04:23:27 +0000 (04:23 +0000)]
Remove the SVG property tear off objects for SVGStringList
https://bugs.webkit.org/show_bug.cgi?id=195863

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

SVGStringList is not animated list. So we need to introduce two new classes:

-- SVGProperty: This will be the base of all the non-animated properties.
   Like the SVGAnimatedProperty, SVGProperty will be registered with the
   attribute name in SVGPropertyRegistery. It will also commit changes
   to the reflecting attribute. And it will provide a synchronize string
   for lazy attribute update.

-- SVGList: It will be the base of all the list properties. It can hold
   primitive types or SVG types. In this patch primitive types will be
   supported only. To do that, a superclass called SVGPrimitiveList is
   added. Its items are of primitive type such as String type.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGElement.cpp:
(WebCore::SVGElement::synchronizeAnimatedSVGAttribute const):
(WebCore::SVGElement::commitPropertyChange):
* svg/SVGElement.h:
* svg/SVGStringList.h:
* svg/SVGStringListValues.cpp: Removed.
* svg/SVGStringListValues.h: Removed.
* svg/SVGTests.cpp:
(WebCore::SVGTests::SVGTests):
(WebCore::SVGTests::isKnownAttribute):
(WebCore::SVGTests::isValid const):
(WebCore::SVGTests::parseAttribute):
(WebCore::SVGTests::registerAttributes): Deleted.
(WebCore::SVGTests::requiredFeatures): Deleted.
(WebCore::SVGTests::requiredExtensions): Deleted.
(WebCore::SVGTests::systemLanguage): Deleted.
* svg/SVGTests.h:
(WebCore::SVGTests::requiredFeatures):
(WebCore::SVGTests::requiredExtensions):
(WebCore::SVGTests::systemLanguage):
(): Deleted.
* svg/SVGTests.idl:
* svg/SVGTextPositioningElement.h:
* svg/SVGViewElement.cpp:
(WebCore::SVGViewElement::SVGViewElement):
(WebCore::SVGViewElement::parseAttribute):
(WebCore::SVGViewElement::viewTarget): Deleted.
* svg/SVGViewElement.h:
* svg/properties/SVGAnimatedListPropertyTearOff.h:
* svg/properties/SVGAnimatedPrimitiveProperty.h:
(WebCore::SVGAnimatedPrimitiveProperty::setBaseVal):
* svg/properties/SVGAnimatedProperty.cpp:
(WebCore::SVGAnimatedProperty::commitPropertyChange):
* svg/properties/SVGAnimatedProperty.h:
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGList.h: Added.
(WebCore::SVGList::numberOfItems const):
(WebCore::SVGList::clear):
(WebCore::SVGList::getItem):
(WebCore::SVGList::initialize):
(WebCore::SVGList::insertItemBefore):
(WebCore::SVGList::replaceItem):
(WebCore::SVGList::removeItem):
(WebCore::SVGList::appendItem):
(WebCore::SVGList::items):
(WebCore::SVGList::items const):
(WebCore::SVGList::size const):
(WebCore::SVGList::isEmpty const):
(WebCore::SVGList::clearItems):
(WebCore::SVGList::canAlterList const):
(WebCore::SVGList::canGetItem):
(WebCore::SVGList::canReplaceItem):
(WebCore::SVGList::canRemoveItem):
(WebCore::SVGList::detachItems):
* svg/properties/SVGMemberAccessor.h:
(WebCore::SVGMemberAccessor::matches const):
* svg/properties/SVGPrimitiveList.h: Added.
* svg/properties/SVGProperty.h:
(WebCore::SVGProperty::isAttached const):
(WebCore::SVGProperty::attach):
(WebCore::SVGProperty::detach):
(WebCore::SVGProperty::contextElement const):
(WebCore::SVGProperty::commitChange):
(WebCore::SVGProperty::access const):
(WebCore::SVGProperty::isReadOnly const):
(WebCore::SVGProperty::isDirty const):
(WebCore::SVGProperty::setDirty):
(WebCore::SVGProperty::synchronize):
(WebCore::SVGProperty::valueAsString const):
(WebCore::SVGProperty::SVGProperty):
* svg/properties/SVGPropertyAccessor.h: Added.
* svg/properties/SVGPropertyAccessorImpl.h: Added.
* svg/properties/SVGPropertyOwner.h:
(WebCore::SVGPropertyOwner::commitPropertyChange):
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):
* svg/properties/SVGPropertyRegistry.h:
* svg/properties/SVGStaticListPropertyTearOff.h: Removed.

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

5 months agoUnreviewed followup to r243126.
simon.fraser@apple.com [Tue, 19 Mar 2019 04:13:37 +0000 (04:13 +0000)]
Unreviewed followup to r243126.

LayerRepresentation operator=() needs to copy m_graphicsLayer now that it doesn't
share a pointer with m_typelessPlatformLayer. Also make the LayerRepresentation construction
from a GraphiscLayer* explicit.

* page/scrolling/ScrollingStateNode.h:
(WebCore::LayerRepresentation::operator=):
(WebCore::LayerRepresentation::toRepresentation const):

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

5 months ago[JSC] Add missing exception checks revealed by newly added exception checks, follow...
ysuzuki@apple.com [Tue, 19 Mar 2019 03:00:26 +0000 (03:00 +0000)]
[JSC] Add missing exception checks revealed by newly added exception checks, follow-up after r243081
https://bugs.webkit.org/show_bug.cgi?id=195927

Reviewed by Mark Lam.

r243081 adds more exception checks which are previously missing, and it reveals missing exception checks in the caller.
This patch is a follow-up patch after r243081, adding missing exception checks more to fix debug test failures.

* runtime/RegExpConstructor.cpp:
(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):
* runtime/RegExpGlobalData.cpp:
(JSC::RegExpGlobalData::getBackref):
(JSC::RegExpGlobalData::getLastParen):

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

5 months ago[JSC] Generator should not create JSLexicalEnvironment if it is not necessary
ysuzuki@apple.com [Tue, 19 Mar 2019 02:21:10 +0000 (02:21 +0000)]
[JSC] Generator should not create JSLexicalEnvironment if it is not necessary
https://bugs.webkit.org/show_bug.cgi?id=195901

Reviewed by Saam Barati.

It is not rare that generators do not need to have any registers to be suspended and resumed.
Since currently we always emit op_create_lexical_environment for generator code, we sometimes
create empty JSLexicalEnvironment while it is not required. We can see that a lot of empty JSLexicalEnvironment
are allocated in RAMification's Basic test.

This patch removes this unnecessary allocation. We introduce op_create_generator_frame_environment, which is
a marker, similar to op_yield. And generatorification phase decides whether we should actually emit op_create_lexical_environment,
based on the result of the analysis in generatorification. This can remove unnecessary JSLexicalEnvironment allocations.

We run RAMification in 6 times, use average of them.
RAMification's Basic in JIT mode shows 1.4% improvement.
ToT
    Current: 55076864.00, Peak: 55080960.00
Patched
    Current: 54325930.67, Peak: 54329344.00

RAMification's Basic in non-JIT mode shows 5.0% improvement.
ToT
    Current: 12485290.67, Peak: 12485290.67
Patched
    Current: 11894101.33, Peak: 11894101.33

* bytecode/BytecodeGeneratorification.cpp:
(JSC::BytecodeGeneratorification::BytecodeGeneratorification):
(JSC::BytecodeGeneratorification::generatorFrameData const):
(JSC::BytecodeGeneratorification::run):
* bytecode/BytecodeList.rb:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* llint/LowLevelInterpreter.asm:

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

5 months agoScrolling state nodes should hold references to GraphicsLayers
simon.fraser@apple.com [Tue, 19 Mar 2019 02:05:23 +0000 (02:05 +0000)]
Scrolling state nodes should hold references to GraphicsLayers
https://bugs.webkit.org/show_bug.cgi?id=195844
<rdar://problem/48949634>

Reviewed by Tim Horton.

GraphicsLayers are refcounted, and the scrolling tree keeps GraphicsLayer pointers,
so for safely the scrolling tree should store RefPtr<GraphicsLayer> instead.

I removed the union (since it would be weird with a RefPtr and raw pointer). This code
should probably use WTF::Variant<> in future.

* page/scrolling/ScrollingStateNode.h:
(WebCore::LayerRepresentation::LayerRepresentation):
(WebCore::LayerRepresentation::operator GraphicsLayer* const):

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

5 months agoUnreviewed, rolling out r243092 and r243096.
commit-queue@webkit.org [Tue, 19 Mar 2019 01:58:05 +0000 (01:58 +0000)]
Unreviewed, rolling out r243092 and r243096.
https://bugs.webkit.org/show_bug.cgi?id=195926

Caused assertions in tests (Requested by smfr on #webkit).

Reverted changesets:

"Layer with no backing store should still hit-test over a
scroller"
https://bugs.webkit.org/show_bug.cgi?id=195378
https://trac.webkit.org/changeset/243092

"Try to fix Windows build."
https://trac.webkit.org/changeset/243096

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

5 months agoSmart Insert for paragraphs.
megan_gardner@apple.com [Tue, 19 Mar 2019 01:56:39 +0000 (01:56 +0000)]
Smart Insert for paragraphs.
https://bugs.webkit.org/show_bug.cgi?id=194880

Reviewed by Ryosuke Niwa.

Source/WebCore:

Add additional newlines to maintain spacing around paragraphs.

Tests: editing/pasteboard/smart-paste-paragraph-001.html
       editing/pasteboard/smart-paste-paragraph-002.html
       editing/pasteboard/smart-paste-paragraph-003.html
       editing/pasteboard/smart-paste-paragraph-004.html

* dom/Document.cpp:
(WebCore::Document::editingBehavior const):
* dom/Document.h:

Expose editing behaviour through document so that is can be access from the selection commands
and allow the editing behaviour to be used.

* editing/CompositeEditCommand.h:
* editing/EditingBehavior.h:
(WebCore::EditingBehavior::shouldSmartInsertDeleteParagraphs const):

Only have editing insert paragraphs on iOS and in editing elements that support multiple lines.

* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::doApply):
(WebCore::ReplaceSelectionCommand::shouldPerformSmartParagraphReplace const):
(WebCore::ReplaceSelectionCommand::addNewLinesForSmartReplace):
* editing/ReplaceSelectionCommand.h:

Add addititional newlines when pasting full paragraphs to maintian two newlines between paragraphs
if that is what the original document had. If there are not multiple lines between paragraphs, do not
add additional new lines.

LayoutTests:

List tests are covered by paste-list-00*.
Table tests are covered by paste-table-00* and paste-into-table-*.

* editing/pasteboard/smart-paste-paragraph-001-expected.txt: Added.
* editing/pasteboard/smart-paste-paragraph-001.html: Added.
* editing/pasteboard/smart-paste-paragraph-002-expected.txt: Added.
* editing/pasteboard/smart-paste-paragraph-002.html: Added.
* editing/pasteboard/smart-paste-paragraph-003-expected.txt: Added.
* editing/pasteboard/smart-paste-paragraph-003.html: Added.
* editing/pasteboard/smart-paste-paragraph-004-expected.txt: Added.
* editing/pasteboard/smart-paste-paragraph-004.html: Added.
* platform/ios-wk2/editing/pasteboard/paste-text-016-expected.txt:
This needed to be rebaselined to match the new behaviour.
* platform/ios/editing/pasteboard/smart-paste-paragraph-001-expected.txt: Added.
* platform/ios/editing/pasteboard/smart-paste-paragraph-002-expected.txt: Added.
* platform/ios/editing/pasteboard/smart-paste-paragraph-003-expected.txt: Added.
* platform/ios/editing/pasteboard/smart-paste-paragraph-004-expected.txt: Added.

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

5 months agoFix a bug from r226303 that latest build time is not correctly calculated.
dewei_zhu@apple.com [Tue, 19 Mar 2019 01:55:13 +0000 (01:55 +0000)]
Fix a bug from r226303 that latest build time is not correctly calculated.
https://bugs.webkit.org/show_bug.cgi?id=195912

Reviewed by Ryosuke Niwa.

Time series is ordered by revision time which does not grantee the build time is
monotonically increasing.

* public/v3/pages/test-freshness-page.js: Use the latest build time instead of the build time of
last point on the chart.

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

5 months agoReduce the size of Node::deref by eliminating an explicit parentNode check
rniwa@webkit.org [Tue, 19 Mar 2019 01:32:04 +0000 (01:32 +0000)]
Reduce the size of Node::deref by eliminating an explicit parentNode check
https://bugs.webkit.org/show_bug.cgi?id=195776

Reviewed by Geoffrey Garen.

This patch eliminates the nullity check of m_parentNode in Node::deref as well as the store to
m_refCount in the case of invoking Node::removedLastRef() as done for RefCounted in r30042.
Together, this patch shrinks WebCore's size by 46KB or ~0.7%.

To do this, we take we take a similar approach as WTF::String by using the lowest bit of m_refCount
to indicate whether a node has a parent or not. Regular ref-counting is done on the upper 31 bits.
Node::setParentNode updates this flag, and Node::deref() would only `delete this` if m_refCount
is identically equal to 0.

For a Document, we set m_refCounted to 0 before in the case of non-zero m_referencingNodeCount
since decrementReferencingNodeCount needs to be able to tell if there is an outstanding Ref/RefPtr
or not when m_referencingNodeCount becomes 0.

No new tests since there should be no behavioral change.

* dom/Document.cpp:
(WebCore::Document::removedLastRef):
* dom/Document.h:
(WebCore::Document::decrementReferencingNodeCount):
* dom/Node.cpp:
(WebCore::Node::Node): Moved the initialization of m_refCount to the member variable declaration.
(WebCore::Node::~Node):
(WebCore::Node::removedLastRef):
* dom/Node.h:
(WebCore::Node): Changed the type of m_refCount from signed int to uint32_t. It was changed from
unsigned int to signed int back in r11492 but I don't think the signedness is needed.
(WebCore::Node::ref): Increment the ref count by 2 (upper 31-bit).
(WebCore::Node::deref): Implemented the optimization. This is what shrinks the WebCore binary size.
(WebCore::Node::hasOneRef const):
(WebCore::Node::refCount const): Ignore the lowest bit. Without this fix, the optimization in
replaceChildrenWithFragment to avoid replacing the text node is disabled whenever there is a parent.
(WebCore::Node::setParentNode): Sets the lowest bit to 1 if the node has a parent and 0 otherwise.

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

5 months agoRemove the SVG property tear off objects for SVGAnimatedBoolean
commit-queue@webkit.org [Tue, 19 Mar 2019 00:39:41 +0000 (00:39 +0000)]
Remove the SVG property tear off objects for SVGAnimatedBoolean
https://bugs.webkit.org/show_bug.cgi?id=195862

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

-- SVGAnimatedBoolean will be defined as SVGAnimatedPrimitiveProperty<bool>.
-- SVGAnimatedBooleanAccessor is added to access a member of this type.
-- A function registerProperty() is added to SVGPropertyOwnerRegistry
   to register this type.
-- SVGAnimatedBooleanAnimator is added to animate a member of this type.
-- SVGAnimationBooleanFunction is added to handle the progress of this
   new type over a period of time.

SVGAnimationDiscreteFunction is the base class of SVGAnimationBooleanFunction.
It will be the base class of all the discrete animation function types:
string, bool, enum and PreserveAspectRatio types.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGAnimationElement.h:
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGClipPathElement.h:
* svg/SVGCursorElement.h:
* svg/SVGDefsElement.h:
* svg/SVGExternalResourcesRequired.cpp:
(WebCore::SVGExternalResourcesRequired::SVGExternalResourcesRequired):
(WebCore::SVGExternalResourcesRequired::parseAttribute):
(WebCore::SVGExternalResourcesRequired::registerAttributes): Deleted.
* svg/SVGExternalResourcesRequired.h:
(WebCore::SVGExternalResourcesRequired::externalResourcesRequired const):
(WebCore::SVGExternalResourcesRequired::externalResourcesRequiredAnimated):
(WebCore::SVGExternalResourcesRequired::setExternalResourcesRequired): Deleted.
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
(WebCore::SVGFEConvolveMatrixElement::registerAttributes):
(WebCore::SVGFEConvolveMatrixElement::parseAttribute):
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGFEImageElement.h:
* svg/SVGFontElement.h:
* svg/SVGForeignObjectElement.h:
* svg/SVGGElement.h:
* svg/SVGGradientElement.h:
* svg/SVGMPathElement.h:
* svg/SVGMarkerElement.h:
* svg/SVGMaskElement.h:
* svg/SVGPathElement.h:
* svg/SVGPatternElement.h:
* svg/SVGRectElement.h:
* svg/SVGSVGElement.h:
* svg/SVGScriptElement.h:
* svg/SVGSwitchElement.h:
* svg/SVGSymbolElement.h:
* svg/SVGTextContentElement.h:
* svg/SVGUseElement.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimationDiscreteFunction.h: Added.
(WebCore::SVGAnimationDiscreteFunction::SVGAnimationDiscreteFunction):
(WebCore::SVGAnimationDiscreteFunction::progress):
* svg/properties/SVGAnimationDiscreteFunctionImpl.h: Added.
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):

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

5 months agoCrash when reloading test with async overflow scrolling
simon.fraser@apple.com [Tue, 19 Mar 2019 00:33:16 +0000 (00:33 +0000)]
Crash when reloading test with async overflow scrolling
https://bugs.webkit.org/show_bug.cgi?id=195629
<rdar://problem/48814045>

Reviewed by Antoine Quint.

RenderLayerCompositor::removeFromScrollCoordinatedLayers needs to pass the Positioning
bit to make sure we remove RenderLayers added m_scrollingNodeToLayerMap for Positioning
scrolling nodes.

Fixes crashes seen in compositing/clipping/border-radius-async-overflow-non-stacking.html
and scrollingcoordinator/scrolling-tree/remove-coordinated-frame.html.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::~RenderLayerBacking):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):

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

5 months agoWeb Inspector: Timeline: lazily create the agent
drousso@apple.com [Tue, 19 Mar 2019 00:31:24 +0000 (00:31 +0000)]
Web Inspector: Timeline: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195865
<rdar://problem/48965403>

Reviewed by Joseph Pecoraro.

No change in functionality.

* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
(WebCore::InspectorTimelineAgent::toggleScriptProfilerInstrument):
(WebCore::InspectorTimelineAgent::toggleHeapInstrument):
(WebCore::InspectorTimelineAgent::setFrameIdentifier):

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::startProfiling):
(WebCore::InspectorInstrumentation::stopProfiling):
(WebCore::InspectorInstrumentation::didRequestAnimationFrame):
(WebCore::InspectorInstrumentation::didCancelAnimationFrame):

* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::inspectorScriptProfilerAgent const): Added.
(WebCore::InstrumentingAgents::setInspectorScriptProfilerAgent): Added.
* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):

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

5 months agoCut down on use of StringBuffer, possibly leading toward removing it entirely
darin@apple.com [Tue, 19 Mar 2019 00:27:10 +0000 (00:27 +0000)]
Cut down on use of StringBuffer, possibly leading toward removing it entirely
https://bugs.webkit.org/show_bug.cgi?id=195870

Reviewed by Daniel Bates.

Source/WebCore:

* dom/Document.cpp:
(WebCore::canonicalizedTitle): Fixed all the problems mentioned in "FIXME".
Made this a single function rather than a function template. Switch to
StringBuilder instead of StringBuffer. Return the original string if the
canonicalize operation doesn't change anything.
(WebCore::Document::updateTitle): Updated for the change above.

* platform/Length.cpp:
(WebCore::newCoordsArray): Use createUninitialized instead of StringBuffer.
Also got rid of unneeded use of upconvertedCharacters on a temporary string
that we explicitly created with 16-bit characters. The performance of this
function could be considerably simplified by not copying the original string
at all, but didn't do that at this time.

* platform/text/TextCodecUTF16.cpp:
(WebCore::TextCodecUTF16::decode): Use createUninitialized instead of
StringBuffer. Also renamed numChars to numCodeUnits to both switch to complete
words and to be slightly more accurate.

* rendering/RenderText.cpp:
(WebCore::convertNoBreakSpace): Added.
(WebCore::capitalize): Use Vector instead of StringBuffer. Simplify code by
using convertNoBreakSpace function. Removed code that was using StringImpl
directly for a tiny speed boost; if we want to optimize the performance of
this function we would need to do more than that. Return the original string
if it happens to already be capitalized.

Source/WTF:

* wtf/URL.cpp: Remove a now-inaccurate comment mentioning StringBuffer.

* wtf/text/StringView.cpp:
(WTF::convertASCIICase): Use createUninitialized instead of StringBuffer.

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

5 months agoUnreviewed. Rename JetStream directory to JetStream1.1
sbarati@apple.com [Tue, 19 Mar 2019 00:10:30 +0000 (00:10 +0000)]
Unreviewed. Rename JetStream directory to JetStream1.1

* JetStream: Removed.
* JetStream1.1: Copied from Websites/browserbench.org/JetStream.

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

5 months agoWKWebView.GetContentsShouldReturnAttributedString is crashing on iOS Simulator.
timothy@apple.com [Mon, 18 Mar 2019 23:54:38 +0000 (23:54 +0000)]
WKWebView.GetContentsShouldReturnAttributedString is crashing on iOS Simulator.
https://bugs.webkit.org/show_bug.cgi?id=195916

Reviewed by Tim Horton.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj: Make ColorIOS.h a private header.
* platform/ios/ColorIOS.h: Export colorFromUIColor.

Source/WebKit:

Add direct support for UIColor so it does not try to use the NSSecureCoding path.
This avoids needs to list the classes when decoding the attributes NSDictionary
and matches the macOS NSColor encoder/decoder.

* Shared/Cocoa/ArgumentCodersCocoa.mm:
(IPC::typeFromObject):
(IPC::encodeColorInternal):
(IPC::decodeColorInternal):
(IPC::encodeObject):
(IPC::decodeObject):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm:
(TEST(WKWebView, GetContentsShouldReturnAttributedString): Fix iOS code path to pass.

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

5 months ago[WTF] Remove redundant std::move in StringConcatenate
commit-queue@webkit.org [Mon, 18 Mar 2019 23:51:42 +0000 (23:51 +0000)]
[WTF] Remove redundant std::move in StringConcatenate
https://bugs.webkit.org/show_bug.cgi?id=195798

Patch by Xan Lopez <xan@igalia.com> on 2019-03-18
Reviewed by Darin Adler.

Remove redundant calls to WTFMove in return values for this
method. C++ will already do an implicit move here since we are
returning a local value where copy/move elision is not applicable.

* wtf/text/StringConcatenate.h:
(WTF::tryMakeStringFromAdapters):

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

5 months agoDefine the type of SVGPropertyOwnerRegistry for all SVG elements
commit-queue@webkit.org [Mon, 18 Mar 2019 23:33:10 +0000 (23:33 +0000)]
Define the type of SVGPropertyOwnerRegistry for all SVG elements
https://bugs.webkit.org/show_bug.cgi?id=195859

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

SVGPropertyOwnerRegistry will eventually replace SVGAttributeOwnerProxyImpl.

* svg/SVGAElement.h:
* svg/SVGAltGlyphElement.h:
* svg/SVGAnimationElement.h:
* svg/SVGCircleElement.h:
* svg/SVGClipPathElement.h:
* svg/SVGComponentTransferFunctionElement.h:
(WebCore::SVGComponentTransferFunctionElement::attributeRegistry):
(WebCore::SVGComponentTransferFunctionElement::isKnownAttribute):
* svg/SVGCursorElement.h:
* svg/SVGDefsElement.h:
* svg/SVGElement.h:
* svg/SVGEllipseElement.h:
* svg/SVGExternalResourcesRequired.h:
(WebCore::SVGExternalResourcesRequired::isKnownAttribute):
* svg/SVGFEBlendElement.h:
* svg/SVGFEColorMatrixElement.h:
* svg/SVGFEComponentTransferElement.h:
* svg/SVGFECompositeElement.h:
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGFEDiffuseLightingElement.h:
* svg/SVGFEDisplacementMapElement.h:
* svg/SVGFEDropShadowElement.h:
* svg/SVGFEGaussianBlurElement.h:
* svg/SVGFEImageElement.h:
* svg/SVGFELightElement.h:
(WebCore::SVGFELightElement::attributeRegistry):
(WebCore::SVGFELightElement::isKnownAttribute):
* svg/SVGFEMergeNodeElement.h:
* svg/SVGFEMorphologyElement.h:
* svg/SVGFEOffsetElement.h:
* svg/SVGFESpecularLightingElement.h:
* svg/SVGFETileElement.h:
* svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::svgAttributeChanged):
* svg/SVGFETurbulenceElement.h:
* svg/SVGFilterElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::isKnownAttribute):
* svg/SVGFitToViewBox.h:
(WebCore::SVGFitToViewBox::isKnownAttribute):
* svg/SVGFontElement.h:
* svg/SVGForeignObjectElement.h:
* svg/SVGGElement.h:
* svg/SVGGeometryElement.h:
(WebCore::SVGGeometryElement::isKnownAttribute):
* svg/SVGGlyphRefElement.h:
* svg/SVGGradientElement.h:
(WebCore::SVGGradientElement::isKnownAttribute):
* svg/SVGGraphicsElement.h:
(WebCore::SVGGraphicsElement::isKnownAttribute):
* svg/SVGImageElement.h:
* svg/SVGLineElement.h:
* svg/SVGLinearGradientElement.h:
* svg/SVGMPathElement.h:
* svg/SVGMarkerElement.h:
* svg/SVGMaskElement.h:
* svg/SVGPathElement.h:
* svg/SVGPatternElement.h:
* svg/SVGPolyElement.h:
(WebCore::SVGPolyElement::attributeRegistry):
(WebCore::SVGPolyElement::isKnownAttribute):
* svg/SVGRadialGradientElement.h:
* svg/SVGRectElement.h:
* svg/SVGSVGElement.h:
* svg/SVGScriptElement.h:
* svg/SVGStopElement.h:
* svg/SVGSwitchElement.h:
* svg/SVGSymbolElement.h:
* svg/SVGTRefElement.h:
* svg/SVGTests.h:
* svg/SVGTextContentElement.h:
(WebCore::SVGTextContentElement::isKnownAttribute):
* svg/SVGTextPathElement.h:
* svg/SVGTextPositioningElement.h:
(WebCore::SVGTextPositioningElement::isKnownAttribute):
* svg/SVGURIReference.h:
* svg/SVGUseElement.h:
* svg/SVGViewElement.h:
* svg/SVGViewSpec.h:
* svg/SVGZoomAndPan.cpp:
(WebCore::SVGZoomAndPan::parseZoomAndPan):
(WebCore::SVGZoomAndPan::parseAttribute):
(WebCore::SVGZoomAndPan::SVGZoomAndPan): Deleted.
(WebCore::SVGZoomAndPan::registerAttributes): Deleted.
* svg/SVGZoomAndPan.h:
(WebCore::SVGZoomAndPan::zoomAndPan const):
(WebCore::SVGZoomAndPan::setZoomAndPan):
(WebCore::SVGZoomAndPan::reset):
(WebCore::SVGZoomAndPan::attributeRegistry): Deleted.
(WebCore::SVGZoomAndPan::isKnownAttribute): Deleted.

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

5 months agoAdd new NSAttributedString API for converting HTML.
timothy@apple.com [Mon, 18 Mar 2019 23:32:20 +0000 (23:32 +0000)]
Add new NSAttributedString API for converting HTML.
https://bugs.webkit.org/show_bug.cgi?id=195636
rdar://problem/45055697

Reviewed by Tim Horton.

Source/WebCore:

* en.lproj/Localizable.strings: Updated.

Source/WebKit:

* Platform/spi/ios/UIKitSPI.h:
* SourcesCocoa.txt:
* UIProcess/API/Cocoa/NSAttributedString.h: Added.
* UIProcess/API/Cocoa/NSAttributedString.mm: Added.
(-[_WKAttributedStringNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[_WKAttributedStringNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
(-[_WKAttributedStringNavigationDelegate webView:didFailNavigation:withError:]):
(-[_WKAttributedStringNavigationDelegate webView:didFinishNavigation:]):
(+[_WKAttributedStringWebViewCache cache]):
(+[_WKAttributedStringWebViewCache configuration]):
(+[_WKAttributedStringWebViewCache clearConfiguration]):
(+[_WKAttributedStringWebViewCache retrieveOrCreateWebView]):
(+[_WKAttributedStringWebViewCache cacheWebView:]):
(+[_WKAttributedStringWebViewCache resetPurgeDelay]):
(+[_WKAttributedStringWebViewCache purgeSingleWebView]):
(+[_WKAttributedStringWebViewCache purgeAllWebViews]):
(+[NSAttributedString _loadFromHTMLWithOptions:contentLoader:completionHandler:]):
(+[NSAttributedString loadFromHTMLWithRequest:options:completionHandler:]):
(+[NSAttributedString loadFromHTMLWithFileURL:options:completionHandler:]):
(+[NSAttributedString loadFromHTMLWithString:options:completionHandler:]):
(+[NSAttributedString loadFromHTMLWithData:options:completionHandler:]):
* UIProcess/API/Cocoa/NSAttributedStringPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/WKErrorInternal.h.
* UIProcess/API/Cocoa/WKError.h:
* UIProcess/API/Cocoa/WKError.mm:
(localizedDescriptionForErrorCode):
(createNSError):
* UIProcess/API/Cocoa/WKErrorInternal.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::getContentsAsAttributedString):

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

5 months agoCall transition and animation callbacks on non-composited renderers too.
zalan@apple.com [Mon, 18 Mar 2019 22:45:47 +0000 (22:45 +0000)]
Call transition and animation callbacks on non-composited renderers too.
https://bugs.webkit.org/show_bug.cgi?id=195907

Reviewed by Simon Fraser.

These callbacks are not composited specific functions.

* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::freezeAtTime):
(WebCore::AnimationBase::compositedRenderer const): Deleted.
* page/animation/AnimationBase.h:
* page/animation/ImplicitAnimation.cpp:
(WebCore::ImplicitAnimation::startAnimation):
(WebCore::ImplicitAnimation::pauseAnimation):
(WebCore::ImplicitAnimation::endAnimation):
* page/animation/KeyframeAnimation.cpp:
(WebCore::KeyframeAnimation::startAnimation):
(WebCore::KeyframeAnimation::pauseAnimation):
(WebCore::KeyframeAnimation::endAnimation):
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::startTransition):
(WebCore::RenderLayerModelObject::transitionPaused):
(WebCore::RenderLayerModelObject::transitionFinished):
(WebCore::RenderLayerModelObject::startAnimation):
(WebCore::RenderLayerModelObject::animationPaused):
(WebCore::RenderLayerModelObject::animationSeeked):
(WebCore::RenderLayerModelObject::animationFinished):
(WebCore::RenderLayerModelObject::suspendAnimations):

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

5 months agoAdd a secondary e-mail address for Fujii Hironori to make tools happier.
ap@apple.com [Mon, 18 Mar 2019 22:42:11 +0000 (22:42 +0000)]
Add a secondary e-mail address for Fujii Hironori to make tools happier.

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

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

5 months agoImplement DownloadMonitor to prevent long-running slow downloads from background...
commit-queue@webkit.org [Mon, 18 Mar 2019 22:38:55 +0000 (22:38 +0000)]
Implement DownloadMonitor to prevent long-running slow downloads from background apps
https://bugs.webkit.org/show_bug.cgi?id=195785

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

Source/WebKit:

This is similar to what was updated in <rdar://problem/42677685> but for WebKit Downloads.
To test it I implemented a throttled TCP server, SPI to speed up DownloadMonitor's timer,
and SPI to synthesize the application going into the background and foreground, which
NSNotificationCenter does on iOS.

* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::didReceiveData):
(WebKit::Download::didFinish):
(WebKit::Download::didFail):
(WebKit::Download::didCancel):
* NetworkProcess/Downloads/Download.h:
(WebKit::Download::applicationEnteredBackground):
(WebKit::Download::applicationEnteredForeground):
(WebKit::Download::manager const):
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::downloadFinished):
(WebKit::DownloadManager::applicationDidEnterBackground):
(WebKit::DownloadManager::applicationWillEnterForeground):
* NetworkProcess/Downloads/DownloadManager.h:
* NetworkProcess/Downloads/DownloadMap.cpp:
(WebKit::DownloadMap::values):
* NetworkProcess/Downloads/DownloadMap.h:
* NetworkProcess/Downloads/DownloadMonitor.cpp: Added.
(WebKit::operator _kbps):
(WebKit::timeUntilNextInterval):
(WebKit::DownloadMonitor::DownloadMonitor):
(WebKit::DownloadMonitor::measuredThroughputRate const):
(WebKit::DownloadMonitor::downloadReceivedBytes):
(WebKit::DownloadMonitor::applicationEnteredForeground):
(WebKit::DownloadMonitor::applicationEnteredBackground):
(WebKit::DownloadMonitor::speedMultiplier const):
(WebKit::DownloadMonitor::timerFired):
* NetworkProcess/Downloads/DownloadMonitor.h: Added.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::applicationDidEnterBackground):
(WebKit::NetworkProcess::applicationWillEnterForeground):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* Sources.txt:
* SourcesCocoa.txt:
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextDownloadURLRequest):
(WKContextResumeDownload):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _synthesizeAppIsBackground:]):
(-[WKProcessPool _downloadURLRequest:originatingWebView:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration downloadMonitorSpeedMultiplier]):
(-[_WKProcessPoolConfiguration setDownloadMonitorSpeedMultiplier:]):
* UIProcess/Cocoa/DownloadProxyMapCocoa.mm: Added.
(WebKit::DownloadProxyMap::platformCreate):
(WebKit::DownloadProxyMap::platformDestroy):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::didFinish):
(WebKit::DownloadProxy::didFail):
(WebKit::DownloadProxy::didCancel):
* UIProcess/Downloads/DownloadProxyMap.cpp:
(WebKit::DownloadProxyMap::DownloadProxyMap):
(WebKit::DownloadProxyMap::~DownloadProxyMap):
(WebKit::DownloadProxyMap::platformCreate):
(WebKit::DownloadProxyMap::platformDestroy):
(WebKit::DownloadProxyMap::applicationDidEnterBackground):
(WebKit::DownloadProxyMap::applicationWillEnterForeground):
(WebKit::DownloadProxyMap::createDownloadProxy):
(WebKit::DownloadProxyMap::downloadFinished):
* UIProcess/Downloads/DownloadProxyMap.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::synthesizeAppIsBackground):
(WebKit::NetworkProcessProxy::createDownloadProxy):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::handleDownloadRequest):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::download):
(WebKit::WebProcessPool::resumeDownload):
(WebKit::WebProcessPool::createDownloadProxy):
(WebKit::WebProcessPool::synthesizeAppIsBackground):
* UIProcess/WebProcessPool.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::handleDownloadRequest):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::handleDownloadRequest):
* WebKit.xcodeproj/project.pbxproj:

Tools:

* TestWebKitAPI/TCPServer.cpp: Added.
(TestWebKitAPI::TCPServer::TCPServer):
(TestWebKitAPI::TCPServer::~TCPServer):
(TestWebKitAPI::TCPServer::socketBindListen):
(TestWebKitAPI::TCPServer::waitForAndReplyToRequests):
* TestWebKitAPI/TCPServer.h: Added.
(TestWebKitAPI::TCPServer::port const):
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(-[DownloadMonitorTestDelegate _downloadDidStart:]):
(-[DownloadMonitorTestDelegate _downloadDidCancel:]):
(-[DownloadMonitorTestDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[DownloadMonitorTestDelegate _download:didReceiveData:]):
(TestWebKitAPI::respondSlowly):
(TestWebKitAPI::webViewWithDownloadMonitorSpeedMultiplier):
(TestWebKitAPI::downloadAtRate):
(TestWebKitAPI::TEST):

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

5 months agoAdd experimental "alphaChannel" property to VideoConfiguration
jer.noble@apple.com [Mon, 18 Mar 2019 22:29:55 +0000 (22:29 +0000)]
Add experimental "alphaChannel" property to VideoConfiguration
https://bugs.webkit.org/show_bug.cgi?id=195853

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/mediacapabilities/mock-decodingInfo-alphaChannel.html

Add a new, experimental addition to Media Capabilities to allow pages to query for
alpha channel support.

* Modules/mediacapabilities/MediaCapabilities.cpp:
(WebCore::MediaCapabilities::decodingInfo):
* Modules/mediacapabilities/MediaCapabilities.h:
* Modules/mediacapabilities/MediaCapabilities.idl:
* Modules/mediacapabilities/VideoConfiguration.idl:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/cocoa/VideoToolboxSoftLink.cpp:
* platform/cocoa/VideoToolboxSoftLink.h:
* platform/graphics/cocoa/HEVCUtilitiesCocoa.h:
* platform/graphics/cocoa/HEVCUtilitiesCocoa.mm: Renamed from Source/WebCore/platform/graphics/cocoa/HEVCUtilitiesCocoa.cpp.
(WebCore::validateHEVCParameters):
* platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:
(WebCore::createMediaPlayerDecodingConfigurationCocoa):
* platform/mediacapabilities/VideoConfiguration.h:
* platform/mock/MediaEngineConfigurationFactoryMock.cpp:
(WebCore::canDecodeMedia):
(WebCore::canEncodeMedia):

LayoutTests:

* media/mediacapabilities/mock-decodingInfo-alphaChannel-expected.txt: Added.
* media/mediacapabilities/mock-decodingInfo-alphaChannel.html: Added.

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

5 months agoRemove unused webkitEditableContentChanged event
rniwa@webkit.org [Mon, 18 Mar 2019 21:57:54 +0000 (21:57 +0000)]
Remove unused webkitEditableContentChanged event
https://bugs.webkit.org/show_bug.cgi?id=195909

Reviewed by Wenson Hsieh.

Removed webkitEditableContentChanged event which is no longer used after r206944.

Note that only WebKit's C++ code can fire events in TextControlInnerElements
since the element is an implementation detail of input and textarea elements.

* dom/EventNames.h:
* html/shadow/TextControlInnerElements.cpp:
(WebCore::TextControlInnerTextElement::defaultEventHandler):

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

5 months ago[WHLSL] Hook up the compiler to our WebGPU implementation
mmaxfield@apple.com [Mon, 18 Mar 2019 21:30:58 +0000 (21:30 +0000)]
[WHLSL] Hook up the compiler to our WebGPU implementation
https://bugs.webkit.org/show_bug.cgi?id=195509

Unreviewed.

Update after r243091.

Source/WebCore:

* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetWHLSLFunctionsForPipelineDescriptor):

LayoutTests:

* webgpu/whlsl.html:

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

5 months agoREGRESSION(r236862): early frame decoupling leaves JSC ArrayBuffer objects lingering
cdumez@apple.com [Mon, 18 Mar 2019 21:27:09 +0000 (21:27 +0000)]
REGRESSION(r236862): early frame decoupling leaves JSC ArrayBuffer objects lingering
https://bugs.webkit.org/show_bug.cgi?id=195322

Reviewed by Ryosuke Niwa.

Since r236862, DOMWindow objects get disconnected from their Frame object as soon as
their iframe element gets removed from the document. Previously, DOMWindow was a
FrameDestructionObserver and would stay connected to its frame until the frame died.

This means that some of the work that we were doing in DOMWindow::frameDestroyed() and
Document::willDetachPage() no longer happens for subframe windows because they get
disconnected from their frame because they get a chance to get such notifications.
To address this issue, we now also do this work in DOMWindow::willDetachDocumentFromFrame()
which gets called when the iframe gets removed from the document and the document / window
get disconnected from the Frame element.

No new tests, verified locally that the leak is gone on JetStream.

* page/DOMWindow.cpp:
(WebCore::DOMWindow::willDetachDocumentFromFrame):

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

5 months agoMove animation and transition functions from RenderBoxModelObject to RenderElement
zalan@apple.com [Mon, 18 Mar 2019 21:25:37 +0000 (21:25 +0000)]
Move animation and transition functions from RenderBoxModelObject to RenderElement
https://bugs.webkit.org/show_bug.cgi?id=195903

Reviewed by Simon Fraser.

Transitions and animations do not require RenderBoxModelObject. Move these functions to RenderElement and override them at RenderLayerModelObject to support
composition related callbacks.

* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::compositedRenderer const):
* page/animation/AnimationBase.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::startTransition): Deleted.
(WebCore::RenderBoxModelObject::transitionPaused): Deleted.
(WebCore::RenderBoxModelObject::transitionFinished): Deleted.
(WebCore::RenderBoxModelObject::startAnimation): Deleted.
(WebCore::RenderBoxModelObject::animationPaused): Deleted.
(WebCore::RenderBoxModelObject::animationSeeked): Deleted.
(WebCore::RenderBoxModelObject::animationFinished): Deleted.
(WebCore::RenderBoxModelObject::suspendAnimations): Deleted.
* rendering/RenderBoxModelObject.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::startTransition):
(WebCore::RenderElement::transitionPaused):
(WebCore::RenderElement::transitionFinished):
(WebCore::RenderElement::startAnimation):
(WebCore::RenderElement::animationPaused):
(WebCore::RenderElement::animationSeeked):
(WebCore::RenderElement::animationFinished):
(WebCore::RenderElement::suspendAnimations):
* rendering/RenderElement.h:

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

5 months ago[iOS] Native selection views sometimes appear in hidden editable areas after losing...
wenson_hsieh@apple.com [Mon, 18 Mar 2019 21:22:53 +0000 (21:22 +0000)]
[iOS] Native selection views sometimes appear in hidden editable areas after losing focus
https://bugs.webkit.org/show_bug.cgi?id=195894
<rdar://problem/48849989>

Reviewed by Tim Horton.

Source/WebKit:

On certain websites, focus is moved away from an editable element while maintaining a selection inside the
editable element. In the case where the editable element is hidden, this currently breaks our text interaction
suppression heuristics, which suppress text selection gestures and overlays inside focused hidden editable
elements. To fix this, we refactor our text interaction suppression heuristics, such that they are not dependent
on an editable element being focused. See changes below for more details.

Test: editing/selection/ios/hide-selection-in-non-focused-element.html

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

Rename elementIsTransparentOrFullyClipped to editableRootIsTransparentOrFullyClipped, and additionally compute
this flag by checking whether the root editable element containing the selection is transparent or clipped,
instead of using the currently focused element.

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

Remove the elementIsTransparentOrFullyClipped flag from FocusedElementInformation (see below for more detail).

* UIProcess/ios/WKContentViewInteraction.h:

Rename FocusedElementIsTransparentOrFullyClipped to EditableRootIsTransparentOrFullyClipped.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _zoomToRevealFocusedElement]):
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

Remove logic that currently uses state on FocusedElementInformation to determine whether to suppress platform
text interactions; instead, only use EditorState to make this determination. This logic was originally added in
the initial implementation of the text interaction suppression heuristic as a way to begin suppressing text
selection state before zooming to reveal the focused element; however, since we now zoom to reveal the text
selection when focusing editable elements, zooming is deferred until the next complete EditorState update
arrives in the UI process so we don't need to worry about beginning to suppress text interactions prior to this
initial editor state update.

(-[WKContentView _elementDidBlur]):
(-[WKContentView _updateSelectionAssistantSuppressionState]):

Add a helper method that updates text selection suppression state using the current EditorState.

(-[WKContentView _selectionChanged]):
(-[WKContentView _updateChangedSelection:]):

Always update text suppression state when receiving an EditorState, instead of only doing so when processing a
text selection gesture.

(-[WKContentView _startSuppressingSelectionAssistantForReason:]):

Renamed from _beginSuppressingSelectionAssistantForReason:, to better match "start/end" terminology of
_endSuppressingSelectionAssistantForReason:.

(-[WKContentView dropInteraction:performDrop:]):
(-[WKContentView _beginSuppressingSelectionAssistantForReason:]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::editorStateChanged):

Ensure that we run logic to zoom to the focused element *after* updating text selection suppression state, so we
don't erroneously zoom to reveal hidden editable elements.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::platformEditorState const):
(WebKit::WebPage::getFocusedElementInformation):

LayoutTests:

Add a test to verify that moving focus away from a hidden editable element doesn't cause platform selection
views in the element to appear. See WebKit ChangeLog for more details.

* editing/selection/ios/hide-selection-in-non-focused-element-expected.txt: Added.
* editing/selection/ios/hide-selection-in-non-focused-element.html: Added.

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

5 months agoAdd a plan file for JetStream 2
sbarati@apple.com [Mon, 18 Mar 2019 21:17:55 +0000 (21:17 +0000)]
Add a plan file for JetStream 2
https://bugs.webkit.org/show_bug.cgi?id=190734

Reviewed by Mark Lam.

PerformanceTests:

Make the delay when starting via run-benchmark longer to allow
the page's animation to finish.

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

Tools:

* Scripts/webkitpy/benchmark_runner/data/plans/jetstream2.plan: Added.

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

5 months agoTry to fix Windows build.
antti@apple.com [Mon, 18 Mar 2019 20:29:03 +0000 (20:29 +0000)]
Try to fix Windows build.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateEventRegion):

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

5 months agoDelay WebProcess launch until a load is triggered in a Web view
cdumez@apple.com [Mon, 18 Mar 2019 20:23:47 +0000 (20:23 +0000)]
Delay WebProcess launch until a load is triggered in a Web view
https://bugs.webkit.org/show_bug.cgi?id=195758
<rdar://problem/48126013>

Reviewed by Geoff Garen.

Source/WebKit:

This is achieved by constructing WebPageProxy objects with a WebProcessProxy that is in
terminated state (because it never launched its process). This is convenient because
it is a state that the WebPageProxy supports, which normally happened by the WebProcess
crashes. When trying to do a load, we were already checking if the WebPageProxy's process
was running (via an isValid() check) and we would re-launch the WebProcess if necessary
by calling reattachToWebProcess(). For clarity, given that this state is no longer
indicating that the WebProcess crashed, I renamed isValid() to hasRunningProcess() and
reattachToWebProcess() to launchProcess().

The reason delaying the WebProcess launch until the first load is useful is because it
allows us to leverage the WebProcessCache given that we now know which registrable
domain is going to be loaded in the process.

This is a progression from a power usage standpoint. When it comes to page load time,
it would be a progression if we found a suitable process in the cache. I do not expect
a performance hit when no process is found in the cache because of process prewarming.

* Shared/API/Cocoa/RemoteObjectRegistry.h:
* Shared/API/Cocoa/RemoteObjectRegistry.mm:
(WebKit::m_launchInitialProcessIfNecessary):
(WebKit::RemoteObjectRegistry::sendInvocation):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _processCacheSize]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _isValid]):
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::willShowJavaScriptDialog):
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::performDictionaryLookupAtLocation):
(WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection):
* UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp:
(WebKit::DrawingAreaProxyCoordinatedGraphics::sendUpdateBackingStoreState):
(WebKit::DrawingAreaProxyCoordinatedGraphics::waitForAndDispatchDidUpdateBackingStoreState):
(WebKit::DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing):
* UIProcess/DrawingAreaProxy.cpp:
(WebKit::DrawingAreaProxy::setViewExposedRect):
(WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
* UIProcess/GeolocationPermissionRequestManagerProxy.cpp:
(WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision):
* UIProcess/InspectorTargetProxy.cpp:
(WebKit::InspectorTargetProxy::connect):
(WebKit::InspectorTargetProxy::disconnect):
(WebKit::InspectorTargetProxy::sendMessageToTargetBackend):
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::sizeDidChange):
(WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
(WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
(WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged):
* UIProcess/ViewGestureController.cpp:
(WebKit::ViewGestureController::ViewGestureController):
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::~WebBackForwardList):
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):
* UIProcess/WebEditCommandProxy.cpp:
(WebKit::WebEditCommandProxy::unapply):
(WebKit::WebEditCommandProxy::reapply):
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::stopLoading const):
* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::WebInspectorProxy):
* UIProcess/WebPageProxy.cpp:
(WebKit::m_resetRecentCrashCountTimer):
(WebKit::WebPageProxy::hasRunningProcess const):
(WebKit::WebPageProxy::setUIClient):
(WebKit::WebPageProxy::setIconLoadingClient):
(WebKit::WebPageProxy::launchProcess):
(WebKit::WebPageProxy::swapToWebProcess):
(WebKit::WebPageProxy::finishAttachingToWebProcess):
(WebKit::WebPageProxy::didAttachToRunningProcess):
(WebKit::WebPageProxy::launchProcessForReload):
(WebKit::WebPageProxy::launchProcessWithItem):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::tryClose):
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
(WebKit::WebPageProxy::stopLoading):
(WebKit::WebPageProxy::reload):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::tryRestoreScrollPosition):
(WebKit::WebPageProxy::setControlledByAutomation):
(WebKit::WebPageProxy::setIndicating):
(WebKit::WebPageProxy::setBackgroundColor):
(WebKit::WebPageProxy::setTopContentInset):
(WebKit::WebPageProxy::setUnderlayColor):
(WebKit::WebPageProxy::viewWillStartLiveResize):
(WebKit::WebPageProxy::viewWillEndLiveResize):
(WebKit::WebPageProxy::dispatchActivityStateChange):
(WebKit::WebPageProxy::layerHostingModeDidChange):
(WebKit::WebPageProxy::waitForDidUpdateActivityState):
(WebKit::WebPageProxy::setInitialFocus):
(WebKit::WebPageProxy::clearSelection):
(WebKit::WebPageProxy::restoreSelectionInFocusedEditableElement):
(WebKit::WebPageProxy::validateCommand):
(WebKit::WebPageProxy::increaseListLevel):
(WebKit::WebPageProxy::decreaseListLevel):
(WebKit::WebPageProxy::changeListType):
(WebKit::WebPageProxy::setBaseWritingDirection):
(WebKit::WebPageProxy::setNeedsFontAttributes):
(WebKit::WebPageProxy::executeEditCommand):
(WebKit::WebPageProxy::requestFontAttributesAtSelectionStart):
(WebKit::WebPageProxy::setEditable):
(WebKit::WebPageProxy::performDragControllerAction):
(WebKit::WebPageProxy::dragEnded):
(WebKit::WebPageProxy::didStartDrag):
(WebKit::WebPageProxy::dragCancelled):
(WebKit::WebPageProxy::handleMouseEvent):
(WebKit::WebPageProxy::processNextQueuedMouseEvent):
(WebKit::WebPageProxy::handleWheelEvent):
(WebKit::WebPageProxy::handleKeyboardEvent):
(WebKit::WebPageProxy::handleGestureEvent):
(WebKit::WebPageProxy::handleTouchEventSynchronously):
(WebKit::WebPageProxy::handleTouchEventAsynchronously):
(WebKit::WebPageProxy::handleTouchEvent):
(WebKit::WebPageProxy::scrollBy):
(WebKit::WebPageProxy::centerSelectionInVisibleArea):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::setUserAgent):
(WebKit::WebPageProxy::resumeActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::suspendActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::setCustomTextEncodingName):
(WebKit::WebPageProxy::setTextZoomFactor):
(WebKit::WebPageProxy::setPageZoomFactor):
(WebKit::WebPageProxy::setPageAndTextZoomFactors):
(WebKit::WebPageProxy::scalePage):
(WebKit::WebPageProxy::scalePageInViewCoordinates):
(WebKit::WebPageProxy::scaleView):
(WebKit::WebPageProxy::windowScreenDidChange):
(WebKit::WebPageProxy::setCustomDeviceScaleFactor):
(WebKit::WebPageProxy::accessibilitySettingsDidChange):
(WebKit::WebPageProxy::updateAccessibilityEventsEnabled):
(WebKit::WebPageProxy::setUseFixedLayout):
(WebKit::WebPageProxy::setFixedLayoutSize):
(WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller):
(WebKit::WebPageProxy::setAlwaysShowsVerticalScroller):
(WebKit::WebPageProxy::listenForLayoutMilestones):
(WebKit::WebPageProxy::setSuppressScrollbarAnimations):
(WebKit::WebPageProxy::setEnableVerticalRubberBanding):
(WebKit::WebPageProxy::setEnableHorizontalRubberBanding):
(WebKit::WebPageProxy::setBackgroundExtendsBeyondPage):
(WebKit::WebPageProxy::setPaginationMode):
(WebKit::WebPageProxy::setPaginationBehavesLikeColumns):
(WebKit::WebPageProxy::setPageLength):
(WebKit::WebPageProxy::setGapBetweenPages):
(WebKit::WebPageProxy::setPaginationLineGridEnabled):
(WebKit::WebPageProxy::countStringMatches):
(WebKit::WebPageProxy::replaceMatches):
(WebKit::WebPageProxy::launchInitialProcessIfNecessary):
(WebKit::WebPageProxy::runJavaScriptInMainFrame):
(WebKit::WebPageProxy::runJavaScriptInMainFrameScriptWorld):
(WebKit::WebPageProxy::getRenderTreeExternalRepresentation):
(WebKit::WebPageProxy::getSourceForFrame):
(WebKit::WebPageProxy::getContentsAsString):
(WebKit::WebPageProxy::getContentsAsAttributedString):
(WebKit::WebPageProxy::getBytecodeProfile):
(WebKit::WebPageProxy::getSamplingProfilerOutput):
(WebKit::WebPageProxy::getContentsAsMHTMLData):
(WebKit::WebPageProxy::getSelectionOrContentsAsString):
(WebKit::WebPageProxy::getSelectionAsWebArchiveData):
(WebKit::WebPageProxy::getMainResourceDataOfFrame):
(WebKit::WebPageProxy::getResourceDataFromFrame):
(WebKit::WebPageProxy::getWebArchiveOfFrame):
(WebKit::WebPageProxy::forceRepaint):
(WebKit::WebPageProxy::preferencesDidChange):
(WebKit::WebPageProxy::setMediaVolume):
(WebKit::WebPageProxy::setMuted):
(WebKit::WebPageProxy::setMediaCaptureEnabled):
(WebKit::WebPageProxy::stopMediaCapture):
(WebKit::WebPageProxy::stopAllMediaPlayback):
(WebKit::WebPageProxy::suspendAllMediaPlayback):
(WebKit::WebPageProxy::resumeAllMediaPlayback):
(WebKit::WebPageProxy::handleMediaEvent):
(WebKit::WebPageProxy::setVolumeOfMediaElement):
(WebKit::WebPageProxy::setMayStartMediaWhenInWindow):
(WebKit::WebPageProxy::didChooseColor):
(WebKit::WebPageProxy::didEndColorPicker):
(WebKit::WebPageProxy::didSelectOption):
(WebKit::WebPageProxy::inspector const):
(WebKit::WebPageProxy::didChooseFilesForOpenPanelWithDisplayStringAndIcon):
(WebKit::WebPageProxy::didChooseFilesForOpenPanel):
(WebKit::WebPageProxy::didCancelForOpenPanel):
(WebKit::WebPageProxy::removeEditCommand):
(WebKit::WebPageProxy::processDidBecomeUnresponsive):
(WebKit::WebPageProxy::processDidBecomeResponsive):
(WebKit::WebPageProxy::processDidTerminate):
(WebKit::WebPageProxy::processWillBecomeSuspended):
(WebKit::WebPageProxy::processWillBecomeForeground):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::setCanRunModal):
(WebKit::WebPageProxy::canRunModal):
(WebKit::WebPageProxy::computePagesForPrinting):
(WebKit::WebPageProxy::drawRectToImage):
(WebKit::WebPageProxy::drawPagesToPDF):
(WebKit::WebPageProxy::drawPagesForPrinting):
(WebKit::WebPageProxy::updateBackingStoreDiscardableState):
(WebKit::WebPageProxy::setViewLayoutSize):
(WebKit::WebPageProxy::setAutoSizingShouldExpandToViewHeight):
(WebKit::WebPageProxy::setViewportSizeForCSSViewportUnits):
(WebKit::WebPageProxy::setComposition):
(WebKit::WebPageProxy::confirmComposition):
(WebKit::WebPageProxy::cancelComposition):
(WebKit::WebPageProxy::setScrollPinningBehavior):
(WebKit::WebPageProxy::setOverlayScrollbarStyle):
(WebKit::WebPageProxy::changeFontAttributes):
(WebKit::WebPageProxy::changeFont):
(WebKit::WebPageProxy::setTextAsync):
(WebKit::WebPageProxy::insertTextAsync):
(WebKit::WebPageProxy::getMarkedRangeAsync):
(WebKit::WebPageProxy::getSelectedRangeAsync):
(WebKit::WebPageProxy::characterIndexForPointAsync):
(WebKit::WebPageProxy::firstRectForCharacterRangeAsync):
(WebKit::WebPageProxy::setCompositionAsync):
(WebKit::WebPageProxy::confirmCompositionAsync):
(WebKit::WebPageProxy::takeSnapshot):
(WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo):
(WebKit::WebPageProxy::setUseSystemAppearance):
(WebKit::WebPageProxy::installActivityStateChangeCompletionHandler):
(WebKit::WebPageProxy::setPlaybackTarget):
(WebKit::WebPageProxy::externalOutputDeviceAvailableDidChange):
(WebKit::WebPageProxy::setShouldPlayToPlaybackTarget):
(WebKit::WebPageProxy::clearWheelEventTestTrigger):
(WebKit::WebPageProxy::callAfterNextPresentationUpdate):
(WebKit::WebPageProxy::setShouldScaleViewToFitDocument):
(WebKit::WebPageProxy::getLoadDecisionForIcon):
(WebKit::WebPageProxy::setResourceCachingDisabled):
(WebKit::WebPageProxy::setUserInterfaceLayoutDirection):
(WebKit::WebPageProxy::effectiveAppearanceDidChange):
(WebKit::WebPageProxy::insertAttachment):
(WebKit::WebPageProxy::updateAttachmentAttributes):
(WebKit::WebPageProxy::getApplicationManifest):
(WebKit::WebPageProxy::textInputContextsInRect):
(WebKit::WebPageProxy::focusTextInputContext):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::maybeShutDown):
* UIProcess/WebProcessProxy.h:
* UIProcess/gstreamer/InstallMissingMediaPluginsPermissionRequest.cpp:
(WebKit::InstallMissingMediaPluginsPermissionRequest::allow):
(WebKit::InstallMissingMediaPluginsPermissionRequest::didEndRequestInstallMissingMediaPlugins):
* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformDetach):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView _webTouchEventsRecognized:]):
(-[WKContentView _hoverGestureRecognizerChanged:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::requestFocusedElementInformation):
(WebKit::WebPageProxy::updateVisibleContentRects):
(WebKit::WebPageProxy::updateStringForFind):
(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
(WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize):
(WebKit::WebPageProxy::setForceAlwaysUserScalable):
(WebKit::WebPageProxy::setMaximumUnobscuredSize):
(WebKit::WebPageProxy::setDeviceOrientation):
(WebKit::WebPageProxy::setOverrideViewportArguments):
(WebKit::WebPageProxy::selectWithGesture):
(WebKit::WebPageProxy::updateSelectionWithTouches):
(WebKit::WebPageProxy::requestAutocorrectionData):
(WebKit::WebPageProxy::applyAutocorrection):
(WebKit::WebPageProxy::selectTextWithGranularityAtPoint):
(WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection):
(WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection):
(WebKit::WebPageProxy::selectPositionAtPoint):
(WebKit::WebPageProxy::beginSelectionInDirection):
(WebKit::WebPageProxy::updateSelectionWithExtentPoint):
(WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
(WebKit::WebPageProxy::requestDictationContext):
(WebKit::WebPageProxy::getSelectionContext):
(WebKit::WebPageProxy::selectWithTwoTouches):
(WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
(WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):
(WebKit::WebPageProxy::moveSelectionByOffset):
(WebKit::WebPageProxy::registerUIProcessAccessibilityTokens):
(WebKit::WebPageProxy::focusNextFocusedElement):
(WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF):
(WebKit::WebPageProxy::requestEvasionRectsAboveSelection):
(WebKit::WebPageProxy::requestDragStart):
(WebKit::WebPageProxy::requestAdditionalItemsForDragSession):
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::sizeDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::viewLayoutSizeDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
(WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::windowAndViewFramesChanged):
(WebKit::WebPageProxy::setMainFrameIsScrollable):
(WebKit::WebPageProxy::insertDictatedTextAsync):
(WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync):
(WebKit::WebPageProxy::fontAtSelection):
(WebKit::WebPageProxy::stringSelectionForPasteboard):
(WebKit::WebPageProxy::dataSelectionForPasteboard):
(WebKit::WebPageProxy::readSelectionFromPasteboard):
(WebKit::WebPageProxy::sendComplexTextInputToPlugin):
(WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
(WebKit::WebPageProxy::registerUIProcessAccessibilityTokens):
(WebKit::WebPageProxy::acceptsFirstMouse):
* UIProcess/win/WebInspectorProxyWin.cpp:
(WebKit::WebInspectorProxy::platformDetach):
* UIProcess/win/WebView.cpp:
(WebKit::WebView::cursorToShow const):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_hostFileDescriptor):

Tools:

Add API test coverage. Also update some existing API tests to not expect
constructing a WKWebView to launch both a WebProcess and a NetworkProcess.

* TestWebKitAPI/Tests/WebKit/NetworkProcessCrashWithPendingConnection.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit/mac/GetBackingScaleFactor.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
* TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
(TEST):
(testDidResignInputElementStrongPasswordAppearanceAfterEvaluatingJavaScript):

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

5 months agoLayer with no backing store should still hit-test over a scroller
antti@apple.com [Mon, 18 Mar 2019 19:42:57 +0000 (19:42 +0000)]
Layer with no backing store should still hit-test over a scroller
https://bugs.webkit.org/show_bug.cgi?id=195378
<rdar://problem/48652078>

Reviewed by Simon Fraser.

Source/WebCore:

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

Move collecting event region from paint to compositing update time.
This solves a number of problems including regions for non-painting layers.

* platform/graphics/GraphicsLayer.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):

Use the existing visibleToHitTesting() helper.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents):

Use flag for event region collecting, don't paint content.

(WebCore::RenderLayer::paintList):

We can bail out immediately if there is no overflow.

(WebCore::RenderLayer::paintForegroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
(WebCore::RenderLayer::collectEventRegionForFragments):

Move to a separate function.

* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):

Update event region on backing configuration update. This is called after anything interesting changes on a sublayer.

(WebCore::RenderLayerBacking::updateEventRegion):
(WebCore::RenderLayerBacking::paintIntoLayer):
* rendering/RenderLayerBacking.h:

Source/WebKit:

* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::makeNode):
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(WebKit::collectDescendantViewsAtPoint):

No need for special WKTiledBackingView, tiled views now have correct event regions.

LayoutTests:

Reorganize the tests a bit and add some new ones.

* fast/scrolling/ios/overflow-scroll-overlap-2-expected.txt:
* fast/scrolling/ios/overflow-scroll-overlap-2.html:
* fast/scrolling/ios/overflow-scroll-overlap-3-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-3.html: Added.
* fast/scrolling/ios/overflow-scroll-overlap-4-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-4.html: Added.
* fast/scrolling/ios/overflow-scroll-overlap.html:
* fast/scrolling/resources/overflow-scroll-overlap.js: Added.
(sleep):
(async.runTest):
(logScroll):
(outputCase):

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

5 months ago[WHLSL] Hook up the compiler to our WebGPU implementation
mmaxfield@apple.com [Mon, 18 Mar 2019 19:23:42 +0000 (19:23 +0000)]
[WHLSL] Hook up the compiler to our WebGPU implementation
https://bugs.webkit.org/show_bug.cgi?id=195509

Reviewed by Dean Jackson.

Source/WebCore:

This represents a collection of changes necessary to compile and run the first WHLSL program in WebKit.

Because WHLSL isn't fully implemented yet, this patch doesn't remove the existing method for supplying
Metal shaders to WebGPU. Instead, it adds a new boolean to WebGPUShaderModuleDescriptor, "isWHLSL" which
causes us to run the WHLSL compiler.

More details below.

Test: webgpu/whlsl.html

* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h: Use raw pointer instead of Optional<std::reference_wrapper>.
(WebCore::WHLSL::AST::CallExpression::setCastData):
(WebCore::WHLSL::AST::CallExpression::isCast):
(WebCore::WHLSL::AST::CallExpression::castReturnType):
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
(WebCore::WHLSL::AST::NativeTypeDeclaration::isAtomic const):
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsAtomic):
(WebCore::WHLSL::AST::NativeTypeDeclaration::name const): Deleted. The parent class already has a name string.
(WebCore::WHLSL::AST::NativeTypeDeclaration::name): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
(WebCore::WHLSL::AST::TypeReference::cloneTypeReference const): When cloning a type reference, make sure to
clone the pointer to its resolved type, too.
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp: Incorporate resolution from
https://github.com/gpuweb/gpuweb/pull/188.
(WebCore::WHLSL::Metal::EntryPointScaffolding::EntryPointScaffolding):
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes):
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceSignature):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::helperTypes):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::unpack):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::pack): Support semantics being placed directly on the
entry point, instead of being placed on a structure member.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::pack): Ditto.
(WebCore::WHLSL::Metal::EntryPointScaffolding::mappedBindGroups const): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::createEntryPointScaffolding):
(WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::createEntryPointScaffolding):
(WebCore::WHLSL::Metal::metalFunctions):
(WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::takeVertexMappedBindGroups): Deleted. After
https://github.com/gpuweb/gpuweb/pull/188, we don't need the mappings.
(WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::takeFragmentMappedBindGroups): Deleted. Ditto.
(WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::takeMappedBindGroups): Deleted. Ditto.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.h: Ditto.
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp: Ditto.
(WebCore::WHLSL::Metal::generateMetalCodeShared):
(WebCore::WHLSL::Metal::generateMetalCode):
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h: Ditto.
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp: Support compiler-generated functions. Change
CRASH() to notImplemented().
(WebCore::WHLSL::Metal::writeNativeFunction):
(WebCore::WHLSL::Metal::getNativeName): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp: The dependency graph needs to track all unnamed types. Also,
we need to track types that are the results of expressions (not just types literally spelled out in the
program). Enumerations need to be emitted after their base types are emitted.
(WebCore::WHLSL::Metal::TypeNamer::visit):
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::MetalTypeDeclarationWriter):
(WebCore::WHLSL::Metal::TypeNamer::metalTypeDeclarations):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitAllUnnamedTypeDefinitions):
(WebCore::WHLSL::Metal::TypeNamer::metalTypeDefinitions):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp: Wrap ResolvingType in a class to make sure it plays nicely with
HashMap. Also, use raw pointers instead of Optional<std::reference_wrapper>s.
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::Checker::checkShaderType):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::Checker::recurseAndGetInfo):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
(WebCore::WHLSL::getUnnamedType):
(WebCore::WHLSL::Checker::finishVisitingPropertyAccess):
(WebCore::WHLSL::Checker::isBoolType):
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
(WebCore::WHLSL::Gatherer::visit):
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::inferTypesForCall):
* Modules/webgpu/WHLSL/WHLSLInferTypes.h:
* Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
(WebCore::WHLSL::Intrinsics::addPrimitive):
(WebCore::WHLSL::Intrinsics::addFullTexture):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
(WebCore::WHLSL::Intrinsics::ucharType const):
(WebCore::WHLSL::Intrinsics::ushortType const):
(WebCore::WHLSL::Intrinsics::charType const):
(WebCore::WHLSL::Intrinsics::shortType const):
(WebCore::WHLSL::Intrinsics::intType const):
(WebCore::WHLSL::Intrinsics::uchar2Type const):
(WebCore::WHLSL::Intrinsics::uchar4Type const):
(WebCore::WHLSL::Intrinsics::ushort2Type const):
(WebCore::WHLSL::Intrinsics::ushort4Type const):
(WebCore::WHLSL::Intrinsics::uint2Type const):
(WebCore::WHLSL::Intrinsics::uint4Type const):
(WebCore::WHLSL::Intrinsics::char2Type const):
(WebCore::WHLSL::Intrinsics::char4Type const):
(WebCore::WHLSL::Intrinsics::short2Type const):
(WebCore::WHLSL::Intrinsics::short4Type const):
(WebCore::WHLSL::Intrinsics::int2Type const):
(WebCore::WHLSL::Intrinsics::int4Type const):
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Lexer::recognizeKeyword):
* Modules/webgpu/WHLSL/WHLSLNameContext.cpp:
(WebCore::WHLSL::NameContext::add):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit): Don't visit recursive types.
Also, make sure we preserve the CurrentFunction in our recursive scopes.
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::fail):
(WebCore::WHLSL::Parser::peek):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseBuiltInSemantic):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h:
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
(WebCore::WHLSL::prepare):
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp: Move big inline functions out-of-line.
(WebCore::WHLSL::RecursiveTypeChecker::visit):
(WebCore::WHLSL::checkRecursiveTypes):
(): Deleted.
* Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
(WebCore::WHLSL::conversionCost):
(WebCore::WHLSL::resolveFunctionOverloadImpl):
* Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.h:
* Modules/webgpu/WHLSL/WHLSLResolvingType.h:
(WebCore::WHLSL::ResolvingType::ResolvingType):
(WebCore::WHLSL::ResolvingType::operator=):
(WebCore::WHLSL::ResolvingType::getUnnamedType):
(WebCore::WHLSL::ResolvingType::visit):
* Modules/webgpu/WHLSL/WHLSLScopedSetAdder.h: Renamed from Source/WebCore/Modules/webgpu/WHLSL/Metal/WHLSLMappedBindings.h.
(WebCore::WHLSL::ScopedSetAdder::ScopedSetAdder):
(WebCore::WHLSL::ScopedSetAdder::~ScopedSetAdder):
(WebCore::WHLSL::ScopedSetAdder::isNewEntry const):
* Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp:
(WebCore::WHLSL::isAcceptableFormat):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt: Turns out a bunch of texture types don't exist in MSL.
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Adding to the program can fail.
(WebCore::WHLSL::synthesizeConstructors): Some constructors shouldn't be generated for "void" and for atomic types.
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.h: Adding to the program can fail.
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp: Ditto.
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.h: Ditto.
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp: Ditto.
(WebCore::WHLSL::synthesizeStructureAccessors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.h: Ditto.
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
* Modules/webgpu/WebGPUDevice.cpp: Add flag that triggers the WHLSL compiler.
(WebCore::WebGPUDevice::createShaderModule const):
* Modules/webgpu/WebGPUShaderModuleDescriptor.h: Ditto.
* Modules/webgpu/WebGPUShaderModuleDescriptor.idl: Ditto.
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUPipelineLayout.h:
(WebCore::GPUPipelineLayout::bindGroupLayouts const):
* platform/graphics/gpu/GPUShaderModule.h: Add a string that represents the WHLSL shader source. The compiler currently
needs the rest of the pipeline state descriptor, so we defer compilation until create*Pipeline().
(WebCore::GPUShaderModule::platformShaderModule const):
(WebCore::GPUShaderModule::whlslSource const):
* platform/graphics/gpu/GPUShaderModuleDescriptor.h:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Convert GPU types into WHLSL types, and invoke the compiler.
(WebCore::convertVertexFormat):
(WebCore::convertShaderStageFlags):
(WebCore::convertBindingType):
(WebCore::convertTextureFormat):
(WebCore::convertLayout):
(WebCore::convertRenderPipelineDescriptor):
(WebCore::trySetMetalFunctionsForPipelineDescriptor):
(WebCore::trySetWHLSLFunctionsForPipelineDescriptor):
(WebCore::trySetFunctionsForPipelineDescriptor):
(WebCore::tryCreateMtlRenderPipelineState):
* platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm:
(WebCore::GPUShaderModule::create):
(WebCore::GPUShaderModule::GPUShaderModule):

LayoutTests:

* webgpu/whlsl-expected.html: Added.
* webgpu/whlsl.html: Added.

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

5 months ago[Web GPU] GPUAdapter.createDevice -> GPUAdapter.requestDevice
justin_fan@apple.com [Mon, 18 Mar 2019 19:18:50 +0000 (19:18 +0000)]
[Web GPU] GPUAdapter.createDevice -> GPUAdapter.requestDevice
https://bugs.webkit.org/show_bug.cgi?id=195781

Reviewed by Myles C. Maxfield.

Source/WebCore:

A Web GPU device is now acquired via a promise returned from GPUAdapter.requestDevice().

Existing tests updated for new behavior.

* Modules/webgpu/WebGPUAdapter.cpp:
(WebCore::WebGPUAdapter::requestDevice const):
(WebCore::WebGPUAdapter::createDevice): Deleted.
* Modules/webgpu/WebGPUAdapter.h:
* Modules/webgpu/WebGPUAdapter.idl:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::tryCreate):
(WebCore::WebGPUDevice::WebGPUDevice):
(WebCore::WebGPUDevice::create): Deleted.
* Modules/webgpu/WebGPUDevice.h:
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
(WebCore::GPUDevice::tryCreate):
(WebCore::GPUDevice::create): Deleted.

LayoutTests:

Update affected Web GPU tests.

* webgpu/adapter-options.html:
* webgpu/js/webgpu-functions.js:
(async.getBasicDevice):
* webgpu/queue-creation.html:
* webgpu/webgpu-enabled.html:

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

5 months ago[Web GPU] API updates: GPUTexture.createDefaultView and type-safe GPURenderPassEncode...
justin_fan@apple.com [Mon, 18 Mar 2019 19:07:56 +0000 (19:07 +0000)]
[Web GPU] API updates: GPUTexture.createDefaultView and type-safe GPURenderPassEncoder.setPipeline
https://bugs.webkit.org/show_bug.cgi?id=195896

Reviewed by Jon Lee.

Source/WebCore:

Rename createDefaultTextureView -> createDefaultView and move setPipeline from GPUProgrammablePassEncoder to GPURenderPassEncoder.

Existing tests updated for createDefaultView name.

* Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
(WebCore::WebGPUProgrammablePassEncoder::setPipeline): Deleted.
* Modules/webgpu/WebGPUProgrammablePassEncoder.h:
* Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setPipeline):
* Modules/webgpu/WebGPURenderPassEncoder.h:
* Modules/webgpu/WebGPURenderPassEncoder.idl:
* Modules/webgpu/WebGPUTexture.cpp:
(WebCore::WebGPUTexture::createDefaultView):
(WebCore::WebGPUTexture::createDefaultTextureView): Deleted.
* Modules/webgpu/WebGPUTexture.h:
* Modules/webgpu/WebGPUTexture.idl:
* platform/graphics/gpu/GPUProgrammablePassEncoder.h:
* platform/graphics/gpu/GPURenderPassEncoder.h:

LayoutTests:

Rename createDefaultTextureView -> createDefaultView.

* webgpu/buffer-command-buffer-races.html:
* webgpu/depth-enabled-triangle-strip.html:
* webgpu/js/webgpu-functions.js:
(beginBasicRenderPass):
* webgpu/texture-triangle-strip.html:
* webgpu/textures-textureviews.html:

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

5 months agoRemove the inline capacity of Operands
rmorisset@apple.com [Mon, 18 Mar 2019 19:03:32 +0000 (19:03 +0000)]
Remove the inline capacity of Operands
https://bugs.webkit.org/show_bug.cgi?id=195898

Reviewed by Yusuke Suzuki.

Operands currently has a vector with an inline capacity of 24.
I tested on JetStream2, and only 4776 functions out of 12035 (that reach the DFG tier) have 24 or fewer elements in it.
This is a major problem, because we have 5 Operands in every DFG::BasicBlock, resulting in 2688 bytes of inline capacity per basic block.
Still on JetStream 2, functions have an average of 18 BB, but those functions whose operands overflow have an average of 27 BB (so we are wasting 72kB on average when compiling them), and the largest function has 1241 BB (!), for a total of 3.3MB being wasted while it is compiled.

So I removed the inline capacity of the vector in Operands, and here are the results:
Baseline Jetstream2:
159.741
159.746
159.989
Baseline RAMification on grouped and jit tests: (end/peak/score)
89.288/89.763/89.526
90.166/90.761/90.418
89.560/90.014/89.787
After optimization Jetstream2:
159.342
161.812
162.037
After optimization RAMification:
89.147/89.644/89.395
89.102.89.585/89.343
88.953/89.536/89.2444

So it looks like a roughly 1% improvement on RAMification (at least the tests where the JIT is enabled), and more surprisingly also a 1% progression on Jetstream2 (although I have more doubts about this one considering the variability in my numbers).
I hope to land this, and get more accurate results from the bots.

* bytecode/Operands.h:

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

5 months agoWeb Inspector: HAR Extension for `serverIPAddress` port number
joepeck@webkit.org [Mon, 18 Mar 2019 18:47:43 +0000 (18:47 +0000)]
Web Inspector: HAR Extension for `serverIPAddress` port number
https://bugs.webkit.org/show_bug.cgi?id=195695

Reviewed by Matt Baker.

Source/WebInspectorUI:

* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.entry):
(WI.HARBuilder.port):
* UserInterface/Models/LocalResource.js:
(WI.LocalResource.fromHAREntry):

LayoutTests:

* http/tests/inspector/network/har/har-basic-expected.txt:
* http/tests/inspector/network/har/har-page-expected.txt:

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

5 months ago[JSC] Add --destroy-vm shell option and dumpHeapStatisticsAtVMDestruction option
ysuzuki@apple.com [Mon, 18 Mar 2019 18:35:04 +0000 (18:35 +0000)]
[JSC] Add --destroy-vm shell option and dumpHeapStatisticsAtVMDestruction option
https://bugs.webkit.org/show_bug.cgi?id=195897

Reviewed by Keith Miller.

It is useful if we have an option logging the status of all the existing MarkedBlocks and their objects at VM destruction.
I used this feature to find wasting memory, and successfully removed many wasted MarkedBlocks and JS cells like r243081.
This patch adds,

1. --destroy-vm option to JSC shell to destroy main thread JSC::VM
2. dumpHeapStatisticsAtVMDestruction to dump MarkedBlocks at VM destruction

While the current option name is "dumpHeapStatisticsAtVMDestruction", we just dump the status of MarkedBlocks and cells. But eventually,
we would like to collect heap statistics and dump them to investigate Heap status more.

This patch also removes logHeapStatisticsAtExit option since it is no longer used in JSC.

* heap/Heap.cpp:
(JSC::Heap::dumpHeapStatisticsAtVMDestruction):
(JSC::Heap::lastChanceToFinalize):
* heap/Heap.h:
* jsc.cpp:
(printUsageStatement):
(CommandLine::parseArguments):
(runJSC):
* runtime/Options.h:

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

5 months ago[iOS] The network process sometimes gets killed for trying to suspend while holding...
cdumez@apple.com [Mon, 18 Mar 2019 18:27:42 +0000 (18:27 +0000)]
[iOS] The network process sometimes gets killed for trying to suspend while holding locked files
https://bugs.webkit.org/show_bug.cgi?id=195890
<rdar://problem/48934338>

Reviewed by Geoffrey Garen.

The network process sometimes gets killed for trying to suspend while holding locked files while
under SQLiteDatabase::open(). The SQLiteDatabaseTracker normally keeps tracking of "transactions"
in progress so we know that we're holding locked files and the WebSQLiteDatabaseTracker takes
care of notifying the UIProcess via IPC that it should hold a background assertion on our behalf
to avoid trying to suspend while holding locked files.
However, we were missing a SQLiteTransactionInProgressAutoCounter when trying to execute the
PRAGMA statement.

Note that we have a similar SQLiteTransactionInProgressAutoCounter in SQLiteDatabase::useWALJournalMode()
when executing such PRAGMA statement already.

* platform/sql/SQLiteDatabase.cpp:
(WebCore::SQLiteDatabase::open):

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

5 months agoUnreviewed test gardening after r243024.
joepeck@webkit.org [Mon, 18 Mar 2019 18:17:12 +0000 (18:17 +0000)]
Unreviewed test gardening after r243024.

* inspector/timeline/timeline-recording-expected.txt:
* inspector/timeline/timeline-recording.html:
Filter out the markers, but keep the display as an array.

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

5 months ago[CMake] Prevent potential warning when determining $architecture
commit-queue@webkit.org [Mon, 18 Mar 2019 18:07:30 +0000 (18:07 +0000)]
[CMake] Prevent potential warning when determining $architecture
https://bugs.webkit.org/show_bug.cgi?id=195891

Patch by Xan Lopez <xan@igalia.com> on 2019-03-18
Reviewed by Michael Catanzaro.

It's possible for generateBuildSystemForCMakeProject to be called
before determineArchitecture() is ever called. This will make the
first eq check with $architecture to be bogus (and print a
warning). Change that to an eq check with architecture(), which
implicitly calls determineArchitecture() if needed, and change all
the other similar cases in the method in the same way to prevent
future bugs like this one.

* Scripts/webkitdirs.pm:
(generateBuildSystemFromCMakeProject):

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

5 months ago[iOS] No DOM keypress event emitted for cursor key commands when non-editable element...
dbates@webkit.org [Mon, 18 Mar 2019 17:59:50 +0000 (17:59 +0000)]
[iOS] No DOM keypress event emitted for cursor key commands when non-editable element is focused
https://bugs.webkit.org/show_bug.cgi?id=195626
<rdar://problem/48810626>

Reviewed by Wenson Hsieh.

Source/WebKit:

Following the UIKit fix <rdar://problem/47333786> WebKit will be asked whether it can perform some
more actions, including cursor movements and more editing actions. All such actions are only applicable
to editable elements. By responding NO to UIKit for such actions when we are not in an editable element
we avoid the need to do such bookkeeping ourselves as UIKit will forward our response back to us
on return from -handleKeyTextCommandForCurrentEvent, called from -[WKContentView _interpretKeyEvent].
WebKit is then in a position to try to handle the event or in the case of all standard text editing
key commands at the time of writing (e.g. Control + a) tell WebCore that it did not handle the event
so that WebCore can continue the DOM key event dispatch algorithm. For standard text editing key
commands, such as Control + a, we will emit a DOM keypress event for the 'a'.

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

LayoutTests:

Add some tests. These tests depend on UIKit work.

* fast/events/ios/key-events-control-expected.txt: Added.
* fast/events/ios/key-events-control.html: Copied from LayoutTests/fast/events/ios/key-events-meta-alt-combinations.html.
* fast/events/ios/key-events-meta-expected.txt: Added.
* fast/events/ios/key-events-meta.html: Copied from LayoutTests/fast/events/ios/key-events-meta-alt-combinations.html.

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

5 months ago[JSC] jsSubstring should resolve rope before calling JSRopeString::create
ysuzuki@apple.com [Mon, 18 Mar 2019 17:50:41 +0000 (17:50 +0000)]
[JSC] jsSubstring should resolve rope before calling JSRopeString::create
https://bugs.webkit.org/show_bug.cgi?id=195840

Reviewed by Geoffrey Garen.

jsSubstring always ends up resolving rope of the base string because substring JSRopeString only accepts non-rope JSString
as its base. Instead of resolving ropes in finishCreationSubstring, we should resolve before passing it to JSRopeString.
So that, we can access string data before creating JSRopeString, and we can introduce optimizations like avoiding creation
of single character substrings.

We can find that a lot of substrings for length = 1 are allocated in RAMification regexp tests. This patch avoids creation of these
strings to save memory.

This patch also strengthen error checks caused by rope resolution for base of substrings. Previously we sometimes miss this checks.

* dfg/DFGOperations.cpp:
* runtime/JSString.cpp:
(JSC::JSString::dumpToStream):
* runtime/JSString.h:
(JSC::jsSubstring):
(JSC::jsSubstringOfResolved):
(JSC::jsSingleCharacterString):
* runtime/RegExpCachedResult.cpp:
(JSC::RegExpCachedResult::lastResult): We no longer need to have length = 0 path since jsSubstring returns an empty string if length == 0.
(JSC::RegExpCachedResult::leftContext):
(JSC::RegExpCachedResult::rightContext):
(JSC::RegExpCachedResult::setInput):
* runtime/RegExpGlobalData.cpp:
(JSC::RegExpGlobalData::getBackref):
(JSC::RegExpGlobalData::getLastParen):
* runtime/StringObject.h:
(JSC::jsStringWithReuse):
(JSC::jsSubstring):
* runtime/StringPrototype.cpp:
(JSC::replaceUsingRegExpSearch):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
(JSC::replaceUsingStringSearch):
(JSC::stringProtoFuncSlice):
(JSC::splitStringByOneCharacterImpl):
(JSC::stringProtoFuncSplitFast):
(JSC::stringProtoFuncSubstr):
(JSC::stringProtoFuncSubstring):
(JSC::stringProtoFuncToLowerCase):
(JSC::stringProtoFuncToUpperCase):
Some `const String& value = string->value(exec)` is dangerous if GC happens later. Changed to getting `String` instead of `const String&` here.

* runtime/StringPrototypeInlines.h:
(JSC::stringSlice):

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

5 months agoFix bad substitution made in r241282
dbates@webkit.org [Mon, 18 Mar 2019 17:38:34 +0000 (17:38 +0000)]
Fix bad substitution made in r241282

Revert substitution of "computeSubsets(modifierKeys)" back to "modiferKeySubsetsToTest" so
that the test only checks key commands with Command and Option modifiers as opposed to all
modifiers. That will make what the test actually tests match the checked-in expected resutls.

* fast/events/ios/key-events-meta-alt-combinations.html:

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

5 months agoMissing a ThrowScope release in JSObject::toString().
mark.lam@apple.com [Mon, 18 Mar 2019 17:36:48 +0000 (17:36 +0000)]
Missing a ThrowScope release in JSObject::toString().
https://bugs.webkit.org/show_bug.cgi?id=195893
<rdar://problem/48970986>

Reviewed by Michael Saboff.

JSTests:

* stress/to-string-exception-check-release.js: Added.

Source/JavaScriptCore:

Placate the validator with a RELEASE_AND_RETURN().

* runtime/JSObject.cpp:
(JSC::JSObject::toString const):

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

5 months agoUnreviewed, rolling out r243037.
ryanhaddad@apple.com [Mon, 18 Mar 2019 17:05:54 +0000 (17:05 +0000)]
Unreviewed, rolling out r243037.

Broke the Windows build

Reverted changeset:

"Reduce the size of Node::deref by eliminating an explicit
parentNode check"
https://bugs.webkit.org/show_bug.cgi?id=195776
https://trac.webkit.org/changeset/243037

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

5 months ago[WPE] Bump public API to wpe-1.0
aperez@igalia.com [Mon, 18 Mar 2019 16:53:56 +0000 (16:53 +0000)]
[WPE] Bump public API to wpe-1.0
https://bugs.webkit.org/show_bug.cgi?id=195887

Reviewed by Philippe Normand.

.:

* Source/cmake/OptionsWPE.cmake: Bump public API version to 1.0

Source/WebKit:

* UIProcess/API/wpe/docs/wpe-1.0-sections.txt: Renamed from Source/WebKit/UIProcess/API/wpe/docs/wpe-0.1-sections.txt.
* WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-1.0-sections.txt: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-0.1-sections.txt.

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

5 months agoChange some logging levels
eric.carlson@apple.com [Mon, 18 Mar 2019 16:52:45 +0000 (16:52 +0000)]
Change some logging levels
https://bugs.webkit.org/show_bug.cgi?id=195861
<rdar://problem/48961669>

Reviewed by Jer Noble.

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::dispatchEvent):
* Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::addInput):
(WebCore::AudioNode::addOutput):
(WebCore::AudioNode::connect):
(WebCore::AudioNode::disconnect):
* Modules/webaudio/AudioParam.cpp:
(WebCore::AudioParam::connect):
(WebCore::AudioParam::disconnect):
* Modules/webaudio/WaveShaperNode.cpp:
(WebCore::WaveShaperNode::setOversample):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::canPlayType const):
(WebCore::HTMLMediaElement::seekTask):
(WebCore::HTMLMediaElement::dispatchEvent):
(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
(WebCore::HTMLMediaElement::setMediaControlsDependOnPageScaleFactor):
* html/track/InbandGenericTextTrack.cpp:
(WebCore::InbandGenericTextTrack::addGenericCue):
(WebCore::InbandGenericTextTrack::removeGenericCue):
(WebCore::InbandGenericTextTrack::newCuesParsed):
* html/track/InbandWebVTTTextTrack.cpp:
(WebCore::InbandWebVTTTextTrack::newCuesParsed):
* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::newCuesAvailable):
* html/track/TextTrack.cpp:
(WebCore::TextTrack::removeCue):
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
(WebCore::InbandTextTrackPrivateAVF::processAttributedStrings):
(WebCore::InbandTextTrackPrivateAVF::removeCompletedCues):
(WebCore::InbandTextTrackPrivateAVF::processNativeSamples):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isCurrentPlaybackTargetWireless const):

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

5 months agoREGRESSION: (r243032) inspector/model/remote-object.html is failing.
tsavell@apple.com [Mon, 18 Mar 2019 16:30:31 +0000 (16:30 +0000)]
REGRESSION: (r243032) inspector/model/remote-object.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=195892

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

5 months agoMake mouse event simulation a quirk
graouts@webkit.org [Mon, 18 Mar 2019 16:25:06 +0000 (16:25 +0000)]
Make mouse event simulation a quirk
https://bugs.webkit.org/show_bug.cgi?id=195218
<rdar://problem/48516794>

Reviewed by Dean Jackson.

Add new quirks to control whether we should dispatch simulated mouse events and whether we should assume
preventDefault() was called when a simulated "mousemove" event was handled. Currently both return false
but will be made to return more interesting results as we determine heuristics or specific sites that
may require such quirks.

* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulateMouseEvents const):
(WebCore::Quirks::shouldMousemoveEventHandlingPreventDefault const):
* page/Quirks.h:

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

5 months agoStructure::flattenDictionary() should clear unused property slots.
mark.lam@apple.com [Mon, 18 Mar 2019 16:18:10 +0000 (16:18 +0000)]
Structure::flattenDictionary() should clear unused property slots.
https://bugs.webkit.org/show_bug.cgi?id=195871
<rdar://problem/48959497>

Reviewed by Michael Saboff.

JSTests:

* stress/structure-flattenDictionary-should-clear-unused-property-slots.js: Added.

Source/JavaScriptCore:

It currently attempts to do this but fails because it's actually clearing up the
preCapacity region instead.  The fix is simply to account for the preCapacity
when computing the start address of the property slots.

* runtime/Structure.cpp:
(JSC::Structure::flattenDictionaryStructure):

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

5 months ago[WPE] Update test expectation
csaavedra@igalia.com [Mon, 18 Mar 2019 15:44:09 +0000 (15:44 +0000)]
[WPE] Update test expectation

Unreviewed gardening.

Since iframe.referrerPolicy was implemented the WPE expectation
for the test below has been out of date.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt: Update.

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

5 months ago[WPE] Tarballs generated with “make dist” cannot build documentation
aperez@igalia.com [Mon, 18 Mar 2019 15:34:50 +0000 (15:34 +0000)]
[WPE] Tarballs generated with “make dist” cannot build documentation
https://bugs.webkit.org/show_bug.cgi?id=195885

Reviewed by Carlos Garcia Campos.

* wpe/manifest.txt.in: Add missing Tools/glib/common.py file to be included in release tarballs.

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

5 months agoB3 should reduce Shl(<S|Z>Shr(@x, @const), @const) to BitAnd(@x, -(1<<@const))
rmorisset@apple.com [Mon, 18 Mar 2019 15:29:10 +0000 (15:29 +0000)]
B3 should reduce Shl(<S|Z>Shr(@x, @const), @const) to BitAnd(@x, -(1<<@const))
https://bugs.webkit.org/show_bug.cgi?id=152164

Reviewed by Filip Pizlo.

Turn this: Shl(<S|Z>Shr(@x, @const), @const)
Into this: BitAnd(@x, -(1<<@const))

I added two tests: one for ZShr/32 bits, and one for SShr/64 bits, I think it is enough coverage (no reason for any interaction between the signedness of the shift and the bitwidth).
I also modified a few adjacent tests to remove undefined behaviours.

* b3/B3ReduceStrength.cpp:
* b3/testb3.cpp:
(JSC::B3::testShlImms):
(JSC::B3::testShlArgImm):
(JSC::B3::testShlSShrArgImm):
(JSC::B3::testShlImms32):
(JSC::B3::testShlArgImm32):
(JSC::B3::testShlZShrArgImm32):
(JSC::B3::run):

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

5 months ago[WPE] Unreviewed, fix test expectation linter warnings
dpino@igalia.com [Mon, 18 Mar 2019 15:26:16 +0000 (15:26 +0000)]
[WPE] Unreviewed, fix test expectation linter warnings
https://bugs.webkit.org/show_bug.cgi?id=195881

* platform/wpe/TestExpectations:

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

5 months ago[GTK][WPE] Cryptic error from Tools/gtkdoc/generate-gtkdoc
aperez@igalia.com [Mon, 18 Mar 2019 15:19:09 +0000 (15:19 +0000)]
[GTK][WPE] Cryptic error from Tools/gtkdoc/generate-gtkdoc
https://bugs.webkit.org/show_bug.cgi?id=195883

Reviewed by Carlos Garcia Campos.

* gtkdoc/gtkdoc.py:
(GTKDoc._run_command): When commands fail to run, include the full command line for
the program invocation and the output it has generated on the standard error stream.

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

5 months ago[GTK][WPE] Fix webanimations test
csaavedra@igalia.com [Mon, 18 Mar 2019 13:42:51 +0000 (13:42 +0000)]
[GTK][WPE] Fix webanimations test
https://bugs.webkit.org/show_bug.cgi?id=189344

Reviewed by Philippe Normand.

GLib-based ports will have issues with recognizing the mimetype of
zero-byte files.
* platform/gtk/TestExpectations: Test below should pass now.
* webanimations/css-animation-effect-target-change-and-animation-removal-crash-expected.html:
Make it a 1-byte empty file.

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

5 months ago[WPE] Bump dependencies to wpe-1.0 and wpebackend-fdo-1.0
aperez@igalia.com [Mon, 18 Mar 2019 11:02:38 +0000 (11:02 +0000)]
[WPE] Bump dependencies to wpe-1.0 and wpebackend-fdo-1.0
https://bugs.webkit.org/show_bug.cgi?id=195786

Reviewed by Philippe Normand.

.:

* Source/cmake/FindWPE.cmake: Check for the wpe-1.0 pkg-config package.

Source/WebKit:

* wpe/wpe-web-extension.pc.in: Change dependency to wpe-1.0
* wpe/wpe-webkit.pc.in: Ditto.

Tools:

* flatpak/org.webkit.WPEModules.yaml: Use libwpe 1.1.90 and wpebackend-fdo 1.1.91.
* wpe/jhbuild.modules: Ditto.

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

5 months ago[GTK][GStreamer] Mark flaky crashing test
csaavedra@igalia.com [Mon, 18 Mar 2019 10:42:36 +0000 (10:42 +0000)]
[GTK][GStreamer] Mark flaky crashing test

* platform/gtk/TestExpectations:

Unreviewed gardening.
* platform/gtk/TestExpectations: Mark
imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer.html

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

5 months ago[GStreamer] Rewrite HTTP source element using pushsrc base class
philn@webkit.org [Mon, 18 Mar 2019 10:34:44 +0000 (10:34 +0000)]
[GStreamer] Rewrite HTTP source element using pushsrc base class
https://bugs.webkit.org/show_bug.cgi?id=195631

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

If we want to use webkitwebsrc in adaptivedemux (HLS, DASH, etc)
we need a source element that behaves like souphttpsrc, which is
implemented using pushsrc. This rewrite might also fix some seek
issues.

No new tests, existing http/tests/media tests cover this patch.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkit_web_src_class_init):
(webkitWebSrcReset):
(webkit_web_src_init):
(webKitWebSrcCreate):
(webKitWebSrcStart):
(webKitWebSrcCloseSession):
(webKitWebSrcStop):
(webKitWebSrcGetSize):
(webKitWebSrcIsSeekable):
(webKitWebSrcDoSeek):
(webKitWebSrcQuery):
(webKitWebSrcUnLock):
(webKitWebSrcUnLockStop):
(webKitWebSrcChangeState):
(CachedResourceStreamingClient::checkUpdateBlocksize):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::dataReceived):
(CachedResourceStreamingClient::accessControlCheckFailed):
(CachedResourceStreamingClient::loadFailed):
(CachedResourceStreamingClient::loadFinished):
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.h:

LayoutTests:

* platform/gtk/TestExpectations:
* platform/gtk/http/tests/media/hls/video-controls-live-stream-expected.txt:
Update expectations, though it's not really related with this
patch.

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

5 months ago[WPE][GTK] Fix a build warning because of missing to handle an enum value
gyuyoung.kim@webkit.org [Mon, 18 Mar 2019 09:30:47 +0000 (09:30 +0000)]
[WPE][GTK] Fix a build warning because of missing to handle an enum value
https://bugs.webkit.org/show_bug.cgi?id=195876

Reviewed by Žan Doberšek.

When building WPE or GTK port, there is a build warning. The switch-case needs to
handle *Positioned* enum value as well in order to avoid the build warning.

* page/scrolling/nicosia/ScrollingTreeNicosia.cpp:
(WebCore::ScrollingTreeNicosia::createScrollingTreeNode): Add case ScrollingNodeType::Positioned.

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

5 months ago[GTK][GStreamer] Mark flaky crashing test
csaavedra@igalia.com [Mon, 18 Mar 2019 09:07:06 +0000 (09:07 +0000)]
[GTK][GStreamer] Mark flaky crashing test

Unreviewed gardening.
* platform/gtk/TestExpectations: Mark
imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-mode.html

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

5 months ago[Win][WK1] Null dereference in WebFrameNetworkingContext::storageSession
Hironori.Fujii@sony.com [Mon, 18 Mar 2019 02:16:59 +0000 (02:16 +0000)]
[Win][WK1] Null dereference in WebFrameNetworkingContext::storageSession
https://bugs.webkit.org/show_bug.cgi?id=195741

Reviewed by Ross Kirsling.

Source/WebKitLegacy/win:

* WebCoreSupport/WebFrameNetworkingContext.cpp:
(WebFrameNetworkingContext::storageSession const): Added a null check of frame()->page() as well as Mac port does (Bug 183455).

LayoutTests:

* platform/wincairo/TestExpectations: Unskipped http/tests/ssl/ping-with-unsafe-redirect.html.

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

5 months ago[iOS] Block the accessibility server when accessibility is not enabled.
Hironori.Fujii@sony.com [Mon, 18 Mar 2019 02:08:14 +0000 (02:08 +0000)]
[iOS] Block the accessibility server when accessibility is not enabled.
https://bugs.webkit.org/show_bug.cgi?id=195342
<rdar://problem/48615720>

Unreviewed build fix for WinCairo.

* Shared/SandboxExtension.h: Use ProcessID instead of pid_t.

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

5 months agoParserError can be shrunk by 8 bytes
rmorisset@apple.com [Sun, 17 Mar 2019 23:45:23 +0000 (23:45 +0000)]
ParserError can be shrunk by 8 bytes
https://bugs.webkit.org/show_bug.cgi?id=195496

Reviewed by Mark Lam.

* parser/ParserError.h:

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

5 months agoFix WPE and GTK Debug builds after r243049
dpino@igalia.com [Sun, 17 Mar 2019 12:06:48 +0000 (12:06 +0000)]
Fix WPE and GTK Debug builds after r243049
https://bugs.webkit.org/show_bug.cgi?id=195860

Unreviewed, build fix after r243049.

* runtime/StringPrototype.cpp:
(JSC::normalizationAffects8Bit):

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

5 months agoREGRESSION: !vm.isInitializingObject() void* JSC::tryAllocateCellHelper<JSC::Structur...
ysuzuki@apple.com [Sun, 17 Mar 2019 07:45:55 +0000 (07:45 +0000)]
REGRESSION: !vm.isInitializingObject() void* JSC::tryAllocateCellHelper<JSC::Structure> JSC::Structure::create
https://bugs.webkit.org/show_bug.cgi?id=195858

Reviewed by Mark Lam.

Source/JavaScriptCore:

r243011 changed WebAssembly related structures lazily-allocated. It means that this lazy allocation must not be done in the middle of
the other object allocations. This patch changes the signature of wasm related objects' ::create functions to taking Structure*.
This prevents us from materializing lazily-allocated structures while allocating wasm related objects, and this style is used in the
other places to fix the same problem. This bug is caught by existing debug tests for wasm.

* runtime/JSGlobalObject.h:
* wasm/js/JSWebAssemblyCompileError.cpp:
(JSC::createJSWebAssemblyCompileError):
* wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::finalizeCreation):
(JSC::JSWebAssemblyInstance::create):
* wasm/js/JSWebAssemblyLinkError.cpp:
(JSC::createJSWebAssemblyLinkError):
* wasm/js/JSWebAssemblyModule.cpp:
(JSC::JSWebAssemblyModule::createStub):
(JSC::JSWebAssemblyModule::finishCreation):
* wasm/js/WasmToJS.cpp:
(JSC::Wasm::wasmToJSException):
* wasm/js/WebAssemblyCompileErrorConstructor.cpp:
(JSC::constructJSWebAssemblyCompileError):
(JSC::callJSWebAssemblyCompileError):
* wasm/js/WebAssemblyFunction.cpp:
(JSC::WebAssemblyFunction::create):
* wasm/js/WebAssemblyFunction.h:
* wasm/js/WebAssemblyInstanceConstructor.cpp:
(JSC::constructJSWebAssemblyInstance):
* wasm/js/WebAssemblyLinkErrorConstructor.cpp:
(JSC::constructJSWebAssemblyLinkError):
(JSC::callJSWebAssemblyLinkError):
* wasm/js/WebAssemblyMemoryConstructor.cpp:
(JSC::constructJSWebAssemblyMemory):
* wasm/js/WebAssemblyModuleConstructor.cpp:
(JSC::WebAssemblyModuleConstructor::createModule):
* wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):
* wasm/js/WebAssemblyPrototype.cpp:
(JSC::webAssemblyModuleValidateAsyncInternal):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::webAssemblyModuleInstantinateAsyncInternal):
* wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:
(JSC::constructJSWebAssemblyRuntimeError):
(JSC::callJSWebAssemblyRuntimeError):
* wasm/js/WebAssemblyTableConstructor.cpp:
(JSC::constructJSWebAssemblyTable):
* wasm/js/WebAssemblyToJSCallee.cpp:
(JSC::WebAssemblyToJSCallee::create):
* wasm/js/WebAssemblyToJSCallee.h:
* wasm/js/WebAssemblyWrapperFunction.cpp:
(JSC::WebAssemblyWrapperFunction::create):
* wasm/js/WebAssemblyWrapperFunction.h:

Source/WebCore:

Changed the accessor names.

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readTerminal):

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

5 months ago[ews-build] Don't run clean builds on EWS builders
aakash_jain@apple.com [Sun, 17 Mar 2019 03:50:46 +0000 (03:50 +0000)]
[ews-build] Don't run clean builds on EWS builders
https://bugs.webkit.org/show_bug.cgi?id=195851

Reviewed by Geoffrey Garen.

* BuildSlaveSupport/ews-build/factories.py:

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

5 months agoImprove normalization code, including moving from unorm.h to unorm2.h
darin@apple.com [Sun, 17 Mar 2019 02:20:52 +0000 (02:20 +0000)]
Improve normalization code, including moving from unorm.h to unorm2.h
https://bugs.webkit.org/show_bug.cgi?id=195330

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

* runtime/JSString.h: Move StringViewWithUnderlyingString to StringView.h.

* runtime/StringPrototype.cpp: Include unorm2.h instead of unorm.h.
(JSC::normalizer): Added. Function to create normalizer object given
enumeration value indicating which is selected. Simplified because we
know the function will not fail and so we don't need error handling code.
(JSC::normalize): Changed this function to take a JSString* so we can
optimize the case where no normalization is needed. Added an early exit
if the string is stored as 8-bit and another if the string is already
normalized, using unorm2_isNormalized. Changed error handling to only
check cases that can actually fail in practice. Also did other small
optimizations like passing VM rather than ExecState.
(JSC::stringProtoFuncNormalize): Used smaller enumeration names that are
identical to the names used in the API and normalization parlance rather
than longer ones that expand the acronyms. Updated to pass JSString* to
the normalize function, so we can optimize 8-bit and already-normalized
cases, rather than callling the expensive String::upconvertedCharacters
function. Use throwVMRangeError.

Source/WebCore:

* editing/TextIterator.cpp: Include unorm2.h.
(WebCore::normalizeCharacters): Rewrote to use unorm2_normalize rather than
unorm_normalize, but left the logic otherwise the same.

* platform/graphics/SurrogatePairAwareTextIterator.cpp: Include unorm2.h.
(WebCore::SurrogatePairAwareTextIterator::normalizeVoicingMarks):
Use unorm2_composePair instead of unorm_normalize.

* platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:
(characterSequenceIsEmoji): Changed to use existing SurrogatePairAwareTextIterator.
(FontCascade::fontForCombiningCharacterSequence): Use normalizedNFC instead of
calling unorm2_normalize directly.

* WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp:
Removed unneeded include of <unicode/normlzr.h>.

* platform/text/TextEncoding.cpp:
(WebCore::TextEncoding::encode const): Use normalizedNFC instead of the
code that was here. The normalizedNFC function is better in multiple ways,
but primarily it handles 8-bit strings and other already-normalized
strings much more efficiently.

Source/WTF:

* wtf/URLHelpers.cpp: Removed unneeded include of unorm.h since the
normalization code is now in StringView.cpp.
(WTF::URLHelpers::escapeUnsafeCharacters): Renamed from
createStringWithEscapedUnsafeCharacters since it now only creates
a new string if one is needed. Use unsigned for string lengths, since
that's what WTF::String uses, not size_t. Added a first loop so that
we can return the string unmodified if no lookalike characters are
found. Removed unnecessary round trip from UTF-16 and then back in
the case where the character is not a lookalike.
(WTF::URLHelpers::toNormalizationFormC): Deleted. Moved this logic
into the WTF::normalizedNFC function in StringView.cpp.
(WTF::URLHelpers::userVisibleURL): Call escapeUnsafeCharacters and
normalizedNFC. The normalizedNFC function is better in multiple ways,
but primarily it handles 8-bit strings and other already-normalized
strings much more efficiently.

* wtf/text/StringView.cpp:
(WTF::normalizedNFC): Added. This has two overloads. One is for when
we already have a String, and want to re-use it if no normalization
is needed, and another is when we only have a StringView, and may need
to allocate a String to hold the result. Includes a fast special case
for 8-bit and already-normalized strings, and uses the same strategy
that JSC::normalize was already using: calls unorm2_normalize twice,
first just to determine the length.

* wtf/text/StringView.h: Added normalizedNFC, which can be called with
either a StringView or a String. Also moved StringViewWithUnderlyingString
here from JSString.h, here for use as the return value of normalizedNFC;
it is used for a similar purpose in the JavaScriptCore rope implementation.
Also removed an inaccurate comment.

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

5 months agoUnreviewed unified-build fix; GPUBindGroupMetal uses symbols from the Metal.framework...
jer.noble@apple.com [Sat, 16 Mar 2019 22:58:09 +0000 (22:58 +0000)]
Unreviewed unified-build fix; GPUBindGroupMetal uses symbols from the Metal.framework; it should import it.

* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:

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

5 months agoASSERT(gestureRecognizer == _doubleTapGestureRecognizer) in _doubleTapDidFail:
dino@apple.com [Sat, 16 Mar 2019 22:03:33 +0000 (22:03 +0000)]
ASSERT(gestureRecognizer == _doubleTapGestureRecognizer) in _doubleTapDidFail:
https://bugs.webkit.org/show_bug.cgi?id=195857
<rdar://problem/48954679>

Reviewed by Wenson Hsieh.

Reset an existing gesture recognizer before creating a new one.

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

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

5 months agoAdd a new MediaCapabilitiesExtensionsEnabled setting
jer.noble@apple.com [Sat, 16 Mar 2019 22:00:51 +0000 (22:00 +0000)]
Add a new MediaCapabilitiesExtensionsEnabled setting
https://bugs.webkit.org/show_bug.cgi?id=195843

Reviewed by Geoffrey Garen.

Source/WebCore:

Add a new setting, MediaCapabilitiesExtensionsEnabled, which controls whether extensions
to the Media Capabilities API are available.

Drive-by fix: make sure that the configuration is passed through to MediaCapabilitiesInfo
when no factory can support the configuration.

* Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl:
* Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateDictionaryImplementationContent):
* bindings/scripts/IDLAttributes.json:
* page/Settings.yaml:
* platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
(WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):

Source/WebKit:

* Shared/WebPreferences.yaml:

LayoutTests:

* media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt:
* media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html:

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

5 months agoREGRESSION (r243019): Failing API test: WebKit.WebsiteDataStoreCustomPathsWithoutPrew...
sihui_liu@apple.com [Sat, 16 Mar 2019 21:22:20 +0000 (21:22 +0000)]
REGRESSION (r243019): Failing API test: WebKit.WebsiteDataStoreCustomPathsWithoutPrewarming
https://bugs.webkit.org/show_bug.cgi?id=195849

Reviewed by Chris Dumez.

We should expect IDB database files to be at path IndexedDB/v1/ after r243019.

* TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
(runWebsiteDataStoreCustomPaths):

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

5 months ago[iOS] Software keyboard never appears when editing on some websites
wenson_hsieh@apple.com [Sat, 16 Mar 2019 21:17:40 +0000 (21:17 +0000)]
[iOS] Software keyboard never appears when editing on some websites
https://bugs.webkit.org/show_bug.cgi?id=195824
<rdar://problem/48020610>

Reviewed by Ryosuke Niwa.

Source/WebKit:

In the scenario where an element has already been programmatically focused but the UI process isn't showing an
input view for it, there are a couple of different ways in which an input view may still be shown for that
element:

1. If the page attempts to programmatically focus the element, we'll invoke elementDidRefocus to recompute
information about the focused element and propagate it to the UI process. By default, if programmatic focus was
triggered under the scope of user interaction, we'll allow the input view to appear.

2. In the case where page does not attempt to programmatically focus the element but a click is dispatched,
there is logic in WebPage::completeSyntheticClick to send information about the already-focused element.

On the web page relevant to this bug, focus is programmatically moved to hidden contenteditable areas upon page
load, and touchstart is also prevented; furthermore, the page does not attempt to programmatically refocus the
hidden editable area upon receiving touchstart. This means that the user will never be able to bring up the
keyboard, since the editable area is already programmatically focused and subsequent attempts to tap in the
page do nothing, because the page has already focused the hidden editable area (with the expectation that the
software keyboard should already be present).

To fix this, we bring some of the same logic in completeSyntheticClick over to dispatchTouchEvent, by sending
focused element information to the UI process if the focused element did not change over the course of
dispatching the touch event. Similar code was introduced in r167774 to fix the same type of issue (i.e.
inability to bring up the software keyboard), but this was later reverted in r188405 due to causing bugs such as
<rdar://problem/22204108>, wherein this logic to bring up the keyboard in dispatchTouchEvent would scroll and
zoom the page, such that the click event fired after touchend would be dispatched in the wrong location and (in
the case of <rdar://problem/22204108>) caused the focused element to immediately blur again.

To mitigate this issue, we add the additional constraint that we only send focused element info in the case
where the touch won't also generate a click later down the road, by requiring that the dispatched event was
handled by the page (i.e. prevented).

Test: fast/events/touch/ios/show-keyboard-after-preventing-touchstart.html

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::dispatchTouchEvent):

LayoutTests:

Add a layout test to verify that tapping a programmatically focused textarea that prevents touchstart still
causes the keyboard to appear.

* fast/events/touch/ios/show-keyboard-after-preventing-touchstart-expected.txt: Added.
* fast/events/touch/ios/show-keyboard-after-preventing-touchstart.html: Added.

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

5 months agoSource/WebCore:
zalan@apple.com [Sat, 16 Mar 2019 19:54:18 +0000 (19:54 +0000)]
Source/WebCore:
[iOS] Unable to close trending window on naver.com.
https://bugs.webkit.org/show_bug.cgi?id=195842
<rdar://problem/48067338>

This patch issues a synthetic mouse move to the tap location after we decided to hover.
It ensures that the node under the mouse is up-to-date and when a new tap comes in we can
send the mouseout event to the correct node. It fixes the case when the hover content is positioned over
the tap target so that the tap target is no longer "under the mouse".
On desktop this "transition" happens automatically since the mouse is always present.

Reviewed by Simon Fraser.

Tests: fast/events/touch/ios/content-observation/new-content-covers-tap-target.html
       fast/events/touch/ios/content-observation/prevent-default-on-touch-start.html

* page/EventHandler.h:
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::dispatchSyntheticMouseMove):

Source/WebKit:
Unable to close trending window on naver.com.
https://bugs.webkit.org/show_bug.cgi?id=195842
<rdar://problem/48067338>

Reviewed by Simon Fraser.

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

LayoutTests:
[iOS] Unable to close trending window on naver.com.
https://bugs.webkit.org/show_bug.cgi?id=195842
<rdar://problem/48067338>

Reviewed by Simon Fraser.

* fast/events/touch/ios/content-observation/new-content-covers-tap-target-expected.txt: Added.
* fast/events/touch/ios/content-observation/new-content-covers-tap-target.html: Added.
* fast/events/touch/ios/content-observation/prevent-default-on-touch-start.html: Added.

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

5 months agoREGRESSION (r242807): Unified sources build failure from missing imports.
timothy@apple.com [Sat, 16 Mar 2019 18:38:45 +0000 (18:38 +0000)]
REGRESSION (r242807): Unified sources build failure from missing imports.
https://bugs.webkit.org/show_bug.cgi?id=195852

Unreviewed speculative build fix.

* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
Include <wtf/SoftLinking.h> and "UIKitSPI.h" on iOS.

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