WebKit-https.git
4 months agoMultiple videos (with audios) with autoplay & playinline not working. Only one video...
youenn@apple.com [Thu, 23 May 2019 20:56:56 +0000 (20:56 +0000)]
Multiple videos (with audios) with autoplay & playinline not working. Only one video play at a time.
https://bugs.webkit.org/show_bug.cgi?id=193312
<rdar://problem/47189864>

Reviewed by Jer Noble.

Source/WebCore:

Allow all MediaStream backed video elements to play together.
Any non MediaStream backed video will stop all MediaStream backed video elements.
Conversely, all non MediaStream backed videos will stop when playing one MediaStream backed video.

Refactor PlatformMediaSessionManager as the way to iterate through sessions
is not safe when pausing a session: if playing, the session will be moved in the array of sessions.

To handle this, copy the list of sessions before iterating through them.
For extra safety, make sessions WeakPtr.

Add routines for the case of filtering with a predicate taking a const session.
In that case, we do not copy the vector but iterate through it as a small optimization.

Test: webrtc/concurrentVideoPlayback.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager):
(WebCore::HTMLMediaElement::hasMediaStreamSource const):
* html/HTMLMediaElement.h:
* platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::activeAudioSessionRequired const):
(WebCore::PlatformMediaSession::canPlayConcurrently const):
(WebCore::PlatformMediaSession::activeAudioSessionRequired): Deleted.
* platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSessionClient::hasMediaStreamSource const):
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::has const):
(WebCore::PlatformMediaSessionManager::activeAudioSessionRequired const):
(WebCore::PlatformMediaSessionManager::canProduceAudio const):
(WebCore::PlatformMediaSessionManager::count const):
(WebCore::PlatformMediaSessionManager::beginInterruption):
(WebCore::PlatformMediaSessionManager::endInterruption):
(WebCore::PlatformMediaSessionManager::addSession):
(WebCore::PlatformMediaSessionManager::removeSession):
(WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
(WebCore::PlatformMediaSessionManager::sessionWillEndPlayback):
(WebCore::PlatformMediaSessionManager::setCurrentSession):
(WebCore::PlatformMediaSessionManager::currentSession const):
(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive):
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive):
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground):
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground):
(WebCore::PlatformMediaSessionManager::systemWillSleep):
(WebCore::PlatformMediaSessionManager::systemDidWake):
(WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForProcess):
(WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::currentSessionsMatching const):
(WebCore::PlatformMediaSessionManager::forEachMatchingSession):
(WebCore::PlatformMediaSessionManager::forEachMatchingSession const):
(WebCore::PlatformMediaSessionManager::forEachSession):
(WebCore::PlatformMediaSessionManager::anyOfSessions const):
(): Deleted.
(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive const): Deleted.
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive const): Deleted.
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground const): Deleted.
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground const): Deleted.
(WebCore::PlatformMediaSessionManager::forEachSession const): Deleted.
(WebCore::PlatformMediaSessionManager::findSession const): Deleted.
* platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::anyOfSessions const): Deleted.
* platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(MediaSessionManagerCocoa::updateSessionState):
(MediaSessionManagerCocoa::beginInterruption):
* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring):
(WebCore::MediaSessionManageriOS::externalOutputDeviceAvailableDidChange):

LayoutTests:

* webrtc/concurrentVideoPlayback-expected.txt: Added.
* webrtc/concurrentVideoPlayback.html: Added.

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

4 months agoUpdating test expectations for failing tests.
sroberts@apple.com [Thu, 23 May 2019 20:44:06 +0000 (20:44 +0000)]
Updating test expectations for failing tests.
<rdar://problem/47088939>

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

4 months agoDFG::OSREntry should not perform arity check
tzagallo@apple.com [Thu, 23 May 2019 20:43:49 +0000 (20:43 +0000)]
DFG::OSREntry should not perform arity check
https://bugs.webkit.org/show_bug.cgi?id=198189

Reviewed by Saam Barati.

JSTests:

* microbenchmarks/loop-osr-with-arity-mismatch.js: Added.
(foo):

Source/JavaScriptCore:

The check prevents OSR entering from hot loops inside functions that were called
with too few arguments.

* dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):

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

4 months agoHandling for non-persistent data should be consistent in computeNetworkProcessAccessT...
sihui_liu@apple.com [Thu, 23 May 2019 20:23:01 +0000 (20:23 +0000)]
Handling for non-persistent data should be consistent in computeNetworkProcessAccessTypeForDataFetch
https://bugs.webkit.org/show_bug.cgi?id=198050

Reviewed by Youenn Fablet.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::computeNetworkProcessAccessTypeForDataFetch):

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

4 months ago[Win][CMake] Pass architecture to cmake via -A for both x64 and Win32
stephan.szabo@sony.com [Thu, 23 May 2019 20:15:55 +0000 (20:15 +0000)]
[Win][CMake] Pass architecture to cmake via -A for both x64 and Win32
https://bugs.webkit.org/show_bug.cgi?id=198098

Reviewed by Don Olmstead.

With current CMake and Visual Studio 2019, the default
architecture will match the host, so we should make sure
to explicitly mention the architecture we want for 32-bit
builds as well for cases where we are on x64 and not in an
x64_x32 cross-build vcvars environment.

* Scripts/webkitdirs.pm:
(getVisualStudioToolset): Get toolset name for cmake/msbuild
(getMSBuildPlatformArgument): Update to use getVisualStudioToolset
(getCMakeWindowsToolsetArgument): Get -A argument for cmake
based on toolset
(generateBuildSystemFromCMakeProject): Remove explicit -A x64
in 64-bit mode in favor of new getCMakeWindowsToolsetArgument.

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

4 months ago[WHLSL] Add a helper for in-place AST mutation
sbarati@apple.com [Thu, 23 May 2019 19:54:53 +0000 (19:54 +0000)]
[WHLSL] Add a helper for in-place AST mutation
https://bugs.webkit.org/show_bug.cgi?id=198175

Reviewed by Myles Maxfield.

This makes WHLSL AST mutation code a bit easier to read and write.

Code that looked like:
```
static_assert(sizeof(AST::DereferenceExpression) <= sizeof(AST::DotExpression), "Dot expressions need to be able to become dereference expressions without updating backreferences");
void* location = &dotExpression;
dotExpression.~DotExpression();
auto* dereferenceExpression = new (location) AST::DereferenceExpression(WTFMove(origin), WTFMove(callExpression));
```

Can now be:
```
auto* dereferenceExpression = AST::replaceWith<AST::DereferenceExpression>(dotExpression, WTFMove(origin), WTFMove(callExpression));
```

* Modules/webgpu/WHLSL/AST/WHLSLNode.h:
(WebCore::WHLSL::AST::replaceWith):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::visit):

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

4 months ago[macOS,iOS] Add always-on logging for AVPlayerTimeControlStatus changes
eric.carlson@apple.com [Thu, 23 May 2019 19:12:22 +0000 (19:12 +0000)]
[macOS,iOS] Add always-on logging for AVPlayerTimeControlStatus changes
https://bugs.webkit.org/show_bug.cgi?id=197946
<rdar://problem/50627457>

Reviewed by Jon Lee.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::convertEnumerationToString):
(WTF::LogArgument<AVPlayerTimeControlStatus>::toString):
(WebCore::MediaPlayerPrivateAVFoundationObjC::timeControlStatusDidChange):

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

4 months agoBuild fix after r245695.
simon.fraser@apple.com [Thu, 23 May 2019 18:32:21 +0000 (18:32 +0000)]
Build fix after r245695.

* dom/Element.cpp:

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

4 months ago[Pointer Events] Compatibility mouse events can only be prevented while the pointer...
commit-queue@webkit.org [Thu, 23 May 2019 18:13:56 +0000 (18:13 +0000)]
[Pointer Events] Compatibility mouse events can only be prevented while the pointer is pressed
https://bugs.webkit.org/show_bug.cgi?id=198178

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

Source/WebCore:

Test: pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released.html

The Pointer Events spec, in https://www.w3.org/TR/pointerevents/#compatibility-mapping-with-mouse-events, says that "Mouse events
can only be prevented when the pointer is down. Hovering pointers (e.g. a mouse with no buttons pressed) cannot have their mouse
events prevented." We now track whether the pointer is pressed and clear the preventsCompatibilityMouseEvents when the pointer is
moved and it is not pressed.

* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::pointerEventWasDispatched):
* page/PointerCaptureController.h:

LayoutTests:

Add a test that listens "mousemove" events and checks it is not dispatched after preventDefault() is called when handling
 "pointerdown" but it is dispatched after releasing the mouse pointer and moving it again.

* pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released-expected.txt: Added.
* pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released.html: Added.

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

4 months agoSet default WebsiteDataStore storage quota based on StorageQuotaManager
youenn@apple.com [Thu, 23 May 2019 18:08:01 +0000 (18:08 +0000)]
Set default WebsiteDataStore storage quota based on StorageQuotaManager
https://bugs.webkit.org/show_bug.cgi?id=198133
<rdar://problem/51031436>

Reviewed by Geoffrey Garen.

Source/WebKit:

* UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/StorageQuota.mm:
(doTest):

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

4 months agoLexer<T>::parseDecimal ought to ASSERT isASCIIDigit
ross.kirsling@sony.com [Thu, 23 May 2019 18:07:49 +0000 (18:07 +0000)]
Lexer<T>::parseDecimal ought to ASSERT isASCIIDigit
https://bugs.webkit.org/show_bug.cgi?id=198156

Reviewed by Keith Miller.

* parser/Lexer.cpp:
(JSC::Lexer<T>::parseDecimal):
Add ASSERT -- apparently the issue with doing so earlier was simply
that m_current can be anything at all when m_buffer8 is non-empty.

(JSC::Lexer<T>::lexWithoutClearingLineTerminator):
Clean up a few things in the vicinity of r245655:
 - fix token enum values in a couple of error cases added in the last patch
 - add UNLIKELY for existing error cases that forgot to use it
 - simplify some control flow

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

4 months agoWeb Inspector: clicking a source link should never open the Network tab
drousso@apple.com [Thu, 23 May 2019 18:04:49 +0000 (18:04 +0000)]
Web Inspector: clicking a source link should never open the Network tab
https://bugs.webkit.org/show_bug.cgi?id=197951

Reviewed by Timothy Hatcher.

The preview panel in the Network tab is really meant to be just that; a preview.

Opening resources in the preview panel is not a great experience, as the Network tab doesn't
have as much of the information one would expect when viewing a resource (namely the
Resource details sidebar panel).

Navigating within the Network tab also completely wipes out the current "state" of what
you're looking at (e.g. which panel), which could be unexpected.

The only way this could happen previously was if the Resources/Debugger/Sources tabs had
never been active at any point in the past. Selecting one of those tabs and then clicking on
an initiator link in the Network tab would re-select that other tab.

* UserInterface/Base/Main.js:
(WI.dialogWasDismissedWithRepresentedObject):

* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):

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

4 months ago[Pointer Events] The mouseover, mouseout, mouseenter, and mouseleave events should...
commit-queue@webkit.org [Thu, 23 May 2019 18:02:13 +0000 (18:02 +0000)]
[Pointer Events] The mouseover, mouseout, mouseenter, and mouseleave events should not be prevented while the pointer is down
https://bugs.webkit.org/show_bug.cgi?id=198177

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

Source/WebCore:

Test: pointerevents/mouse/compatibility-mouse-events-prevention-mouse-pressed.html

The Pointer Event spec, in https://www.w3.org/TR/pointerevents/#compatibility-mapping-with-mouse-events, says that "the mouseover,
mouseout, mouseenter, and mouseleave events are never prevented (even if the pointer is down)." We add a new static function which
indicates what is "compatibility" mouse event since those should be excluded, along with "click", which we already excluded.

* dom/Element.cpp:
(WebCore::isCompatibilityMouseEvent):
(WebCore::Element::dispatchMouseEvent):

LayoutTests:

Add a test that listens to all mouse events and checks which are dispatched in the case preventDefault() is called when handling
"pointerdown" and when it isn't.

* platform/mac-wk1/TestExpectations: Skipping the test on WK1 where the sequence of dispatched mouse events does not match.
* pointerevents/mouse/compatibility-mouse-events-prevention-mouse-pressed-expected.txt: Added.
* pointerevents/mouse/compatibility-mouse-events-prevention-mouse-pressed.html: Added.

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

4 months agoUpdate feature status for shipped features
jond@apple.com [Thu, 23 May 2019 17:59:23 +0000 (17:59 +0000)]
Update feature status for shipped features
https://bugs.webkit.org/show_bug.cgi?id=196783

Reviewed by Timothy Hatcher.

Updated feature status for Beacon API, CSS Text Decoration Level 4, Intersection Observer,
Conic Gradients, Datalist Element, and Web Share.

* features.json:

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

4 months agoAdd Mojave+ back to media/track/track-cue-rendering-vertical.html expectation
tsavell@apple.com [Thu, 23 May 2019 17:46:25 +0000 (17:46 +0000)]
Add Mojave+ back to media/track/track-cue-rendering-vertical.html expectation
https://bugs.webkit.org/show_bug.cgi?id=136627

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

4 months agogenerate-xcfilelists should not store temporary build files in /tmp
krollin@apple.com [Thu, 23 May 2019 17:33:26 +0000 (17:33 +0000)]
generate-xcfilelists should not store temporary build files in /tmp
https://bugs.webkit.org/show_bug.cgi?id=198136

Reviewed by Jonathan Bedard.

Provide the build infrastructure control of the location of
generate-xcfilelists' temporary files by creating them in the build
directory when possible.

* Scripts/webkitpy/generate_xcfilelists_lib/application.py:
(get_xcode_project_temp_dir):
* Scripts/webkitpy/generate_xcfilelists_lib/generators.py:
(BaseGenerator._generate_derived):
(BaseGenerator._generate_unified):
(BaseGenerator):
(BaseGenerator._get_temp_dir):

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

4 months agoDeprecate more preview API
achristensen@apple.com [Thu, 23 May 2019 17:20:54 +0000 (17:20 +0000)]
Deprecate more preview API
https://bugs.webkit.org/show_bug.cgi?id=198152

Reviewed by Dean Jackson.

This is working towards <rdar://problem/51003503>

