WebKit-https.git
4 months agostorage/indexeddb/modern/gc-closes-database-private.html is a flaky timeout
sroberts@apple.com [Mon, 15 Apr 2019 23:02:19 +0000 (23:02 +0000)]
storage/indexeddb/modern/gc-closes-database-private.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=194450

Unreviewed test gardening.

* platform/win/TestExpectations: Updating test expectations

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

4 months agoProvide option to not create a longpress gesture recognizer
dino@apple.com [Mon, 15 Apr 2019 22:57:46 +0000 (22:57 +0000)]
Provide option to not create a longpress gesture recognizer
https://bugs.webkit.org/show_bug.cgi?id=196937
<rdar://problem/49918278>

Build fix for iOS platforms that don't have link preview.

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

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

4 months agoimported/w3c/web-platform-tests/hr-time/test_cross_frame_start.html is a flaky failure
sroberts@apple.com [Mon, 15 Apr 2019 22:35:31 +0000 (22:35 +0000)]
imported/w3c/web-platform-tests/hr-time/test_cross_frame_start.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196944

Unreviewed test gardening.

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

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

4 months agoBytecode cache should not encode the SourceProvider for UnlinkedFunctionExecutable...
tzagallo@apple.com [Mon, 15 Apr 2019 22:23:38 +0000 (22:23 +0000)]
Bytecode cache should not encode the SourceProvider for UnlinkedFunctionExecutable's classSource
https://bugs.webkit.org/show_bug.cgi?id=196878

Reviewed by Saam Barati.

Every time we encode an (Unlinked)SourceCode, we encode its SourceProvider,
including the full source if it's a StringSourceProvider. This wasn't an issue,
since the SourceCode contains a RefPtr to the SourceProvider, and the Encoder
would avoid encoding the provider multiple times. With the addition of the
incremental cache, each UnlinkedFunctionCodeBlock is encoded in isolation, which
means we can no longer deduplicate it and the full program text was being encoded
multiple times in the cache.
As a work around, this patch adds a custom cached type for encoding the SourceCode
without its provider, and later injects the SourceProvider through the Decoder.

* parser/SourceCode.h:
* parser/UnlinkedSourceCode.h:
(JSC::UnlinkedSourceCode::provider const):
* runtime/CachedTypes.cpp:
(JSC::Decoder::Decoder):
(JSC::Decoder::create):
(JSC::Decoder::provider const):
(JSC::CachedSourceCodeWithoutProvider::encode):
(JSC::CachedSourceCodeWithoutProvider::decode const):
(JSC::decodeCodeBlockImpl):
* runtime/CachedTypes.h:

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

4 months agoInjectedBundle parameters often need initialization function called before unarchiving
bfulgham@apple.com [Mon, 15 Apr 2019 22:21:59 +0000 (22:21 +0000)]
InjectedBundle parameters often need initialization function called before unarchiving
https://bugs.webkit.org/show_bug.cgi?id=189709
<rdar://problem/44573653>

Reviewed by Ryosuke Niwa.

Source/WebKit:

Handle the case where the InjectedBundle parameters do not successfully decode because they contain
an unexpected class from the embedding program. If this happens, try decoding the bundle parameters
after the bundle initialiation function runs, which gives the embedding program the opportunity to
register additional classes that are safe for serialization.

Extend WKWebProcessPlugIn with a method that returns the names of any custom classes that need
to be serialized by the InjectedBundle.

Create a new 'decodeBundleParameters' method that contains the logic that used to live in 'initialize'.
Revise 'initialize' to call this new method.

* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
(WebKit::InjectedBundle::initialize): Use the new method.
(WebKit::InjectedBundle::decodeBundleParameters): Added.
(WebKit::InjectedBundle::setBundleParameters): Use 'decodeObjectOfClasses' with the more complete
'classesForCoder' method to unarchive the passed bundle parameters, rather than the
NSDictionary-specific method, since InjectedBundles often encode other types of objects, and the
NSDictionary object may itself hold other kinds of objects.
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
(WebKit::WKWebProcessPlugIn::additionalClassesForParameterCoder): Added.

Tools:

* TestWebKitAPI/cocoa/WebProcessPlugIn/WebProcessPlugIn.mm:
(-[WebProcessPlugIn additionalClassesForParameterCoder]): Added.

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

4 months agoMarkedSpace.cpp is not in the Xcode workspace
rmorisset@apple.com [Mon, 15 Apr 2019 22:06:21 +0000 (22:06 +0000)]
MarkedSpace.cpp is not in the Xcode workspace
https://bugs.webkit.org/show_bug.cgi?id=196928

Reviewed by Saam Barati.

* JavaScriptCore.xcodeproj/project.pbxproj:

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

4 months agoLet WTF::convertSafely deduce types from arguments.
justin_fan@apple.com [Mon, 15 Apr 2019 21:58:14 +0000 (21:58 +0000)]
Let WTF::convertSafely deduce types from arguments.

Reviewer's (Darin Adler) follow-up to https://bugs.webkit.org/show_bug.cgi?id=196793.

* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::tryCreate):
* platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::copyBufferToTexture):
(WebCore::GPUCommandBuffer::copyTextureToBuffer):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetInputStateForPipelineDescriptor):

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

4 months agoProvide option to not create a longpress gesture recognizer
dino@apple.com [Mon, 15 Apr 2019 21:58:08 +0000 (21:58 +0000)]
Provide option to not create a longpress gesture recognizer
https://bugs.webkit.org/show_bug.cgi?id=196937
<rdar://problem/49918278>

Reviewed by Antoine Quint.

A WebKitAdditions file has changed name to WKContentViewInteractionWKInteraction.mm.

Add a property to toggle if we should add a long press gesture
recognizer.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(shouldUsePreviewForLongPress):
(-[WKContentView shouldUsePreviewForLongPress]):

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

4 months agoIncremental bytecode cache should not append function updates when loaded from memory
tzagallo@apple.com [Mon, 15 Apr 2019 21:55:33 +0000 (21:55 +0000)]
Incremental bytecode cache should not append function updates when loaded from memory
https://bugs.webkit.org/show_bug.cgi?id=196865

Reviewed by Filip Pizlo.

JSTests:

* stress/bytecode-cache-shared-code-block.js: Added.
(b):
(program):

Source/JavaScriptCore:

Function updates hold the assumption that a function can only be executed/cached
after its containing code block has already been cached. This assumptions does
not hold if the UnlinkedCodeBlock is loaded from memory by the CodeCache, since
we might have two independent SourceProviders executing different paths of the
code and causing the same UnlinkedCodeBlock to be modified in memory.
Use a RefPtr instead of Ref for m_cachedBytecode in ShellSourceProvider to distinguish
between a new, empty cache and a cache that was not loaded and therefore cannot be updated.

* jsc.cpp:
(ShellSourceProvider::ShellSourceProvider):

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

4 months agoWeb Inspector: SameSite parsing should be stricter
pecoraro@apple.com [Mon, 15 Apr 2019 21:53:48 +0000 (21:53 +0000)]
Web Inspector: SameSite parsing should be stricter
https://bugs.webkit.org/show_bug.cgi?id=196927
<rdar://problem/42291601>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

* UserInterface/Models/Cookie.js:
(WI.Cookie.parseSameSiteAttributeValue):

LayoutTests:

* inspector/unit-tests/cookie.html:
* inspector/unit-tests/cookie-expected.txt:

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

4 months agoThrow TypeError when custom element constructor returns a wrong element or tries...
rniwa@webkit.org [Mon, 15 Apr 2019 21:49:06 +0000 (21:49 +0000)]
Throw TypeError when custom element constructor returns a wrong element or tries to create itself
https://bugs.webkit.org/show_bug.cgi?id=196892

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update the tests according to https://github.com/web-platform-tests/wpt/pull/16328.

* web-platform-tests/custom-elements/upgrading/Node-cloneNode-expected.txt:
* web-platform-tests/custom-elements/upgrading/Node-cloneNode.html:
* web-platform-tests/custom-elements/upgrading/upgrading-parser-created-element-expected.txt:
* web-platform-tests/custom-elements/upgrading/upgrading-parser-created-element.html:

Source/WebCore:

Throw TypeError instead of InvalidStateError for consistency. This updates WebKit's custom elements
implementation for https://github.com/whatwg/html/pull/4525.

Tests: imported/w3c/web-platform-tests/custom-elements/upgrading/Node-cloneNode.html
       imported/w3c/web-platform-tests/custom-elements/upgrading/upgrading-parser-created-element.html

* bindings/js/JSCustomElementInterface.cpp:
(WebCore::JSCustomElementInterface::upgradeElement):
* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::constructJSHTMLElement):

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

4 months ago[CMake] WebCore derived sources should only be referenced inside WebCore
don.olmstead@sony.com [Mon, 15 Apr 2019 21:46:36 +0000 (21:46 +0000)]
[CMake] WebCore derived sources should only be referenced inside WebCore
https://bugs.webkit.org/show_bug.cgi?id=196904

Reviewed by Konstantin Tokarev.

.:

Override WebCore_DERIVED_SOURCES_DIR for WinCairo.

* Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

Use WebCore_DERIVED_SOURCES_DIR instead of DERIVED_SOURCES_WEBCORE_DIR.

* CMakeLists.txt:
* PlatformGTK.cmake:
* PlatformWin.cmake:
* WebCoreMacros.cmake:

Source/WebCore/PAL:

Specify PAL_DERIVED_SOURCES_DIR as a private include directory.

* pal/CMakeLists.txt:
* pal/PlatformWin.cmake:

Source/WebKit:

Remove reference to DERIVED_SOURCES_WEBCORE_DIR in PlatformMac.cmake.

* PlatformMac.cmake:

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

4 months agoDrawingArea should only capture painting related milestones
zalan@apple.com [Mon, 15 Apr 2019 21:34:10 +0000 (21:34 +0000)]
DrawingArea should only capture painting related milestones
https://bugs.webkit.org/show_bug.cgi?id=196926
<rdar://problem/48003845>

Reviewed by Tim Horton.

While dispatching layout milestones (mixture of layout and painting items), the associated drawing areas should only capture the painting related milestones.
These captured milestones get dispatched later in the commit handler to ensure that they are not forwarded prematurely.
However the truly layout related milestones (e.g. DidFirstVisuallyNonEmptyLayout) should be dispatched right away with no delay.

* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::newlyReachedPaintingMilestones const):
(WebKit::RemoteLayerTreeTransaction::setNewlyReachedPaintingMilestones):
(WebKit::RemoteLayerTreeTransaction::newlyReachedLayoutMilestones const): Deleted.
(WebKit::RemoteLayerTreeTransaction::setNewlyReachedLayoutMilestones): Deleted.
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::encode const):
(WebKit::RemoteLayerTreeTransaction::decode):
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::addMilestonesToDispatch):
(WebKit::DrawingArea::dispatchDidReachLayoutMilestone): Deleted.
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
(WebKit::RemoteLayerTreeDrawingArea::addMilestonesToDispatch):
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::flushLayers):
(WebKit::RemoteLayerTreeDrawingArea::dispatchDidReachLayoutMilestone): Deleted.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::dispatchDidReachLayoutMilestone):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
(WebKit::TiledCoreAnimationDrawingArea::addMilestonesToDispatch):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::sendPendingNewlyReachedPaintingMilestones):
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
(WebKit::TiledCoreAnimationDrawingArea::sendPendingNewlyReachedLayoutMilestones): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::dispatchDidReachLayoutMilestone): Deleted.

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

4 months agoWeb Inspector: CPU Usage Timeline - Energy impact popover flickers
pecoraro@apple.com [Mon, 15 Apr 2019 21:33:58 +0000 (21:33 +0000)]
Web Inspector: CPU Usage Timeline - Energy impact popover flickers
https://bugs.webkit.org/show_bug.cgi?id=196931
<rdar://problem/49569122>

Reviewed by Devin Rousso.

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

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

4 months agoHashTable::removeIf always shrinks the hash table by half even if there is nothing...
rniwa@webkit.org [Mon, 15 Apr 2019 21:30:38 +0000 (21:30 +0000)]
HashTable::removeIf always shrinks the hash table by half even if there is nothing left
https://bugs.webkit.org/show_bug.cgi?id=196681

Reviewed by Darin Adler.

Source/WTF:

Made HashTable::removeIf shrink to the "best size", which is the least power of two bigger
than twice the key count as already used in the copy constructor.

* wtf/HashTable.h:
(WTF::HashTable::computeBestTableSize): Extracted from the copy constructor.
(WTF::HashTable::shrinkToBestSize): Added.
(WTF::HashTable::removeIf): Use shrinkToBestSize instead of shrink.
(WTF::HashTable::HashTable):

Tools:

Added tests.

* TestWebKitAPI/Tests/WTF/HashSet.cpp:
(WTF_HashSet.RemoveIf):
(WTF_HashSet.RemoveIfShrinkToBestSize):

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

4 months agoSend delayed Ad Click Attribution conversion requests to the click source
wilander@apple.com [Mon, 15 Apr 2019 21:10:03 +0000 (21:10 +0000)]
Send delayed Ad Click Attribution conversion requests to the click source
https://bugs.webkit.org/show_bug.cgi?id=196838
<rdar://problem/47650157>

Reviewed by Chris Dumez and Youenn Fablet.

Source/WebCore:

WebCore::AdClickAttribution now:
- Sets m_earliestTimeToSend correctly based on WallTime::now().
- Allows for a test override of the base URL for conversions.
- Holds state for whether or not a conversion request has been sent.
- Outputs m_earliestTimeToSend and m_conversion->hasBeenSent in toString().
- Returns m_earliestTimeToSend as a result of a call to
convertAndGetEarliestTimeToSend() which used to be called setConversion().

Test: http/tests/adClickAttribution/send-attribution-conversion-request.html

* loader/AdClickAttribution.cpp:
(WebCore::AdClickAttribution::convertAndGetEarliestTimeToSend):
(WebCore::AdClickAttribution::url const):
(WebCore::AdClickAttribution::urlForTesting const):
(WebCore::AdClickAttribution::markConversionAsSent):
(WebCore::AdClickAttribution::wasConversionSent const):
(WebCore::AdClickAttribution::toString const):
(WebCore::AdClickAttribution::setConversion): Deleted.
    Renamed convertAndGetEarliestTimeToSend().