* UIProcess/API/Cocoa/WKPreviewActionItem.h:
* UIProcess/API/Cocoa/WKPreviewActionItem.mm:
* UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.h:
* UIProcess/API/Cocoa/WKPreviewActionItemInternal.h:
* UIProcess/API/Cocoa/WKPreviewElementInfo.h:
* UIProcess/API/Cocoa/WKPreviewElementInfo.mm:
* UIProcess/API/Cocoa/WKUIDelegate.h:
* UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::activeTouchActions const):
* UIProcess/ios/WKContentViewInteraction.mm:
(previewIdentifierForElementAction):
(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
(-[WKContentView _presentedViewControllerForPreviewItemController:]):
(-[WKContentView _previewItemController:commitPreview:]):

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

4 months ago[PlayStation] Implement platformUserPreferredLanguages.
ross.kirsling@sony.com [Thu, 23 May 2019 16:59:32 +0000 (16:59 +0000)]
[PlayStation] Implement platformUserPreferredLanguages.
https://bugs.webkit.org/show_bug.cgi?id=198149

Reviewed by Fujii Hironori.

* wtf/PlatformPlayStation.cmake:
* wtf/playstation/LanguagePlayStation.cpp: Added.
(WTF::platformUserPreferredLanguages):

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

4 months ago[PlayStation] Skip additional tests on PlayStation
stephan.szabo@sony.com [Thu, 23 May 2019 16:53:01 +0000 (16:53 +0000)]
[PlayStation] Skip additional tests on PlayStation
https://bugs.webkit.org/show_bug.cgi?id=198145

Reviewed by Ross Kirsling.

* exceptionFuzz.yaml:
Add skip on hostOS playstation
* executableAllocationFuzz.yaml:
Add skip on hostOS playstation

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

4 months agoCreate scrolling tree nodes for descendants of position:absolute inside stacking...
simon.fraser@apple.com [Thu, 23 May 2019 15:48:52 +0000 (15:48 +0000)]
Create scrolling tree nodes for descendants of position:absolute inside stacking-context overflow
https://bugs.webkit.org/show_bug.cgi?id=198154

Reviewed by Antti Koivisto.
Source/WebCore:

There exists code that creates scrolling tree nodes for position:absolute when the containing block
chain skips an enclosing scroller, but the compositing ancestor tree includes the scroller. However
this code explicitly checked that the layer was position:absolute.

This needed to be generalized for any layer whose containing block ancestor chain includes
a position:absolute that skips the scroller, for example a transformed inside a position:absolute,
so remove an explicit isAbsolutelyPositioned() check and some similar assertions.

Test: scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow.html

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

LayoutTests:

* platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow-expected.txt: Copied from LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt.
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
* scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow-expected.txt: Copied from LayoutTests/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt.
* scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow.html: Added.
* scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:

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

4 months agoFix a few missing header inclusions often masked by by unified sources
aperez@igalia.com [Thu, 23 May 2019 15:47:10 +0000 (15:47 +0000)]
Fix a few missing header inclusions often masked by by unified sources
https://bugs.webkit.org/show_bug.cgi?id=198180

Reviewed by Eric Carlson.

Source/JavaScriptCore:

* assembler/PerfLog.cpp: Add missing <array> header inclusion.
* wasm/WasmBinding.cpp: Add missing "WasmCallingConvention.h" inclusion.

Source/WebCore:

* editing/markup.h: Add missing "FloatSize.h" inclusion.
* html/FeaturePolicy.cpp: Add missing "HTMLParserIdioms.h" inclusion.
* platform/text/TextCodec.cpp: Add missing <cstdio> inclusion.

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

4 months ago[WHLSL] Implement property resolver
mmaxfield@apple.com [Thu, 23 May 2019 09:29:27 +0000 (09:29 +0000)]
[WHLSL] Implement property resolver
https://bugs.webkit.org/show_bug.cgi?id=195925
<rdar://problem/48219643>

Reviewed by Saam Barati and Robin Morisset.

Source/WebCore:

The property resolver is the thing that replaces dot expressions, index expressions, and
read-modify-write expressions with calls to getters, setters, and anders. This patch doesn't
fully implement the property resolver, but implements enough for simple dot expressions to
work. This is enough for us to be able to test most of the rest of the compiler. Index
expressions and read-modify-write expressions are not fully included in this patch, and will
be finished in a follow-up patch.

The property resolver may introduce anonymous variables in various places. In order to do
this, after the property resolver runs, it will insert all these anonymous variables in the
beginning of the function. However, this means that entries in the VariableDeclarations
vector will all shift, which means VariableDeclarations have to be allocated on the heap so
backreferences to them stay valid. This patch moves the storage associated with these values
to living directly in the vector's storage to living in heap storage (via filling the vector
with UniqueRefs).

This patch also adds the third concept of value-ness. We now have right values, left values,
and abstract left values (for things which have setters but have no address). This addition
is required for the analysis the property resolver performs. This concept is also present in
the spec.

Test: webgpu/whlsl-dot-expressions.html

* Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
(WebCore::WHLSL::AST::TypeAnnotation::TypeAnnotation):
(WebCore::WHLSL::AST::TypeAnnotation::leftAddressSpace const):
(WebCore::WHLSL::AST::TypeAnnotation::isRightValue const):
(WebCore::WHLSL::AST::TypeAnnotation::visit):
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
(WebCore::WHLSL::AST::AssignmentExpression::takeRight):
* Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::maybeResolvedType):
(WebCore::WHLSL::AST::Expression::resolvedType):
(WebCore::WHLSL::AST::Expression::maybeTypeAnnotation const):
(WebCore::WHLSL::AST::Expression::typeAnnotation const):
(WebCore::WHLSL::AST::Expression::setTypeAnnotation):
(WebCore::WHLSL::AST::Expression::addressSpace const): Deleted.
(WebCore::WHLSL::AST::Expression::setAddressSpace): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
(WebCore::WHLSL::AST::FloatLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.cpp:
(WebCore::WHLSL::AST::IntegerLiteral::valueForSelectedType const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
(WebCore::WHLSL::AST::IntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression):
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::leftValue):
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::lValue): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
(WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression):
(WebCore::WHLSL::AST::MakePointerExpression::leftValue):
(WebCore::WHLSL::AST::MakePointerExpression::lValue): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
(WebCore::WHLSL::AST::NullLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleGetterOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleSetterOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleAnderOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::getterFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::anderFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::threadAnderFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setterFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleGetterOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleAnderOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleSetterOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::setGetterFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setAnderFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setThreadAnderFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setSetterFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::takeBase):
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleGetOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleSetOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleAndOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleGetOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleSetOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleAndOverloads): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::oldVariableReference):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::newVariableReference):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::leftValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeLeftValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeOldValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValueExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeResultExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::lValue): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
(WebCore::WHLSL::AST::ResolvableType::maybeResolvedType const):
(WebCore::WHLSL::AST::ResolvableType::resolvedType const):
(WebCore::WHLSL::AST::ResolvableType::maybeResolvedType):
(WebCore::WHLSL::AST::ResolvableType::resolvedType):
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp:
(WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const):
* Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp:
(WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableType const):
* Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp:
(WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableType const):
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
(WebCore::WHLSL::AST::StructureDefinition::find):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
(WebCore::WHLSL::AST::TypeReference::maybeResolvedType const):
(WebCore::WHLSL::AST::TypeReference::resolvedType const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.cpp:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::valueForSelectedType const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
(WebCore::WHLSL::AST::VariableDeclarationsStatement::VariableDeclarationsStatement):
(WebCore::WHLSL::AST::VariableDeclarationsStatement::variableDeclarations):
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::attributeForSemantic):
(WebCore::WHLSL::Metal::EntryPointScaffolding::mangledInputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::unpack):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDeclarationWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::findInVector):
(WebCore::WHLSL::Metal::TypeNamer::visit):
(WebCore::WHLSL::Metal::TypeNamer::createNameNode):
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::commit):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::Checker::recurseAndGetInfo):
(WebCore::WHLSL::Checker::getInfo):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
(WebCore::WHLSL::getUnnamedType):
(WebCore::WHLSL::Checker::finishVisitingPropertyAccess): Deleted.
(WebCore::WHLSL::Checker::recurseAndWrapBaseType): Deleted.
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
(WebCore::WHLSL::Gatherer::takeEntryPointItems):
(WebCore::WHLSL::Gatherer::visit):
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::commit):
(WebCore::WHLSL::inferTypesForCall):
* Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.cpp:
(WebCore::WHLSL::getNativeTypeDeclaration):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseParameters):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
* Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h:
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp: Added.
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::visit):
(WebCore::WHLSL::PropertyResolver::simplifyLeftValue):
(WebCore::WHLSL::resolveProperties):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h.
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
(WebCore::WHLSL::RecursiveTypeChecker::visit):
* Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
(WebCore::WHLSL::conversionCost):
* Modules/webgpu/WHLSL/WHLSLResolvingType.h:
(WebCore::WHLSL::ResolvingType::getUnnamedType):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::FindArrayTypes::takeArrayTypes):
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::FindAllTypes::takeUnnamedTypes):
(WebCore::WHLSL::FindAllTypes::takeNamedTypes):
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
* Modules/webgpu/WHLSL/WHLSLVisitor.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetWHLSLFunctionsForPipelineDescriptor):

LayoutTests:

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

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

4 months ago[tvOS] Build broken by r245639
graouts@webkit.org [Thu, 23 May 2019 08:39:39 +0000 (08:39 +0000)]
[tvOS] Build broken by r245639
https://bugs.webkit.org/show_bug.cgi?id=198172
<rdar://problem/51048991>

Unreviewed build fix.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::touchWithIdentifierWasRemoved):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::touchWithIdentifierWasRemoved): Deleted.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::touchWithIdentifierWasRemoved):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::touchWithIdentifierWasRemoved): Deleted.

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

4 months ago[tvOS] Build broken by r245639
graouts@webkit.org [Thu, 23 May 2019 07:55:43 +0000 (07:55 +0000)]
[tvOS] Build broken by r245639
https://bugs.webkit.org/show_bug.cgi?id=198172
<rdar://problem/51048991>

Unreviewed build fix.

* WebProcess/WebPage/WebPage.messages.in:

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

4 months ago[JHBuild][GStreamer] Enable libsrtp
commit-queue@webkit.org [Thu, 23 May 2019 07:41:57 +0000 (07:41 +0000)]
[JHBuild][GStreamer] Enable libsrtp
https://bugs.webkit.org/show_bug.cgi?id=198041

Patch by Philippe Normand <philn@igalia.com> on 2019-05-23
Reviewed by Xabier Rodriguez-Calvar.

* gstreamer/jhbuild.modules: Enable libsrtp. The system version
can't be used from Stretch because it's too old.

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

4 months ago[WPE] Build fails with ENABLE_VIDEO=OFF and ENABLE_WEB_AUDIO=OFF
aperez@igalia.com [Thu, 23 May 2019 07:28:24 +0000 (07:28 +0000)]
[WPE] Build fails with ENABLE_VIDEO=OFF and ENABLE_WEB_AUDIO=OFF
https://bugs.webkit.org/show_bug.cgi?id=198125

Reviewed by Philippe Normand.

* UIProcess/glib/WebProcessPoolGLib.cpp: Guard the inclusion of GStreamerCommon.h with USE(GSTREAMER).
* WebProcess/glib/WebProcessGLib.cpp: Ditto.

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

4 months agocreateListFromArrayLike should throw if value is not an object
tzagallo@apple.com [Thu, 23 May 2019 07:06:20 +0000 (07:06 +0000)]
createListFromArrayLike should throw if value is not an object
https://bugs.webkit.org/show_bug.cgi?id=198138

Reviewed by Yusuke Suzuki.

JSTests:

* stress/create-list-from-array-like-not-object.js: Added.
(testValid):
(testInvalid):
* stress/proxy-get-own-property-names-should-not-clear-previous-results.js:
(opt):
* stress/proxy-proto-enumerator.js: Added.
(main):
* stress/proxy-proto-own-keys.js: Added.
(assert):
(ownKeys):

Source/JavaScriptCore:

According to the spec[1], createListFromArrayLike should throw a type error if the array-like value
passed in is not an object.
[1]: https://www.ecma-international.org/ecma-262/9.0/index.html#sec-createlistfromarraylike

* runtime/JSObjectInlines.h:
(JSC::createListFromArrayLike):
* runtime/ProxyObject.cpp:
(JSC::ProxyObject::performGetOwnPropertyNames):
* runtime/ReflectObject.cpp:
(JSC::reflectObjectConstruct):

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

4 months agoMove win-ews queue bubble to Win10 section of dashboard
ryanhaddad@apple.com [Thu, 23 May 2019 06:57:34 +0000 (06:57 +0000)]
Move win-ews queue bubble to Win10 section of dashboard
https://bugs.webkit.org/show_bug.cgi?id=198159

Reviewed by Alexey Proskuryakov.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:
(BubbleQueueServer): Change platform to Windows10 to match the OS version of the bots.

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

4 months ago[tvOS] Build broken by r245639
graouts@webkit.org [Thu, 23 May 2019 05:54:43 +0000 (05:54 +0000)]
[tvOS] Build broken by r245639
https://bugs.webkit.org/show_bug.cgi?id=198172
<rdar://problem/51048991>

Unreviewed build fix.

* UIProcess/ios/WKSyntheticTapGestureRecognizer.m:
(-[WKSyntheticTapGestureRecognizer reset]):
(-[WKSyntheticTapGestureRecognizer touchesEnded:withEvent:]):

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

4 months agofont-optical-sizing applies the wrong variation value
mmaxfield@apple.com [Thu, 23 May 2019 04:18:43 +0000 (04:18 +0000)]
font-optical-sizing applies the wrong variation value
https://bugs.webkit.org/show_bug.cgi?id=197528
<rdar://problem/50152854>

Reviewed by Antti Koivisto.

Source/WebCore:

The OpenType spec says in
https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_opsz

"Scale interpretation: Values can be interpreted as text size, in points."

It turns out that it means "typographic point size" which is equal to CSS pixels, not
CSS points.

There are two parts of the font that are sensitive to optical sizing: variation values and
the trak table. We don't want to set the variation value directly because then the trak table
won't be affected. Instead, we can use kCTFontOpticalSizeAttribute to set both of them together.
We will only do this when the CSS says text-rendering:optimizeLegibility or when the font has
an opsz axis but no STAT table. Otherwise, we won't do anything special, which lets CoreText
handle the default behavior for us. This gives us the same default behavior as the rest of the
system.

Tests: fast/text/variations/optical-sizing-trak-2.html
       fast/text/variations/optical-sizing-trak.html
       fast/text/variations/optical-sizing-units-2.html
       fast/text/variations/optical-sizing-units.html

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontType::FontType):
(WebCore::preparePlatformFont):
(WebCore::fontWithFamily):
(WebCore::FontCache::systemFallbackForCharacters):
* platform/graphics/cocoa/FontCacheCoreText.h:
* platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
(WebCore::FontFamilySpecificationCoreText::fontRanges const):
* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::FontCustomPlatformData::fontPlatformData):

Source/WTF:

* wtf/Platform.h:

LayoutTests:

* fast/text/variations/optical-sizing-trak-2-expected-mismatch.html: Added.
* fast/text/variations/optical-sizing-trak-2.html: Added.
* fast/text/variations/optical-sizing-trak-expected.html: Added.
* fast/text/variations/optical-sizing-trak.html: Added.
* fast/text/variations/optical-sizing-units-2-expected-mismatch.html: Added.
* fast/text/variations/optical-sizing-units-2.html: Added.
* fast/text/variations/optical-sizing-units-expected.html: Added.
* fast/text/variations/optical-sizing-units.html: Added.
* fast/text/variations/resources/Amstelvar/Amstelvar-Roman-VF104.ttf: Added.
This font havariations/s been approved by the lawyers to add for layout tests.
* fast/text/variations/resources/Amstelvar/COPYRIGHT.md: Added.
* fast/text/variations/resources/Amstelvar/OFL.txt: Added.
* platform/win/TestExpectations:

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

4 months ago[Mac] Add API test to make sure the system font is drawn just like in native code
mmaxfield@apple.com [Thu, 23 May 2019 04:12:36 +0000 (04:12 +0000)]
[Mac] Add API test to make sure the system font is drawn just like in native code
https://bugs.webkit.org/show_bug.cgi?id=198010

Reviewed by Daniel Bates.

We can compare the width of using font-family:system-ui to a CTLine.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/TextWidth.html: Added.
* TestWebKitAPI/Tests/WebKitCocoa/TextWidth.mm: Added.
(TEST):

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

4 months agoUse modern async IPC for EngineRepresentationCompleted and ClearMemoryRepresentationC...
youenn@apple.com [Thu, 23 May 2019 02:17:52 +0000 (02:17 +0000)]
Use modern async IPC for EngineRepresentationCompleted and ClearMemoryRepresentationCompleted
https://bugs.webkit.org/show_bug.cgi?id=198134

Reviewed by Alex Christensen.

* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
(WebKit::CacheStorageEngineConnection::engineRepresentation):
* NetworkProcess/cache/CacheStorageEngineConnection.h:
* NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
(WebKit::WebCacheStorageConnection::engineRepresentation):
(WebKit::WebCacheStorageConnection::clearMemoryRepresentationCompleted): Deleted.
(WebKit::WebCacheStorageConnection::engineRepresentationCompleted): Deleted.
* WebProcess/Cache/WebCacheStorageConnection.h:
* WebProcess/Cache/WebCacheStorageConnection.messages.in:

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

4 months ago[JSC] UnlinkedMetadataTable's offset table should be small
ysuzuki@apple.com [Thu, 23 May 2019 01:47:29 +0000 (01:47 +0000)]
[JSC] UnlinkedMetadataTable's offset table should be small
https://bugs.webkit.org/show_bug.cgi?id=197910

Reviewed by Saam Barati.

In Gmail, we found that massive # of UnlinkedMetadataTable (21979 - 24727) exists. Each UnlinkedMetadataTable takes at least 204 bytes
because of large (unsinged) offset table. This patch reduces the size of offset table by introducing 16bit version offset table.
Previously our code for looking up Metadata is like this.

    offset = offsetTable32[opcode]
    metadata = (SomeOp::Metadata*)table[offset] + id

Instead, we introduce uint16_t offset table. The lookup code becomes like this.

    offset = offsetTable16[opcode]
    if (!offset)
        offset = offsetTable32[opcode]
    metadata = (SomeOp::Metadata*)table[offset] + id

We use 0 offset as a marker to indicate that we have 32bit offset table. This is OK since 0 offset does not appear since all the offsets
included in this table is larger than s_offset16TableSize.

32bit offset table is allocated only when the offset exceeds 16bit range. It means that this will be used only when Metadata table is larger
than almost 64KB. Even in Gmail, such MetadataTable is rare, and additional 32bit offset table size does not matter much in this case since
MetadataTable is already so large.

Based on the # of UnlinkedMetadataTables, this optimization should improve Gmail steady state memory by 2MB.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/MetadataTable.cpp:
(JSC::MetadataTable::~MetadataTable):
(JSC::MetadataTable::destroy):
* bytecode/MetadataTable.h:
(JSC::MetadataTable::ref):
(JSC::MetadataTable::deref):
(JSC::MetadataTable::buffer):
(JSC::MetadataTable::is32Bit const):
(JSC::MetadataTable::offsetTable16 const):
(JSC::MetadataTable::offsetTable32 const):
(JSC::MetadataTable::totalSize const):
(JSC::MetadataTable::getOffset const):
(JSC::MetadataTable::getImpl):
(JSC::MetadataTable::ref const): Deleted.
(JSC::MetadataTable::deref const): Deleted.
* bytecode/Opcode.cpp:
* bytecode/UnlinkedMetadataTable.cpp: Added.
(JSC::UnlinkedMetadataTable::finalize):
* bytecode/UnlinkedMetadataTable.h:
(JSC::UnlinkedMetadataTable::create):
(JSC::UnlinkedMetadataTable::totalSize const):
(JSC::UnlinkedMetadataTable::offsetTableSize const):
(JSC::UnlinkedMetadataTable::preprocessBuffer const):
(JSC::UnlinkedMetadataTable::buffer const):
(JSC::UnlinkedMetadataTable::offsetTable16 const):
(JSC::UnlinkedMetadataTable::offsetTable32 const):
* bytecode/UnlinkedMetadataTableInlines.h:
(JSC::UnlinkedMetadataTable::UnlinkedMetadataTable):
(JSC::UnlinkedMetadataTable::addEntry):
(JSC::UnlinkedMetadataTable::sizeInBytes):
(JSC::UnlinkedMetadataTable::link):
(JSC::UnlinkedMetadataTable::unlink):
(JSC::UnlinkedMetadataTable::finalize): Deleted.
* llint/LowLevelInterpreter.asm:
* runtime/CachedTypes.cpp:
(JSC::CachedMetadataTable::encode):
(JSC::CachedMetadataTable::decode const):

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

4 months ago[JSC] ArrayAllocationProfile should not access to butterfly in concurrent compiler
ysuzuki@apple.com [Thu, 23 May 2019 01:22:33 +0000 (01:22 +0000)]
[JSC] ArrayAllocationProfile should not access to butterfly in concurrent compiler
https://bugs.webkit.org/show_bug.cgi?id=197809

Reviewed by Michael Saboff.

JSTests:

* stress/array-allocation-profile-should-not-update-itself-in-concurrent-compiler.js: Added.
(foo):

Source/JavaScriptCore:

ArrayAllocationProfile assumes that Butterfly can be accessed concurrently. But this is not correct now
since LargeAllocation Butterfly can be realloced. In this patch, we switch profiling array allocations
only in the main thread. This allocation profiling is repeatedly called in the main thread's slow path,
and it is also called when updating the profiles in the main thread.

We also rename updateAllPredictionsAndCountLiveness to updateAllValueProfilePredictionsAndCountLiveness
since it only cares ValueProfiles.

* bytecode/ArrayAllocationProfile.cpp:
(JSC::ArrayAllocationProfile::updateProfile):
* bytecode/ArrayAllocationProfile.h:
(JSC::ArrayAllocationProfile::selectIndexingTypeConcurrently):
(JSC::ArrayAllocationProfile::selectIndexingType):
(JSC::ArrayAllocationProfile::vectorLengthHintConcurrently):
(JSC::ArrayAllocationProfile::vectorLengthHint):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::updateAllValueProfilePredictionsAndCountLiveness):
(JSC::CodeBlock::updateAllValueProfilePredictions):
(JSC::CodeBlock::shouldOptimizeNow):
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness): Deleted.
* bytecode/CodeBlock.h:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):

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

4 months agoWeb Inspector: Provide UIString descriptions to improve localizations
nvasilyev@apple.com [Thu, 23 May 2019 00:44:42 +0000 (00:44 +0000)]
Web Inspector: Provide UIString descriptions to improve localizations
https://bugs.webkit.org/show_bug.cgi?id=195132
<rdar://problem/48457817>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/LoadLocalizedStrings.js:
(WI.UIString):
(WI.repeatedUIString.timelineRecordLayout):
(WI.repeatedUIString.timelineRecordPaint):
(WI.repeatedUIString.timelineRecordComposite):
(WI.repeatedUIString.allExceptions):
(WI.repeatedUIString.uncaughtExceptions):
(WI.repeatedUIString.assertionFailures):
(WI.repeatedUIString.allRequests):
(WI.repeatedUIString.fetch):
(WI.repeatedUIString.revealInDOMTree):
* UserInterface/Models/LayoutTimelineRecord.js:
(WI.LayoutTimelineRecord.displayNameForEventType):
* UserInterface/Models/RenderingFrameTimelineRecord.js:
(WI.RenderingFrameTimelineRecord.displayNameForTaskType):
* UserInterface/Models/Resource.js:
(WI.Resource.displayNameForType):
* UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.layout):
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.displayNameForSampleType):
* UserInterface/Views/ContextMenuUtilities.js:
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement.displayNameForType):
* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement.prototype.populateContextMenu):
(WI.DOMNodeTreeElement):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.populateDOMNodeContextMenu):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown):
(WI.DebuggerSidebarPanel):
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype._buildDataGridSection):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.shortDisplayNameForResourceType):
(WI.NetworkTableContentView.prototype.initialLayout):
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):

Tools:

Allow WI.UIString to take:
- WI.UIString(string, key, comment)
- WI.UIString(string, comment)
- WI.UIString(string)

* Scripts/extract-localizable-js-strings:

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

4 months agoSubselectors not searched when determining property whitelist for selector
antti@apple.com [Thu, 23 May 2019 00:43:09 +0000 (00:43 +0000)]
Subselectors not searched when determining property whitelist for selector
https://bugs.webkit.org/show_bug.cgi?id=198147
<rdar://problem/50405208>

Reviewed by Zalan Bujtas.

Source/WebCore:

This can cause marker elements get style they shouldn't.

Test: fast/lists/marker-style-subselector-whitelist.html

* css/RuleSet.cpp:
(WebCore::determinePropertyWhitelistType):

Check subselectors too.

LayoutTests:

* fast/lists/marker-style-subselector-whitelist-expected.txt: Added.
* fast/lists/marker-style-subselector-whitelist.html: Added.

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

4 months ago[iOS] The shouldIgnoreMetaViewport test option incorrectly persists across layout...
wenson_hsieh@apple.com [Thu, 23 May 2019 00:41:47 +0000 (00:41 +0000)]
[iOS] The shouldIgnoreMetaViewport test option incorrectly persists across layout tests
https://bugs.webkit.org/show_bug.cgi?id=198135
<rdar://problem/51001306>

Reviewed by Alexey Proskuryakov.

Tools:

When shouldIgnoreMetaViewport=true is specified on a test, if the following test does not use a flexible
viewport, we will continue ignoring the meta viewport, since we'll bail before we attempt to reset
WKPreferences' _shouldIgnoreMetaViewport property to NO.

We fix this by simply allowing shouldIgnoreMetaViewport to take precedence over useFlexibleViewport, such that
-[WKPreferences _shouldIgnoreMetaViewport] will always be updated to its intended value between tests.

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

LayoutTests:

Attempt to fix a handful of viewport tests that currently try to wait for the next visible content rect update,
but end up timing out in the process. Instead, only wait for the presentation update, which is guaranteed to
happen.

* fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html:
* fast/viewport/ios/device-width-viewport-after-changing-view-scale.html:
* fast/viewport/ios/initial-scale-after-changing-view-scale.html:
* fast/viewport/ios/minimum-scale-after-changing-view-scale.html:

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

4 months agoWHLSL: fix enum parsing
sbarati@apple.com [Thu, 23 May 2019 00:33:45 +0000 (00:33 +0000)]
WHLSL: fix enum parsing
https://bugs.webkit.org/show_bug.cgi?id=198087

Reviewed by Myles Maxfield.

Source/WebCore:

This fixes two bugs:

1. We were using a String by reference after moving the underlying owner of
the string. This would lead to the String becoming the empty value, and
crashing when used as a key in a hash map.
2. We were incorrectly producing a syntax error for enum declarations by
saying it's invalid if an enum value was added to a hash map for the first
time. This logic should be negated. We need to error when it's added for
the second time and onwards.

Test: webgpu/whlsl-dont-crash-parsing-enum.html

* Modules/webgpu/WHLSL/AST/WHLSLAST.h: Replaced.
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
(WebCore::WHLSL::AST::EnumerationDefinition::add):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
(WebCore::WHLSL::AST::EnumerationMember::name):
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp: Replaced.
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLASTDumper.h: Replaced.

LayoutTests:

* webgpu/whlsl-dont-crash-parsing-enum-expected.html: Added.
* webgpu/whlsl-dont-crash-parsing-enum.html: Added.

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

4 months agoREGRESSION(r245148): Removing inputmode="none" does not bring up software keyboard
rniwa@webkit.org [Thu, 23 May 2019 00:30:23 +0000 (00:30 +0000)]
REGRESSION(r245148): Removing inputmode="none" does not bring up software keyboard
https://bugs.webkit.org/show_bug.cgi?id=198141

Reviewed by Geoffrey Garen.

Source/WebKit:

r245148 changed _requiresKeyboardWhenFirstResponder to return NO when shouldShowAutomaticKeyboardUI
returns NO with regards to software keyboard. This introduced a regression that removing inputmode="none"
no longer brings up the software keyboard. Fixed the bug by making it return YES when inputmode="none"
is present on an editable element in shouldShowAutomaticKeyboardUI, partially restoring the old behavior.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView shouldShowAutomaticKeyboardUI]):
(-[WKContentView _shouldShowAutomaticKeyboardUIIgnoringInputMode]):
(-[WKContentView _requiresKeyboardWhenFirstResponder]):

LayoutTests:

Added a regression test.

* fast/forms/ios/inputmode-removing-none-expected.txt: Added.
* fast/forms/ios/inputmode-removing-none.html: Added.

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

4 months agoREGRESSION (r240552): PDF contents are not exposed to Accessibility (VO, etc.)
timothy_horton@apple.com [Thu, 23 May 2019 00:07:22 +0000 (00:07 +0000)]
REGRESSION (r240552): PDF contents are not exposed to Accessibility (VO, etc.)
https://bugs.webkit.org/show_bug.cgi?id=198146
<rdar://problem/50698533>

Reviewed by Simon Fraser.

* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::updateMockAccessibilityElementAfterCommittingLoad):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::updateMockAccessibilityElementAfterCommittingLoad):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h:
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
(-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):
(-[WKAccessibilityWebPageObjectBase setWebPage:]):
(-[WKAccessibilityWebPageObjectBase setHasMainFramePlugin:]):
In r240552, we changed to only defer to the main frame PluginView's
accessibility tree if the cached "has a plugin" bit is true. That bit
was only updated in WebPage::platformInitialize, which is long before
we've actually loaded anything or have any clue if we're going to have
a plugin.

Instead, push updates every time we commit a load, which coincides
with when we make other decisions based on having a plugin or not.
Also, just use the existence of a PluginDocument to make the decision,
instead of actually digging in to see if there's a PluginView, since
PluginView comes in asynchronously.

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

4 months ago<rdar://problem/50058173> REGRESSION (r243347) Layout tests fast/events/touch/ios...
simon.fraser@apple.com [Wed, 22 May 2019 23:46:28 +0000 (23:46 +0000)]
<rdar://problem/50058173> REGRESSION (r243347) Layout tests fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on* are failing

Unreviewed test gardening.

I confirmed that “cancelable” is no longer true because
WebPageProxy::handleTouchEventSynchronously() is dispatching the events
asynchronously, so setCanPreventNativeGestures is set to false.

The exception is because the “touchEnd” event has no touches.

* fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block-expected.txt:
* fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html:
* fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document-expected.txt:
* fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html:

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

4 months ago[JSC] Shrink Metadata
ysuzuki@apple.com [Wed, 22 May 2019 23:42:30 +0000 (23:42 +0000)]
[JSC] Shrink Metadata
https://bugs.webkit.org/show_bug.cgi?id=197940

Reviewed by Michael Saboff.

We get Metadata related data in Gmail and it turns out the following things.

1. At peak, MetadataTable eats a lot of bytes (30 MB - 50 MB, sometimes 70 MB while total Gmail footprint is 400 - 500 MB).
2. After full GC happens, most of Metadata is destroyed while some are kept. Still keeps 1 MB. But after the GC, # of MetadataTable eventually grows again.

If we shrink Metadata, we can reduce the peak memory footprint in Gmail.

This patch shrinks Metadata. This patch first focus on low hanging fruits: it does not include the change removing OSR exit JSValue in ValueProfile.
This patch uses fancy bit juggling & leverages nice data types to reduce Metadata, as follows.

1. ValueProfile is reduced from 32 to 24. It reduces Metadata using ValueProfile.
2. ArrayProfile is reduced from 16 to 12. Ditto.
3. OpCall::Metadata is reduced from 88 to 64.
4. OpGetById::Metadata is reduced from 56 to 40.
5. OpToThis::Metadata is reduced from 48 to 32.
6. OpNewObject::Metadata is reduced from 32 to 16.