* loader/AdClickAttribution.h:
(WebCore::AdClickAttribution::Conversion::Conversion):
(WebCore::AdClickAttribution::Conversion::encode const):
(WebCore::AdClickAttribution::Conversion::decode):
* platform/Timer.h:
    Now exports nextFireInterval.

Source/WebKit:

This patch schedules a conversion request with appropriate data going to the
click source as a result of an ad click conversion.

WebKit::AdClickAttributionManager makes use of existing WebKit::PingLoad
infrastructure to make the request. This will probably be reworked into a
dedicated load class further on.

New test infrastructure allows for an override of both the conversion URL
and the 24-48 hour timer.

* NetworkProcess/AdClickAttributionManager.cpp: Added.
(WebKit::AdClickAttributionManager::ensureDestinationMapForSource):
(WebKit::AdClickAttributionManager::store):
(WebKit::AdClickAttributionManager::startTimer):
    Convenience function to support test override.
(WebKit::AdClickAttributionManager::convert):
    This function now sets the timer.
(WebKit::AdClickAttributionManager::fireConversionRequest):
    Fire an individual request.
(WebKit::AdClickAttributionManager::firePendingConversionRequests):
    This is the timer function that iterates over all pending attributions.
(WebKit::AdClickAttributionManager::clear):
    Now clears the two new test settings members.
(WebKit::AdClickAttributionManager::toString const):
* NetworkProcess/AdClickAttributionManager.h: Renamed from Source/WebKit/NetworkProcess/NetworkAdClickAttribution.h.
(WebKit::AdClickAttributionManager::AdClickAttributionManager):
(WebKit::AdClickAttributionManager::setPingLoadFunction):
(WebKit::AdClickAttributionManager::setOverrideTimerForTesting):
(WebKit::AdClickAttributionManager::setConversionURLForTesting):
* NetworkProcess/NetworkAdClickAttribution.cpp: Renamed from Source/WebKit/NetworkProcess/NetworkAdClickAttribution.cpp.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::storeAdClickAttribution):
(WebKit::NetworkProcess::dumpAdClickAttribution):
(WebKit::NetworkProcess::clearAdClickAttribution):
(WebKit::NetworkProcess::setAdClickAttributionOverrideTimerForTesting):
(WebKit::NetworkProcess::setAdClickAttributionConversionURLForTesting):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::NetworkSession):
(WebKit::NetworkSession::setAdClickAttributionOverrideTimerForTesting):
(WebKit::NetworkSession::setAdClickAttributionConversionURLForTesting):
* NetworkProcess/NetworkSession.h:
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::PingLoad):
(WebKit::m_blobFiles):
(WebKit::PingLoad::initialize):
    The PingLoad constructor is now split in two to allow for construction
    without a WebKit::NetworkConnectionToWebProcess object. The body of
    the constructor was moved into the new initialize() function which is
    shared between constructors.
* NetworkProcess/PingLoad.h:
* Sources.txt:
    Removed NetworkProcess/NetworkAdClickAttribution.cpp and added
    NetworkProcess/NetworkAdClickAttribution.cpp.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetAdClickAttributionOverrideTimerForTesting):
(WKPageSetAdClickAttributionConversionURLForTesting):
* UIProcess/API/C/WKPagePrivate.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::dumpAdClickAttribution): Deleted.
(WebKit::NetworkProcessProxy::clearAdClickAttribution): Deleted.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::dumpAdClickAttribution):
(WebKit::WebPageProxy::clearAdClickAttribution):
(WebKit::WebPageProxy::setAdClickAttributionOverrideTimerForTesting):
(WebKit::WebPageProxy::setAdClickAttributionConversionURLForTesting):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::dumpAdClickAttribution): Deleted.
(WebKit::WebProcessPool::clearAdClickAttribution): Deleted.
* UIProcess/WebProcessPool.h:
* WebKit.xcodeproj/project.pbxproj:

Tools:

This patch adds test infrastructure to override the default behavior in
WebKit::NetworkAdClickAttribution.

* TestWebKitAPI/Tests/WebCore/AdClickAttribution.cpp:
(TestWebKitAPI::TEST):
* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::dumpAdClickAttribution):
(WTR::TestRunner::clearAdClickAttribution):
(WTR::TestRunner::setAdClickAttributionOverrideTimerForTesting):
(WTR::TestRunner::setAdClickAttributionConversionURLForTesting):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::setAdClickAttributionOverrideTimerForTesting):
(WTR::TestController::setAdClickAttributionConversionURLForTesting):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

* http/tests/adClickAttribution/attribution-conversion-through-image-redirect-with-priority-expected.txt:
* http/tests/adClickAttribution/attribution-conversion-through-image-redirect-without-priority-expected.txt:
* http/tests/adClickAttribution/resources/conversionFilePath.php: Added.
* http/tests/adClickAttribution/resources/conversionReport.php: Added.
* http/tests/adClickAttribution/resources/getConversionData.php: Added.
* http/tests/adClickAttribution/send-attribution-conversion-request-expected.txt: Added.
* http/tests/adClickAttribution/send-attribution-conversion-request.html: Added.

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

4 months agomergeOSREntryValue is wrong when the incoming value does not match up with the flush...
sbarati@apple.com [Mon, 15 Apr 2019 20:44:33 +0000 (20:44 +0000)]
mergeOSREntryValue is wrong when the incoming value does not match up with the flush format
https://bugs.webkit.org/show_bug.cgi?id=196918

Reviewed by Yusuke Suzuki.

r244238 lead to some debug failures because we were calling checkConsistency()
before doing fixTypeForRepresentation when merging in must handle values in
CFA. This patch fixes that.

However, as I was reading over mergeOSREntryValue, I realized it was wrong. It
was possible it could merge in a value/type outside of the variable's flushed type.
Once the flush format types are locked in, we can't introduce a type out of
that range. This probably never lead to any crashes as our profiling injection
and speculation decision code is solid. However, what we were doing is clearly
wrong, and something a fuzzer could have found if we fuzzed the must handle
values inside prediction injection. We should do that fuzzing:
https://bugs.webkit.org/show_bug.cgi?id=196924

* dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::mergeOSREntryValue):
* dfg/DFGAbstractValue.h:
* dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::injectOSR):

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

4 months agoSeveral structures and enums in the Yarr interpreter can be shrunk
rmorisset@apple.com [Mon, 15 Apr 2019 20:39:11 +0000 (20:39 +0000)]
Several structures and enums in the Yarr interpreter can be shrunk
https://bugs.webkit.org/show_bug.cgi?id=196923

Reviewed by Saam Barati.

YarrOp: 88 -> 80
RegularExpression: 40 -> 32
ByteTerm: 56 -> 48
PatternTerm: 56 -> 48

* yarr/RegularExpression.cpp:
* yarr/YarrInterpreter.h:
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::YarrOp::YarrOp):
* yarr/YarrParser.h:
* yarr/YarrPattern.h:

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

4 months agoWeb Inspector: REGRESSION(r244172): crash when trying to add extra domain while inspe...
drousso@apple.com [Mon, 15 Apr 2019 20:29:30 +0000 (20:29 +0000)]
Web Inspector: REGRESSION(r244172): crash when trying to add extra domain while inspecting JSContext
https://bugs.webkit.org/show_bug.cgi?id=196925
<rdar://problem/49873994>

Reviewed by Joseph Pecoraro.

Move the logic for creating the `InspectorAgent` and `InspectorDebuggerAgent` into separate
functions so that callers can be guaranteed to have a valid instance of the agent.

* inspector/JSGlobalObjectInspectorController.h:
* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::connectFrontend):
(Inspector::JSGlobalObjectInspectorController::frontendInitialized):
(Inspector::JSGlobalObjectInspectorController::appendExtraAgent):
(Inspector::JSGlobalObjectInspectorController::ensureInspectorAgent): Added.
(Inspector::JSGlobalObjectInspectorController::ensureDebuggerAgent): Added.
(Inspector::JSGlobalObjectInspectorController::createLazyAgents):

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

4 months ago[ews-app] status-bubble should display position in queue
aakash_jain@apple.com [Mon, 15 Apr 2019 20:18:48 +0000 (20:18 +0000)]
[ews-app] status-bubble should display position in queue
https://bugs.webkit.org/show_bug.cgi?id=196607

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble._build_bubble):
(StatusBubble._queue_position): Method to calculate patch's position in queue.

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

4 months ago[ews-build] Do not run clean build by default on EWS builders
aakash_jain@apple.com [Mon, 15 Apr 2019 20:12:39 +0000 (20:12 +0000)]
[ews-build] Do not run clean build by default on EWS builders
https://bugs.webkit.org/show_bug.cgi?id=196897

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/steps.py:
(ApplyPatch.start): Do not create .buildbot-patched file. This is a special file for Buildbot and if this
file is present, during the Source checkout, Buildbot cleans the working directory completely (including removing
untracked directories like WebKitBuild).
(CheckOutSource.__init__): Pass method=clean so that Buildbot clean the working directory. This does not remove
untracked files/directories (like WebKitBuild).

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

4 months agoWeb Inspector: REGRESSION(r244268): Canvas: navigation sidebar no longer appears
drousso@apple.com [Mon, 15 Apr 2019 19:56:59 +0000 (19:56 +0000)]
Web Inspector: REGRESSION(r244268): Canvas: navigation sidebar no longer appears
https://bugs.webkit.org/show_bug.cgi?id=196920
<rdar://problem/49910618>

Reviewed by Timothy Hatcher.

* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
Now that we no longer call `addSubview` when adding a sidebar panel, we can't check to see
if `parentSidebar` has been set, as that is just an alias for `parentView`.

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

4 months agoWebDriver: Set Cookie endpoint does not correctly set subdomain cookies
drousso@apple.com [Mon, 15 Apr 2019 19:49:08 +0000 (19:49 +0000)]
WebDriver: Set Cookie endpoint does not correctly set subdomain cookies
https://bugs.webkit.org/show_bug.cgi?id=196872
<rdar://problem/49233240>

Reviewed by Joseph Pecoraro.

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::addSingleCookie):
Rather than try to "force" the cookie to be set on the current active URL, use the cookie
itself to figure out which domain it should be set on.

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

4 months agoREGRESSION (r240644): Layout Test inspector/page/overrideSetting-ICECandidateFilterin...
drousso@apple.com [Mon, 15 Apr 2019 19:46:34 +0000 (19:46 +0000)]
REGRESSION (r240644): Layout Test inspector/page/overrideSetting-ICECandidateFilteringEnabled.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=194437
<rdar://problem/48008005>

Reviewed by Joseph Pecoraro.

* inspector/page/overrideSetting-ICECandidateFilteringEnabled.html:
* inspector/page/overrideSetting-ICECandidateFilteringEnabled-expected.txt:

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

4 months agoWeb Inspector: DOMDebugger: move breakpoint storage to use `WI.ObjectStore`
drousso@apple.com [Mon, 15 Apr 2019 19:17:14 +0000 (19:17 +0000)]
Web Inspector: DOMDebugger: move breakpoint storage to use `WI.ObjectStore`
https://bugs.webkit.org/show_bug.cgi?id=196231
<rdar://problem/49236864>

Reviewed by Joseph Pecoraro.

* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.removeDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.removeDOMBreakpointsForNode):
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype.addURLBreakpoint):
(WI.DOMDebuggerManager.prototype.removeURLBreakpoint):
(WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._saveDOMBreakpoints): Deleted.
(WI.DOMDebuggerManager.prototype._saveEventBreakpoints): Deleted.
(WI.DOMDebuggerManager.prototype._saveURLBreakpoints): Deleted.

* UserInterface/Models/DOMBreakpoint.js:
(WI.DOMBreakpoint.prototype.saveIdentityToCookie):
(WI.DOMBreakpoint.prototype.toJSON): Added.
(WI.DOMBreakpoint.prototype.get serializableInfo): Deleted.
* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint.prototype.saveIdentityToCookie):
(WI.EventBreakpoint.prototype.toJSON): Added.
(WI.EventBreakpoint.prototype.get serializableInfo): Deleted.
* UserInterface/Models/URLBreakpoint.js:
(WI.URLBreakpoint.prototype.saveIdentityToCookie):
(WI.URLBreakpoint.prototype.toJSON): Added.
(WI.URLBreakpoint.prototype.get serializableInfo): Deleted.
Replace `get serializableInfo` with `toJSON` as required by `WI.ObjectStore`.

* UserInterface/Base/ObjectStore.js:
(WI.ObjectStore._open):
Increment version.

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

4 months agoWeb Inspector: drag/drop over the sidebar should load an imported file in Canvas...
drousso@apple.com [Mon, 15 Apr 2019 18:58:27 +0000 (18:58 +0000)]
Web Inspector: drag/drop over the sidebar should load an imported file in Canvas/Audit tab
https://bugs.webkit.org/show_bug.cgi?id=196873
<rdar://problem/49858190>

Reviewed by Timothy Hatcher.

* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI._handleDragOver): Added.
(WI._handleDrop): Added.
(WI._dragOver): Deleted.
* UserInterface/Views/AuditTabContentView.js:
(WI.AuditTabContentView):
(WI.AuditTabContentView.prototype.async handleFileDrop): Added.
(WI.AuditTabContentView.prototype._handleDragOver): Deleted.
(WI.AuditTabContentView.prototype._handleDrop): Deleted.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.async handleFileDrop): Added.
(WI.CanvasTabContentView.prototype._handleDragOver): Deleted.
(WI.CanvasTabContentView.prototype._handleDrop): Deleted.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.prototype.async handleFileDrop): Added.
Check whether the current tab is able to handle a file drop, and if so, don't prevent the
drag from occuring. This now allows the user to drop anywhere on the Web Inspector area to
import files, so long as the relevant tab is currently selected.

* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.async processJSON): Added.
(WI.CanvasManager.prototype.processJSON): Deleted.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.async processJSON): Added.
(WI.TimelineManager.prototype.processJSON): Deleted.
Make `async` to match other `processJSON` functions.

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

4 months agoRegression(r237903) Speedometer 2 is 1-2% regressed on iOS
cdumez@apple.com [Mon, 15 Apr 2019 18:56:52 +0000 (18:56 +0000)]
Regression(r237903) Speedometer 2 is 1-2% regressed on iOS
https://bugs.webkit.org/show_bug.cgi?id=196841
<rdar://problem/45957016>

Reviewed by Myles C. Maxfield.

Speedometer 2 content does not use the text-underline-offset and text-decoration-thickness
features that were added in r237903 so I looked for behavior changes in the context of
Speedometer from r237903. I found that RenderStyle::changeAffectsVisualOverflow() started
returning true a lot more often after r237903. The reason is that r237903 dropped the
visualOverflowForDecorations() checks in this method and started returning true a lot
more as a result.

To restore previous behavior, this patch adds back the visualOverflowForDecorations() checks
that were dropped in r237903. I have verified that with this patch,
RenderStyle::changeAffectsVisualOverflow() returns true as many times as it used to before
r237903.

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeAffectsVisualOverflow const):

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

4 months agoASSERT fires when removing a disallowed clone from the shadow tree without reseting...
said@apple.com [Mon, 15 Apr 2019 18:54:21 +0000 (18:54 +0000)]
ASSERT fires when removing a disallowed clone from the shadow tree without reseting its corresponding element
https://bugs.webkit.org/show_bug.cgi?id=196895

Reviewed by Darin Adler.

Source/WebCore:

When cloning elements to the shadow tree of an SVGUseElement, the
corresponding element links are set from the clones to the originals.
Later some of the elements may be disallowed to exist in the shadow tree.
For example the SVGPatternElement is disallowed and has to be removed
even after cloning. The problem is the corresponding elements are not
reset to null. Usually this is not a problem because the removed elements
will be deleted and the destructor of SVGElement will reset the corresponding
element links. However in some cases, the cloned element is referenced
from another SVGElement, for example the target of a SVGTRefElement. In
this case the clone won't be deleted but it will be linked to the original
and the event listeners won't be copied from the original. When the
original is deleted, its event listeners have to be removed. The event
listeners of the clones also ave to be removed. But because the event
listeners of the original were not copied when cloning, the assertion in
SVGElement::removeEventListener() fires.

Test: svg/custom/use-disallowed-element-clear-corresponding-element.html

* svg/SVGUseElement.cpp:
(WebCore::disassociateAndRemoveClones):

LayoutTests:

* svg/custom/use-disallowed-element-clear-corresponding-element-expected.txt: Added.
* svg/custom/use-disallowed-element-clear-corresponding-element.html: Added.

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

4 months agoWeb Inspector: Heap: logging an object from a snapshot shouldn't use the "special...
drousso@apple.com [Mon, 15 Apr 2019 18:47:38 +0000 (18:47 +0000)]
Web Inspector: Heap: logging an object from a snapshot shouldn't use the "special" style if the object is reachable
https://bugs.webkit.org/show_bug.cgi?id=196889
<rdar://problem/49870693>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WI.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):

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

4 months agoWeb Inspector: Debugger: deleting a special breakpoint should disable it
drousso@apple.com [Mon, 15 Apr 2019 18:34:51 +0000 (18:34 +0000)]
Web Inspector: Debugger: deleting a special breakpoint should disable it
https://bugs.webkit.org/show_bug.cgi?id=196737
<rdar://problem/49740680>

Reviewed by Timothy Hatcher.

* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement.prototype.ondelete):

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

4 months agoTestRunner::notifyDone() should be safely reentrant
pvollan@apple.com [Mon, 15 Apr 2019 18:27:06 +0000 (18:27 +0000)]
TestRunner::notifyDone() should be safely reentrant
https://bugs.webkit.org/show_bug.cgi?id=196898

Reviewed by Darin Adler.

It is currently possible that TestRunner::notifyDone() will call itself, since
notifyDone() will force a repaint, which can start executing JavaScript, which
may call notifyDone() again. This can lead to test failures and flakiness.
Fix this by setting the m_waitToDump flag before calling the dump() method.

* DumpRenderTree/mac/TestRunnerMac.mm:
(TestRunner::notifyDone):
(TestRunner::forceImmediateCompletion):
* DumpRenderTree/win/TestRunnerWin.cpp:
(TestRunner::notifyDone):
(TestRunner::forceImmediateCompletion):

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

4 months agoWeb Inspector: Uncaught Exception: null is not an object (evaluating 'this.selectedTr...
drousso@apple.com [Mon, 15 Apr 2019 17:31:46 +0000 (17:31 +0000)]
Web Inspector: Uncaught Exception: null is not an object (evaluating 'this.selectedTreeElement.reveal')
https://bugs.webkit.org/show_bug.cgi?id=196804
<rdar://problem/49800708>

Reviewed by Timothy Hatcher.

* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.update):

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

4 months agoWeb Inspector: Uncaught Exception: Can't find variable: WebGL2RenderingContext
drousso@apple.com [Mon, 15 Apr 2019 17:29:26 +0000 (17:29 +0000)]
Web Inspector: Uncaught Exception: Can't find variable: WebGL2RenderingContext
https://bugs.webkit.org/show_bug.cgi?id=196874
<rdar://problem/49858912>

Reviewed by Timothy Hatcher.

* UserInterface/Models/Recording.js:
(WI.Recording.prototype.createContext):

* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process.getContent):

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

4 months agoWeb Inspector: DOMDebugger: "Attribute Modified" breakpoints pause after the modifica...
drousso@apple.com [Mon, 15 Apr 2019 17:27:40 +0000 (17:27 +0000)]
Web Inspector: DOMDebugger: "Attribute Modified" breakpoints pause after the modification occurs for the style attribute
https://bugs.webkit.org/show_bug.cgi?id=196556
<rdar://problem/49570681>

Reviewed by Timothy Hatcher.

Source/WebCore:

Test: inspector/dom-debugger/attribute-modified-style.html

* css/PropertySetCSSStyleDeclaration.h:
* css/PropertySetCSSStyleDeclaration.cpp:
(WebCore::StyleAttributeMutationScope::~StyleAttributeMutationScope):
(WebCore::InlineCSSStyleDeclaration::willMutate): Added.

* dom/StyledElement.cpp:
(WebCore::StyledElement::styleAttributeChanged):
(WebCore::StyledElement::inlineStyleChanged):

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::willInvalidateStyleAttr): Added.
(WebCore::InspectorInstrumentation::didInvalidateStyleAttr):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willInvalidateStyleAttrImpl): Added.
(WebCore::InspectorInstrumentation::didInvalidateStyleAttrImpl):

* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::didInvalidateStyleAttr):

* inspector/agents/InspectorDOMDebuggerAgent.h:
* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::willInvalidateStyleAttr): Added.
(WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr): Deleted.

LayoutTests:

* inspector/dom-debugger/attribute-modified-style.html: Added.
* inspector/dom-debugger/attribute-modified-style-expected.txt: Added.

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

4 months agoWeb Inspector: sidebar panels shouldn't be added as subviews unless visible
drousso@apple.com [Mon, 15 Apr 2019 17:27:27 +0000 (17:27 +0000)]
Web Inspector: sidebar panels shouldn't be added as subviews unless visible
https://bugs.webkit.org/show_bug.cgi?id=196888
<rdar://problem/49870659>

Reviewed by Timothy Hatcher.

* UserInterface/Views/Sidebar.js:
(WI.Sidebar.prototype.insertSidebarPanel):
(WI.Sidebar.prototype.removeSidebarPanel):
(WI.Sidebar.prototype.set selectedSidebarPanel):

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

4 months agoWeb Inspector: Elements: event listener change events should only be fired for the...
drousso@apple.com [Mon, 15 Apr 2019 17:26:39 +0000 (17:26 +0000)]
Web Inspector: Elements: event listener change events should only be fired for the selected node and it's ancestors
https://bugs.webkit.org/show_bug.cgi?id=196887
<rdar://problem/49870627>

Reviewed by Timothy Hatcher.

Source/WebCore:

Test: inspector/dom/event-listener-add-remove.html
      inspector/dom/event-listener-inspected-node.html

* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::setInspectedNode):
(WebCore::InspectorDOMAgent::didAddEventListener):
(WebCore::InspectorDOMAgent::willRemoveEventListener):

Source/WebInspectorUI:

* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.getEventListeners):

LayoutTests:

* inspector/dom/event-listener-inspected-node.html: Added.
* inspector/dom/event-listener-inspected-node-expected.txt: Added.

* inspector/dom/event-listener-add-remove.html:
* inspector/dom/event-listener-add-remove-expected.txt:

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

4 months agoWeb Inspector: replace all uses of `this` with `WI` in Main.js/Test.js
drousso@apple.com [Mon, 15 Apr 2019 17:24:54 +0000 (17:24 +0000)]
Web Inspector: replace all uses of `this` with `WI` in Main.js/Test.js
https://bugs.webkit.org/show_bug.cgi?id=196795
<rdar://problem/49796618>

Reviewed by Timothy Hatcher.

* UserInterface/Base/Main.js:
* UserInterface/Test/Test.js:

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

4 months agoWeb Inspector: REGRESSION: Heap: snapshots taken manually don't appear in the list
drousso@apple.com [Mon, 15 Apr 2019 17:23:26 +0000 (17:23 +0000)]
Web Inspector: REGRESSION: Heap: snapshots taken manually don't appear in the list
https://bugs.webkit.org/show_bug.cgi?id=196900
<rdar://problem/49880278>

Reviewed by Timothy Hatcher.

* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView):
(WI.HeapAllocationsTimelineView.prototype.layout):
(WI.HeapAllocationsTimelineView.prototype._importButtonNavigationItemClicked):
(WI.HeapAllocationsTimelineView.prototype._takeHeapSnapshotClicked):
Drive-by: only show heap snapshots for the selected range.
* UserInterface/Views/TimelineView.js:
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._handleTimelineViewNeedsEntireSelectedRange): Added.
Drive-by: taking (or importing) a heap snapshot should select the entire range so that the
new record will appear in the list of heap snapshots.

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

4 months agoWeb Inspector: REGRESSION (r244157): Timelines: ruler size appears wrong on first...
drousso@apple.com [Mon, 15 Apr 2019 17:22:11 +0000 (17:22 +0000)]
Web Inspector: REGRESSION (r244157): Timelines: ruler size appears wrong on first layout
https://bugs.webkit.org/show_bug.cgi?id=196901
<rdar://problem/49880539>

Reviewed by Timothy Hatcher.

* UserInterface/Views/View.js:
(WI.View.prototype._layoutSubtree):
Ensure that the forced override of the layout reason during the initial layout doesn't
affect subviews.

* UserInterface/Views/ConsoleDrawer.js:
(WI.ConsoleDrawer.prototype.sizeDidChange): Added.
(WI.ConsoleDrawer.prototype.layout): Deleted.
* UserInterface/Views/ConsolePrompt.js:
(WI.ConsolePrompt.prototype.sizeDidChange): Added.
(WI.ConsolePrompt.prototype.layout): Deleted.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.sizeDidChange): Added.
(WI.DOMTreeContentView.prototype.layout):
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.sizeDidChange): Added.
(WI.NavigationBar.prototype.layout):
(WI.NavigationBar.prototype._updateContent): Added.
(WI.NavigationBar.prototype._updateContent.forceItemHidden): Added.
(WI.NavigationBar.prototype._updateContent.isDivider): Added.
(WI.NavigationBar.prototype._updateContent.calculateVisibleItemWidth): Added.
(WI.NavigationBar.prototype.layout.forceItemHidden): Deleted.
(WI.NavigationBar.prototype.layout.isDivider): Deleted.
(WI.NavigationBar.prototype.layout.calculateVisibleItemWidth): Deleted.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.sizeDidChange): Added.
(WI.TabBrowser.prototype.layout): Deleted.
Move logic in `layout` to `sizeDidChange` where applicable.

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

4 months agoinspector/canvas/recording-webgl-snapshots.html is a flaky failure
sroberts@apple.com [Mon, 15 Apr 2019 17:12:28 +0000 (17:12 +0000)]
inspector/canvas/recording-webgl-snapshots.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196875

Unreviewed test gardening.

* platform/mac/TestExpectations: Updating test expectations

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

4 months agoinspector/timeline/timeline-recording.html is a flaky failure
sroberts@apple.com [Mon, 15 Apr 2019 17:06:07 +0000 (17:06 +0000)]
inspector/timeline/timeline-recording.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196915

Unreviewed test gardening.

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

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

4 months agoLayout tests
sroberts@apple.com [Mon, 15 Apr 2019 16:52:29 +0000 (16:52 +0000)]
Layout tests
inspector/heap/imported-snapshot.html
inspector/heap/snapshot.html are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=155607

Unreviewed test gardening

* platform/mac/TestExpectations: Updating expectations for flaky failures

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

4 months ago[GTK][WPE] Add enable-media websetting
philn@webkit.org [Mon, 15 Apr 2019 14:41:17 +0000 (14:41 +0000)]
[GTK][WPE] Add enable-media websetting
https://bugs.webkit.org/show_bug.cgi?id=196863

Reviewed by Michael Catanzaro.

Source/WebKit:

It can be useful for headless browsers, for instance. The setting is enabled by default.

* Shared/WebPreferences.yaml:
* UIProcess/API/glib/WebKitSettings.cpp:
(webKitSettingsSetProperty):
(webKitSettingsGetProperty):
(webkit_settings_class_init):
(webkit_settings_get_enable_media):
(webkit_settings_set_enable_media):
* UIProcess/API/gtk/WebKitSettings.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/WebKitSettings.h:
* UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

Tools:

* TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:
(testWebKitSettings): Add test for the enable-media web-setting.

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

4 months agoEnsure iOS layout traits are used for media controls in modern compatibility mode
graouts@webkit.org [Mon, 15 Apr 2019 11:49:12 +0000 (11:49 +0000)]
Ensure iOS layout traits are used for media controls in modern compatibility mode
https://bugs.webkit.org/show_bug.cgi?id=196812
<rdar://problem/47460637>