According to the gathered data, it should reduce 1-2MB in steady state in Gmail, much more in peak memory, ~1 MB in the state just after full GC.
It also improves RAMification by 0.3% (6 runs).

* bytecode/ArrayProfile.cpp:
* bytecode/ArrayProfile.h:
(JSC::ArrayProfile::ArrayProfile):
(JSC::ArrayProfile::bytecodeOffset const): Deleted.
(JSC::ArrayProfile::isValid const): Deleted.
* bytecode/BytecodeList.rb:
* bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFromLLInt):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finalizeLLIntInlineCaches):
(JSC::CodeBlock::getArrayProfile):
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness):
(JSC::CodeBlock::dumpValueProfiles):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::valueProfileForArgument):
* bytecode/CodeBlockInlines.h:
(JSC::CodeBlock::forEachValueProfile):
(JSC::CodeBlock::forEachArrayProfile):
* bytecode/GetByIdMetadata.h:
We use ProtoLoad's JSObject's high bits to embed hitCountForLLIntCaching and mode, since they
are always zero for ProtoLoad mode.

(): Deleted.
* bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFromLLInt):
* bytecode/LLIntCallLinkInfo.h:
(JSC::LLIntCallLinkInfo::isLinked const):
(JSC::LLIntCallLinkInfo::link):
(JSC::LLIntCallLinkInfo::unlink):
(JSC::LLIntCallLinkInfo::callee const):
(JSC::LLIntCallLinkInfo::lastSeenCallee const):
(JSC::LLIntCallLinkInfo::clearLastSeenCallee):
(JSC::LLIntCallLinkInfo::LLIntCallLinkInfo): Deleted.
(JSC::LLIntCallLinkInfo::isLinked): Deleted.
In LLIntCallLinkInfo, we always set the same value to lastSeenCallee and callee. But later, callee can be cleared.
It means that we can represent them in one value + cleared flag. We encode this flag into the lowest bit of the callee cell so
that we can make them one pointer. We also use PackedRawSentinelNode to get some space, and embed ArrayProfile into this space
to get further memory reduction.

* bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp:
(JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::clearLLIntGetByIdCache):
* bytecode/LazyOperandValueProfile.h:
(JSC::LazyOperandValueProfile::LazyOperandValueProfile):
(JSC::LazyOperandValueProfile::key const):
* bytecode/MetadataTable.h:
(JSC::MetadataTable::buffer):
* bytecode/ObjectAllocationProfile.h:
(JSC::ObjectAllocationProfileBase::offsetOfAllocator):
(JSC::ObjectAllocationProfileBase::offsetOfStructure):
(JSC::ObjectAllocationProfileBase::clear):
(JSC::ObjectAllocationProfileBase::visitAggregate):
(JSC::ObjectAllocationProfile::setPrototype):
(JSC::ObjectAllocationProfileWithPrototype::prototype):
(JSC::ObjectAllocationProfileWithPrototype::clear):
(JSC::ObjectAllocationProfileWithPrototype::visitAggregate):
(JSC::ObjectAllocationProfileWithPrototype::setPrototype):
(JSC::ObjectAllocationProfile::offsetOfAllocator): Deleted.
(JSC::ObjectAllocationProfile::offsetOfStructure): Deleted.
(JSC::ObjectAllocationProfile::offsetOfInlineCapacity): Deleted.
(JSC::ObjectAllocationProfile::ObjectAllocationProfile): Deleted.
(JSC::ObjectAllocationProfile::isNull): Deleted.
(JSC::ObjectAllocationProfile::structure): Deleted.
(JSC::ObjectAllocationProfile::prototype): Deleted.
(JSC::ObjectAllocationProfile::inlineCapacity): Deleted.
(JSC::ObjectAllocationProfile::clear): Deleted.
(JSC::ObjectAllocationProfile::visitAggregate): Deleted.
* bytecode/ObjectAllocationProfileInlines.h:
(JSC::ObjectAllocationProfileBase<Derived>::initializeProfile):
(JSC::ObjectAllocationProfileBase<Derived>::possibleDefaultPropertyCount):
(JSC::ObjectAllocationProfile::initializeProfile): Deleted.
(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount): Deleted.
OpNewObject's ObjectAllocationProfile does not need to hold prototype. So we have two versions now, ObjectAllocationProfile and ObjectAllocationProfileWithPrototype
to cut one pointer. We also remove inline capacity since this can be retrieved from Structure.

* bytecode/Opcode.h:
* bytecode/ValueProfile.h:
(JSC::ValueProfileBase::ValueProfileBase):
(JSC::ValueProfileBase::totalNumberOfSamples const):
(JSC::ValueProfileBase::isSampledBefore const):
(JSC::ValueProfileBase::dump):
(JSC::ValueProfileBase::computeUpdatedPrediction):
(JSC::MinimalValueProfile::MinimalValueProfile):
(JSC::ValueProfileWithLogNumberOfBuckets::ValueProfileWithLogNumberOfBuckets):
(JSC::ValueProfile::ValueProfile):
(JSC::getValueProfileBytecodeOffset): Deleted.
Bytecode offset is no longer used. And sample count is not used effectively.

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGOperations.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileCreateThis):
* ftl/FTLAbstractHeapRepository.h:
* jit/JITCall.cpp:
(JSC::JIT::compileSetupFrame):
* jit/JITCall32_64.cpp:
(JSC::JIT::compileSetupFrame):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_create_this):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emit_op_to_this):
* jit/JITOperations.cpp:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_by_id):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::setupGetByIdPrototypeCache):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setUpCall):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/FunctionRareData.h:
* tools/HeapVerifier.cpp:
(JSC::HeapVerifier::validateJSCell):

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

4 months agoWeb Inspector: provide a debug setting button to reset all settings for easier testin...
drousso@apple.com [Wed, 22 May 2019 23:12:07 +0000 (23:12 +0000)]
Web Inspector: provide a debug setting button to reset all settings for easier testing/presentation
https://bugs.webkit.org/show_bug.cgi?id=195777

Reviewed by Joseph Pecoraro.

* UserInterface/Base/Setting.js:
(WI.Setting.reset): Added.

* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createDebugSettingsView):

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

4 months agoFix scrolling tree state for more obscure combinations of positioning and paint order
simon.fraser@apple.com [Wed, 22 May 2019 22:58:25 +0000 (22:58 +0000)]
Fix scrolling tree state for more obscure combinations of positioning and paint order
https://bugs.webkit.org/show_bug.cgi?id=198139

Reviewed by Antti Koivisto.

Source/WebCore:

There were three places in RenderLayerCompositor that used a version of ancestor
layer traversal looking at containing blocks, and all three had issues. So make a
shared function to do the ancestor walk, and use it thrice.

isScrolledByOverflowScrollLayer() fumbled containingBlockCanSkipLayers, so failed
to create a scrolling tree node for a composited layer inside position:fixed in
overflow (tested by composited-in-absolute-in-overflow.html).

collectStationaryLayerRelatedOverflowNodes() failed to handle nested
overflow:scroll; it needs to find all the composited scrollers that affect the
position of the given layer relative to its compositing ancestor, which may be the
scroller, or a descendant of the scroller. However, it didn't walk up far enough
and find more that one ancestor. Tested by absolute-in-nested-sc-scrollers.html.

enclosingClippingScopes() was OK but now uses the share function.

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

* rendering/RenderLayerCompositor.cpp:
(WebCore::traverseAncestorLayers):
(WebCore::enclosingClippingScopes):
(WebCore::isScrolledByOverflowScrollLayer):
(WebCore::collectStationaryLayerRelatedOverflowNodes):
(WebCore::collectRelatedCoordinatedScrollingNodes):

LayoutTests:

* platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt: Added.
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html: Added.
* scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html: Added.

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

4 months ago[ESNext] Implement support for Numeric Separators
ross.kirsling@sony.com [Wed, 22 May 2019 22:43:25 +0000 (22:43 +0000)]
[ESNext] Implement support for Numeric Separators
https://bugs.webkit.org/show_bug.cgi?id=196351

Reviewed by Keith Miller.

JSTests:

* stress/numeric-literal-separators.js: Added.
Add tests for feature.

* test262/expectations.yaml:
Mark 60 test cases as passing.

Source/JavaScriptCore:

Implement the following proposal, which is now Stage 3:
  https://github.com/tc39/proposal-numeric-separator

Specifically, this allows `_` to be used as a separator in numeric literals.
It may be inserted arbitrarily without semantic effect, but it may not occur:
  - multiple times in a row
  - at the beginning or end of the literal
  - adjacent to `0x`, `0b`, `0o`, `.`, `e`, or `n`
  - after a leading zero (e.g. `0_123`), even in sloppy mode

* parser/Lexer.cpp:
(JSC::isASCIIDigitOrSeparator): Added.
(JSC::isASCIIHexDigitOrSeparator): Added.
(JSC::isASCIIBinaryDigitOrSeparator): Added.
(JSC::isASCIIOctalDigitOrSeparator): Added.
(JSC::Lexer<T>::parseHex):
(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):
(JSC::Lexer<T>::parseNumberAfterDecimalPoint):
(JSC::Lexer<T>::parseNumberAfterExponentIndicator):
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):
* parser/Lexer.h:

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

4 months agoCrash in WebFrame::jsContext() when m_coreFrame is null
rniwa@webkit.org [Wed, 22 May 2019 22:32:06 +0000 (22:32 +0000)]
Crash in WebFrame::jsContext() when m_coreFrame is null
https://bugs.webkit.org/show_bug.cgi?id=198067

Reviewed by Alex Christensen.

Added missing null checks. Unfortunately no new tests since we don't have a reproducible test case.

* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::jsContext):
(WebKit::WebFrame::jsContextForWorld):

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

4 months agoJSTests:
tzagallo@apple.com [Wed, 22 May 2019 22:19:38 +0000 (22:19 +0000)]
JSTests:
llint_slow_path_get_by_id needs to hold the CodeBlock's to update the metadata's mode
https://bugs.webkit.org/show_bug.cgi?id=198120
<rdar://problem/49668795>

Reviewed by Michael Saboff.

* stress/get-array-length-concurrently-change-mode.js: Added.
(main):

Source/JavaScriptCore:
llint_slow_path_get_by_id needs to hold the CodeBlock's lock to update the metadata's mode
https://bugs.webkit.org/show_bug.cgi?id=198120
<rdar://problem/49668795>

Reviewed by Michael Saboff.

There are two places in llint_slow_path_get_by_id where we change the
metadata's mode without holding the CodeBlock's lock. This is an issue
when switching to and from ArrayLength mode, since other places can
either get a pointer to an array profile that will be overwritten or
an array profile that hasn't yet been initialized.

* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

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

4 months agoInner scroller of nested overflow:scrolls jitters when scrolling
simon.fraser@apple.com [Wed, 22 May 2019 22:08:25 +0000 (22:08 +0000)]
Inner scroller of nested overflow:scrolls jitters when scrolling
https://bugs.webkit.org/show_bug.cgi?id=198131

Reviewed by Antti Koivisto.

Source/WebCore:

enclosingCompositedScrollingLayer(layer) would return the layer itself, rather than
its scrolling ancestor, which meant that a composited scroller nested inside another
scroller would fail to get a "Moves" scrolling tree node, and therefore jitter
when scrolling.

Test: scrollingcoordinator/scrolling-tree/nested-overflow-scroll.html

* rendering/RenderLayerCompositor.cpp:
(WebCore::enclosingCompositedScrollingLayer):

LayoutTests:

* fast/scrolling/ios/overflow-scroll-overlap-6-expected.txt: Progression
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-overflow-scroll-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/nested-overflow-scroll-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/nested-overflow-scroll.html: Added.

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

4 months agoAPI Test landed in r245540 [Mac WK2] TestWebKitAPI.WKWebView.LocalStorageProcessCrash...
sihui_liu@apple.com [Wed, 22 May 2019 22:03:50 +0000 (22:03 +0000)]
API Test landed in r245540 [Mac WK2] TestWebKitAPI.WKWebView.LocalStorageProcessCrashes is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=198090
<rdar://problem/51003644>

Reviewed by Youenn Fablet.

Source/WebKit:

We used to dispatch StorageManager message to StorageManager's work queue, which required message handler to be
added to queue before receiving first StorageManager message, otherwise network process would not know how to
decode the message.

After r245540, when netork process crashes and dom storage is accessed from web process after that, web process
re-establishes its connection to network process, asks network process to add message handler, and then sends
StorageManager message immediately. Because work queue message receiver is added on a background thread in
network process, it is possible the StorageManager message is received before that.

A safe and easy resolution is to not dispatch StorageManager message to work queue, so that we don't need to
wait for the message receiver to be added. Handling message on the main thread also allows us to untying the
knot that binds StorageManager and connection, which may be a preferred design in the future.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::webPageWasAdded):
* NetworkProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::processDidCloseConnection):
(WebKit::StorageManager::createLocalStorageMap):
(WebKit::StorageManager::createTransientLocalStorageMap):
(WebKit::StorageManager::createSessionStorageMap):
(WebKit::StorageManager::destroyStorageMap):
(WebKit::didGetValues):
(WebKit::StorageManager::getValues):
(WebKit::StorageManager::setItem):
(WebKit::StorageManager::setItems):
(WebKit::StorageManager::removeItem):
(WebKit::StorageManager::clear):
(WebKit::StorageManager::processWillOpenConnection): Deleted.
(WebKit::StorageManager::dispatchMessageToQueue): Deleted.
(WebKit::StorageManager::dispatchSyncMessageToQueue): Deleted.
* NetworkProcess/WebStorage/StorageManager.h:

Tools:

WebView was wrongly loaded multiple times.

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

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

4 months agoUnreviewed, rolling out r245634.
commit-queue@webkit.org [Wed, 22 May 2019 21:52:58 +0000 (21:52 +0000)]
Unreviewed, rolling out r245634.
https://bugs.webkit.org/show_bug.cgi?id=198140

'This patch makes JSC crash on launch in debug builds'
(Requested by tadeuzagallo on #webkit).

Reverted changeset:

"[ESNext] Implement support for Numeric Separators"
https://bugs.webkit.org/show_bug.cgi?id=196351
https://trac.webkit.org/changeset/245634

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

4 months agoUnreviewed, rolling out r245598.
ryanhaddad@apple.com [Wed, 22 May 2019 21:39:11 +0000 (21:39 +0000)]
Unreviewed, rolling out r245598.

Breaks watchOS build.

Reverted changeset:

"font-optical-sizing applies the wrong variation value"
https://bugs.webkit.org/show_bug.cgi?id=197528
https://trac.webkit.org/changeset/245598

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

4 months agoFix validateExceptionChecks for CLoop
tzagallo@apple.com [Wed, 22 May 2019 21:03:20 +0000 (21:03 +0000)]
Fix validateExceptionChecks for CLoop
https://bugs.webkit.org/show_bug.cgi?id=191253

Reviewed by Keith Miller.

validateExceptionChecks relies on the stack position to determine if
an ExceptionScope was going to be handled by LLInt or JIT, but when
running with CLoop, it was comparing VM::topEntryFrame, which was an
address inside the CLoopStack to machine stack. This caused exceptions
to never be checked on x86 and always fail on ARM.

* runtime/CatchScope.h:
* runtime/ExceptionScope.h:
* runtime/ThrowScope.h:
* runtime/VM.cpp:
(JSC::VM::currentCLoopStackPointer const):
* runtime/VM.h:

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

4 months agoStack-buffer-overflow in decodeURIComponent
tzagallo@apple.com [Wed, 22 May 2019 21:01:40 +0000 (21:01 +0000)]
Stack-buffer-overflow in decodeURIComponent
https://bugs.webkit.org/show_bug.cgi?id=198109
<rdar://problem/50397550>

Reviewed by Michael Saboff.

JSTests:

* stress/decode-uri-icu-count-trail-bytes.js: Added.
(i.j.try.i.toString):
(i.j.catch):

Source/JavaScriptCore:

Since r244828 we started using U8_MAX_LENGTH to determine the size of the buffer and
U8_COUNT_TRAIL_BYTES when decoding UTF-8 sequences in JSC::decode. However, U8_MAX_LENGTH
is defined as 4 and in pre-60 ICU U8_COUNT_TRAIL_BYTES returns 0..5.

* runtime/JSGlobalObjectFunctions.cpp:
(JSC::decode):

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

4 months agoWebKit does not generate an ESC key event for CMD+.
commit-queue@webkit.org [Wed, 22 May 2019 20:58:32 +0000 (20:58 +0000)]
WebKit does not generate an ESC key event for CMD+.
https://bugs.webkit.org/show_bug.cgi?id=198137
<rdar://problem/51038641>

Patch by Daniel Bates <dabates@apple.com> on 2019-05-22
Reviewed by Brent Fulgham.

This patch maps the Command + '.' keystroke to the 'Escape'. This also requires a change to UIKit to properly pass
the key state to WebKit (see <rdar://problem/46431552>).

* platform/ios/WebEvent.mm:
(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):

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

4 months agoDon't clear PropertyNameArray in Proxy code
ysuzuki@apple.com [Wed, 22 May 2019 20:34:55 +0000 (20:34 +0000)]
Don't clear PropertyNameArray in Proxy code
https://bugs.webkit.org/show_bug.cgi?id=197691

Reviewed by Saam Barati.

JSTests:

* stress/proxy-get-own-property-names-should-not-clear-previous-results.js: Added.
(shouldBe):
(opt):

Source/JavaScriptCore:

ProxyObject::performGetOwnPropertyNames clears the given PropertyNameArray to filter out non-enumerable keys.
But this does not assume that PropertyNameArray already contains the keys collected in the different objects.
We have an assumption that PropertyNameArray is always increasing, and JSPropertyNameEnumerator relies on this.
Since ProxyObject::performGetOwnPropertyNames clears the passed PropertyNameArray which contained the other
keys collected at some point of prototype hierarchy, this breaks JSPropertyNameEnumerator. Let's see the example.

var object = { __proto__: someProxy, someKey: 42 };
// Here, we first collect "someKey" in object. And using the same PropertyNameArray to add more keys from __proto__.
// But Proxy accidentally clears the passed PropertyNameArray, so "someKey" becomes missing.
for (var key in object);

This patch fixes ProxyObject::performGetOwnPropertyNames. Using separate PropertyNameArray to collect keys, and
filtering and adding them to the passed PropertyNameArray later. We also remove PropertyNameArray::reset method
since this breaks JSPropertyNameEnumerator's assumption.

We also fix the issue by changing seenKeys' HashSet<UniquedStringImpl*> to HashSet<RefPtr<UniquedStringImpl>>.
They can be deallocated if it is not added to trapResult later and it is toString-ed result from 'toPropertyKey()'.

* runtime/PropertyNameArray.h:
(JSC::PropertyNameArray::reset): Deleted.
* runtime/ProxyObject.cpp:
(JSC::ProxyObject::performGetOwnPropertyNames):

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

4 months agoIntersection Observer: bounding client rect is wrong for an inline element
ajuma@chromium.org [Wed, 22 May 2019 20:22:44 +0000 (20:22 +0000)]
Intersection Observer: bounding client rect is wrong for an inline element
https://bugs.webkit.org/show_bug.cgi?id=198009

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Import test added upstream in
https://github.com/web-platform-tests/wpt/commit/cf40205c68f739ae23429439de13d125e3df9f7a

* web-platform-tests/intersection-observer/inline-with-block-child-client-rect-expected.txt: Added.
* web-platform-tests/intersection-observer/inline-with-block-child-client-rect.html: Added.

Source/WebCore:

Make target rect computation for inline elements share logic with the computation
of bounding client rects.

Test: imported/w3c/web-platform-tests/intersection-observer/inline-with-block-child-client-rect.html

* dom/Document.cpp:
(WebCore::computeIntersectionState):
* dom/Element.cpp:
(WebCore::Element::boundingAbsoluteRectWithoutLayout):
(WebCore::Element::boundingClientRect):
* dom/Element.h:

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

4 months ago[iOS] Compatibility mouse events aren't prevented by calling preventDefault() on...
graouts@webkit.org [Wed, 22 May 2019 19:58:15 +0000 (19:58 +0000)]
[iOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown
https://bugs.webkit.org/show_bug.cgi?id=198124
<rdar://problem/50410863>

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

We add basic support to run a test that wasn't specifically designed for a touch-based interaction such that the test
at imported/w3c/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html may run on iOS. The
trick here is to add a pause after a touch ends to avoid the likelihood or two tap gestures triggering a double tap.

* web-platform-tests/resources/testdriver-vendor.js:

Source/WebCore:

This fix builds atop the one made for wkb.ug/198072 which fixes this bug on macOS alone.

In order to correctly prevent "compatibility" mouse events from being dispatched when the initial "pointerdown" event had preventDefault()
called while handled, we need to pass the PointerID for the touch that triggered a tap gesture in the UI process down in the Web process
and into the resulting PlatformMouseEvent. This will allow upon dispatch of a PlatformMouseEvent to call into PointerCaptureController
to identify if the dispatch of mouse events is allowed for the event's PointerID.

To support this, some refactoring was required. The PointerID header is now under platform/ such that PlatformMouseEvent may safely use it.
Additionally, PointerEvent::defaultMousePointerIdentifier() is now a global mousePointerID defined in PointerID.h.

Finally, PointerCaptureController::touchEndedOrWasCancelledForIdentifier() has been renamed to PointerCaptureController::touchWithIdentifierWasRemoved() and
has WEBCORE_EXPORT such that it may be called from WebKit as the indication that a pointer is no longer active will now be initiated in WebKit
on the UI process side.

Testing is covered by the pre-existing imported/w3c/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html
which will now run on iOS through a change to WebKitAdditions.

* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* dom/Element.cpp:
(WebCore::Element::dispatchMouseEvent): When dealing with a mouse event on iOS, check whether the mouse event's PointerID allows for compatibility
mouse events to be dispatched using PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier(). The "click" event is not a compatibility
mouse event.
* dom/PointerEvent.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::PointerCaptureController):
(WebCore::PointerCaptureController::touchWithIdentifierWasRemoved):
(WebCore::PointerCaptureController::touchEndedOrWasCancelledForIdentifier): Deleted.
* page/PointerCaptureController.h:
* platform/PlatformMouseEvent.h:
(WebCore::PlatformMouseEvent::PlatformMouseEvent):
(WebCore::PlatformMouseEvent::pointerId const):
* platform/PointerID.h: Renamed from Source/WebCore/dom/PointerID.h.
(WebCore::mousePointerID):

Source/WebKit:

In order to correctly prevent "compatibility" mouse events from being dispatched when the initial "pointerdown" event had preventDefault()
called while handled, we need to pass the PointerID for the touch that triggered a tap gesture in the UI process down in the Web process
and into the resulting PlatformMouseEvent.

This means we need to identify the touch identifier, which is the same as the PointerID used for Pointer Events, in the single tap gesture
recognizer, an instance of WKSyntheticTapGestureRecognizer. To do this, we subclass the -[UIResponder touchesEnded:withEvent:] method and
track the touch identifier as the lastActiveTouchIdentifier, a new public property of WKSyntheticTapGestureRecognizer. To allow for this,
we need the support of the content view's UIWebTouchEventsGestureRecognizer which is exposed to the WKSyntheticTapGestureRecognizer as its
supportingWebTouchEventsGestureRecognizer property. This lastActiveTouchIdentifier property is cleared as the gesture recognizer is reset.

This allows the content view to pass the PointerID down to the Web process starting from -[WKContentView _singleTapRecognized:], going
through WebPageProxy::commitPotentialTap() and eventually WebPage::completeSyntheticClick().

While we used to tell the PointerCaptureController that a PointerID was no longer active when a given touch ended or was canceled (in
WebKitAdditions code), we can no longer do this as the dispatch of a synthetic tap is performed asynchronously and will happen past the
dispatch of "pointerup" and "pointercancel" Pointer Events. To clear inactive PointerIDs from the PointerCaptureController, we add a new
touchWithIdentifierWasRemoved() method on the WebPage and its proxy. When the WKSyntheticTapGestureRecognizer resets and -[WKContentView _singleTapDidReset:]
is called, we call that method which allows for only active PointerIDs to be tracked by the PointerCaptureController.

* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _singleTapDidReset:]):
(-[WKContentView _singleTapRecognized:]):
* UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
* UIProcess/ios/WKSyntheticTapGestureRecognizer.m:
(-[WKSyntheticTapGestureRecognizer reset]):
(-[WKSyntheticTapGestureRecognizer touchesEnded:withEvent:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::touchWithIdentifierWasRemoved):
(WebKit::WebPageProxy::commitPotentialTap):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::dispatchSyntheticMouseMove):
(WebKit::WebPage::handleSyntheticClick):
(WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):
(WebKit::WebPage::completeSyntheticClick):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::touchWithIdentifierWasRemoved):

LayoutTests:

We're adding an iOS-specific expectation since this test prints out the pointer type detected while it runs, which is "touch"
on iOS and "mouse" in the expectation that already exists for macOS.

* platform/ios/imported/w3c/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click-expected.txt: Added.

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

4 months ago[WebAuthN] Support Attestation Conveyance Preference
jiewen_tan@apple.com [Wed, 22 May 2019 19:27:49 +0000 (19:27 +0000)]
[WebAuthN] Support Attestation Conveyance Preference
https://bugs.webkit.org/show_bug.cgi?id=192722
<rdar://problem/49939647>

Reviewed by Brent Fulgham.

Source/WebCore:

This patch implements https://www.w3.org/TR/webauthn/#enumdef-attestationconveyancepreference, together with
Step 20 with regard to AttestationConveyancePreference of https://www.w3.org/TR/webauthn/#createCredential.
Few notes with regard to Step 20: 1) We treat indirect attestation as direct attestation as we don't MITM
the attestation process; 2) We won't distinguish self attestation and return it to keep consistency between
the response and the request. If callers want none attestation, they will very likely ignore fmt and attStmt
of the attestation object, and therefore it is meaningless to return self attestation.

Covered by new tests within existing files.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Headers.cmake:
* Modules/webauthn/AttestationConveyancePreference.h: Copied from Source/WebCore/Modules/webauthn/WebAuthenticationUtils.h.
* Modules/webauthn/AttestationConveyancePreference.idl: Copied from Source/WebCore/Modules/webauthn/WebAuthenticationUtils.h.
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
(WebCore::PublicKeyCredentialCreationOptions::encode const):
(WebCore::PublicKeyCredentialCreationOptions::decode):
* Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
* Modules/webauthn/WebAuthenticationConstants.h:
* Modules/webauthn/WebAuthenticationUtils.cpp:
(WebCore::buildAttestationObject):
* Modules/webauthn/WebAuthenticationUtils.h:
* Modules/webauthn/fido/DeviceResponseConverter.cpp:
(fido::readCTAPMakeCredentialResponse):
* Modules/webauthn/fido/DeviceResponseConverter.h:
* Modules/webauthn/fido/FidoConstants.h:
noneAttestationValue is moved to WebAuthenticationConstants.h.
* Modules/webauthn/fido/U2fResponseConverter.cpp:
(fido::readU2fRegisterResponse):
* Modules/webauthn/fido/U2fResponseConverter.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
* UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
(WebKit::CtapHidAuthenticator::continueMakeCredentialAfterResponseReceived const):
* UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp:
(WebKit::U2fHidAuthenticator::continueRegisterCommandAfterResponseReceived):

Tools:

* TestWebKitAPI/Tests/WebCore/CtapRequestTest.cpp:
(TestWebKitAPI::TEST):
Updates the test with AttestationConveyancePreference.

LayoutTests:

* http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
* http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
* http/wpt/webauthn/public-key-credential-create-success-local.https-expected.txt:
* http/wpt/webauthn/public-key-credential-create-success-local.https.html:
* http/wpt/webauthn/public-key-credential-create-success-u2f.https-expected.txt:
* http/wpt/webauthn/public-key-credential-create-success-u2f.https.html:

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

4 months ago[Paste] Add support for preferred presentation size when pasting an image
zalan@apple.com [Wed, 22 May 2019 19:13:34 +0000 (19:13 +0000)]
[Paste] Add support for preferred presentation size when pasting an image
https://bugs.webkit.org/show_bug.cgi?id=198132
<rdar://problem/50886917>

Reviewed by Wenson Hsieh.

Source/WebCore:

Set the pasted <img> width/height attributes when the preferred presentation size is available.

* editing/WebContentReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::createFragmentForImageAttachment):
(WebCore::WebContentReader::readImage):
* editing/markup.cpp:
(WebCore::createFragmentForImageAndURL):
* editing/markup.h:
* platform/Pasteboard.h:
(WebCore::PasteboardWebContentReader::readImage):
* platform/PasteboardItemInfo.h:
(WebCore::PasteboardItemInfo::encode const):
(WebCore::PasteboardItemInfo::decode):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::informationForItemAtIndex):

Source/WebKit:

* UIProcess/API/Cocoa/_WKElementAction.mm:
(addToReadingList):
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
(-[WKActionSheetAssistant defaultActionsForImageSheet:]):

Tools:

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

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

4 months agoHide MediaCapabilities.encodingInfo() when the platform does not support it.
jer.noble@apple.com [Wed, 22 May 2019 19:10:05 +0000 (19:10 +0000)]
Hide MediaCapabilities.encodingInfo() when the platform does not support it.
https://bugs.webkit.org/show_bug.cgi?id=197476

Reviewed by Eric Carlson.

Source/WebCore:

Test: platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html

Add a new IDL attribute, CustomEnabled, which allows non Settings-based enabling of attributes and objects.

* Modules/mediacapabilities/MediaCapabilities.idl:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSMediaCapabilitiesCustom.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl.
(WebCore::JSMediaCapabilitiesEncodingInfoIsEnabled):
* bindings/scripts/CodeGeneratorJS.pm:
(NeedsRuntimeCheck):
(GenerateRuntimeEnableConditionalString):
* bindings/scripts/IDLAttributes.json:
* bindings/scripts/preprocess-idls.pl:
(GenerateConstructorAttributes):
* platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
(WebCore::MediaEngineConfigurationFactory::hasDecodingConfigurationFactory):
(WebCore::MediaEngineConfigurationFactory::hasEncodingConfigurationFactory):
* platform/mediacapabilities/MediaEngineConfigurationFactory.h:

LayoutTests:

* platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Added.
* platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Added.
* platform/ios/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.
* platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Added.
* platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Added.
* platform/mac/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.

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

4 months agoUse a different variable when testing for Xcode context in generate-xcfilelists
krollin@apple.com [Wed, 22 May 2019 19:09:30 +0000 (19:09 +0000)]
Use a different variable when testing for Xcode context in generate-xcfilelists
https://bugs.webkit.org/show_bug.cgi?id=198130
<rdar://problem/51032752>

Reviewed by Jonathan Bedard.