Unreviewed. Speculative fix for test regressions on open-source bots.

* Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype.get layoutTraits):

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

4 months agoEnsure iOS layout traits are used for media controls in modern compatibility mode
graouts@webkit.org [Mon, 15 Apr 2019 07:11:11 +0000 (07:11 +0000)]
Ensure iOS layout traits are used for media controls in modern compatibility mode
https://bugs.webkit.org/show_bug.cgi?id=196812
<rdar://problem/47460637>

Reviewed by Dean Jackson.

Source/WebCore:

Test: media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode.html

Instead of looking at the UA string, check whether we support touches which is the correct indicator of whether we should
be using the iOS layout traits for media controls.

* Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype.get layoutTraits):

LayoutTests:

Add a new test that enforces modern compatibility mode and checks that the iOS controls are used.

* media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode-expected.txt: Added.
* media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode.html: Added.

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

4 months agoAPI test WKAttachmentTests.AddAttachmentToConnectedImageElement is a flaky failure...
wenson_hsieh@apple.com [Mon, 15 Apr 2019 04:47:39 +0000 (04:47 +0000)]
API test WKAttachmentTests.AddAttachmentToConnectedImageElement is a flaky failure on Mac Release builds
https://bugs.webkit.org/show_bug.cgi?id=196905
<rdar://problem/49886096>

Reviewed by Tim Horton.

This flaky test exercises a race condition between when attachment insertion updates are dispatched from the web
process to the UI process, and when script is executed via -[WKWebView evaluateJavaScript:completionHandler:].
Since attachment insertion and removal updates from the web process to the UI process are scheduled on a zero-
delay timer, we end up with this sequence of events in the problematic (failure) case:

(a) [UI]    Run script #1 (which calls `HTMLAttachmentElement.getAttachmentIdentifier`)
    ...IPC from UI to web process...
(b) [Web]   Evaluate script #1 in the web process, which schedules attachment updates on a zero-delay timer
    ...IPC from web to UI process...
(c) [UI]    Invoke completion handler for script #1
(d) [UI]    Run script #2 (which calls `document.querySelector('img').attachmentIdentifier`)
    ...IPC from UI to web process...
(e) [Web]   Evaluate script #2 in the web process
(f) [Web]   Zero-delay timer fires and dispatches attachment updates to the UI process

...which means that script #2 will complete before the UI process has received the attachment updates sent in
step (f). However, in the case where the flaky test succeeds, the zero-delay timer in (f) fires *before* script
#2 is run in step (e).

This patch fixes the flaky test by waiting until attachment insertion updates are guaranteed to be received in
the UI process by waiting on a script message posted by the web process, after attachment updates are
dispatched.

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

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

4 months ago[WinCairo][WKL] Unreviewed test gardening.
Hironori.Fujii@sony.com [Mon, 15 Apr 2019 03:47:39 +0000 (03:47 +0000)]
[WinCairo][WKL] Unreviewed test gardening.

* platform/wincairo-wk1/TestExpectations: Skip animation tests.

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

4 months agoDisable Flaky API Test WKAttachmentTests.AddAttachmentToConnectedImageElement
aakash_jain@apple.com [Mon, 15 Apr 2019 00:02:05 +0000 (00:02 +0000)]
Disable Flaky API Test WKAttachmentTests.AddAttachmentToConnectedImageElement
https://bugs.webkit.org/show_bug.cgi?id=196909

Reviewed by Wenson Hsieh.

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

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

4 months agoLink prefetch not useful for top-level navigation
commit-queue@webkit.org [Sun, 14 Apr 2019 20:52:46 +0000 (20:52 +0000)]
Link prefetch not useful for top-level navigation
https://bugs.webkit.org/show_bug.cgi?id=195623

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

Source/WebCore:

Cache cross-domain top-level prefetches in a dedicated cache and not in the
memory cache. Ignore prefetches for content extension checks.

Tests: http/tests/cache/link-prefetch-main-resource-iframe.html
       http/tests/cache/link-prefetch-main-resource.html

* loader/LinkLoader.cpp:
(WebCore::LinkLoader::prefetchIfNeeded):
* loader/ResourceLoadInfo.cpp:
(WebCore::toResourceType):
* loader/ResourceLoadInfo.h:
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::willSendRequestInternal):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):

Source/WebKit:

Cache cross-domain top-level prefetches in a dedicated cache. When a navigation
to the same url is done within a threshold (5 seconds), reuse the
prefetch cache entry, move it to the disk cache and navigate to
the url, meaning no extra network trip is needed. When not used within
the threshold period, the prefetch entry will be erased using a timer.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::lowMemoryHandler):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::prefetchCache):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::didReceiveBuffer):
(WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
(WebKit::NetworkResourceLoader::isCrossOriginPrefetch const):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/cache/PrefetchCache.cpp: Added.
(WebKit::PrefetchCache::Entry::Entry):
(WebKit::PrefetchCache::PrefetchCache):
(WebKit::PrefetchCache::~PrefetchCache):
(WebKit::PrefetchCache::clear):
(WebKit::PrefetchCache::take):
(WebKit::PrefetchCache::store):
(WebKit::PrefetchCache::sessionPrefetchMap const):
(WebKit::PrefetchCache::clearExpiredEntries):
* NetworkProcess/cache/PrefetchCache.h: Added.
(WebKit::PrefetchCache::Entry::response const):
(WebKit::PrefetchCache::Entry::releaseBuffer):
* Shared/WebPreferences.yaml:
* Sources.txt:
* WebKit.xcodeproj/project.pbxproj:

LayoutTests:

Verify that prefetching a cross-domain top-level main resource
is cached in the prefetch cache and only loaded once, and that non
top-level prefetches keep the old behavior.

* http/tests/cache/link-prefetch-main-resource-expected.txt: Added.
* http/tests/cache/link-prefetch-main-resource-iframe-expected.txt: Added.
* http/tests/cache/link-prefetch-main-resource-iframe.html: Added.
* http/tests/cache/link-prefetch-main-resource.html: Added.
* http/tests/cache/resources/prefetched-main-resource-iframe.php: Added.
* http/tests/cache/resources/prefetched-main-resource.php: Added.
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:

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

4 months agoExtract UTI mapping and allow for additions
dino@apple.com [Sun, 14 Apr 2019 20:14:19 +0000 (20:14 +0000)]
Extract UTI mapping and allow for additions
https://bugs.webkit.org/show_bug.cgi?id=196822
<rdar://problem/49822339>

Reviewed by Darin Adler

Post landing feedback on minimizing String constructors.

* platform/network/mac/UTIUtilities.mm:
(WebCore::MIMETypeFromUTITree):
(WebCore::UTIFromMIMETypeCachePolicy::createValueForKey):

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

4 months ago[Cocoa] WKCustomProtocolLoader should store a WeakPtr to its LegacyCustomProtocolMana...
aestes@apple.com [Sun, 14 Apr 2019 16:08:23 +0000 (16:08 +0000)]
[Cocoa] WKCustomProtocolLoader should store a WeakPtr to its LegacyCustomProtocolManagerProxy
https://bugs.webkit.org/show_bug.cgi?id=196893
<rdar://problem/48318983>

Reviewed by Anders Carlsson.

In addition to manually invalidating each WKCustomProtocolLoader's _customProtocolManagerProxy
pointer when the LegacyCustomProtocolManagerClient is invalidated, use a WeakPtr in case the
LegacyCustomProtocolManagerProxy is ever destroyed without first invalidating the client.
Also add null pointer checks to NSURLConnectionDelegate methods, which might be called after
the LegacyCustomProtocolManagerProxy has been destroyed.

* UIProcess/Cocoa/LegacyCustomProtocolManagerClient.mm:
(-[WKCustomProtocolLoader initWithLegacyCustomProtocolManagerProxy:customProtocolID:request:]):
(-[WKCustomProtocolLoader cancel]):
(-[WKCustomProtocolLoader connection:didFailWithError:]):
(-[WKCustomProtocolLoader connection:didReceiveResponse:]):
(-[WKCustomProtocolLoader connection:didReceiveData:]):
(-[WKCustomProtocolLoader connection:willSendRequest:redirectResponse:]):
(-[WKCustomProtocolLoader connectionDidFinishLoading:]):
(WebKit::LegacyCustomProtocolManagerClient::startLoading):
(WebKit::LegacyCustomProtocolManagerClient::invalidate):
(-[WKCustomProtocolLoader customProtocolManagerProxyDestroyed]): Deleted.
* UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:

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

4 months ago[CMake] JavaScriptCore derived sources should only be referenced inside JavaScriptCore
don.olmstead@sony.com [Sun, 14 Apr 2019 13:50:01 +0000 (13:50 +0000)]
[CMake] JavaScriptCore derived sources should only be referenced inside JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=196742

Reviewed by Konstantin Tokarev.

.:

Migrate to using JavaScriptCore_DERIVED_SOURCES_DIR instead of DERIVED_SOURCES_JAVASCRIPTCORE_DIR
to support moving the JavaScriptCore derived sources outside of a shared directory.
This is in support of the target oriented design refactoring.

WinCairo is explicitly overriding the value as a canary for this setup.

Also move JavaScriptCore_SCRIPTS_DIR to WebKitFS to remove logic setting it in other projects.

* Source/PlatformWin.cmake:
* Source/cmake/OptionsAppleWin.cmake:
* Source/cmake/OptionsWinCairo.cmake:
* Source/cmake/WebKitFS.cmake:

Source/JavaScriptCore:

Migrate to using JavaScriptCore_DERIVED_SOURCES_DIR instead of DERIVED_SOURCES_JAVASCRIPTCORE_DIR
to support moving the JavaScriptCore derived sources outside of a shared directory.

Also use JavaScriptCore_DERIVED_SOURCES_DIR instead of DERIVED_SOUCES_DIR.

* CMakeLists.txt:

Source/WebCore:

Don't set JavaScriptCore_SCRIPTS_DIR now that it is set within WebKitFS.

* CMakeLists.txt:

Source/WebDriver:

Don't set JavaScriptCore_SCRIPTS_DIR now that it is set within WebKitFS.

* CMakeLists.txt:

Source/WebKit:

Don't set JavaScriptCore_SCRIPTS_DIR now that it is set within WebKitFS.

* CMakeLists.txt:
* PlatformWin.cmake:

Remove use of DERIVED_SOURCES_JAVASCRIPTCORE_DIR.

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

4 months ago[bmalloc][Linux] Add support for memory status calculation
zandobersek@gmail.com [Sun, 14 Apr 2019 06:46:17 +0000 (06:46 +0000)]
[bmalloc][Linux] Add support for memory status calculation
https://bugs.webkit.org/show_bug.cgi?id=195938

Reviewed by Carlos Garcia Campos.

Memory status and under-memory-pressure capabilities in bmalloc can be
implemented on Linux by reading and parsing the statm file under the
proc filesystem.

We retrieve the resident set size from the statm file and multiply it
with the page size. This gives an upper-bound estimate of the memory
that's being consumed by the process.

The statm-based estimate seems preferable to other alternatives. One
such alternative would be reading and parsing more-detailed smaps file,
also exposed under the proc filesystem. This is at the moment being done
in WTF's MemoryFootprint implementation for Linux systems, but on Linux
ports this operation is being throttled to only execute once per second
because of the big computing expense required to read and parse out the
data. A future MemoryFootprint implementation could simply retrieve the
memory footprint value from bmalloc.

Another alternative is the Linux taskstats interface. This one would
require utilizing a netlink socket to retrieve the necessary statistics,
but it requires the process to have elevated privileges, which is a
blocker.

* bmalloc/AvailableMemory.cpp:
(bmalloc::LinuxMemory::singleton):
(bmalloc::LinuxMemory::footprint const):
(bmalloc::computeAvailableMemory):
(bmalloc::memoryStatus):
* bmalloc/AvailableMemory.h:
(bmalloc::isUnderMemoryPressure):
* bmalloc/bmalloc.h:

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

4 months ago[ Mac Debug ] TestWebKitAPI.ProcessSwap.ReuseSuspendedProcessForRegularNavigationReta...
cdumez@apple.com [Sun, 14 Apr 2019 04:22:34 +0000 (04:22 +0000)]
[ Mac Debug ] TestWebKitAPI.ProcessSwap.ReuseSuspendedProcessForRegularNavigationRetainBundlePage is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=196548
<rdar://problem/49567254>

Reviewed by Darin Adler.

Update ProvisionalPageProxy methods to more consistently ignore unexpected IPC from the process. Previously,
some of the methods were doing this, but some other like didFailProvisionalLoadForFrame() weren't and this
was leading to this flaky crash. The issue is that if we do the load in an existing process that was recently
doing, there may be leftover IPC for the same pageID and this IPC gets received by the ProvisionalPageProxy
even though it is from a previous navigation. For this reason, the ProvisionalPageProxy should ignore all
incoming IPC that is not for its associated navigation.

* UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::didPerformClientRedirect):
(WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
(WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
(WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
(WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::ProvisionalPageProxy::decidePolicyForResponse):
(WebKit::ProvisionalPageProxy::didPerformServerRedirect):
(WebKit::ProvisionalPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync):

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

4 months agoUnreviewed, try to fix the internal build after r244239
wenson_hsieh@apple.com [Sat, 13 Apr 2019 19:44:47 +0000 (19:44 +0000)]
Unreviewed, try to fix the internal build after r244239

Force the bots to regenerate WKWebpagePreferences.h by touching the file. Adds a `Foundation/Foundation.h`
import that was missing anyways.

* UIProcess/API/Cocoa/WKWebpagePreferences.h:

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

4 months agoCodeCache should check that the UnlinkedCodeBlock was successfully created before...
tzagallo@apple.com [Sat, 13 Apr 2019 08:54:19 +0000 (08:54 +0000)]
CodeCache should check that the UnlinkedCodeBlock was successfully created before caching it
https://bugs.webkit.org/show_bug.cgi?id=196880

Reviewed by Yusuke Suzuki.

JSTests:

* stress/bytecode-cache-syntax-error.js: Added.
(catch):

Source/JavaScriptCore:

CodeCache should not tell the SourceProvider to cache the bytecode if it failed
to create the UnlinkedCodeBlock.

* runtime/CodeCache.cpp:
(JSC::CodeCache::getUnlinkedGlobalCodeBlock):

Tools:

Add a new function for bytecode cache tests that does not forceDiskCache
for the second run: runBytecodeCacheNoAssetion. This is necessary for the
test added in this patch, since the code is invalid and therefore won't be
cached. It should also be useful for tests that evaluate dynamically
generated code.

* Scripts/jsc-stress-test-helpers/bytecode-cache-test-helper.sh:
* Scripts/run-jsc-stress-tests:

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

4 months agoProvide a quirk to disable Pointer Events
graouts@webkit.org [Sat, 13 Apr 2019 08:00:44 +0000 (08:00 +0000)]
Provide a quirk to disable Pointer Events
https://bugs.webkit.org/show_bug.cgi?id=196877
<rdar://problem/49863470>

Reviewed by Dean Jackson.

Add a quirk to disable Pointer Events. We also opt a website that has compatibility issues with Pointer Events into this new quirk.

* dom/PointerEvent.idl:
* page/Quirks.cpp:
(WebCore::Quirks::shouldDisablePointerEventsQuirk const):
* page/Quirks.h:
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::absoluteEventTrackingRegionsForFrame const):
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveElement):

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

4 months agoEnable modern compatibility mode by default in WKWebView on some devices
wenson_hsieh@apple.com [Sat, 13 Apr 2019 03:54:10 +0000 (03:54 +0000)]
Enable modern compatibility mode by default in WKWebView on some devices
https://bugs.webkit.org/show_bug.cgi?id=196883
<rdar://problem/49864527>

Reviewed by Tim Horton.

Source/WebCore:

Add a new helper function to determine whether an app is pre-installed on iOS, for the purposes of ensuring
compatibility with existing Apple apps that are not affected by linked-on-or-after. This involves all apps with
a bundle ID that begins with "com.apple.".

* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::setApplicationBundleIdentifier):
(WebCore::applicationBundleStartsWith):
(WebCore::IOSApplication::isAppleApplication):