The generate-xcfilelists script can run stand-alone or in the context
of Xcode. There are a couple of places where it helps to know which
context is current. To determine the context, genreate-xfilelists
checks an environment variable that should be defined only when Xcode
is running. The variable chosen was XCODE_INSTALL_PATH. It turns out
that this variable is not always defined. Therefore, switch to
checking XCODE_PRODUCT_BUILD_VERSION.

* Scripts/webkitpy/generate_xcfilelists_lib/util.py:
(subprocess_run):
(is_running_under_xcode):

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

4 months ago[ESNext] Implement support for Numeric Separators
ross.kirsling@sony.com [Wed, 22 May 2019 19:06:03 +0000 (19:06 +0000)]
[ESNext] Implement support for Numeric Separators
https://bugs.webkit.org/show_bug.cgi?id=196351

Reviewed by Keith Miller.

JSTests:

* stress/numeric-literal-separators.js: Added.
Add tests for feature.

* test262/expectations.yaml:
Mark 60 test cases as passing.

Source/JavaScriptCore:

Implement the following proposal, which is now Stage 3:
  https://github.com/tc39/proposal-numeric-separator

Specifically, this allows `_` to be used as a separator in numeric literals.
It may be inserted arbitrarily without semantic effect, but it may not occur:
  - multiple times in a row
  - at the beginning or end of the literal
  - adjacent to `0x`, `0b`, `0o`, `.`, `e`, or `n`
  - after a leading zero (e.g. `0_123`), even in sloppy mode

* parser/Lexer.cpp:
(JSC::isASCIIDigitOrSeparator): Added.
(JSC::isASCIIHexDigitOrSeparator): Added.
(JSC::isASCIIBinaryDigitOrSeparator): Added.
(JSC::isASCIIOctalDigitOrSeparator): Added.
(JSC::Lexer<T>::parseHex):
(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):
(JSC::Lexer<T>::parseNumberAfterDecimalPoint):
(JSC::Lexer<T>::parseNumberAfterExponentIndicator):
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):
* parser/Lexer.h:

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