Source/WebKit:

Make some minor adjustments to new API.

* Shared/WebCompatibilityMode.h:

Rename WebCompatibilityMode::Default to WebCompatibilityMode::Recommended.

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

Now that the role of the UseModernCompatibilityModeByDefault debug preference is limited to bypassing linked-on-
or-after and app bundle compatibility hacks, we no longer make this default to true in iOSMac.

* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/API/Cocoa/WKNavigationDelegate.h:

Rename the withPreferences: label to just preferences:.

* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/Cocoa/VersionChecks.h:
* UIProcess/ios/WebPageProxyIOS.mm:

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

4 months agor244079 logically broke shouldSpeculateInt52
sbarati@apple.com [Sat, 13 Apr 2019 03:04:18 +0000 (03:04 +0000)]
r244079 logically broke shouldSpeculateInt52
https://bugs.webkit.org/show_bug.cgi?id=196884

Reviewed by Yusuke Suzuki.

JSTests:

* microbenchmarks/int52-rand-function.js: Added.
(Math.random):

Source/JavaScriptCore:

In r244079, I changed shouldSpeculateInt52 to only return true
when the prediction is isAnyInt52Speculation(). However, it was
wrong to not to include SpecInt32 in this for two reasons:

1. We diligently write code that first checks if we should speculate Int32.
For example:
if (shouldSpeculateInt32()) ...
else if (shouldSpeculateInt52()) ...

It would be wrong not to fall back to Int52 if we're dealing with the union of
Int32 and Int52.

It would be a performance mistake to not include Int32 here because
data flow can easily tell us that we have variables that are the union
of Int32 and Int52 values. It's better to speculate Int52 than Double
in that situation.

2. We also write code where we ask if the inputs can be Int52, e.g, if
we know via profiling that an Add overflows, we may not emit an Int32 add.
However, we only emit such an add if both inputs can be Int52, and Int32
can trivially become Int52.

       This patch recovers the 0.5-1% regression r244079 caused on JetStream 2.

* bytecode/SpeculatedType.h:
(JSC::isInt32SpeculationForArithmetic):
(JSC::isInt32OrBooleanSpeculationForArithmetic):
(JSC::isInt32OrInt52Speculation):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::observeUseKindOnNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::shouldSpeculateInt52):
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGVariableAccessData.cpp:
(JSC::DFG::VariableAccessData::couldRepresentInt52Impl):

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

4 months agoUnreviewed. Build fix after r244233.
sbarati@apple.com [Sat, 13 Apr 2019 00:05:27 +0000 (00:05 +0000)]
Unreviewed. Build fix after r244233.

* assembler/CPU.cpp:

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

4 months agoWebDriver: fix typo in EnterFullscreen.js in error-handling code
bburg@apple.com [Fri, 12 Apr 2019 23:45:20 +0000 (23:45 +0000)]
WebDriver: fix typo in EnterFullscreen.js in error-handling code
https://bugs.webkit.org/show_bug.cgi?id=196882
<rdar://problem/49867122>

Reviewed by Devin Rousso.

* UIProcess/Automation/atoms/EnterFullscreen.js:
(enterFullscreen):

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

4 months ago[Web GPU] Prevent narrowing conversions during Metal function calls on 32-bit platforms
justin_fan@apple.com [Fri, 12 Apr 2019 23:40:53 +0000 (23:40 +0000)]
[Web GPU] Prevent narrowing conversions during Metal function calls on 32-bit platforms
https://bugs.webkit.org/show_bug.cgi?id=196793

Reviewed by Darin Adler.

On 32-bit platforms, NSUInteger is 32-bit, which limits certain Web GPU parameters.
Ensure that valid parameters are properly converted to NSUInteger for Metal calls, regardless of platform.

* platform/graphics/gpu/GPUBuffer.h:
(WebCore::GPUBuffer::byteLength const):
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::tryGetResourceAsBufferBinding):
(WebCore::setBufferOnEncoder):
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::validateBufferUsage):
(WebCore::GPUBuffer::tryCreate):
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::setSubData):
* platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::copyBufferToBuffer):
(WebCore::GPUCommandBuffer::copyBufferToTexture):
(WebCore::GPUCommandBuffer::copyTextureToBuffer):
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::drawIndexed):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetInputStateForPipelineDescriptor):

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

4 months agoUnreviewed fix for non-unified build.
ross.kirsling@sony.com [Fri, 12 Apr 2019 23:32:38 +0000 (23:32 +0000)]
Unreviewed fix for non-unified build.

Source/WebCore:

* dom/ScriptedAnimationController.h:
Add missing include from r244182.

Source/WebKit:

* Shared/PrintInfo.cpp:
Add missing include from r244202.

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

4 months agoSometimes we need to user fewer CPUs in our threading calculations
sbarati@apple.com [Fri, 12 Apr 2019 23:26:43 +0000 (23:26 +0000)]
Sometimes we need to user fewer CPUs in our threading calculations
https://bugs.webkit.org/show_bug.cgi?id=196794
<rdar://problem/49389497>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/CPU.cpp: Added.
(JSC::isKernTCSMAvailable):
(JSC::enableKernTCSM):
(JSC::kernTCSMAwareNumberOfProcessorCores):
* assembler/CPU.h:
(JSC::isKernTCSMAvailable):
(JSC::enableKernTCSM):
(JSC::kernTCSMAwareNumberOfProcessorCores):
* heap/MachineStackMarker.h:
(JSC::MachineThreads::addCurrentThread):
* runtime/JSLock.cpp:
(JSC::JSLock::didAcquireLock):
* runtime/Options.cpp:
(JSC::computeNumberOfWorkerThreads):
(JSC::computePriorityDeltaOfWorkerThreads):
* wasm/WasmWorklist.cpp:
(JSC::Wasm::Worklist::Worklist):

Source/WebKit:

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

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

4 months ago[WinCairo][WKL] Unreviewed test gardening.
ross.kirsling@sony.com [Fri, 12 Apr 2019 22:31:07 +0000 (22:31 +0000)]
[WinCairo][WKL] Unreviewed test gardening.

* platform/wincairo-wk1/TestExpectations:
r244182 causes all animations tests to time out.

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

4 months agoWebDriver: evaluating javascript shouldn't fail if a dialog is shown
drousso@apple.com [Fri, 12 Apr 2019 20:46:55 +0000 (20:46 +0000)]
WebDriver: evaluating javascript shouldn't fail if a dialog is shown
https://bugs.webkit.org/show_bug.cgi?id=196847
<rdar://problem/49609396>

Reviewed by Brian Burg.

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::willShowJavaScriptDialog):

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

4 months agoWebThread should run at a higher priority than user initiated
rniwa@webkit.org [Fri, 12 Apr 2019 20:37:38 +0000 (20:37 +0000)]
WebThread should run at a higher priority than user initiated
https://bugs.webkit.org/show_bug.cgi?id=196849
<rdar://problem/46851062>

Reviewed by Geoffrey Garen.

Use QOS_CLASS_USER_INTERACTIVE on WebThread with -10 relative priority so that WebThread
won't wait for other threads with priority 30-37 but does not content with the main thread.

Also removed the call to pthread_attr_setschedparam which disables QoS.

This improves the blocked time in StartWebThread from 2~3ms to 250μs while cold launching
iBooks to an opened book.

* platform/ios/wak/WebCoreThread.mm:
(StartWebThread): Replaced 200 * 4096 by 800 * KB for a better readability.

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

4 months ago[iOS WK2] Make -webkit-overflow-scrolling be a no-op
simon.fraser@apple.com [Fri, 12 Apr 2019 18:52:01 +0000 (18:52 +0000)]
[iOS WK2] Make -webkit-overflow-scrolling be a no-op
https://bugs.webkit.org/show_bug.cgi?id=196803
rdar://problem/49078202

Reviewed by Antti Koivisto.

Source/WebKit:

Flip LegacyOverflowScrollingTouchEnabled to false.

* Shared/WebPreferences.yaml:

LayoutTests:

Rebase some tests, if I thought that non-stacking context overflow was interesting.
For others, make overflow be stacking context by adding z-index.
Add <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] --> to those that
need it.

* compositing/overflow/scrolling-content-clip-to-viewport.html:
* compositing/rtl/rtl-scrolling-with-transformed-descendants.html:
* fast/scrolling/ios/change-scrollability-on-content-resize-nested.html:
* fast/scrolling/ios/overflow-scroll-inherited-expected.txt:
* fast/scrolling/ios/overflow-scrolling-ancestor-clip-size.html:
* fast/scrolling/ios/overflow-scrolling-ancestor-clip.html:
* fast/scrolling/ios/reconcile-layer-position-recursive-expected.txt:
* fast/scrolling/ios/reconcile-layer-position-recursive.html:
* fast/scrolling/ios/scrolling-content-clip-to-viewport.html:
* fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor.html:
* fast/scrolling/ios/touch-scroll-pointer-events-none.html:
* fast/scrolling/ios/touch-scroll-visibility-hidden.html:
* platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
* platform/ios/fast/scrolling/ios/scrolling-content-clip-to-viewport-expected.txt:
* scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor.html:
* scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed.html:
* scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor.html:
* scrollingcoordinator/scrolling-tree/coordinated-frame.html:
* scrollingcoordinator/scrolling-tree/resources/doc-with-sticky.html:

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

4 months agoUnreviewed test gardening for Windows.
ryanhaddad@apple.com [Fri, 12 Apr 2019 18:34:43 +0000 (18:34 +0000)]
Unreviewed test gardening for Windows.

* platform/win/TestExpectations:

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

4 months agoAdd CSS Shadow Parts as a feature under consideration
rniwa@webkit.org [Fri, 12 Apr 2019 18:26:44 +0000 (18:26 +0000)]
Add CSS Shadow Parts as a feature under consideration
https://bugs.webkit.org/show_bug.cgi?id=196835

Reviewed by Antti Koivisto.

This feature is under consideration.

* features.json:

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

4 months agoWebKit should build successfully even with -DENABLE_UNIFIED_BUILDS=OFF
ross.kirsling@sony.com [Fri, 12 Apr 2019 18:18:25 +0000 (18:18 +0000)]
WebKit should build successfully even with -DENABLE_UNIFIED_BUILDS=OFF
https://bugs.webkit.org/show_bug.cgi?id=196845

Reviewed by Ryosuke Niwa.

Source/WebCore:

* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::FontProxy::initialize):
(WebCore::CanvasRenderingContext2DBase::FontProxy::fontMetrics const):
(WebCore::CanvasRenderingContext2DBase::FontProxy::fontDescription const):
(WebCore::CanvasRenderingContext2DBase::FontProxy::width const):
(WebCore::CanvasRenderingContext2DBase::FontProxy::drawBidiText const):
(WebCore::CanvasRenderingContext2DBase::beginCompositeLayer):
(WebCore::CanvasRenderingContext2DBase::endCompositeLayer):
Remove inline specifier to address linking errors (regardless of CMake platform).
Doing this in a .cpp file interferes with symbol creation.

* Modules/mediastream/MediaStreamTrack.cpp:
* Modules/webvr/VREyeParameters.cpp:
* Modules/webvr/VRFrameData.cpp:
* Modules/webvr/VRPose.cpp:
* accessibility/AccessibilityList.cpp:
* accessibility/isolatedtree/AXIsolatedTree.cpp:
* accessibility/isolatedtree/AXIsolatedTreeNode.cpp:
* bindings/js/JSDOMConvertWebGL.cpp:
* bindings/js/JSHistoryCustom.cpp:
* bindings/js/JSIDBCursorWithValueCustom.cpp:
* bindings/js/JSPerformanceObserverCustom.cpp:
* bindings/js/WindowProxy.cpp:
* platform/ColorData.gperf:
* platform/mediastream/RealtimeMediaSourceSettings.cpp:
* platform/network/DNSResolveQueue.cpp:
* workers/service/ServiceWorkerClientQueryOptions.h:
* workers/service/ServiceWorkerContainer.cpp:
Add missing includes to address compiler errors on GTK.

Source/WebKit:

* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
* NetworkProcess/NetworkDataTask.cpp:
* NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
* NetworkProcess/NetworkHTTPSUpgradeChecker.h: Include wtf/Forward.h for String and CompletionHandler fwd decls.
* NetworkProcess/NetworkProcess.cpp:
* NetworkProcess/NetworkResourceLoadMap.cpp:
* NetworkProcess/NetworkResourceLoadMap.h:
* NetworkProcess/NetworkResourceLoader.cpp:
* NetworkProcess/PingLoad.h:
* Shared/WebCompiledContentRuleListData.cpp:
* Shared/gtk/WebEventFactory.cpp:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WKWebsiteDataStoreStatisticsResetToConsistentState):
* UIProcess/Downloads/DownloadProxyMap.cpp:
* UIProcess/InspectorTargetProxy.cpp:
* UIProcess/PageClient.h:
* UIProcess/ProcessAssertion.cpp:
* UIProcess/ProvisionalPageProxy.h:
* UIProcess/WebPageInspectorTargetAgent.h:
* UIProcess/geoclue/GeoclueGeolocationProvider.cpp:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::updateQuotaBasedOnSpaceUsage):
* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleSetDatabaseQuota):
* WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:
Add missing includes / forward declarations to address compiler errors on GTK / WinCairo.

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

4 months agoREGRESSION (r244098): [ Mac WK1 ] Layout Test fast/dynamic/paused-event-dispatch...
zalan@apple.com [Fri, 12 Apr 2019 18:14:21 +0000 (18:14 +0000)]
REGRESSION (r244098): [ Mac WK1 ] Layout Test fast/dynamic/paused-event-dispatch.html is Timing out
https://bugs.webkit.org/show_bug.cgi?id=196789
<rdar://problem/49855255>

Reviewed by Tim Horton.

Disable auto-sizing mode at the start of each test.

* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):

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

4 months agoUpdate AudioSession route sharing policy
eric.carlson@apple.com [Fri, 12 Apr 2019 18:04:56 +0000 (18:04 +0000)]
Update AudioSession route sharing policy
https://bugs.webkit.org/show_bug.cgi?id=196776
<rdar://problem/46501611>

Reviewed by Jer Noble.

Source/WebCore:

No new tests, updated an API test.

* platform/audio/AudioSession.cpp:
(WebCore::convertEnumerationToString):
* platform/audio/AudioSession.h:
(WTF::LogArgument<WebCore::RouteSharingPolicy>::toString):
(WTF::LogArgument<WebCore::AudioSession::CategoryType>::toString):
* platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(MediaSessionManagerCocoa::updateSessionState):
* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSession::setCategory):
(WebCore::AudioSession::routeSharingPolicy const):
* platform/audio/mac/AudioSessionMac.cpp:
(WebCore::AudioSession::setCategory):

Source/WebKit:

* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:hasVideo:]):

Source/WTF:

* wtf/Platform.h: Define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO.

Tools:

* TestWebKitAPI/Tests/WebKitLegacy/ios/AudioSessionCategoryIOS.mm:
(TestWebKitAPI::routeSharingPolicyLongFormVideo):
(TestWebKitAPI::routeSharingPolicyLongFormAudio):
(TestWebKitAPI::TEST):

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

4 months agoUse padding at end of ArrayBuffer
rmorisset@apple.com [Fri, 12 Apr 2019 18:02:20 +0000 (18:02 +0000)]
Use padding at end of ArrayBuffer
https://bugs.webkit.org/show_bug.cgi?id=196823

Reviewed by Filip Pizlo.

* runtime/ArrayBuffer.h:

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

4 months agoWebsitePolicies doesn't copy its media source policy in WebsitePolicies::copy
wenson_hsieh@apple.com [Fri, 12 Apr 2019 17:59:05 +0000 (17:59 +0000)]
WebsitePolicies doesn't copy its media source policy in WebsitePolicies::copy
https://bugs.webkit.org/show_bug.cgi?id=196862

Reviewed by Darin Adler.

Add a missing bit of code to copy m_mediaSourcePolicy over when making a copy of WebsitePolicies. This doesn't
have any observable effect, since m_mediaSourcePolicy isn't currently exposed as SPI on WKWebpagePreferences.

* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::copy const):

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

4 months ago[iOS] Software keyboard is shown too frequently on some websites
wenson_hsieh@apple.com [Fri, 12 Apr 2019 17:30:00 +0000 (17:30 +0000)]
[iOS] Software keyboard is shown too frequently on some websites
https://bugs.webkit.org/show_bug.cgi?id=195856
<rdar://problem/49191395>

Reviewed by Darin Adler.

Source/WebCore/PAL:

Declare new GraphicsServices SPI.

* pal/spi/ios/GraphicsServicesSPI.h:

Source/WebKit:

On some websites, hidden editable elements are very frequently focused upon user interaction. Currently, this
causes the software keyboard to pop in and out unexpectedly; luckily, these same sites also apply
inputmode="none" to the hidden editable element, which ought to ensure that the software keyboard doesn't appear
when the element is focused.

However, since we disabled support for inputmode="none" in r240497, the software keyboard is no longer
suppressed, and becomes a big nuissance. r240497 removed support for this feature because, when using a hardware
keyboard, pressing the globe key no longer showed UI for switching languages. However, support for inputmode
none makes a much larger impact when a software keyboard is used (since the entire software keyboard animates in
and out), whereas a hardware keyboard only displays an input accessory view. For this reason, we can mitigate
this bug without reintroducing <rdar://problem/47406553> by re-enabling inputmode="none", but only when a
hardware keyboard is not attached.

* UIProcess/API/Cocoa/WKWebView.mm:
(hardwareKeyboardAvailabilityChangedCallback):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView shouldShowAutomaticKeyboardUI]):

Don't show the keyboard if inputmode is none and a hardware keyboard is not attached.

(-[WKContentView _hardwareKeyboardAvailabilityChanged]):

Reload input views if the inputmode is none to ensure that if a hardware keyboard is attached while editing an
element with inputmode="none", we'll show the input accessory view once again.

Tools:

Add support for attaching or detaching the hardware keyboard on iOS in layout tests.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::setHardwareKeyboardAttached):
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::setHardwareKeyboardAttached):
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/Configurations/WebKitTestRunnerApp.xcconfig:

Additionally link against GraphicsServices in WebKitTestRunner.

* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::TestController::platformResetStateToConsistentValues):
(WTR::UIScriptController::setHardwareKeyboardAttached):

WebKitLibraries:

Add a symbol for GSEventSetHardwareKeyboardAttached.

* WebKitPrivateFrameworkStubs/iOS/12/GraphicsServices.framework/GraphicsServices.tbd:

LayoutTests:

Fix a failing layout test, which (among other reasons) is currently failing because support for inputmode="none"
is disabled.

* fast/forms/ios/inputmode-none-expected.txt:
* fast/forms/ios/inputmode-none.html:
* resources/ui-helper.js:

Add a UIHelper method for attaching or detaching the hardware keyboard.

(window.UIHelper.setHardwareKeyboardAttached):
(window.UIHelper):

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

4 months ago[macOS WK1] ASSERTION FAILED: formData in WebCore::ResourceRequest::doUpdateResourceH...
ryanhaddad@apple.com [Fri, 12 Apr 2019 17:12:37 +0000 (17:12 +0000)]
[macOS WK1] ASSERTION FAILED: formData in WebCore::ResourceRequest::doUpdateResourceHTTPBody()
https://bugs.webkit.org/show_bug.cgi?id=196864

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations: Skip test since it consistently crashes, update bug number.

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

4 months agoOpt some websites into the simulated mouse events dispatch quirk when in modern compa...
graouts@webkit.org [Fri, 12 Apr 2019 16:52:35 +0000 (16:52 +0000)]
Opt some websites into the simulated mouse events dispatch quirk when in modern compatibility mode
https://bugs.webkit.org/show_bug.cgi?id=196830
<rdar://problem/49124313>

Reviewed by Wenson Hsieh.

Source/WebCore:

We add a new policy to determine whether simulated mouse events dispatch are allowed and use it to determine whether the
simulated mouse events dispatch quirk can be used for a given website. We then check the domain name for the current page's
document to see if it matches some known websites that require this quirk.

We needed to add some calls into Quirks::shouldDispatchSimulateMouseEvents() where we used to only consult the RuntimeEnabledFeature
flag to ensure we correctly created touch regions for simulated mouse events.

* dom/EventNames.h:
(WebCore::EventNames::isTouchRelatedEventType const):
* dom/Node.cpp:
(WebCore::Node::moveNodeToNewDocument):
(WebCore::tryAddEventListener):
(WebCore::tryRemoveEventListener):
(WebCore::Node::defaultEventHandler):
* loader/DocumentLoader.h:
(WebCore::DocumentLoader::simulatedMouseEventsDispatchPolicy const):
(WebCore::DocumentLoader::setSimulatedMouseEventsDispatchPolicy):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::addEventListener):
(WebCore::DOMWindow::removeEventListener):
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchSimulateMouseEvents const): Deleted.
* page/Quirks.h:

Source/WebKit:

We add a new policy to determine whether simulated mouse events dispatch are allowed.

* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
* Shared/WebsitePoliciesData.h:
* Shared/WebsiteSimulatedMouseEventsDispatchPolicy.h: Added.
* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::copy const):
(API::WebsitePolicies::data):
* UIProcess/API/APIWebsitePolicies.h:
* WebKit.xcodeproj/project.pbxproj:

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

4 months ago[iOS Sim Debug] ASSERTION FAILED: m_downloads.isEmpty() Layout Test http/tests/websoc...
cdumez@apple.com [Fri, 12 Apr 2019 16:11:46 +0000 (16:11 +0000)]
[iOS Sim Debug] ASSERTION FAILED: m_downloads.isEmpty() Layout Test http/tests/websocket/tests/hybi/network-process-crash-error.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=196781
<rdar://problem/49789381>

Reviewed by Darin Adler.

When the network process gets terminated by the client, the NetworkProcessProxy object (and thus its DownloadProxyMap member) get
destroyed right away, before we get a call to didClose(IPC::Connection&). As a result, if there are ongoing downloads at the time
of the termination, we will hit the assertion above. To address the issue, update the NetworkProcessProxy destructor to invalidate
its DownloadProxyMap member, similator to what it does in didClose(IPC::Connection&).

* UIProcess/Downloads/DownloadProxyMap.cpp:
(WebKit::DownloadProxyMap::invalidate):
(WebKit::DownloadProxyMap::processDidClose): Deleted.
* UIProcess/Downloads/DownloadProxyMap.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::~NetworkProcessProxy):
(WebKit::NetworkProcessProxy::didClose):

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

4 months agoImport WPT preload tests
commit-queue@webkit.org [Fri, 12 Apr 2019 15:54:11 +0000 (15:54 +0000)]
Import WPT preload tests
https://bugs.webkit.org/show_bug.cgi?id=196439

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

* web-platform-tests/preload/avoid-delaying-onload-link-preload-expected.txt: Added.
* web-platform-tests/preload/avoid-delaying-onload-link-preload.html: Added.
* web-platform-tests/preload/delaying-onload-link-preload-after-discovery-expected.txt: Added.
* web-platform-tests/preload/delaying-onload-link-preload-after-discovery.html: Added.
* web-platform-tests/preload/dynamic-adding-preload-expected.txt: Added.
* web-platform-tests/preload/dynamic-adding-preload.html: Added.
* web-platform-tests/preload/preload-csp.sub-expected.txt: Added.
* web-platform-tests/preload/preload-csp.sub.html: Added.
* web-platform-tests/preload/preload-default-csp.sub-expected.txt: Added.
* web-platform-tests/preload/preload-default-csp.sub.html: Added.
* web-platform-tests/preload/resources/dummy.css: Added.
* web-platform-tests/preload/resources/dummy.css.sub.headers: Added.
* web-platform-tests/preload/resources/dummy.js: Added.
* web-platform-tests/preload/resources/dummy.js.sub.headers: Added.
* web-platform-tests/preload/resources/dummy.xml: Added.
* web-platform-tests/preload/resources/dummy.xml.sub.headers: Added.
* web-platform-tests/preload/resources/foo.vtt: Added.
* web-platform-tests/preload/resources/preload_helper.js: Added.
(verifyPreloadAndRTSupport):
(getAbsoluteURL):
(verifyNumberOfResourceTimingEntries):
(verifyLoadedAndNoDoubleDownload):
* web-platform-tests/preload/resources/sound_5.oga: Added.
* web-platform-tests/preload/resources/square.png: Added.
* web-platform-tests/preload/resources/white.mp4: Added.
* web-platform-tests/preload/single-download-late-used-preload-expected.txt: Added.
* web-platform-tests/preload/single-download-late-used-preload.html: Added.
* web-platform-tests/preload/single-download-preload-expected.txt: Added.
* web-platform-tests/preload/single-download-preload.html: Added.

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

4 months ago[iOS WK2] Wrong scrolling behavior for nested absolute position elements inside overf...
simon.fraser@apple.com [Fri, 12 Apr 2019 14:54:12 +0000 (14:54 +0000)]
[iOS WK2] Wrong scrolling behavior for nested absolute position elements inside overflow scroll
https://bugs.webkit.org/show_bug.cgi?id=196146

Reviewed by Antti Koivisto.

Source/WebCore:

computeCoordinatedPositioningForLayer() failed to handle nested positions elements
inside overflow scroll, because it only walked up to the first containing block of
a nested position:absolute. We need to walk all the way up the ancestor layer chain,
looking at containing block, scroller and composited ancestor relationships.

Make this code easier to understand by writing it in terms of "is foo scrolled by bar", rather than
trying to collapse all the logic into a single ancestor walk, which was really hard. This is a few
more ancestor traversals, but we now only run this code if there's composited scrolling
in the ancestor chain.

Tests: scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow.html
       scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow.html
       scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow.html
       scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow.html