4 months agoImplement Feature policy self/none/* parsing
youenn@apple.com [Wed, 22 May 2019 17:38:42 +0000 (17:38 +0000)]
Implement Feature policy self/none/* parsing
https://bugs.webkit.org/show_bug.cgi?id=198078

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/mediacapture-streams/MediaStream-feature-policy-none.https-expected.txt: Added.
* web-platform-tests/mediacapture-streams/MediaStream-feature-policy-none.https.html: Added.

Source/WebCore:

Start to implement https://w3c.github.io/webappsec-feature-policy/#algo-parse-policy-directive
'src' is not supported yet.
Apply the rules to getUserMedia.
Update getDisplayMedia keyword from 'display' to 'display-capture' as per spec.

Test: imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-feature-policy-none.https.html

* Headers.cmake:
* Modules/mediastream/UserMediaController.cpp:
(WebCore::isSecure):
(WebCore::isAllowedByFeaturePolicy):
(WebCore::isAllowedToUse):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/FeaturePolicy.cpp: Added.
(WebCore::isAllowedByFeaturePolicy):
(WebCore::processOriginItem):
(WebCore::updateList):
(WebCore::FeaturePolicy::parse):
(WebCore::FeaturePolicy::allows const):
* html/FeaturePolicy.h: Added.
* html/HTMLIFrameElement.cpp:
(WebCore::HTMLIFrameElement::featurePolicy const):
* html/HTMLIFrameElement.h:

Source/WebKit:

Fix a case where completion handler might not always be called.

* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted):

LayoutTests:

* http/tests/media/media-stream/get-display-media-iframe-allow-attribute-expected.txt:
* http/tests/media/media-stream/get-display-media-iframe-allow-attribute.html:

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

4 months ago[GTK] Unreviewed test gardening
aboya@igalia.com [Wed, 22 May 2019 17:25:25 +0000 (17:25 +0000)]
[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=198128

* TestExpectations:
* platform/gtk/TestExpectations:
* platform/gtk/fast/forms/input-align-expected.png:
* platform/gtk/fast/forms/input-align-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt:
* platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:
* platform/gtk/media/controls-after-reload-expected.txt:
* platform/gtk/printing/page-with-10mm-left-margin-expected.txt:
* platform/gtk/printing/page-with-zero-margin-expected.txt:
* platform/wpe/js/dom/dom-static-property-for-in-iteration-expected.txt:

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

4 months ago[JSC] ArrayBufferContents::tryAllocate signs the pointer with allocation size and...
ysuzuki@apple.com [Wed, 22 May 2019 17:21:19 +0000 (17:21 +0000)]
[JSC] ArrayBufferContents::tryAllocate signs the pointer with allocation size and authenticates it with sizeInBytes
https://bugs.webkit.org/show_bug.cgi?id=198101

Reviewed by Michael Saboff.

JSTests:

* stress/zero-sized-array-buffer-pointer-should-be-signed-with-zero.js: Added.
(shouldBe):

Source/JavaScriptCore:

When we allocate 0-length ArrayBuffer, we allocate 1 byte storage instead because we would like to ensure that
non-neutered ArrayBuffer always have non nullptr. While we allocate a 1 byte storage, this ArrayBuffer says
sizeInBytes = 0. However, we accidentally configure the vector pointer with this 1 byte size in the constructor.
In ARM64E device, we sign the vector pointer with modifier = 1 (1 byte size), and later we authenticate this
pointer with modifier = 0 (sizeInBytes), and fail to authenticate the pointer.

In this patch, we sign the pointer with sizeInBytes so that we correctly authenticate the 0 bytes vector pointer.

* runtime/ArrayBuffer.cpp:
(JSC::ArrayBufferContents::tryAllocate):

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

4 months agoLayout Test http/wpt/cache-storage/cache-put-stream.https.any.html is a flaky failure
youenn@apple.com [Wed, 22 May 2019 17:18:21 +0000 (17:18 +0000)]
Layout Test http/wpt/cache-storage/cache-put-stream.https.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=181107
<rdar://problem/36188028>

Unreviewed.

* platform/mac-wk2/TestExpectations:
Marking more tests as slow.

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

4 months agoUnreviewed fix for non-unified build after r245320.
ross.kirsling@sony.com [Wed, 22 May 2019 16:55:50 +0000 (16:55 +0000)]
Unreviewed fix for non-unified build after r245320.

* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::convertRectFromFrameClientToRootView):
(WebKit::convertPointFromFrameClientToRootView):
(WebKit::WebAutomationSessionProxy::computeElementLayout):

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

4 months agoLayout Test http/tests/security/showModalDialog-sync-cross-origin-page-load2.html...
pvollan@apple.com [Wed, 22 May 2019 14:23:31 +0000 (14:23 +0000)]
Layout Test http/tests/security/showModalDialog-sync-cross-origin-page-load2.html is failing
https://bugs.webkit.org/show_bug.cgi?id=198112

Unreviewed test gardening.

* platform/win/TestExpectations:

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

4 months agoUnreviewed. Fix WPE unit tests after r245565
carlosgc@webkit.org [Wed, 22 May 2019 10:41:11 +0000 (10:41 +0000)]
Unreviewed. Fix WPE unit tests after r245565

Backend creation is failing when the a11y bus is not running because atk produces warning messages. We should
not make warnings fatal during backend creation.

* TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp:
(testAutomationSessionRequestSession):
* TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:
(testWebViewGeolocationPermissionRequests):
* TestWebKitAPI/glib/WebKitGLib/TestMain.h:
(Test::createWebViewBackend):
(Test::addLogFatalFlag):
(Test::removeLogFatalFlag):

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

4 months agoUnreviewed. Fix GTK unit tests after r245565
carlosgc@webkit.org [Wed, 22 May 2019 08:37:30 +0000 (08:37 +0000)]
Unreviewed. Fix GTK unit tests after r245565

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseDispose): Null check accessible before calling webkitWebViewAccessibleSetWebView().

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

4 months agoPerf dashboard erroneously rejects a build request to build owned components when...
dewei_zhu@apple.com [Wed, 22 May 2019 06:15:58 +0000 (06:15 +0000)]
Perf dashboard erroneously rejects a build request to build owned components when there are no patches.
https://bugs.webkit.org/show_bug.cgi?id=197928

Reviewed by Ryosuke Niwa.

Fix a bug that build type build request that only builds owned components failed to pass sanity check when there
is no repository accepts patch in triggerable repository group.
Add a sanity check to throw an error when build request type is build but there is no repository group template.

* tools/js/buildbot-syncer.js:
(BuildbotSyncer.prototype._propertiesForBuildRequest): Changed sanity check the always requires repository accepts patch when there is a build to make it also works for build request only builds owned components.
(BuildbotSyncer._parseRepositoryGroup): Added check for repository group templates not null  when build requiest type is build.
* unit-tests/buildbot-syncer-tests.js: Added unit tests for this change.
* unit-tests/resources/mock-v3-models.js: Added mock date for unit tests.

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

4 months agoMedia controls don't show in WK2 video fullscreen sometimes
jer.noble@apple.com [Wed, 22 May 2019 05:37:17 +0000 (05:37 +0000)]
Media controls don't show in WK2 video fullscreen sometimes
https://bugs.webkit.org/show_bug.cgi?id=198094
<rdar://problem/50970661>

Reviewed by Tim Horton.

Ensure that the WebAVPlayerLayer never allows hit testing, as this keeps touches from reaching
AVKit's controls.

* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer init]):

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

4 months agoWHLSL: Add an AST dumper
sbarati@apple.com [Wed, 22 May 2019 03:18:03 +0000 (03:18 +0000)]
WHLSL: Add an AST dumper
https://bugs.webkit.org/show_bug.cgi?id=198059

Reviewed by Myles Maxfield.

This patch makes it so we can dump the WHLSL program's AST.
This will become useful when we're debugging passes that
transform the AST.

The dumper mostly prints in a style where the dump is almost
valid WHLSL code. E.g, this WHLSL program:
```
int foo(int arg) {
    return arg + 1;
}
```

gets dumped as:
```
int foo(int arg) {
   return operator+(arg, 1);
}
```

This patch also adds a way to dump between each pass, after
parsing, or at the end of all passes. Currently, this is controlled
by a static variable. I'll make these runtime configurable in a follow
up: https://bugs.webkit.org/show_bug.cgi?id=198097

No new tests because this is used for logging.

* Modules/webgpu/WHLSL/AST/WHLSLAST.h: Added.
* Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
(WebCore::WHLSL::AST::toString):
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
(WebCore::WHLSL::AST::BuiltInSemantic::toString const):
* Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:
(WebCore::WHLSL::AST::toString):
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
(WebCore::WHLSL::AST::ResourceSemantic::toString):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::toString): Deleted.
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp: Added.
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLASTDumper.h: Added.
(WebCore::WHLSL::ASTDumper::toString):
(WebCore::WHLSL::ASTDumper::Indent::Indent):
(WebCore::WHLSL::ASTDumper::bumpIndent):
(WebCore::WHLSL::toString):
(WebCore::WHLSL::dumpAST):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::dumpASTIfNeeded):
(WebCore::WHLSL::dumpASTAfterParsingIfNeeded):
(WebCore::WHLSL::dumpASTBetweenEachPassIfNeeded):
(WebCore::WHLSL::dumpASTAtEndIfNeeded):
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:

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

4 months agoWHLSL: Parsing negative int literals parses the positive value instead
sbarati@apple.com [Wed, 22 May 2019 03:05:35 +0000 (03:05 +0000)]
WHLSL: Parsing negative int literals parses the positive value instead
https://bugs.webkit.org/show_bug.cgi?id=198096

Reviewed by Dean Jackson.

I also made the code around < INT_MIN a bit easier to follow along with.

No new tests because we haven't imported WHLSL test suite yet.
Verified this works using the AST dumper.

* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::intLiteralToInt):

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

4 months ago[PlayStation] Don't call fcntl.
ross.kirsling@sony.com [Wed, 22 May 2019 00:54:40 +0000 (00:54 +0000)]
[PlayStation] Don't call fcntl.
https://bugs.webkit.org/show_bug.cgi?id=197961

Reviewed by Fujii Hironori.

Source/JavaScriptCore:

* inspector/remote/socket/posix/RemoteInspectorSocketPOSIX.cpp:
(Inspector::Socket::setup):
Use WTF::setCloseOnExec and WTF::setNonBlock.

Source/WebKit:

* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::open):
Use WTF::setNonBlock.

Source/WTF:

* wtf/PlatformGTK.cmake:
* wtf/PlatformJSCOnly.cmake:
* wtf/PlatformPlayStation.cmake:
* wtf/PlatformWPE.cmake:
* wtf/UniStdExtras.h:
* wtf/playstation/UniStdExtrasPlayStation.cpp: Added.
(WTF::setCloseOnExec):
(WTF::dupCloseOnExec):
(WTF::setNonBlock):
* wtf/unix/UniStdExtrasUnix.cpp: Renamed from Source/WTF/wtf/UniStdExtras.cpp.
(WTF::setNonBlock):
Move UniStdExtras to unix/, add a PlayStation version that doesn't use fcntl, add an abstraction for O_NONBLOCK.

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

4 months ago[ews-build] Use custom templates for Buildbot (follow-up fix)
aakash_jain@apple.com [Wed, 22 May 2019 00:43:37 +0000 (00:43 +0000)]
[ews-build] Use custom templates for Buildbot (follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=198076

Unreviewed minor follow-up fix.

* BuildSlaveSupport/ews-build/templates/build.jade:

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

4 months agoFix branch build.
achristensen@apple.com [Wed, 22 May 2019 00:38:26 +0000 (00:38 +0000)]
Fix branch build.
<rdar://problem/50625279>

* TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:
We need to explicitly include WebKit.h on the branch.

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

4 months ago[ews-build] Use custom templates for Buildbot
aakash_jain@apple.com [Wed, 22 May 2019 00:34:15 +0000 (00:34 +0000)]
[ews-build] Use custom templates for Buildbot
https://bugs.webkit.org/show_bug.cgi?id=198076

Rubber-stamped by Jonathan Bedard.

* BuildSlaveSupport/ews-build/master.cfg:
* BuildSlaveSupport/ews-build/templates: Added.
* BuildSlaveSupport/ews-build/templates/build.jade: Copied from https://github.com/buildbot/buildbot/blob/v1.7.0/www/base/src/app/builders/builds/build.tpl.jade

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

4 months agoLayer flashing and poor perf during scrolling of message list on gmail.com and hotmai...
simon.fraser@apple.com [Wed, 22 May 2019 00:12:49 +0000 (00:12 +0000)]
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes
https://bugs.webkit.org/show_bug.cgi?id=198091
<rdar://problem/49403082>

Reviewed by Antti Koivisto.
Source/WebCore:

When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary
for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure
that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller.
All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure
of the z-order and compositing trees).

Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is
a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test
against container N-1.

To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses
a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds
are computed unclipped. Between them, bounds are tested clipped.

Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of
composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always
root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside
composited overflow scroll (just like the old code).

When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous
container.

Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html
       compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html
       compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html
       compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html
       compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html

* rendering/LayerOverlapMap.cpp:
(WebCore::operator<<):
(WebCore::OverlapMapContainer::OverlapMapContainer):
(WebCore::OverlapMapContainer::ClippingScope::ClippingScope):
(WebCore::OverlapMapContainer::ClippingScope::childWithLayer const):
(WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds):
(WebCore::OverlapMapContainer::ClippingScope::addChild):
(WebCore::OverlapMapContainer::ClippingScope::appendRect):
(WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive):
(WebCore::OverlapMapContainer::scopeContainingLayer const):
(WebCore::OverlapMapContainer::rootScope const):
(WebCore::OverlapMapContainer::rootScope):
(WebCore::OverlapMapContainer::add):
(WebCore::OverlapMapContainer::overlapsLayers const):
(WebCore::OverlapMapContainer::mergeClippingScopesRecursive):
(WebCore::OverlapMapContainer::append):
(WebCore::OverlapMapContainer::ensureClippingScopeForLayers):
(WebCore::OverlapMapContainer::findClippingScopeForLayers const):
(WebCore::OverlapMapContainer::recursiveOutputToStream const):
(WebCore::OverlapMapContainer::dump const):
(WebCore::LayerOverlapMap::LayerOverlapMap):
(WebCore::LayerOverlapMap::add):
(WebCore::LayerOverlapMap::overlapsLayers const):
(WebCore::LayerOverlapMap::pushCompositingContainer):
(WebCore::LayerOverlapMap::popCompositingContainer):
(WebCore::OverlapMapContainer::unite): Deleted.
(WebCore::OverlapMapContainer::rectList const): Deleted.
* rendering/LayerOverlapMap.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer):
(WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal):
(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
(WebCore::RenderLayerCompositor::computeExtent const):
(WebCore::createsClippingScope):
(WebCore::enclosingClippingScopes):
(WebCore::RenderLayerCompositor::addToOverlapMap const):
(WebCore::RenderLayerCompositor::updateOverlapMap const):
(WebCore::RenderLayerCompositor::layerOverlaps const):
* rendering/RenderLayerCompositor.h:

Source/WebCore/../../LayoutTests:

* TestExpectations:
* compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added.
* compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added.
* compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added.
* compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added.
* compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added.
* compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added.
* compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added.
* compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added.
* compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added.
* compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added.
* platform/ios-wk2/TestExpectations:
* platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added.
* platform/mac-wk2/TestExpectations:

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

4 months ago[PSON] Assertion hit when navigating back after a process swap forced by the client
cdumez@apple.com [Tue, 21 May 2019 23:44:16 +0000 (23:44 +0000)]
[PSON] Assertion hit when navigating back after a process swap forced by the client
https://bugs.webkit.org/show_bug.cgi?id=198006

Reviewed by Alex Christensen.

Source/WebKit:

After r245198, we construct a SuspendedPageProxy when a process-swap is forced by the client
and we delay to closing of the WebPage in the old WebProcess until it is safe to do so without
flashing (by calling SuspendedPageProxy::closeWithoutFlashing()). The issue is that our logic
deciding if we should reuse a SuspendedPageProxy's WebPage relied on the SuspendedPageProxy's
m_suspensionState not being set to FailedToSuspend. In the case of a process-swap forced by the
client with delayed page closing, the suspended state may be suspended but is still not usable
because it is about to get closed. We would wrongly believe there is a WebPage to be reused so
the ProvisionalPageProxy would construct a proxy for the main frame in its constructor, we would
then hit the ASSERT(!m_mainFrame) assertion in ProvisionalPageProxy::didCreateMainFrame() when
the WebContent process would unexpectedly create a main frame.

To address the issue, stop relying on the suspended state to determine if we can reuse a WebPage
or not and introduce a new pageIsClosedOrClosing() getter on the SuspendedPageProxy instead
which indicates if the WebPage in the WebContent process has been closed or is about to be.

* UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
* UIProcess/SuspendedPageProxy.cpp:
(WebKit::SuspendedPageProxy::pageEnteredAcceleratedCompositingMode):
(WebKit::SuspendedPageProxy::pageIsClosedOrClosing const):
(WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
* UIProcess/SuspendedPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedNavigationPolicyDecision):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

4 months ago[PlayStation] Update initializer for changed port options
stephan.szabo@sony.com [Tue, 21 May 2019 23:42:42 +0000 (23:42 +0000)]
[PlayStation] Update initializer for changed port options
https://bugs.webkit.org/show_bug.cgi?id=198057

Reviewed by Ross Kirsling.

* shell/playstation/Initializer.cpp:
(initializer): Remove loading of shared JavaScriptCore
library.

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

4 months agoSandbox violation is making the WebContent process crash
pvollan@apple.com [Tue, 21 May 2019 23:30:48 +0000 (23:30 +0000)]
Sandbox violation is making the WebContent process crash
https://bugs.webkit.org/show_bug.cgi?id=198089
<rdar://problem/50999499>

Reviewed by Brent Fulgham.

A new syscall rule needs to be added to the sandbox on iOS and macOS.

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

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

4 months agofont-optical-sizing applies the wrong variation value
mmaxfield@apple.com [Tue, 21 May 2019 23:20:49 +0000 (23:20 +0000)]
font-optical-sizing applies the wrong variation value
https://bugs.webkit.org/show_bug.cgi?id=197528
<rdar://problem/50152854>

Reviewed by Antti Koivisto.

Source/WebCore:

The OpenType spec says in
https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_opsz

"Scale interpretation: Values can be interpreted as text size, in points."

It turns out that it means "typographic point size" which is equal to CSS pixels, not
CSS points.

There are two parts of the font that are sensitive to optical sizing: variation values and
the trak table. We don't want to set the variation value directly because then the trak table
won't be affected. Instead, we can use kCTFontOpticalSizeAttribute to set both of them together.
We will only do this when the CSS says text-rendering:optimizeLegibility or when the font has
an opsz axis but no STAT table. Otherwise, we won't do anything special, which lets CoreText
handle the default behavior for us. This gives us the same default behavior as the rest of the
system.

Tests: fast/text/variations/optical-sizing-trak-2.html
       fast/text/variations/optical-sizing-trak.html
       fast/text/variations/optical-sizing-units.html
       fast/text/variations/optical-sizing-units-2.html

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontType::FontType):
(WebCore::preparePlatformFont):
(WebCore::fontWithFamily):
(WebCore::FontCache::systemFallbackForCharacters):
* platform/graphics/cocoa/FontCacheCoreText.h:
* platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
(WebCore::FontFamilySpecificationCoreText::fontRanges const):
* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::FontCustomPlatformData::fontPlatformData):

LayoutTests:

* fast/text/variations/optical-sizing-trak-2-expected-mismatch.html: Added.
* fast/text/variations/optical-sizing-trak-2.html: Added.
* fast/text/variations/optical-sizing-trak-expected.html: Added.
* fast/text/variations/optical-sizing-trak.html: Added.
* fast/text/variations/optical-sizing-units-2-expected-mismatch.html: Added.
* fast/text/variations/optical-sizing-units-2.html: Added.
* fast/text/variations/optical-sizing-units-expected.html: Added.
* fast/text/variations/optical-sizing-units.html: Added.
* fast/text/variations/resources/Amstelvar/Amstelvar-Roman-VF104.ttf: Added.
This font havariations/s been approved by the lawyers to add for layout tests.
* fast/text/variations/resources/Amstelvar/COPYRIGHT.md: Added.
* fast/text/variations/resources/Amstelvar/OFL.txt: Added.

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

4 months agoMark WKUIDelegate webView:shouldPreviewElement: and webView:previewingViewControllerF...
commit-queue@webkit.org [Tue, 21 May 2019 22:02:53 +0000 (22:02 +0000)]
Mark WKUIDelegate webView:shouldPreviewElement: and webView:previewingViewControllerForElement:defaultActions: as deprecated
https://bugs.webkit.org/show_bug.cgi?id=198083
<rdar://problem/50735687>

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

* UIProcess/API/Cocoa/WKUIDelegate.h:

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

4 months agoFix IOSMAC build
commit-queue@webkit.org [Tue, 21 May 2019 22:01:16 +0000 (22:01 +0000)]
Fix IOSMAC build
https://bugs.webkit.org/show_bug.cgi?id=198082
<rdar://problem/50939725>

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

* Misc/WebDownload.h:

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

4 months agoThe cost of WebViewImpl::hasMarkedTextWithCompletionHandler should not increase with...
wenson_hsieh@apple.com [Tue, 21 May 2019 21:54:05 +0000 (21:54 +0000)]
The cost of WebViewImpl::hasMarkedTextWithCompletionHandler should not increase with document size
https://bugs.webkit.org/show_bug.cgi?id=198075
<rdar://problem/37560103>

Reviewed by Tim Horton.

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::hasMarkedTextWithCompletionHandler):

Refactor hasMarkedTextWithCompletionHandler to use Editor::hasComposition, instead of computing the actual
marked text range. The latter is more expensive and unnecessary, since it uses TextIterator from the document
root to find editing offsets. This makes the cost of determining whether there is marked text proportional to
the document size.

This matches behavior in legacy WebKit, as well as iOS.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::hasMarkedText):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::hasMarkedText):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

4 months agoFix production build after r245564
tzagallo@apple.com [Tue, 21 May 2019 20:30:14 +0000 (20:30 +0000)]
Fix production build after r245564
https://bugs.webkit.org/show_bug.cgi?id=197898

Reviewed by Keith Miller.

The production configuration should not set CODE_SIGN_IDENTITY.

* Configurations/ToolExecutable.xcconfig:

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

4 months agoUnreviewed, add mistakenly ommited initializer.
keith_miller@apple.com [Tue, 21 May 2019 20:01:35 +0000 (20:01 +0000)]
Unreviewed, add mistakenly ommited initializer.

* runtime/RegExpInlines.h:

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

4 months ago[WebAuthN] Make WebAuthN default on only on macOS
jiewen_tan@apple.com [Tue, 21 May 2019 19:03:57 +0000 (19:03 +0000)]
[WebAuthN] Make WebAuthN default on only on macOS
https://bugs.webkit.org/show_bug.cgi?id=198068
<rdar://problem/50971874>

Reviewed by Brent Fulgham.

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

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

4 months agoUnreviewed build fix add UNUSED_PARAM.
keith_miller@apple.com [Tue, 21 May 2019 18:27:04 +0000 (18:27 +0000)]
Unreviewed build fix add UNUSED_PARAM.

* runtime/RegExpInlines.h:
(JSC::PatternContextBufferHolder::PatternContextBufferHolder):

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

4 months agoUndefined reference platformCloseFrontendPageAndWindow() linking against libWPEWebKit...
psaavedra@igalia.com [Tue, 21 May 2019 17:57:44 +0000 (17:57 +0000)]
Undefined reference platformCloseFrontendPageAndWindow() linking against libWPEWebKit-1.0.so after r245536
https://bugs.webkit.org/show_bug.cgi?id=198069

Reviewed by Ross Kirsling.

* UIProcess/RemoteWebInspectorProxy.cpp:

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

4 months agoCleanup Yarr regexp code around paren contexts.
keith_miller@apple.com [Tue, 21 May 2019 17:57:11 +0000 (17:57 +0000)]
Cleanup Yarr regexp code around paren contexts.
https://bugs.webkit.org/show_bug.cgi?id=198063

Reviewed by Yusuke Suzuki.

JSTests:

* stress/regexp-many-named-sequential-capture-groups.js: Added.
(i.s):
* stress/regexp-many-unnamed-sequential-capture-groups.js: Added.

Source/JavaScriptCore:

There are three refactoring changes around paren contexts:
1. Make EncodedMatchResult the same type as MatchResult on X86_64 and arm64 and uint64_t elsewhere.
2. All function pointer types for Yarr JIT generated code reserve space for paren contexts.
3. initParenContextFreeList should bail based on VM::patternContextBufferSize as that's the buffer size anyway.

* runtime/MatchResult.h:
(JSC::MatchResult::MatchResult):
* runtime/RegExpInlines.h:
(JSC::PatternContextBufferHolder::PatternContextBufferHolder):
(JSC::PatternContextBufferHolder::~PatternContextBufferHolder):
(JSC::PatternContextBufferHolder::size):
(JSC::RegExp::matchInline):
* runtime/VM.h:
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::initParenContextFreeList):
* yarr/YarrJIT.h:
(JSC::Yarr::YarrCodeBlock::execute):

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

4 months ago[macOS] Compatibility mouse events aren't prevented by calling preventDefault() on...
graouts@webkit.org [Tue, 21 May 2019 17:50:37 +0000 (17:50 +0000)]
[macOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown
https://bugs.webkit.org/show_bug.cgi?id=198072
<rdar://problem/50983361>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark the WPT test progression after fixing this bug.

* web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click-expected.txt:

Source/WebCore:

The Pointer Events spec says that "compatibility" mouse events, which means all mouse events save for "click",
should not be dispatched for a given pointer if preventDefault() was called during the dispatch of the "pointerdown"
event. Additionally, calling preventDefault() during the dispatch of "pointerup" has no effect.

* dom/Element.cpp:
(WebCore::Element::dispatchMouseEvent):
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier):
(WebCore::PointerCaptureController::pointerEventWasDispatched):
* page/PointerCaptureController.h:

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

4 months ago[Pointer Events] Do not dispatch pointermove events when the pointer is not down...
graouts@webkit.org [Tue, 21 May 2019 17:49:28 +0000 (17:49 +0000)]
[Pointer Events] Do not dispatch pointermove events when the pointer is not down in WPT testdriver
https://bugs.webkit.org/show_bug.cgi?id=198071

Reviewed by Dean Jackson.

WPT actions sequences may move the pointer prior to pressing it down. In this case, we need to make sure we don't
end up queuing a "moved" touch and instead save the pointer position for when the pointer is pressed. It's important
to also generate a different touch id for each time we pause or end a touch sequence. This allows a few more WPT
touch tests to pass without any source change in our Pointer Events implementation.

* web-platform-tests/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-expected.txt:
* web-platform-tests/pointerevents/pointerevent_pointerout_after_pointercancel_touch-expected.txt:
* web-platform-tests/pointerevents/pointerevent_touch-action-auto-css_touch-expected.txt:
* web-platform-tests/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-expected.txt:
* web-platform-tests/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-expected.txt:
* web-platform-tests/resources/testdriver-vendor.js:

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

4 months agoREGRESSION(r245540): ASSERTION FAILED: identifier.isNull() || RunLoop::isMain()
sihui_liu@apple.com [Tue, 21 May 2019 17:07:57 +0000 (17:07 +0000)]
REGRESSION(r245540): ASSERTION FAILED: identifier.isNull() || RunLoop::isMain()
https://bugs.webkit.org/show_bug.cgi?id=198074

Reviewed by Youenn Fablet.

* NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::databasePath const):

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

4 months agoRTL/overflow scroll tests fail with async overflow enabled
antti@apple.com [Tue, 21 May 2019 15:53:40 +0000 (15:53 +0000)]
RTL/overflow scroll tests fail with async overflow enabled
https://bugs.webkit.org/show_bug.cgi?id=196013
<rdar://problem/49066649>

Reviewed by Simon Fraser.

Source/WebCore:

Test: compositing/ios/rtl-overflow-scrolling-2.html

This patch makes the basic RTL cases work in the scrolling tree.

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::minimumScrollPosition const):
(WebCore::ScrollingTreeScrollingNode::maximumScrollPosition const):

Add missing scroll offset <-> scroll position conversions.

Source/WebKit:

Add missing scroll offset <-> scroll position conversions.

* UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
* UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollViewDidScroll):

LayoutTests:

* compositing/ios/rtl-overflow-scrolling-2-expected.html: Added.
* compositing/ios/rtl-overflow-scrolling-2.html: Added.

Add a reftest version for better coverage.

* compositing/rtl/rtl-overflow-scrolling.html:
* platform/ios-wk1/TestExpectations:
* platform/ios-wk2/TestExpectations:
* platform/ios-wk2/compositing/rtl/rtl-overflow-scrolling-expected.txt: Added.

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

4 months ago[WinCairo] Build WebDriver
don.olmstead@sony.com [Tue, 21 May 2019 13:10:52 +0000 (13:10 +0000)]
[WinCairo] Build WebDriver
https://bugs.webkit.org/show_bug.cgi?id=198056

Reviewed by Carlos Garcia Campos.

.:

Add ENABLE_WEBDRIVER as an experimental feature for WinCairo.

* Source/cmake/OptionsWin.cmake:

Source/WebDriver:

Add the platform and source files to get WinCairo to compile a WebDriver executable.

* CMakeLists.txt:
* PlatformWin.cmake: Added.
* Session.cpp:
(WebDriver::Session::go):
(WebDriver::Session::getCurrentURL):
(WebDriver::Session::back):
(WebDriver::Session::forward):
(WebDriver::Session::refresh):
(WebDriver::Session::getTitle):
(WebDriver::Session::switchToFrame):
(WebDriver::Session::switchToParentFrame):
(WebDriver::Session::setWindowRect):
(WebDriver::Session::maximizeWindow):
(WebDriver::Session::minimizeWindow):
(WebDriver::Session::fullscreenWindow):
(WebDriver::Session::findElements):
(WebDriver::Session::getActiveElement):
(WebDriver::Session::isElementSelected):
(WebDriver::Session::getElementText):
(WebDriver::Session::getElementTagName):
(WebDriver::Session::getElementRect):
(WebDriver::Session::isElementEnabled):
(WebDriver::Session::isElementDisplayed):
(WebDriver::Session::getElementAttribute):
(WebDriver::Session::getElementProperty):
(WebDriver::Session::getElementCSSValue):
(WebDriver::Session::elementClick):
(WebDriver::Session::elementClear):
(WebDriver::Session::elementSendKeys):
(WebDriver::Session::executeScript):
(WebDriver::Session::getAllCookies):
(WebDriver::Session::addCookie):
(WebDriver::Session::deleteCookie):
(WebDriver::Session::deleteAllCookies):
(WebDriver::Session::performActions):
(WebDriver::Session::takeScreenshot):
With nested lambdas MSVC believes the this pointer is for the enclosing lambda. Use a
protectedThis in the enclosing lambda and then use protectedThis.copyRef() in the nested
lambda.

* socket/HTTPServerSocket.cpp: Added.
(WebDriver::HTTPServer::listen):
(WebDriver::HTTPServer::disconnect):
Add stubs for HTTPServer when using a raw socket.

* socket/SessionHostSocket.cpp: Added.
(WebDriver::SessionHost::~SessionHost):
(WebDriver::SessionHost::connectToBrowser):
(WebDriver::SessionHost::isConnected const):
(WebDriver::SessionHost::startAutomationSession):
(WebDriver::SessionHost::sendMessageToBackend):
Add stubs for SessionHost when using a raw socket.

* win/WebDriverServiceWin.cpp: Added.
(WebDriver::WebDriverService::platformCapabilities):
(WebDriver::WebDriverService::platformCompareBrowserVersions):
(WebDriver::WebDriverService::platformValidateCapability const):
(WebDriver::WebDriverService::platformMatchCapability const):
(WebDriver::WebDriverService::platformParseCapabilities const):
Add stubs for WebDriverService on Windows.

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

5 months agoUnreviewed. Fix the build with HAVE(ACCESSIBILITY) disabled
carlosgc@webkit.org [Tue, 21 May 2019 12:53:59 +0000 (12:53 +0000)]
Unreviewed. Fix the build with HAVE(ACCESSIBILITY) disabled

* WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
(WTR::AccessibilityController::elementAtPoint):
* WebKitTestRunner/InjectedBundle/AccessibilityController.h:
(WTR::AccessibilityController::rootElement):
(WTR::AccessibilityController::focusedElement):

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

5 months ago[WPE] Add initial accessibility support using ATK
carlosgc@webkit.org [Tue, 21 May 2019 12:45:08 +0000 (12:45 +0000)]
[WPE] Add initial accessibility support using ATK
https://bugs.webkit.org/show_bug.cgi?id=197413

Reviewed by Michael Catanzaro.

.:

Add ENABLE_ACCESSIBILITY public option to WPE.

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Use USE(ATK) instead of PLATFORM(GTK) for ATK related code and use ATK when available for WPE port too.

* PlatformWPE.cmake:
* SourcesWPE.txt:
* accessibility/AXObjectCache.h:
* accessibility/AccessibilityList.cpp:
(WebCore::AccessibilityList::childHasPseudoVisibleListItemMarkers):
* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::canSetValueAttribute const):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::textIteratorBehaviorForTextRange const):
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityObjectInterface.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::indexForVisiblePosition const):
(WebCore::AccessibilityRenderObject::shouldNotifyActiveDescendant const):
* accessibility/AccessibilityTableColumn.cpp:
(WebCore::AccessibilityTableColumn::computeAccessibilityIsIgnored const):
* accessibility/AccessibilityTableHeaderContainer.cpp:
(WebCore::AccessibilityTableHeaderContainer::computeAccessibilityIsIgnored const):
* accessibility/atk/WebKitAccessible.cpp:
(webkitAccessibleGetAttributes):
* accessibility/wpe/AXObjectCacheWPE.cpp: Removed.
* accessibility/wpe/AccessibilityObjectWPE.cpp: Removed.
* editing/FrameSelection.h:

Source/WebKit:

Rename WebKitWebViewBaseAccessible as WebKitWebViewAccessible and move it to glib removing its dependency on
GTK. WPEView now implements get_accessible to return its associated WebKitWebViewAccessible.

* PlatformWPE.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* UIProcess/API/glib/WebKitWebViewAccessible.cpp: Added.
(webkitWebViewAccessibleInitialize):
(webkitWebViewAccessibleRefStateSet):
(webkitWebViewAccessibleGetIndexInParent):
(webkit_web_view_accessible_class_init):
(webkitWebViewAccessibleNew):
(webkitWebViewAccessibleSetWebView):
* UIProcess/API/glib/WebKitWebViewAccessible.h: Added.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseDispose):
(webkitWebViewBaseGetAccessible):
* UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp: Removed.
* UIProcess/API/gtk/WebKitWebViewBaseAccessible.h: Removed.
* UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::accessible):
* UIProcess/API/wpe/PageClientImpl.h:
* UIProcess/API/wpe/WPEView.cpp:
(WKWPE::m_backend):
(WKWPE::View::~View):
(WKWPE::View::accessible):
* UIProcess/API/wpe/WPEView.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/wpe/WebPageProxyWPE.cpp:
(WebKit::WebPageProxy::bindAccessibilityTree): Call atk_socket_embed() with the given plug ID.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/wpe/WebPageWPE.cpp:
(WebKit::WebPage::platformInitialize): Create the WebKitWebPageAccessibilityObject and send
BindAccessibilityTree message to the UI process.
* WebProcess/wpe/WebProcessMainWPE.cpp:
(WebKit::initializeAccessibility): Implement AtkUtil interface and initialize the atk bridge.

Tools:

Add accessibility support in MiniBrowser and backends used by MiniBrowser and tests.

* MiniBrowser/wpe/CMakeLists.txt:
* MiniBrowser/wpe/main.cpp:
(main):
* TestWebKitAPI/PlatformWPE.cmake:
* WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
* WebKitTestRunner/InjectedBundle/AccessibilityController.h:
* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
* WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:
(WTR::AccessibilityNotificationHandler::setNotificationFunctionCallback):
(WTR::AccessibilityNotificationHandler::removeAccessibilityNotificationHandler):
* WebKitTestRunner/InjectedBundle/wpe/AccessibilityControllerWPE.cpp: Removed.
* WebKitTestRunner/InjectedBundle/wpe/AccessibilityUIElementWPE.cpp: Removed.
* WebKitTestRunner/PlatformWPE.cmake:
* wpe/backends/CMakeLists.txt:
* wpe/backends/HeadlessViewBackend.cpp:
(WPEToolingBackends::HeadlessViewBackend::HeadlessViewBackend):
* wpe/backends/ViewBackend.cpp:
(WPEToolingBackends::addKeyEventListener):
(WPEToolingBackends::removeKeyEventListener):
(WPEToolingBackends::notifyAccessibilityKeyEventListeners):
(WPEToolingBackends::ViewBackend::initialize):
(WPEToolingBackends::ViewBackend::initializeAccessibility):
(WPEToolingBackends::ViewBackend::updateAccessibilityState):
(WPEToolingBackends::ViewBackend::setAccessibleChild):
(WPEToolingBackends::ViewBackend::addActivityState):
(WPEToolingBackends::ViewBackend::removeActivityState):
(WPEToolingBackends::ViewBackend::dispatchInputKeyboardEvent):
* wpe/backends/ViewBackend.h:
* wpe/backends/WebKitAccessibleApplication.cpp: Added.
(webkitAccessibleApplicationWindowInterfaceInit):
(webkitAccessibleApplicationFinalize):
(webkitAccessibleApplicationInitialize):
(webkitAccessibleApplicationGetNChildren):
(webkitAccessibleApplicationRefChild):
(webkitAccessibleApplicationGetName):
(webkit_accessible_application_class_init):
(webkit_accessible_application_init):
(webkitAccessibleApplicationNew):
(webkitAccessibleApplicationSetChild):
* wpe/backends/WebKitAccessibleApplication.h: Added.
* wpe/backends/WindowViewBackend.cpp:
(WPEToolingBackends::WindowViewBackend::WindowViewBackend):
* wpe/jhbuild.modules:

LayoutTests:

Unskip accessibility tests that are passing now and add platform specific results.

* platform/wpe/TestExpectations:
* platform/wpe/accessibility/add-children-pseudo-element-expected.txt: Added.
* platform/wpe/accessibility/aria-fallback-roles-expected.txt: Added.
* platform/wpe/accessibility/aria-hidden-negates-no-visibility-expected.txt: Added.
* platform/wpe/accessibility/aria-label-on-label-element-expected.txt: Added.
* platform/wpe/accessibility/aria-labelledby-overrides-aria-label-expected.txt: Added.
* platform/wpe/accessibility/aria-labelledby-overrides-label-expected.txt: Added.
* platform/wpe/accessibility/aria-option-role-expected.txt: Added.
* platform/wpe/accessibility/aria-roledescription-expected.txt: Added.
* platform/wpe/accessibility/aria-switch-sends-notification-expected.txt: Added.
* platform/wpe/accessibility/aria-tab-roles-expected.txt: Added.
* platform/wpe/accessibility/aria-table-attributes-expected.txt: Added.
* platform/wpe/accessibility/aria-table-content-expected.txt: Added.
* platform/wpe/accessibility/aria-toggle-button-with-title-expected.txt: Added.
* platform/wpe/accessibility/auto-fill-crash-expected.txt: Added.
* platform/wpe/accessibility/button-with-aria-haspopup-role-expected.txt: Added.
* platform/wpe/accessibility/color-well-expected.txt: Added.
* platform/wpe/accessibility/deleting-iframe-destroys-axcache-expected.txt: Added.
* platform/wpe/accessibility/dimensions-include-descendants-expected.txt: Added.
* platform/wpe/accessibility/double-nested-inline-element-missing-from-tree-expected.txt: Added.
* platform/wpe/accessibility/empty-image-with-title-expected.txt: Added.
* platform/wpe/accessibility/file-upload-button-stringvalue-expected.txt: Added.
* platform/wpe/accessibility/help-text-expected.txt: Added.
* platform/wpe/accessibility/image-link-expected.txt: Added.
* platform/wpe/accessibility/image-map1-expected.txt: Added.
* platform/wpe/accessibility/image-map2-expected.txt: Added.
* platform/wpe/accessibility/inline-continuations-expected.txt: Added.
* platform/wpe/accessibility/label-with-pseudo-elements-expected.txt: Added.
* platform/wpe/accessibility/list-detection-expected.txt: Added.
* platform/wpe/accessibility/lists-expected.txt: Added.
* platform/wpe/accessibility/math-multiscript-attributes-expected.txt: Added.
* platform/wpe/accessibility/media-emits-object-replacement-expected.txt: Added.
* platform/wpe/accessibility/menu-list-crash2-expected.txt: Added.
* platform/wpe/accessibility/minimal-table-with-aria-is-data-table-expected.txt: Added.
* platform/wpe/accessibility/press-targets-center-point-expected.txt: Added.
* platform/wpe/accessibility/radio-button-title-label-expected.txt: Added.
* platform/wpe/accessibility/render-counter-text-expected.txt: Added.
* platform/wpe/accessibility/roles-computedRoleString-expected.txt: Added.
* platform/wpe/accessibility/roles-exposed-expected.txt: Added.
* platform/wpe/accessibility/set-selected-text-range-contenteditable-expected.txt: Added.
* platform/wpe/accessibility/svg-remote-element-expected.txt: Added.
* platform/wpe/accessibility/tabindex-elements-are-accessible-expected.txt: Added.
* platform/wpe/accessibility/table-attributes-expected.txt: Added.
* platform/wpe/accessibility/table-cell-spans-expected.txt: Added.
* platform/wpe/accessibility/table-cells-expected.txt: Added.
* platform/wpe/accessibility/table-cells-roles-expected.txt: Added.
* platform/wpe/accessibility/table-column-headers-with-captions-expected.txt: Added.
* platform/wpe/accessibility/table-one-cell-expected.txt: Added.
* platform/wpe/accessibility/table-roles-hierarchy-expected.txt: Added.
* platform/wpe/accessibility/table-sections-expected.txt: Added.
* platform/wpe/accessibility/table-with-rules-expected.txt: Added.
* platform/wpe/accessibility/text-alternative-calculation-hidden-nodes-expected.txt: Added.
* platform/wpe/accessibility/transformed-element-expected.txt: Added.

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

5 months agoOnly cache bytecode for API clients in data vaults
tzagallo@apple.com [Tue, 21 May 2019 06:52:17 +0000 (06:52 +0000)]
Only cache bytecode for API clients in data vaults
https://bugs.webkit.org/show_bug.cgi?id=197898
Source/JavaScriptCore:

<rdar://problem/45945449>

Reviewed by Keith Miller.

Enforce that API clients only store cached bytecode in data vaults. This prevents
another process from compromising the current one by tampering with the bytecode.

* API/JSScript.mm:
(validateBytecodeCachePath):
(+[JSScript scriptOfType:withSource:andSourceURL:andBytecodeCache:inVirtualMachine:error:]):
(+[JSScript scriptOfType:memoryMappedFromASCIIFile:withSourceURL:andBytecodeCache:inVirtualMachine:error:]):
* API/tests/testapi.mm:
(cacheFileInDataVault):
(testModuleBytecodeCache):
(testProgramBytecodeCache):
(testBytecodeCacheWithSyntaxError):
(testBytecodeCacheWithSameCacheFileAndDifferentScript):
(testCacheFileFailsWhenItsAlreadyCached):
(testCanCacheManyFilesWithTheSameVM):
(testIsUsingBytecodeCacheAccessor):
(testBytecodeCacheValidation):
(testObjectiveCAPI):
* Configurations/ToolExecutable.xcconfig:
* JavaScriptCore.xcodeproj/project.pbxproj:
* testapi.entitlements: Added.

Source/WTF:

Reviewed by Keith Miller.

Add SPI to check if a filesystem path is restricted as a data vault.

* WTF.xcodeproj/project.pbxproj:
* wtf/spi/darwin/DataVaultSPI.h: Added.

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