* rendering/RenderLayerCompositor.cpp:
(WebCore::enclosingCompositedScrollingLayer):
(WebCore::isScrolledByOverflowScrollLayer):
(WebCore::isNonScrolledLayerInsideScrolledCompositedAncestor):
(WebCore::RenderLayerCompositor::layerContainingBlockCrossesCoordinatedScrollingBoundary):
(WebCore::collectStationaryLayerRelatedOverflowNodes):
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
(WebCore::collectRelatedCoordinatedScrollingNodes):
(WebCore::layerParentedAcrossCoordinatedScrollingBoundary): Deleted.

LayoutTests:

Dump the scrolling tree for various configurations of positioned, overflow and stacking context
elements.

* fast/scrolling/ios/overflow-scroll-overlap-6-expected.txt: Progressed results.
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow-expected.txt: Added.
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow-expected.txt: Added.
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow-expected.txt: Added.
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow.html: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow.html: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow.html: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow.html: Added.

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

4 months ago[GTK][WPE] Fix pacman install-dependencies packages
commit-queue@webkit.org [Fri, 12 Apr 2019 13:29:42 +0000 (13:29 +0000)]
[GTK][WPE] Fix pacman install-dependencies packages
https://bugs.webkit.org/show_bug.cgi?id=196817

Patch by Ludovico de Nittis <ludovico.denittis@collabora.com> on 2019-04-12
Reviewed by Žan Doberšek.

python3-setuptools is called python-setuptools
ruby-highline is only available on AUR
libv4l-devel is incorporated in v4l-utils

* gtk/install-dependencies:
* wpe/install-dependencies:

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

4 months ago[css-flex][css-grid] Fix synthesized baseline
rego@igalia.com [Fri, 12 Apr 2019 12:04:20 +0000 (12:04 +0000)]
[css-flex][css-grid] Fix synthesized baseline
https://bugs.webkit.org/show_bug.cgi?id=196312

Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Imported some tests from WPT css-align test suite that are fixed with this patch.

* resources/import-expectations.json:
* web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-flexbox-001-expected.txt: Added.
* web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-flexbox-001.html: Added.
* web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-grid-001-expected.txt: Added.
* web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-grid-001.html: Added.
* web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-inline-block-001-expected.txt: Added.
* web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-inline-block-001.html: Added.
* web-platform-tests/css/css-align/baseline-rules/w3c-import.log: Added.

Source/WebCore:

When a flex or grid container has no baseline,
its baseline should be synthesized from the border edges.
The same happens for flex and grid items.

Right now we were using the content box in some cases
and even using the margin box in a particular scenario.
The patch fixes this.

At the same time this is also fixing the baseline for
inline flex/grid containers to make it interoperable with Firefox.
Inline blocks have a special behavior per legacy reasons,
which applies to inline flex/grid containers when they have no items;
otherwise the items should be used to compute its baseline.
See more at: https://github.com/w3c/csswg-drafts/issues/3416

Note that we need to keep current behavior for buttons,
as the flexbox spec doesn't apply to them.

Tests: css3/flexbox/flexbox-baseline-margins.html
       fast/css-grid-layout/grid-baseline-margins-1.html
       fast/css-grid-layout/grid-baseline-margins-2.html
       imported/w3c/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-flexbox-001.html
       imported/w3c/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-grid-001.html
       imported/w3c/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-inline-block-001.html

* rendering/RenderButton.cpp:
(WebCore::synthesizedBaselineFromContentBox):
(WebCore::RenderButton::baselinePosition const):
* rendering/RenderButton.h:
* rendering/RenderFlexibleBox.cpp:
(WebCore::synthesizedBaselineFromBorderBox):
(WebCore::RenderFlexibleBox::baselinePosition const):
(WebCore::RenderFlexibleBox::firstLineBaseline const):
(WebCore::RenderFlexibleBox::inlineBlockBaseline const):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::baselinePosition const):
(WebCore::RenderGrid::inlineBlockBaseline const):

LayoutTests:

Some of the tests were not checking the right behavior changed them to test the expected one.
We need new rebaselines for some tests.

* TestExpectations:
* css3/flexbox/flexbox-baseline-margins.html:
* fast/css-grid-layout/grid-baseline-expected.html:
* fast/css-grid-layout/grid-baseline-margins-1-expected.html: Renamed from LayoutTests/fast/css-grid-layout/grid-baseline-margins-expected.html.
* fast/css-grid-layout/grid-baseline-margins-1.html: Renamed from LayoutTests/fast/css-grid-layout/grid-baseline-margins.html.
* fast/css-grid-layout/grid-baseline-margins-2-expected.html: Added.
* fast/css-grid-layout/grid-baseline-margins-2.html: Added.
* fast/css-grid-layout/grid-baseline.html: This test is modified and split in two parts as it doesn't fit in the viewport.
* platform/gtk/css3/flexbox/flexbox-baseline-margins-expected.png:
* platform/gtk/css3/flexbox/flexbox-baseline-margins-expected.txt:
* platform/ios/css3/flexbox/flexbox-baseline-margins-expected.png: Added.
* platform/ios/css3/flexbox/flexbox-baseline-margins-expected.txt:
* platform/mac/css3/flexbox/flexbox-baseline-margins-expected.png: Added.
* platform/mac/css3/flexbox/flexbox-baseline-margins-expected.txt:
* platform/win/css3/flexbox/flexbox-baseline-margins-expected.png: Added.
* platform/win/css3/flexbox/flexbox-baseline-margins-expected.txt:

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

4 months ago[GTK] REGRESSION(r243860): Many tests failing
carlosgc@webkit.org [Fri, 12 Apr 2019 08:46:57 +0000 (08:46 +0000)]
[GTK] REGRESSION(r243860): Many tests failing
https://bugs.webkit.org/show_bug.cgi?id=196791

Reviewed by Joanmarie Diggs.

Source/WebKit:

Calling updateAccessibilityTree() on document loaded was causing a re-layout because of the backing store update
that confused all those tests. We shouldn't need to update the accessibility tree on document load, it should
happen automatically when root object is attached/detached. This patch emits children-changed::add when the root
object wrapper is attached and children-changed::remove when the root object is detached. That way ATs are
notified of the changes in the accessibility tree.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad): Remove call to WebPage::updateAccessibilityTree().
* WebProcess/WebPage/WebPage.h: Remove updateAccessibilityTree().
* WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp:
(coreRootObjectWrapperDetachedCallback): Emit children-changed::remove.
(rootWebAreaWrapper): Helper to get the root WebArea wrapper.
(accessibilityRootObjectWrapper): Set the parent here when root object is created and emit children-changed::add.
(webkitWebPageAccessibilityObjectRefChild): Dot no set the parent here, it's now set when the root object is created.
* WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.h: Remove webkitWebPageAccessibilityObjectRefresh().
* WebProcess/WebPage/gtk/WebPageGtk.cpp:

Tools:

Rework the accessibility unit test to use DBus for the communication with the server. This way we can load
multiple documents and check that accessibility hierarchy is updated after a navigation.

* TestWebKitAPI/Tests/WebKitGtk/AccessibilityTestServer.cpp:
(loadChangedCallback):
* TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:
(AccessibilityTest::AccessibilityTest):
(AccessibilityTest::~AccessibilityTest):
(AccessibilityTest::loadHTMLAndWaitUntilFinished):
(AccessibilityTest::findTestServerApplication):
(AccessibilityTest::findDocumentWeb):
(AccessibilityTest::findRootObject):
(AccessibilityTest::waitUntilChildrenRemoved):
(AccessibilityTest::ensureProxy):
(testAtspiBasicHierarchy):
(beforeAll):
(afterAll):

LayoutTests:

Remove expectations for tests that pass now.

* platform/gtk/TestExpectations:

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

4 months ago[JSC] op_has_indexed_property should not assume subscript part is Uint32
ysuzuki@apple.com [Fri, 12 Apr 2019 06:35:17 +0000 (06:35 +0000)]
[JSC] op_has_indexed_property should not assume subscript part is Uint32
https://bugs.webkit.org/show_bug.cgi?id=196850

Reviewed by Saam Barati.

JSTests:

* stress/has-indexed-property-should-accept-non-int32.js: Added.
(foo):

Source/JavaScriptCore:

op_has_indexed_property assumed that subscript part is always Uint32. However, this is just a load from non-constant RegisterID,
DFG can store it in double format and can perform OSR exit. op_has_indexed_property should not assume that.
In this patch, instead, we check it with isAnyInt and get uint32_t from AnyInt.

* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_has_indexed_property):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_has_indexed_property):
* jit/JITOperations.cpp:
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):

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

4 months agoFix flaky LayoutTests/fast/events/autoscroll-when-input-is-offscreen.html
megan_gardner@apple.com [Fri, 12 Apr 2019 06:02:50 +0000 (06:02 +0000)]
Fix flaky LayoutTests/fast/events/autoscroll-when-input-is-offscreen.html
https://bugs.webkit.org/show_bug.cgi?id=196840

Reviewed by Tim Horton.

Use more stable test infrastructure to conduct input tests.

* fast/events/autoscroll-when-input-is-offscreen.html:

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

4 months agoAvoid doing positioned scrolling tree node work for layers not inside overflow:scroll
simon.fraser@apple.com [Fri, 12 Apr 2019 05:28:50 +0000 (05:28 +0000)]
Avoid doing positioned scrolling tree node work for layers not inside overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=196848

Reviewed by Zalan Bujtas.

Maintain a bit on RenderLayer which says if a layer has a composited scrolling ancestor
in the layer tree. We only need to do work related to making positioned scrolling tree nodes
for layers which are layer tree descendants of overflow:scroll.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::updateLayerPositions):
(WebCore::outputPaintOrderTreeLegend):
(WebCore::outputPaintOrderTreeRecursive):
* rendering/RenderLayer.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForPosition const):
(WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
(WebCore::RenderLayerCompositor::isViewportConstrainedFixedOrStickyLayer const):
(WebCore::RenderLayerCompositor::fixedLayerIntersectsViewport const):
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):

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

4 months agoTry to fix Windows build.
zalan@apple.com [Fri, 12 Apr 2019 01:55:24 +0000 (01:55 +0000)]
Try to fix Windows build.

* page/PrintContext.cpp:
(WebCore::PrintContext::computedPageMargin):

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

4 months ago[ews-build] Handle bug titles with unicode characters
aakash_jain@apple.com [Fri, 12 Apr 2019 01:52:45 +0000 (01:52 +0000)]
[ews-build] Handle bug titles with unicode characters
https://bugs.webkit.org/show_bug.cgi?id=196802

Reviewed by Dewei Zhu.

* BuildSlaveSupport/ews-build/steps.py:
(ValidatePatch._is_bug_closed):

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

4 months agoRemove invalid assertion in operationInstanceOfCustom
sbarati@apple.com [Fri, 12 Apr 2019 01:04:32 +0000 (01:04 +0000)]
Remove invalid assertion in operationInstanceOfCustom
https://bugs.webkit.org/show_bug.cgi?id=196842
<rdar://problem/49725493>

Reviewed by Michael Saboff.

JSTests:

* stress/operationInstanceOfCustom-bad-assertion.js: Added.

Source/JavaScriptCore:

In the generated JIT code, we go to the slow path when the incoming function
isn't the Node's CodeOrigin's functionProtoHasInstanceSymbolFunction. However,
in the JIT operation, we were asserting against exec->lexicalGlobalObject()'s
functionProtoHasInstanceSymbolFunction. That assertion might be wrong when
inlining across global objects as exec->lexicalGlobalObject() uses the machine
frame for procuring the global object. There is no harm when this assertion fails
as we just execute the slow path. This patch removes the assertion. (However, this
does shed light on the deficiency in our exec->lexicalGlobalObject() function with
respect to inlining. However, this isn't new -- we've known about this for a while.)

* jit/JITOperations.cpp:

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

4 months agoUpdate 'Save Image' to more clear instructions
megan_gardner@apple.com [Fri, 12 Apr 2019 00:58:50 +0000 (00:58 +0000)]
Update 'Save Image' to more clear instructions
https://bugs.webkit.org/show_bug.cgi?id=196833
<rdar://problem/47446845>

Reviewed by Wenson Hsieh.

Source/WebCore:

Not testable, UI change only.

* en.lproj/Localizable.strings:

Source/WebKit:

Just updating to a new string.

* UIProcess/API/Cocoa/_WKElementAction.mm:
(+[_WKElementAction _elementActionWithType:customTitle:assistant:]):

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

4 months agoImprove the Inline Cache Stats code
msaboff@apple.com [Fri, 12 Apr 2019 00:53:12 +0000 (00:53 +0000)]
Improve the Inline Cache Stats code
https://bugs.webkit.org/show_bug.cgi?id=196836

Reviewed by Saam Barati.

Source/JavaScriptCore:

Needed to handle the case where the Identifier could be null, for example with InstanceOfAddAccessCase
and InstanceOfReplaceWithJump.

Added the ability to log the location of a GetBy and PutBy property as either on self or up the
protocol chain.

* jit/ICStats.cpp:
(JSC::ICEvent::operator< const):
(JSC::ICEvent::dump const):
* jit/ICStats.h:
(JSC::ICEvent::ICEvent):
(JSC::ICEvent::hash const):
* jit/JITOperations.cpp:
* jit/Repatch.cpp:
(JSC::tryCacheGetByID):
(JSC::tryCachePutByID):
(JSC::tryCacheInByID):

Tools:

Added a new script to consolidate and arrange the output of --useICStats option.

This script merges the output from every group into one large table and sorts it from most common to
least common.  It also counts the slow path GetById and PutById variants and then calculates the
percentage of gets or puts for each unique base,property pair compared to all the gets and puts.
Put together, this is useful to see what property accesses are not getting cached.

* Scripts/ic-stats.py: Added.
(ICStats):
(ICStats.__init__):
(ICStats.parse):
(ICStats.dumpStats):
(usage):

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

4 months agoUnable to run system Safari with trunk WebKit
cdumez@apple.com [Thu, 11 Apr 2019 23:43:10 +0000 (23:43 +0000)]
Unable to run system Safari with trunk WebKit
https://bugs.webkit.org/show_bug.cgi?id=196777
<rdar://problem/49784574>

Reviewed by Alex Christensen.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
Add a linkedOnAfter check so that throwing exceptions when related web views use a different
data store only happens for apps rebuilt using recent SDK.

* UIProcess/Cocoa/VersionChecks.h:
* UIProcess/Cocoa/VersionChecks.mm:
(WebKit::linkedOnOrAfter):
- By default, linkedOnOrAfter assumed Safari / MobileSafari is always linked-on-after. To satisfy my
  use cases, I introduced a new AssumeSafariIsAlwaysLinkedOnAfter parameter so that this behavior can
  be controlled by the caller.
- In the header, DYLD_IOS_VERSION_* / DYLD_MACOS_VERSION_* constants are 0 when building with the
  non-internal SDK. As a result, the check instead linkedOnOrAfter() would cause us to always return
  true, which was wrong. I therefore updated the check inside linkedOnOrAfter() to special-case the
  0 value for sdkVersion.

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

4 months agoAdd @page margin support
zalan@apple.com [Thu, 11 Apr 2019 23:33:41 +0000 (23:33 +0000)]
Add @page margin support
https://bugs.webkit.org/show_bug.cgi?id=196680
<rdar://problem/45217707>

Reviewed by Tim Horton.

Source/WebCore:

This patch adds support for @page margin. This feature is currently behind a runtime flag and is off by default.
We resolve the @page margin values in the WebProcess (currently no pseudo class is supported) and transfer them to the UIProcess through computedPagesCallback.
UIProcess is responsible for applying these new values on the printer. We also re-compute the available width/height for the current printing context
in the WebProcess if needed (see PrintInfo for current printer margins).

Tests: printing/page-with-10mm-left-margin.html
       printing/page-with-zero-margin.html

* page/PrintContext.cpp:
(WebCore::PrintContext::computedPageMargin):
(WebCore::PrintContext::computedPageSize):
* page/PrintContext.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::pageAtRuleSupportEnabled const):
(WebCore::RuntimeEnabledFeatures::setPageAtRuleSupportEnabled):

Source/WebKit:

* Shared/PrintInfo.cpp:
(WebKit::PrintInfo::encode const):
(WebKit::PrintInfo::decode):
* Shared/PrintInfo.h:
* Shared/WebPreferences.yaml:
* Shared/gtk/PrintInfoGtk.cpp:
(WebKit::PrintInfo::PrintInfo):
* Shared/mac/PrintInfoMac.mm:
(WebKit::PrintInfo::PrintInfo):
* UIProcess/API/C/WKPage.cpp:
(WKPageComputePagesForPrinting):
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetPageAtRuleSupportEnabled):
(WKPreferencesGetPageAtRuleSupportEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/GenericCallback.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::computedPagesCallback):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/WKPrintingView.mm:
(pageDidComputePageRects):
(-[WKPrintingView _askPageToComputePageRects]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::beginPrinting):
(WebKit::WebPage::computePagesForPrinting):
(WebKit::WebPage::computePagesForPrintingImpl):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::computePagesForPrintingAndDrawToPDF):

LayoutTests:

* printing/page-with-10mm-left-margin-expected.pdf: Added.
* printing/page-with-10mm-left-margin.html: Added.
* printing/page-with-zero-margin-expected.pdf: Added.
* printing/page-with-zero-margin.html: Added.

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

4 months agoExtract UTI mapping and allow for additions
dino@apple.com [Thu, 11 Apr 2019 23:13:44 +0000 (23:13 +0000)]
Extract UTI mapping and allow for additions
https://bugs.webkit.org/show_bug.cgi?id=196822
<rdar://problem/49822339>

Reviewed by Tim Horton.

Source/WebCore:

Add an ADDITIONAL_SYSTEM_PREVIEW_TYPES macro to the list
of accepted MIME types. And add a new helper to map
MIME types to UTI types when the system was unable to
find an existing type.

* platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::systemPreviewMIMETypes):
* platform/network/mac/UTIUtilities.mm:
(WebCore::UTIFromUnknownMIMEType):
(WebCore::UTIFromMIMETypeCachePolicy::createValueForKey):

Source/WebKit:

Use the new helper to map MIME type to UTI.

* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
(-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
* UIProcess/ios/WKSystemPreviewView.mm:
(getUTIForSystemPreviewMIMEType):

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

4 months ago[iOS] Moving backwards by word granularity does not work if the previous line was...
rniwa@webkit.org [Thu, 11 Apr 2019 22:57:02 +0000 (22:57 +0000)]
[iOS] Moving backwards by word granularity does not work if the previous line was inside another block element
https://bugs.webkit.org/show_bug.cgi?id=196670

Reviewed by Wenson Hsieh.

Source/WebCore:

The bug was ultimately caused by two reasons:
 1. On iOS, previousWordPositionBoundary would identify a blank line as a word boundary.
 2. SimplifiedBackwardsTextIterator generates a new line character (\n) between two block elements.

When moving backwards by word granularity, therefore, previousBoundary would encounter a new line created by (2)
and then previousWordPositionBoundary would identify it as a word boundary.

Fixed the bug (2) by adding the same check as TextIterator::exitNode has to avoid generating an extra new line
character following an exiting new line character. Also added internals.rangeAsTextUsingBackwardsTextIterator
to make SimplifiedBackwardsTextIterator directly testable in layout tests.

This fix unveiled an unrelated bug when moving backwards with sentence granularity at the beginning of a line.
In this case, WebKit was previously feeding ICU with the previous line's content followed by two new lines,
which constituted a new sentence. However after the fix, ICU no longer detects a new sentence after the end
of the prevous line. This patch, therefore, introduces a new optional argument to previousBoundary which forces
the succeeding paragraph's content (i.e. the content of the line from which we're moving backwards with sentence
granularity) to be fed to ICU. This fixes the bug that we were previously not being able to move backwards
with sentence granularity at the beginning of a line as indicated by the new tests.

Tests: editing/selection/extend-selection-backward-at-beginning-of-line-by-sentence-granularity.html
       editing/selection/extend-selection-backward-at-beginning-of-line-by-word-granularity.html
       editing/selection/move-selection-backward-at-beginning-of-line-by-sentence-granularity.html
       editing/selection/move-selection-backward-at-beginning-of-line-by-word-granularity.html
       editing/text-iterator/backwards-text-iterator-basic.html

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::previousBoundary): Fixed the bug that moving backwards with sentence granularity at
the beginning of a line does not work like we did in VisibleUnits. See the description below. It's tested by
an existing layout test accessibility/mac/text-marker-sentence-nav.html, which would fail without this fix.
(WebCore::AXObjectCache::startCharacterOffsetOfSentence):
* accessibility/AXObjectCache.h:
(WebCore::CharacterOffset::isEqual const):
* editing/TextIterator.cpp:
(WebCore::SimplifiedBackwardsTextIterator::handleNonTextNode): Fixed the bug that we were generating two line
lines between block elements. This fixes the bug that moving backwards with word granularity at the beginning
of a line fails on iOS.
(WebCore::plainTextUsingBackwardsTextIteratorForTesting): Added.
* editing/TextIterator.h:
* editing/VisibleUnits.cpp:
(WebCore::previousBoundary): Added the code to extract the succeeding paragraph's content as context for ICU.
This fixes the bug that moving backwards with sentence granularity at the beginning of a line fails.
Limit the length of backwards iteration at the current position to avoid traversing backwards beyond
the current position, and fixed a bug that an early return for the text node was not taking the suffix length
into account when deciding whether next position resides in the starting container node or not.
(WebCore::startSentenceBoundary):
(WebCore::startOfSentence):
* testing/Internals.cpp:
(WebCore::Internals::rangeAsTextUsingBackwardsTextIterator): Added.
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

Added a test for moving and extending backwards from the beginning of a line with word & sentence granularities,
and a basic set of tests forSimplifiedBackwardsTextIterator.

* editing/selection/extend-selection-backward-at-beginning-of-line-by-sentence-granularity-expected.txt: Added.
* editing/selection/extend-selection-backward-at-beginning-of-line-by-sentence-granularity.html: Added.
* editing/selection/extend-selection-backward-at-beginning-of-line-by-word-granularity-expected.txt: Added.
* editing/selection/extend-selection-backward-at-beginning-of-line-by-word-granularity.html: Added.
* editing/selection/move-selection-backward-at-beginning-of-line-by-sentence-granularity-expected.txt: Added.
* editing/selection/move-selection-backward-at-beginning-of-line-by-sentence-granularity.html: Added.
* editing/selection/move-selection-backward-at-beginning-of-line-by-word-granularity-expected.txt: Added.
* editing/selection/move-selection-backward-at-beginning-of-line-by-word-granularity.html: Added.
* editing/text-iterator/backwards-text-iterator-basic-expected.txt: Added.
* editing/text-iterator/backwards-text-iterator-basic.html: Added.

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

4 months agoWeb Inspector: REGRESSION(r244195): Timelines: unable to take heap snapshot
drousso@apple.com [Thu, 11 Apr 2019 22:56:40 +0000 (22:56 +0000)]
Web Inspector: REGRESSION(r244195): Timelines: unable to take heap snapshot
https://bugs.webkit.org/show_bug.cgi?id=196832
<rdar://problem/49828862>

Reviewed by Simon Fraser.

* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.heapSnapshotAdded):
(WI.TimelineManager.prototype._addRecord):
Heap snapshots can be taken outside of a timeline recording, so remove the early return (and
assertion) that checks for an active recording before adding the heap snapshot record.

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

4 months agoREGRESSION (r244182): RemoteLayerTreeDrawingArea::flushLayers() should not be reentrant
commit-queue@webkit.org [Thu, 11 Apr 2019 22:51:43 +0000 (22:51 +0000)]
REGRESSION (r244182): RemoteLayerTreeDrawingArea::flushLayers() should not be reentrant
https://bugs.webkit.org/show_bug.cgi?id=196825

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

Ensure the layer transactions IDs are sequential. So bail out of
RemoteLayerTreeDrawingArea::flushLayers() if reentrancy is detected.

* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::flushLayers):

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

4 months agoAllow the MediaSource API to be enabled via website policy
wenson_hsieh@apple.com [Thu, 11 Apr 2019 22:15:01 +0000 (22:15 +0000)]
Allow the MediaSource API to be enabled via website policy
https://bugs.webkit.org/show_bug.cgi?id=196429
<rdar://problem/48774333>

Reviewed by Tim Horton.

Source/WebCore:

Add support in DocumentLoader for adjusting page settings using its per-site policies. See WebKit ChangeLog for
more detail (in particular, the implementation of applyToDocumentLoader).

Test: fast/media/ios/ipad/enable-MediaSource-API-in-modern-compatibility-mode.html

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::applyPoliciesToSettings const):
(WebCore::DocumentLoader::attachToFrame):
* loader/DocumentLoader.h:

Add an enum class for MediaSource policies; while we're at it, make all of these enum values 8 bits wide.

(WebCore::DocumentLoader::mediaSourcePolicy const):
(WebCore::DocumentLoader::setMediaSourcePolicy):

Source/WebKit:

Adds support for using WebsitePolicies to determine whether to enable the MediaSource API.

* Shared/WebPreferences.yaml:

Disengage the mediaSourceEnabled internal preference from the corresponding WebCore setting; to ensure that
setting the preference to `true` still results in enabling the MediaSource API, we instead make it such that
turning on mediaSourceEnabled causes WebsitePolicies to set its WebsiteMediaSourcePolicy to Enable.

In the future, we should deprecate and remove this preference, in favor of simply setting preferred
compatibility mode on WKWebpagePreferences.

* Shared/WebPreferences.yaml:
* Shared/WebsiteMediaSourcePolicy.h: Copied from Source/WebKit/Shared/WebsitePoliciesData.h.
* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):

Add plumbing for m_mediaSourcePolicy in the set of website policies.

(WebKit::WebsitePoliciesData::applyToDocumentLoader):

Update the document loader with the given media source policy. There are two possibilities when applying the set
of policies to the document loader; either the document loader is already attached to a Frame, or the document
loader is yet to be attached to a Frame.

In the first case, we update Frame's settings on the spot, by calling the new applyPoliciesToSettings helper
method. In the second scenario, we stash the policy state on DocumentLoader; when the DocumentLoader is attached
to a Frame, we'll then update the Frame's settings using DocumentLoader's policy.

* Shared/WebsitePoliciesData.h:
* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::data):
* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

Move code that adjusts website policies after deciding policies for the navigation action from NavigationClient
::decidePolicyForNavigationAction to the completion handler of the policy listener. This allows us to respect
default website policies on the web view configuration, even when using the C API to set the navigation client,
and also allows us to have a single call site for adjustPoliciesForCompatibilityMode. This also enables our
layout tests to opt into modern compatibility mode by default, when specifying modern compatibility mode on
webpage preferences.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::adjustPoliciesForCompatibilityMode):
* UIProcess/WebPageProxy.h:
* WebKit.xcodeproj/project.pbxproj:

LayoutTests:

Add an on-device layout test to ensure that enabling modern compability mode also enables MSE.

* TestExpectations:
* fast/media/ios/ipad/enable-MediaSource-API-in-modern-compatibility-mode-expected.txt: Added.
* fast/media/ios/ipad/enable-MediaSource-API-in-modern-compatibility-mode.html: Added.
* platform/ios-simulator/TestExpectations:
* platform/ios/TestExpectations:

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

4 months agoSupport RTCDataChannel blob binaryType
youenn@apple.com [Thu, 11 Apr 2019 21:51:10 +0000 (21:51 +0000)]
Support RTCDataChannel blob binaryType
https://bugs.webkit.org/show_bug.cgi?id=196821

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/webrtc/RTCDataChannel-send-expected.txt:

Source/WebCore:

Add support for receiving blobs.
Default value is still left to 'arraybuffer' which is not spec compliant.
Covered by rebased test.

* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::setBinaryType):
(WebCore::RTCDataChannel::didReceiveRawData):

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