WebKit-https.git
10 months agoSubpixel fringes around TextIndicator snapshots at non-integral scale factors
timothy_horton@apple.com [Fri, 26 Jul 2019 00:40:26 +0000 (00:40 +0000)]
Subpixel fringes around TextIndicator snapshots at non-integral scale factors
https://bugs.webkit.org/show_bug.cgi?id=200145

Reviewed by Simon Fraser.

* page/FrameSnapshotting.cpp:
(WebCore::snapshotFrameRectWithClip):
* page/FrameSnapshotting.h:
* page/TextIndicator.cpp:
(WebCore::snapshotOptionsForTextIndicatorOptions):
Round the scale factor up, and snappily enclose the clip rects.

TextIndicator doesn't require the use of the precise scale factor that
the page is painted at, but we want it to be sharp, so we overshoot!

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

10 months agoLegacy numeric literals should not permit separators or BigInt
ross.kirsling@sony.com [Thu, 25 Jul 2019 23:55:45 +0000 (23:55 +0000)]
Legacy numeric literals should not permit separators or BigInt
https://bugs.webkit.org/show_bug.cgi?id=199984

Reviewed by Keith Miller.

JSTests:

* stress/big-int-literals.js:
* stress/numeric-literal-separators.js:

Source/JavaScriptCore:

* parser/Lexer.cpp:
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):

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

10 months agoUnreviewed, build fix due to C++17's std::invoke_result_t
ysuzuki@apple.com [Thu, 25 Jul 2019 23:15:57 +0000 (23:15 +0000)]
Unreviewed, build fix due to C++17's std::invoke_result_t
https://bugs.webkit.org/show_bug.cgi?id=200139

Use std::result_of for now until all the supported environments implement it.

* heap/IsoSubspace.h:

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

10 months ago[JSC] Ensure PackedCellPtr only takes non-large-allocation pointers
ysuzuki@apple.com [Thu, 25 Jul 2019 22:51:28 +0000 (22:51 +0000)]
[JSC] Ensure PackedCellPtr only takes non-large-allocation pointers
https://bugs.webkit.org/show_bug.cgi?id=200139

Reviewed by Mark Lam.

PackedCellPtr will compact a pointer by leveraging the fact that JSCell pointers are 16byte aligned.
But this fact only holds when the JSCell is not large allocation. Currently, we are using PackedCellPtr
only for the cell types which meets the above requirement. But we would like to ensure that statically.

In this patch, we add additional static/runtime assertions to ensure this invariant. We accept a cell
type of either (1) it is "final" annotated and sizeof(T) is <= MarkedSpace::largeCutoff or (2) it
is allocated from IsoSubspace.

This patch does not change any behaviors. It just adds extra static/runtime assertions.

* bytecode/CodeBlock.h:
(JSC::CodeBlock::subspaceFor):
* bytecode/CodeBlockJettisoningWatchpoint.h:
* bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.h:
* dfg/DFGAdaptiveStructureWatchpoint.h:
* heap/IsoSubspace.h:
* heap/PackedCellPtr.h:
(JSC::PackedCellPtr::PackedCellPtr):
* runtime/FunctionRareData.h:
(JSC::FunctionRareData::createAllocationProfileClearingWatchpoint):
* runtime/ObjectToStringAdaptiveStructureWatchpoint.h:

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

10 months agoUnreviewed, rolling out r247806.
commit-queue@webkit.org [Thu, 25 Jul 2019 22:25:15 +0000 (22:25 +0000)]
Unreviewed, rolling out r247806.
https://bugs.webkit.org/show_bug.cgi?id=200141

It is regressing PLT (Requested by youenn on #webkit).

Reverted changeset:

"Disable speculative loading if cache is not to be used for
the load"
https://bugs.webkit.org/show_bug.cgi?id=199644
https://trac.webkit.org/changeset/247806

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

10 months agoUse IWICBitmap (rather than ID2D1Bitmap) for NativeImagePtr on FTW
bfulgham@apple.com [Thu, 25 Jul 2019 22:02:00 +0000 (22:02 +0000)]
Use IWICBitmap (rather than ID2D1Bitmap) for NativeImagePtr on FTW
https://bugs.webkit.org/show_bug.cgi?id=200093

Reviewed by Dean Jackson.

Source/WebCore:

When I wrote the original Direct2D code, I did not realize that the backing memory for the
ID2D1Bitmap was inaccessible since it is effectively a representation of GPU memory. There
is no API to access or modify the pixels.

Instead, MSDN documentation indicates that we should be using IWICBitmap objects, which are
converted to ID2D1Bitmap objects when things are ready to be rendered.

This makes it possible to use the TextureMapper backend to do efficient compositing and tile
drawing, since the data backing the bitmap can now be accessed and manipulated, allowing us
to support filters and other effects.

* PlatformFTW.cmake:
* platform/MIMETypeRegistry.cpp:
(WebCore::supportedImageMIMETypesForEncoding):
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/GraphicsContext.h:
* platform/graphics/ImageBuffer.h:
* platform/graphics/NativeImage.h:
* platform/graphics/OpenGLShims.h:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::paintRenderingResultsToCanvas):
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::platformLayer const):
* platform/graphics/texmap/BitmapTexture.cpp:
(WebCore::BitmapTexture::updateContents):
* platform/graphics/texmap/BitmapTextureGL.cpp:
(WebCore::BitmapTextureGL::updateContents):
* platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:
(WebCore::GraphicsContext3D::~GraphicsContext3D):
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::platformInit):
(WebCore::GraphicsContextPlatformPrivate::setAlpha):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawDeviceBitmap):
(WebCore::GraphicsContext::releaseWindowsContext):
(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
(WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
(WebCore::GraphicsContextPlatformPrivate::beginDraw):
(WebCore::GraphicsContextPlatformPrivate::endDraw):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::clipPath):
* platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h:
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::getData const):
(WebCore::ImageBufferData::putData):
* platform/graphics/win/ImageBufferDataDirect2D.h:
(): Deleted.
* platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::createCompatibleBuffer):
(WebCore::ImageBuffer::ImageBuffer):
(WebCore::createCroppedImageIfNecessary):
(WebCore::createBitmapImageAfterScalingIfNeeded):
(WebCore::ImageBuffer::copyImage const):
(WebCore::ImageBuffer::sinkIntoNativeImage):
(WebCore::ImageBuffer::copyNativeImage const):
(WebCore::ImageBuffer::draw):
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::createFrameImageAtIndex):
* platform/graphics/win/ImageDirect2D.cpp:
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/graphics/win/NativeImageDirect2D.cpp:
(WebCore::imagingFactory):
(WebCore::nativeImageSize):
(WebCore::nativeImageHasAlpha):
(WebCore::nativeImageSinglePixelSolidColor):
(WebCore::drawNativeImage):
(WebCore::clearNativeImageSubimages):
* platform/graphics/win/PathDirect2D.cpp:
(WebCore::Path::strokeContains const):
* platform/graphics/win/PatternDirect2D.cpp:
(WebCore::Pattern::createPlatformPattern const):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::read):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::shouldRespectImageOrientation const):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::adjustTiledBackingCoverage):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::nativeImage):

Source/WebCore/PAL:

* pal/PlatformFTW.cmake:

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

10 months agoREGRESSION (r243637): Some web fonts fail to load on Google docs
rniwa@webkit.org [Thu, 25 Jul 2019 21:18:04 +0000 (21:18 +0000)]
REGRESSION (r243637): Some web fonts fail to load on Google docs
https://bugs.webkit.org/show_bug.cgi?id=200106

Reviewed by Geoffrey Garen.

Prior to r243637, WebKit threw an exception if the font family name didn't parse as a CSS identifier in the setter
of `family` IDL attribute of FontFace interface because WebKit implemented the old spec faithfully unlike Chrome
and Firefox which basically treated it as a string and didn't throw any exception. [1]

To account for this browser behavior difference, Google docs implemented a workaround for Safari which is to wrap
some identifiers in font family names with quotation marks: `docs-Amatic SC` as `'docs-Amatic SC'` and
`docs-Playfair Display` as `docs-'Playfair Display'`. Unfortunately, this in turn causes the latest Safari to
not match these font face family with those that appear in stylesheet since we no longer parse it as a CSS identifier.

This patch adds a site specific quirk for Google docs to undo this workaround by stripping away single quotation marks.

[1] See https://github.com/w3c/csswg-drafts/issues/3776 for the context.

* css/FontFace.cpp:
(WebCore::FontFace::create):
(WebCore::FontFace::setFamily):
* css/FontFace.h:
* css/FontFace.idl:
* page/Quirks.cpp:
(WebCore::Quirks::shouldStripQuotationMarkInFontFaceSetFamily const):
* page/Quirks.h:

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

10 months ago[iOS WK2] A top fixed bar can flicker when scrolling with the keyboard up
simon.fraser@apple.com [Thu, 25 Jul 2019 21:12:01 +0000 (21:12 +0000)]
[iOS WK2] A top fixed bar can flicker when scrolling with the keyboard up
https://bugs.webkit.org/show_bug.cgi?id=200105
rdar://problem/52871975

Reviewed by Wenson Hsieh.

Source/WebCore:

ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition() computes a visual viewport
from the current scroll position and scrollableAreaSize(). This doesn't know anything about
the impact of keyboards on the visual viewport, so it computes a too-large visual viewport
when the keyboard is up, triggering incorrect manipulations of the layout viewport. This
leads to the top bar flashing to position 0 when it should be hidden off the top.

Fix by feeding into the scrolling tree the height of the visual viewport which takes
FrameView::visualViewportOverrideRect() into account. This is stored on ScrollingStateFrameScrollingNode/
ScrollingTreeFrameScrollingNode.

Test: scrollingcoordinator/ios/fixed-scrolling-with-keyboard.html

* page/FrameView.h:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
* page/scrolling/ScrollingStateFrameScrollingNode.cpp:
(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateFrameScrollingNode::setOverrideVisualViewportSize):
(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):
* page/scrolling/ScrollingStateFrameScrollingNode.h:
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState): LOG_WITH_STREAM() doesn't evaluate scrollingTreeAsText()
every time.
* page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
(WebCore::ScrollingTreeFrameScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition const):
(WebCore::ScrollingTreeFrameScrollingNode::dumpProperties const):
* page/scrolling/ScrollingTreeFrameScrollingNode.h:

Source/WebKit:

ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition() computes a visual viewport
from the current scroll position and scrollableAreaSize(). This doesn't know anything about
the impact of keyboards on the visual viewport, so it computes a too-large visual viewport
when the keyboard is up, triggering incorrect manipulations of the layout viewport. This
leads to the top bar flashing to position 0 when it should be hidden off the top.

Fix by feeding into the scrolling tree the height of the visual viewport which takes
FrameView::visualViewportOverrideRect() into account. This is stored on ScrollingStateFrameScrollingNode/
ScrollingTreeFrameScrollingNode.

* Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
(ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
(ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):

LayoutTests:

* resources/ui-helper.js:
(window.UIHelper.ensureStablePresentationUpdate.return.new.Promise):
(window.UIHelper.ensureStablePresentationUpdate):
* scrollingcoordinator/ios/fixed-scrolling-with-keyboard-expected.txt: Added.
* scrollingcoordinator/ios/fixed-scrolling-with-keyboard.html: Added.

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

10 months agoWebKit/UIProcess/ios/WKContentViewInteraction.mm: error: implementing deprecated...
dino@apple.com [Thu, 25 Jul 2019 20:55:06 +0000 (20:55 +0000)]
WebKit/UIProcess/ios/WKContentViewInteraction.mm: error: implementing deprecated method contextMenuInteractionWillPresent
https://bugs.webkit.org/show_bug.cgi?id=200136
<rdar://problem/53547698>

Reviewed by Wenson Hsieh.

Ignore deprecation warnings for these UIContextMenuInteraction delegates.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView contextMenuInteractionWillPresent:]):
(-[WKContentView contextMenuInteraction:willCommitWithAnimator:]):
(-[WKContentView contextMenuInteractionDidEnd:]):

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

10 months agoAdd helper for ignoring deprecated implementation warnings
dino@apple.com [Thu, 25 Jul 2019 20:53:57 +0000 (20:53 +0000)]
Add helper for ignoring deprecated implementation warnings
https://bugs.webkit.org/show_bug.cgi?id=200135

Reviewed by Wenson Hsieh.

Add ALLOW_DEPRECATED_IMPLEMENTATIONS_BEGIN/END macro which
is IGNORE_WARNINGS_BEGIN("deprecated-implementations")

Source/WebCore:

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityIsAttributeSettable:]):
(-[WebAccessibilityObjectWrapper accessibilityPerformAction:]):
(-[WebAccessibilityObjectWrapper accessibilitySetValue:forAttribute:]):
(-[WebAccessibilityObjectWrapper accessibilityActionDescription:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]): Deleted.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveAuthenticationChallenge:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]):

Source/WebKit:

* UIProcess/API/Cocoa/LegacyBundleForClass.mm:
* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(IGNORE_WARNINGS_BEGIN): Deleted.
* UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
(IGNORE_WARNINGS_BEGIN): Deleted.
* UIProcess/API/Cocoa/WKConnection.mm:
(IGNORE_WARNINGS_BEGIN): Deleted.
* UIProcess/API/Cocoa/WKPreviewElementInfo.mm:
* UIProcess/API/Cocoa/WKProcessGroup.mm:
(IGNORE_WARNINGS_BEGIN): Deleted.
* UIProcess/API/Cocoa/WKTypeRefWrapper.mm:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKWebView draggedImage:endedAt:operation:]):
(-[WKWebView accessibilityAttributeValue:]):
(-[WKWebView accessibilityAttributeValue:forParameter:]):
(-[WKWebView namesOfPromisedFilesDroppedAtDestination:]):
(-[WKWebView IGNORE_WARNINGS_END]): Deleted.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKWebViewConfiguration _setWebsiteDataStore:]):
(-[WKWebViewConfiguration IGNORE_WARNINGS_END]): Deleted.
* UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
* UIProcess/API/mac/WKView.mm:
(-[WKView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKView draggedImage:endedAt:operation:]):
(-[WKView accessibilityAttributeValue:]):
(-[WKView accessibilityAttributeValue:forParameter:]):
(-[WKView namesOfPromisedFilesDroppedAtDestination:]):
(-[WKView IGNORE_WARNINGS_END]): Deleted.
* UIProcess/WKImagePreviewViewController.mm:
(-[WKImagePreviewViewController ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKImagePreviewViewController IGNORE_WARNINGS_END]): Deleted.
* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker popoverControllerDidDismissPopover:]):
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel popoverControllerDidDismissPopover:]):
* UIProcess/ios/forms/WKFormPopover.mm:
(-[WKRotatingPopover popoverControllerDidDismissPopover:]):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(-[WKPDFPluginAccessibilityObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:]):
(-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:forParameter:]):
(-[WKPDFPluginAccessibilityObject accessibilityPerformAction:]):
(-[WKPDFPluginAccessibilityObject accessibilityIsAttributeSettable:]):
(-[WKPDFPluginAccessibilityObject accessibilitySetValue:forAttribute:]):
(-[WKPDFPluginAccessibilityObject IGNORE_WARNINGS_END]): Deleted.
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
(-[WKAccessibilityWebPageObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKAccessibilityWebPageObject accessibilityIsAttributeSettable:]):
(-[WKAccessibilityWebPageObject accessibilitySetValue:forAttribute:]):
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):
(-[WKAccessibilityWebPageObject IGNORE_WARNINGS_END]): Deleted.

Source/WebKitLegacy/mac:

* Misc/WebDownload.mm:
(-[WebDownload initWithRequest:delegate:]):
* Misc/WebIconDatabase.mm:
* Plugins/WebBaseNetscapePluginView.mm:
(-[WebBaseNetscapePluginView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebBaseNetscapePluginView IGNORE_WARNINGS_END]): Deleted.
* WebView/WebDynamicScrollBarsView.mm:
(-[WebDynamicScrollBarsView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebDynamicScrollBarsView IGNORE_WARNINGS_END]): Deleted.
* WebView/WebHTMLView.mm:
(-[WebHTMLView draggingSourceOperationMaskForLocal:]):
(-[WebHTMLView draggedImage:endedAt:operation:]):
(-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):
(-[WebHTMLView accessibilityAttributeValue:]):
(-[WebHTMLView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebHTMLView characterIndexForPoint:]):
(-[WebHTMLView firstRectForCharacterRange:]):
(-[WebHTMLView attributedSubstringFromRange:]):
(-[WebHTMLView setMarkedText:selectedRange:]):
(-[WebHTMLView doCommandBySelector:]):
(-[WebHTMLView insertText:]):
(-[WebHTMLView IGNORE_WARNINGS_END]): Deleted.

Source/WTF:

* wtf/Compiler.h:

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

10 months agoUnreviewed. Speculative build fix for tvOS of missing include.
sbarati@apple.com [Thu, 25 Jul 2019 20:21:59 +0000 (20:21 +0000)]
Unreviewed. Speculative build fix for tvOS of missing include.

* Modules/webgpu/WHLSL/WHLSLLexer.h:

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

10 months agoUnreviewed, fix -Wunused-parameter warning
mcatanzaro@igalia.com [Thu, 25 Jul 2019 19:52:15 +0000 (19:52 +0000)]
Unreviewed, fix -Wunused-parameter warning

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

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

10 months ago[WHLSL] Add descriptive error messages
sbarati@apple.com [Thu, 25 Jul 2019 19:42:42 +0000 (19:42 +0000)]
[WHLSL] Add descriptive error messages
https://bugs.webkit.org/show_bug.cgi?id=195682
<rdar://problem/50746322>

Reviewed by Myles C. Maxfield.

This patch adds error messages to the WHLSL compiler. I'm taking a first pass
at having decent error messages everywhere we set an error. However, we will
probably refine these messages to be more accurate and descriptive over time.

Passes that can fail no longer return a boolean. Instead, they return Expected<void, Error>.
From Error, we can generate a descriptive error message. Visitor::setError now
requires an Error as an argument. So anywhere in Visitor that might fail is
now required to provide an error message.

In a follow-up to this, we should actually make our checkFail tests test that
they get the expected error message: https://bugs.webkit.org/show_bug.cgi?id=200049

* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
* Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLQualifier.h:
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
* Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
* Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
* Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
(WebCore::WHLSL::autoInitializeVariables):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.h:
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.h:
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:
(WebCore::WHLSL::TextureReferencesChecker::visit):
(WebCore::WHLSL::checkTextureReferences):
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.h:
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::checkSemantics):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::Checker::recurseAndGetInfo):
(WebCore::WHLSL::Checker::getInfo):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::recurseAndRequireBoolType):
(WebCore::WHLSL::check):
* Modules/webgpu/WHLSL/WHLSLChecker.h:
* Modules/webgpu/WHLSL/WHLSLCodeLocation.h: Added.
(WebCore::WHLSL::CodeLocation::CodeLocation):
(WebCore::WHLSL::CodeLocation::startOffset const):
(WebCore::WHLSL::CodeLocation::endOffset const):
(WebCore::WHLSL::CodeLocation::operator== const):
(WebCore::WHLSL::CodeLocation::operator!= const):
(WebCore::WHLSL::CodeLocation::operator bool const):
* Modules/webgpu/WHLSL/WHLSLComputeDimensions.cpp:
(WebCore::WHLSL::computeDimensions):
* Modules/webgpu/WHLSL/WHLSLError.h: Added.
(WebCore::WHLSL::Error::Error):
(WebCore::WHLSL::Error::codeLocation const):
(WebCore::WHLSL::Error::message const):
* Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.cpp:
(WebCore::WHLSL::checkFunctionStages):
* Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.h:
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
(WebCore::WHLSL::Gatherer::reset):
(WebCore::WHLSL::Gatherer::visit):
(WebCore::WHLSL::gatherEntryPointItems):
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Lexer::lineAndColumnNumberFromOffset):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::Lexer::lineNumberFromOffset): Deleted.
* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::CodeLocation::CodeLocation):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::AST::CodeLocation::CodeLocation): Deleted.
(WebCore::WHLSL::AST::CodeLocation::startOffset const): Deleted.
(WebCore::WHLSL::AST::CodeLocation::endOffset const): Deleted.
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::~NameResolver):
(WebCore::WHLSL::NameResolver::visit):
(WebCore::WHLSL::resolveNamesInTypes):
(WebCore::WHLSL::resolveTypeNamesInFunctions):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::intLiteralToInt):
(WebCore::WHLSL::uintLiteralToUint):
(WebCore::WHLSL::floatLiteralToFloat):
(WebCore::WHLSL::recognizeSimpleUnsignedInteger):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseLimitedSuffixOperator):
(WebCore::WHLSL::Parser::parseSuffixOperator):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parseCallExpression):
* Modules/webgpu/WHLSL/WHLSLParser.h:
(WebCore::WHLSL::Parser::Error::Error): Deleted.
(WebCore::WHLSL::Parser::Error::dump const): Deleted.
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
(WebCore::WHLSL::prepare):
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:
(WebCore::WHLSL::checkRecursion):
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.h:
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
(WebCore::WHLSL::checkRecursiveTypes):
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.h:
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
(WebCore::WHLSL::includeStandardLibrary):
* Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:
(WebCore::WHLSL::checkStatementBehavior):
* Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.h:
* Modules/webgpu/WHLSL/WHLSLVisitor.h:
(WebCore::WHLSL::Visitor::hasError const):
(WebCore::WHLSL::Visitor::expectedError):
(WebCore::WHLSL::Visitor::checkErrorAndVisit):
(WebCore::WHLSL::Visitor::setError):
(WebCore::WHLSL::Visitor::error const): Deleted.
(): Deleted.
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):

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

10 months agordar://53551736 (Layout Test editing/pasteboard/paste-and-sanitize.html is a Flaky...
russell_e@apple.com [Thu, 25 Jul 2019 18:52:19 +0000 (18:52 +0000)]
rdar://53551736 (Layout Test editing/pasteboard/paste-and-sanitize.html is a Flaky Failure on iOS 13).

Unreviewed Test Gardening.

* platform/ios-12/TestExpectations: Test is passing on iOS 12
* platform/ios/TestExpectations: Marking test as flaky on iOS 13

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

10 months ago[JSC] Make visitChildren implementation more idiomatic
ysuzuki@apple.com [Thu, 25 Jul 2019 18:28:53 +0000 (18:28 +0000)]
[JSC] Make visitChildren implementation more idiomatic
https://bugs.webkit.org/show_bug.cgi?id=200121

Reviewed by Mark Lam.

This patch makes visitChildren implementations more idiomatic: cast, assert, and calling Base::visitChildren.
While this does not find interesting issues, it is still nice to have consistent implementations.
StructureChain::visitChildren missed Base::visitChildren, but it does not have much effect since StructureChain
is immortal cell.

* bytecode/ExecutableToCodeBlockEdge.cpp:
(JSC::ExecutableToCodeBlockEdge::visitChildren):
* runtime/AbstractModuleRecord.cpp:
(JSC::AbstractModuleRecord::visitChildren):
* runtime/FunctionRareData.cpp:
(JSC::FunctionRareData::visitChildren):
* runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::visitChildren):
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::visitChildren):
* runtime/JSImmutableButterfly.cpp:
(JSC::JSImmutableButterfly::visitChildren):
* runtime/JSModuleEnvironment.cpp:
(JSC::JSModuleEnvironment::visitChildren):
* runtime/JSModuleRecord.cpp:
(JSC::JSModuleRecord::visitChildren):
* runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::visitChildren):
* runtime/JSString.cpp:
(JSC::JSString::visitChildren):
* runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayValueMap::visitChildren):
* runtime/StructureChain.cpp:
(JSC::StructureChain::visitChildren):
* runtime/SymbolTable.cpp:
(JSC::SymbolTable::visitChildren):
* tools/JSDollarVM.cpp:
(JSC::Root::visitChildren):
(JSC::ImpureGetter::visitChildren):
* wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::visitChildren):

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

10 months agoMake NetworkSession no longer RefCounted
youenn@apple.com [Thu, 25 Jul 2019 18:17:20 +0000 (18:17 +0000)]
Make NetworkSession no longer RefCounted
https://bugs.webkit.org/show_bug.cgi?id=200020

This allows to have a simpler memory management model where
NetworkSession cannot live once removed from the network process session map.
This requires some additional null checks, especially in NetworkDataTask.

Reviewed by Carlos Garcia Campos.

* NetworkProcess/curl/NetworkSessionCurl.h:
* NetworkProcess/soup/NetworkSessionSoup.h:
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::NetworkDataTask):
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/NetworkDataTaskBlob.cpp:
(WebKit::NetworkDataTaskBlob::~NetworkDataTaskBlob):
(WebKit::NetworkDataTaskBlob::download):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::lowMemoryHandler):
(WebKit::NetworkProcess::setSession):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::setResourceLoadStatisticsEnabled):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::networkSessions):
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::create):
* NetworkProcess/NetworkSession.h:
* NetworkProcess/NetworkSocketChannel.cpp:
(WebKit::NetworkSocketChannel::NetworkSocketChannel):
(WebKit::NetworkSocketChannel::~NetworkSocketChannel):
* NetworkProcess/NetworkSocketChannel.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
(WebKit::computeIsAlwaysOnLoggingAllowed):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::resume):
(WebKit::NetworkDataTaskCocoa::isAlwaysOnLoggingAllowed const):
* NetworkProcess/cocoa/NetworkSessionCocoa.h:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate initWithNetworkSession:withCredentials:]):
(WebKit::NetworkSessionCocoa::create):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::createRequest):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::cancel):
(WebKit::NetworkDataTaskSoup::authenticateCallback):
(WebKit::NetworkDataTaskSoup::authenticate):
(WebKit::NetworkDataTaskSoup::continueAuthenticate):

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

10 months ago[Timeline]: Make timeline header width automatic, instead of fixed width
commit-queue@webkit.org [Thu, 25 Jul 2019 18:16:34 +0000 (18:16 +0000)]
[Timeline]: Make timeline header width automatic, instead of fixed width
https://bugs.webkit.org/show_bug.cgi?id=200059

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-07-25
Reviewed by Jonathan Bedard.

* resultsdbpy/resultsdbpy/view/static/css/timeline.css:
(.dot.crash):
(.timeline>.header): Deleted.
* resultsdbpy/resultsdbpy/view/static/library/css/webkit.css:
(.timeline>.content):
(.timeline>.header):

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

10 months ago[WHLSL] Add optional logging for phase timings
sbarati@apple.com [Thu, 25 Jul 2019 18:14:15 +0000 (18:14 +0000)]
[WHLSL] Add optional logging for phase timings
https://bugs.webkit.org/show_bug.cgi?id=200099

Reviewed by Dean Jackson.

As we're doing WHLSL compiler speedup work, it helps to be able to
log phase times. I think a few of us have written such patches locally.
In this patch, I'm adding a way to easily switch this logging on and
off by flipping a "constexpr bool" and rebuilding.

* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::logPhaseTimes):
(WebCore::WHLSL::PhaseTimer::PhaseTimer):
(WebCore::WHLSL::PhaseTimer::~PhaseTimer):
(WebCore::WHLSL::prepareShared):
(WebCore::WHLSL::prepare):

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

10 months agoAvoid some unnecessary HashMap copies
cdumez@apple.com [Thu, 25 Jul 2019 18:09:59 +0000 (18:09 +0000)]
Avoid some unnecessary HashMap copies
https://bugs.webkit.org/show_bug.cgi?id=200129

Reviewed by Youenn Fablet.

Source/WebCore:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::addRegistrationFromStore):

Source/WebKit:

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didClose):
* UIProcess/AuxiliaryProcessProxy.cpp:
(WebKit::AuxiliaryProcessProxy::connect):
* UIProcess/Launcher/ProcessLauncher.cpp:
(WebKit::ProcessLauncher::ProcessLauncher):
* UIProcess/Launcher/ProcessLauncher.h:
(WebKit::ProcessLauncher::create):
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::setPluginLoadClientPolicy):

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

10 months ago[WPE] Draw other button types
commit-queue@webkit.org [Thu, 25 Jul 2019 18:04:15 +0000 (18:04 +0000)]
[WPE] Draw other button types
https://bugs.webkit.org/show_bug.cgi?id=199377

Patch by Joshua Watt <JPEW.hacker@gmail.com> on 2019-07-25
Reviewed by Michael Catanzaro.

There are other button types that should be drawn with the default style
besides just push buttons.

* platform/wpe/ThemeWPE.cpp:
(WebCore::ThemeWPE::paint):
(WebCore::ThemeWPE::paintButton):
* platform/wpe/ThemeWPE.h:

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

10 months agoREGRESSION (r244995): Assertion failure when addEventListener to an SVGElement which...
commit-queue@webkit.org [Thu, 25 Jul 2019 17:56:45 +0000 (17:56 +0000)]
REGRESSION (r244995): Assertion failure when addEventListener to an SVGElement which has an. instance in shadow tree
https://bugs.webkit.org/show_bug.cgi?id=200083

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-07-25
Reviewed by Ryosuke Niwa.

Source/WebCore:

When adding an event listener to an SVGElement, the same event listener
has to be add to all the instances of SVGElement in the shadow tree. See
SVGElement::addEventListener().

In r244995, an assertion was added to ensure if the event listener is
attached to an event target, the new event target has be the same as the
attached one. This assertion isn't correct for the event targets which
were copied from the targetElement sub tree of an SVGUseElement to the
shadow tree.

Test: svg/custom/add-event-listener-shadow-tree-element.html

* bindings/js/JSLazyEventListener.cpp:
(WebCore::isCloneInShadowTreeOfSVGUseElement):
(WebCore::JSLazyEventListener::checkValidityForEventTarget):

LayoutTests:

* svg/custom/add-event-listener-shadow-tree-element-expected.txt: Added.
* svg/custom/add-event-listener-shadow-tree-element.html: Added.

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

10 months agoUnreviewed, rolling out r247821.
tsavell@apple.com [Thu, 25 Jul 2019 17:55:30 +0000 (17:55 +0000)]
Unreviewed, rolling out r247821.

Caused two crashing Layout Tests

Reverted changeset:

"Make storing cross-origin top-level prefetches in HTTP cache
optional"
https://bugs.webkit.org/show_bug.cgi?id=199499
https://trac.webkit.org/changeset/247821

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

10 months agoAdding iOS-specific expectations for fast/text-indicator/text-indicator-with-low...
russell_e@apple.com [Thu, 25 Jul 2019 17:23:22 +0000 (17:23 +0000)]
Adding iOS-specific expectations for fast/text-indicator/text-indicator-with-low-contrast-text.html.
https://bugs.webkit.org/show_bug.cgi?id=200064

Unreviewed Test Gardening.

* platform/ios/fast/text-indicator/text-indicator-with-low-contrast-text-expected.txt: Added.

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

10 months agoUnreviewed, fix -Wredundant-move warning spam after r247672
mcatanzaro@igalia.com [Thu, 25 Jul 2019 16:07:09 +0000 (16:07 +0000)]
Unreviewed, fix -Wredundant-move warning spam after r247672
https://bugs.webkit.org/show_bug.cgi?id=199967
<rdar://problem/53351435>

* Platform/IPC/ArgumentCoders.cpp:
(IPC::decodeStringText):
* Platform/IPC/ArgumentCoders.h:

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

10 months agoAvoid UI Process hangs when the WebContent process is showing JS prompts / alerts
cdumez@apple.com [Thu, 25 Jul 2019 15:42:11 +0000 (15:42 +0000)]
Avoid UI Process hangs when the WebContent process is showing JS prompts / alerts
https://bugs.webkit.org/show_bug.cgi?id=200107
<rdar://problem/53034592>

Reviewed by Geoffrey Garen.

Source/WebCore:

Add testing infrastructure for SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply.

Test: fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply.html

* page/ChromeClient.h:
* testing/Internals.cpp:
(WebCore::Internals::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

* Platform/IPC/Connection.cpp:
(IPC::Connection::SyncMessageState::incrementProcessIncomingSyncMessagesWhenWaitingForSyncReplyCount):
(IPC::Connection::SyncMessageState::decrementProcessIncomingSyncMessagesWhenWaitingForSyncReplyCount):
(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::sendSyncMessage):
* Platform/IPC/Connection.h:
Add support for new SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply flag
to allow processing incoming sync messages while sending a particular sync IPC. This is the
default behavior in all processes except in the WebContent process, where we try to avoid
re-entering to prevent bugs. This flag allows the WebContent process to change its default
behavior for some specific IPCs, where we know it is safe to re-enter and where it benefits
performance to re-renter.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didReceiveSyncMessage):
(WebKit::NetworkProcessProxy::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::sendSyncWithDelayedReply):
* WebProcess/WebPage/WebPage.messages.in:
SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply
Add testing infrastructure for SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply
flag.

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
Use new SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply flag when sending
the synchronous IPC for JS alerts / prompt / confirm. This allows the WebProcess to process
incoming synchronous IPC for other processes (in particular the UIProcess) while it is blocked
on those synchronous IPCs. It is safe to re-enter the WebContent process on these sync IPCs
since they are triggered by JS and we return to JS right after. This should avoid UIProcess
hangs when the UIProcess is sending a sync IPC to the WebContent process, which is itself
stuck on the sync IPC to show a JS alert.

LayoutTests:

Add layout test coverage for SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply.
Without the flag on the sendSync from the WebContent process of the
NetworkConnectionToWebProcess::TestProcessIncomingSyncMessagesWhenWaitingForSyncReply IPC, the
test would hang. This is because the WebContent process sends a sync IPC to the network process,
which in turns sends one to the UIProcess, which itself sends one back to the WebContent process.
This would attempt to re-enter the WebContent process which is currently sending a sync IPC, which
is not allowed by default.

* fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply-expected.txt: Added.
* fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply.html: Added.

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

10 months agoMake storing cross-origin top-level prefetches in HTTP cache optional
commit-queue@webkit.org [Thu, 25 Jul 2019 15:37:09 +0000 (15:37 +0000)]
Make storing cross-origin top-level prefetches in HTTP cache optional
https://bugs.webkit.org/show_bug.cgi?id=199499

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

Source/WebCore:

Add Internals API for adding an event listener to prefetch load.

Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html

* bindings/js/JSEventListener.h:
* dom/EventTarget.h:
(WebCore::EventTarget::addEventListener):
* dom/Node.h:
* html/HTMLLinkElement.h:
* testing/Internals.cpp:
(WebCore::Internals::addPrefetchLoadEventListener):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

Currently when we navigate we check if there is a cross-origin top-level
prefetch we can use for the navigation. The current solution uses the
HTTP cache as a way to store the prefetch and to immediately use it for
the navigation load. However this solution fails in case the prefetch is
not cacheable.

Instead of this, simulate a HTTP Cache entry to process the load and
afterwards try to store the navigation load into the HTTP cache, where
normal store decisions will be applied.

Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::retrieveCacheEntryInternal):
* NetworkProcess/NetworkResourceLoader.h:

LayoutTests:

Remove unneeded Cache-Control headers and verify that Cache-Control
effects whether the navigation gets stored in the disk cache or not.

* http/tests/cache/resources/prefetched-main-resource-iframe.php:
* http/tests/cache/resources/prefetched-main-resource.php:
* http/wpt/prefetch/link-prefetch-skip-disk-cache-expected.txt: Added.
* http/wpt/prefetch/link-prefetch-skip-disk-cache.html: Added.
* http/wpt/prefetch/resources/main-resource-skip-disk-cache.py: Added.
(main):
* http/wpt/prefetch/resources/navigate-skip-disk-cache.html: Added.
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:

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

10 months agoUnreviewed, rolling out r247817.
tsavell@apple.com [Thu, 25 Jul 2019 15:35:17 +0000 (15:35 +0000)]
Unreviewed, rolling out r247817.

Broke 14 http/tests/paymentrequest/ tests. on iOS

Reverted changeset:

"Unable to tap/double tap to open files/folders in Google
Drive in Safari"
https://bugs.webkit.org/show_bug.cgi?id=200096
https://trac.webkit.org/changeset/247817

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

10 months ago[ESNext] Implement nullish coalescing
ross.kirsling@sony.com [Thu, 25 Jul 2019 07:50:46 +0000 (07:50 +0000)]
[ESNext] Implement nullish coalescing
https://bugs.webkit.org/show_bug.cgi?id=200072

Reviewed by Darin Adler.

JSTests:

* stress/nullish-coalescing.js: Added.

Source/JavaScriptCore:

Implement the nullish coalescing proposal, which has now reached Stage 3 at TC39.

This introduces a ?? operator which:
  - acts like || but checks for nullishness instead of truthiness
  - has a precedence lower than || (or any other binary operator)
  - must be disambiguated with parentheses when combined with || or &&

* bytecompiler/NodesCodegen.cpp:
(JSC::CoalesceNode::emitBytecode): Added.
Bytecode must use OpIsUndefinedOrNull and not OpNeqNull because of document.all.

* parser/ASTBuilder.h:
(JSC::ASTBuilder::makeBinaryNode):
* parser/Lexer.cpp:
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):
* parser/NodeConstructors.h:
(JSC::CoalesceNode::CoalesceNode): Added.
* parser/Nodes.h:
Introduce new token and AST node.

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseBinaryExpression):
Implement early error.

* parser/ParserTokens.h:
Since this patch needs to shift the value of every binary operator token anyway,
let's only bother to increment their LSBs when we actually have a precedence conflict.

* parser/ResultType.h:
(JSC::ResultType::definitelyIsNull const): Added.
(JSC::ResultType::mightBeUndefinedOrNull const): Added.
(JSC::ResultType::forCoalesce): Added.
We can do better than forLogicalOp here; let's be as accurate as possible.

* runtime/Options.h:
Add runtime feature flag.

Tools:

* Scripts/run-jsc-stress-tests:

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

10 months agoAdd Takashi Komori and Tomoki Imai as contributors
Hironori.Fujii@sony.com [Thu, 25 Jul 2019 05:35:15 +0000 (05:35 +0000)]
Add Takashi Komori and Tomoki Imai as contributors

Unreviewed.

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

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

10 months agoUnable to tap/double tap to open files/folders in Google Drive in Safari
zalan@apple.com [Thu, 25 Jul 2019 04:50:10 +0000 (04:50 +0000)]
Unable to tap/double tap to open files/folders in Google Drive in Safari
https://bugs.webkit.org/show_bug.cgi?id=200096
<rdar://problem/52748552>

Reviewed by Wenson Hsieh.

Source/WebKit:

This patch reverts to the original double-tap-for-double-click implementation (see r244775 and r246347 for more information).

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::doubleTapForDoubleClickDelay): Deleted.
(WebKit::PageClientImpl::doubleTapForDoubleClickRadius): Deleted.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): Do not recognize the single and double gestures the same time.
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView _doubleTapRecognizedForDoubleClick:]):
(-[WKContentView _didStartProvisionalLoadForMainFrame]):
(-[WKContentView _ensureNonBlockingDoubleTapGestureRecognizer]): Deleted.
(-[WKContentView _doubleTapForDoubleClickDelay]): Deleted.
(-[WKContentView _doubleTapForDoubleClickRadius]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint):
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::handlePotentialDoubleTapForDoubleClickAtPoint): Deleted.

LayoutTests:

Rebaseline.

* fast/events/touch/ios/double-tap-for-double-click3-expected.txt:

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

10 months ago[bmalloc] Add IsoHeap test to ensure that IsoHeap pages are not allocating too large VA
ysuzuki@apple.com [Thu, 25 Jul 2019 03:42:09 +0000 (03:42 +0000)]
[bmalloc] Add IsoHeap test to ensure that IsoHeap pages are not allocating too large VA
https://bugs.webkit.org/show_bug.cgi?id=200103

Reviewed by Mark Lam.

Source/bmalloc:

* bmalloc/IsoPage.cpp:

Source/WebCore:

No behavior change in WebCore.

* page/MemoryRelease.cpp:
* page/ResourceUsageThread.h:
(WebCore::TagInfo::TagInfo): Deleted.
* page/cocoa/ResourceUsageThreadCocoa.mm:
(WebCore::vmPageSize): Deleted.
(WebCore::logFootprintComparison): Deleted.
(WebCore::displayNameForVMTag): Deleted.
(WebCore::pagesPerVMTag): Deleted.

Source/WebCore/PAL:

Move VMTag page memory investigation code from PAL to WTF to reuse it in TestWTF.

* PAL.xcodeproj/project.pbxproj:
* pal/PlatformMac.cmake:

Source/WebKit:

Move MachVMSPI.h from PAL to WTF.

* Platform/cocoa/SharedMemoryCocoa.cpp:

Source/WTF:

We move VMTag page investigation code from PAL to WTF to use it in TestWTF.
And we also accumulate allocated VA size in `reserved` field of `TagInfo`.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/PlatformMac.cmake:
* wtf/ResourceUsage.h: Added.
* wtf/cocoa/MemoryPressureHandlerCocoa.mm:
* wtf/cocoa/ResourceUsageCocoa.cpp: Added.
(WTF::vmPageSize):
(WTF::logFootprintComparison):
(WTF::displayNameForVMTag):
(WTF::pagesPerVMTag):
* wtf/spi/cocoa/MachVMSPI.h: Added.

Tools:

This patch adds tests to TestWTF IsoHeap tests to ensure that IsoHeap's component is not leaking pages or not allocating too large VAs for memory allocation.
We use VMTag to get the system view of the allocated VAs and check whether it is not incredibly large.

While the tests are white-box tests (it means that this is a bit flaky to the implementation changes of IsoHeap), I adjusted some threshold to make this less-flaky
to the future implementation changes while it catches the severe issues we had.

* TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:
(assertEmptyPointerSet):
(assertHasOnlyObjects):
(assertClean):
(TEST):
(allocateAndDeallocate):

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

10 months agoWeb Inspector: support `console.screenshot` with detached Nodes that are graphical
drousso@apple.com [Thu, 25 Jul 2019 03:35:03 +0000 (03:35 +0000)]
Web Inspector: support `console.screenshot` with detached Nodes that are graphical
https://bugs.webkit.org/show_bug.cgi?id=199309

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/console/console-screenshot.html

* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):

LayoutTests:

* inspector/console/console-screenshot.html:
* inspector/console/console-screenshot-expected.txt:

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

10 months ago[WHLSL] Use bmalloc instead of system malloc for WHLSL data structures
sbarati@apple.com [Thu, 25 Jul 2019 02:40:05 +0000 (02:40 +0000)]
[WHLSL] Use bmalloc instead of system malloc for WHLSL data structures
https://bugs.webkit.org/show_bug.cgi?id=200063

Rubber-stamped by Sam Weinig.

This is a 25-30% WHLSL compile time speedup on Justin's textured-cube demo
and a ~40% compile time speedup on the hello-cube demo.

The phases that speed up from this are:
checker
includeStandardLibrary
autoInitializeVariables
resolveProperties

* Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
* Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNativeFunctionDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNumThreadsFunctionAttribute.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
* Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
* Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
* Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:

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

10 months agoWeb Inspector: support `console.screenshot` with ImageData and ImageBitmap
drousso@apple.com [Thu, 25 Jul 2019 02:25:05 +0000 (02:25 +0000)]
Web Inspector: support `console.screenshot` with ImageData and ImageBitmap
https://bugs.webkit.org/show_bug.cgi?id=199304

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/console/console-screenshot.html

* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):

LayoutTests:

* inspector/console/console-screenshot.html:
* inspector/console/console-screenshot-expected.txt:

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

10 months agoThree checks are missing in Proxy internal methods
commit-queue@webkit.org [Thu, 25 Jul 2019 02:09:42 +0000 (02:09 +0000)]
Three checks are missing in Proxy internal methods
https://bugs.webkit.org/show_bug.cgi?id=198630

Patch by Alexey Shvayka <shvaikalesh@gmail.com> on 2019-07-24
Reviewed by Darin Adler.

JSTests:

* stress/proxy-delete.js: Assert isExtensible is called in correct order.
* test262/expectations.yaml: Mark 6 test cases as passing.

Source/JavaScriptCore:

Add three missing checks in Proxy internal methods.
These checks are necessary to maintain the invariants of the essential internal methods.
(https://github.com/tc39/ecma262/pull/666)

1. [[GetOwnProperty]] shouldn't return non-configurable and non-writable descriptor when the target's property is writable.
2. [[Delete]] should return `false` when the target has property and is not extensible.
3. [[DefineOwnProperty]] should return `true` for a non-writable input descriptor when the target's property is non-configurable and writable.

Shipping in SpiderMonkey since https://hg.mozilla.org/integration/autoland/rev/3a06bc818bc4 (version 69)
Shipping in V8 since https://chromium.googlesource.com/v8/v8.git/+/e846ad9fa5109428be50b1989314e0e4e7267919

* runtime/ProxyObject.cpp:
(JSC::ProxyObject::performInternalMethodGetOwnProperty): Add writability check.
(JSC::ProxyObject::performDelete): Add extensibility check.
(JSC::ProxyObject::performDefineOwnProperty): Add writability check.

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

10 months ago[CMake] CMAKE_SHARED_LINKER_FLAGS drops "-Wl,--no-undefined"
Hironori.Fujii@sony.com [Thu, 25 Jul 2019 02:04:41 +0000 (02:04 +0000)]
[CMake] CMAKE_SHARED_LINKER_FLAGS drops "-Wl,--no-undefined"
https://bugs.webkit.org/show_bug.cgi?id=200074

Patch by Fujii Hironori <fujii.hironori@gmail.com> on 2019-07-24
Reviewed by Michael Catanzaro.

.:

Although WebKitCompilerFlags.cmake adds "-Wl,--no-undefined" to
CMAKE_SHARED_LINKER_FLAGS, it wasn't effective because
OptionsCommon.cmake inadvertently override the value with
CMAKE_EXE_LINKER_FLAGS as:

> set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ...")

* Source/cmake/OptionsCommon.cmake: Use string(APPEND) to modify
CMAKE_*_LINKER_FLAGS variables to avoid typos.

Tools:

There was a latent issue. PluginTest::indicateTestFailure was
using WTF::sleep without linking WTF.

* DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
Added WebKit::WTF to WebKitTestNetscapePlugIn_LIBRARIES.

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

10 months ago[GTK][WPE][CMake] failing to build TestWebKitAPIInjectedBundle due to missing forward...
Hironori.Fujii@sony.com [Thu, 25 Jul 2019 02:02:48 +0000 (02:02 +0000)]
[GTK][WPE][CMake] failing to build TestWebKitAPIInjectedBundle due to missing forwarding headers
https://bugs.webkit.org/show_bug.cgi?id=200073

Patch by Fujii Hironori <fujii.hironori@gmail.com> on 2019-07-24
Reviewed by Michael Catanzaro.

* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/PlatformWPE.cmake:
Added add_dependencies(TestWebKitAPIInjectedBundle TestWebKitAPI-forwarding-headers).

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

10 months ago[webkitperl] runCommand doesn't work in Windows Perl
Hironori.Fujii@sony.com [Thu, 25 Jul 2019 02:00:37 +0000 (02:00 +0000)]
[webkitperl] runCommand doesn't work in Windows Perl
https://bugs.webkit.org/show_bug.cgi?id=199900

Reviewed by Don Olmstead.

runCommand was always failing implicit fork by using 'open' with
'-|' in Windows Perl. Explicitly specify the command to 'open' not
to do the implicit fork.

There is one more difference between Windows and Unix. 'open'
successes on Windows even for non existent command while it fails
on Unix. So, return the same error code on Unix as well as
Windows.

* Scripts/VCSUtils.pm: Specified the command to 'open'.
* Scripts/webkitperl/VCSUtils_unittest/runCommand.pl: 'echo'
command is not available on Windows. Use Perl ($^X) instead.

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

10 months agoDisable speculative loading if cache is not to be used for the load
youenn@apple.com [Thu, 25 Jul 2019 00:55:16 +0000 (00:55 +0000)]
Disable speculative loading if cache is not to be used for the load
https://bugs.webkit.org/show_bug.cgi?id=199644

Reviewed by Alex Christensen.

Source/WebKit:

When the page is reloaded, loads are instructed to not use the cache.
It is therefore unneeded to do speculative revalidation.
Allow speculative revalidation if the cache policy is either the default HTTP policy or
if policy is to refresh all cache data.
Covered by added test.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::cachePolicyValidForSpeculativeRevalidation):
(WebKit::NetworkCache::canRequestUseSpeculativeRevalidation):

LayoutTests:

* http/wpt/fetch/disable-speculative-for-reload-expected.txt: Added.
* http/wpt/fetch/disable-speculative-for-reload.html: Added.
* http/wpt/fetch/resources/iframe-with-image.py: Added.
(main):
* http/wpt/fetch/resources/image-load-count.py: Added.
(main):
* http/wpt/fetch/resources/image-load.py: Added.
(main):

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

10 months agoWeb Inspector: REGRESSION: Overlay: highlighting a ::before/::after shows the node...
drousso@apple.com [Thu, 25 Jul 2019 00:52:10 +0000 (00:52 +0000)]
Web Inspector: REGRESSION: Overlay: highlighting a ::before/::after shows the node info of the parent instead
https://bugs.webkit.org/show_bug.cgi?id=200051

Reviewed by Joseph Pecoraro.

When highlighting a pseudo-element, only use the parent node for selector information. All
rendering data should still come from the pseudo-element itself.

* inspector/InspectorOverlay.cpp:
(WebCore::drawShapeHighlight):
(WebCore::InspectorOverlay::drawElementTitle):

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

10 months agoSource/WebKit:
commit-queue@webkit.org [Thu, 25 Jul 2019 00:44:58 +0000 (00:44 +0000)]
Source/WebKit:
Allow Clients to Add Fields to the AutoFillContext Dictionary
https://bugs.webkit.org/show_bug.cgi?id=199326
rdar://problem/42816957

Patch by Priyanka Agarwal <pagarwal999@apple.com> on 2019-07-24
Reviewed by Wenson Hsieh.

* UIProcess/API/Cocoa/_WKInputDelegate.h:
Added function declaration for function which returns additional dictionary for autofillcontext

* UIProcess/ios/WKContentViewInteraction.h:
Created dictionary for additional autofillcontext

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):
Populating additional dictionary for autofillcontext

(-[WKContentView _autofillContext]):
Adding new dictionary to the returned autofillcontext

Tools:
Allow Clients to Add Fields to the AutoFillContext Dictionary.
https://bugs.webkit.org/show_bug.cgi?id=199326
rdar://problem/42816957

Patch by Priyanka Agarwal <pagarwal999@apple.com> on 2019-07-24
Reviewed by Wenson Hsieh.

* TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(TestWebKitAPI::TEST): Created a test to check that the auto fill context
is being properly populated with additional context dictionary.

* TestWebKitAPI/Tests/ios/TestInputDelegate.h:
* TestWebKitAPI/Tests/ios/TestInputDelegate.mm:
(-[TestInputDelegate setWebViewAdditionalContextForStrongPasswordAssistanceHandler:]): Setting the handler for the function
which will populate the additional autofill context dictionary.

(-[TestInputDelegate webViewAdditionalContextForStrongPasswordAssistanceHandler]): Returns the handler for the function which
populates the additional autofill context dictionary.

(-[TestInputDelegate _webViewAdditionalContextForStrongPasswordAssistance:]): Function which populates the additional autofill
context dictionary.

(-[TestInputDelegate setFocusRequiresStrongPasswordAssistanceHandler:]): Setting the handler for the function which checks if the
input field requires strong password work.

(-[TestInputDelegate focusRequiresStrongPasswordAssistanceHandler]): Returns the handler for the function which checks if the
input field requires strong password work.

(-[TestInputDelegate _webView:focusRequiresStrongPasswordAssistance:]): Function which checks if the input field requires strong
password work.

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

10 months agoWeb Inspector: REGRESSION: no context menu items work when context menu clicking...
drousso@apple.com [Thu, 25 Jul 2019 00:42:23 +0000 (00:42 +0000)]
Web Inspector: REGRESSION: no context menu items work when context menu clicking on "Add Breakpoint"
https://bugs.webkit.org/show_bug.cgi?id=199953

Reviewed by Joseph Pecoraro.

* UserInterface/Views/ContextMenuUtilities.js:
(WI.addMouseDownContextMenuHandlers): Added.
Create a helper function for managing elements that show a context menu on "mousedown".

* UserInterface/Base/SearchUtilities.js:
(WI.SearchUtilities.createSettingsButton):
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._populateCanvasElementButtonContextMenu): Added.
(WI.CanvasContentView.prototype._populateViewShaderButtonContextMenu): Added.
(WI.CanvasContentView.prototype._populateViewRecordingButtonContextMenu): Added.
(WI.CanvasContentView.prototype._handleCanvasElementButtonMouseDown): Deleted.
(WI.CanvasContentView.prototype._handleViewShaderButtonMouseDown): Deleted.
(WI.CanvasContentView.prototype._handleViewRecordingButtonMouseDown): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._populateCreateBreakpointContextMenu): Added.
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown): Deleted.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._populateResourceGroupingModeContextMenu): Added.
(WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeMouseDown): Deleted.
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown): Deleted.

* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.prototype._handleTabPickerTabContextMenu): Deleted.
* UserInterface/Views/LegacyTabBar.js:
(WI.LegacyTabBar):
(WI.LegacyTabBar.prototype._handleTabPickerTabContextMenu): Deleted.
Remove the "contextmenu" handler on the tab picker, as that's already used by the entire
tab bar to show/hide tabs.

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

10 months agoWeb Inspector: support `console.screenshot` with subclasses of CanvasRenderingContext
drousso@apple.com [Thu, 25 Jul 2019 00:21:34 +0000 (00:21 +0000)]
Web Inspector: support `console.screenshot` with subclasses of CanvasRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=199305

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/console/console-screenshot.html

* page/PageConsoleClient.cpp:
(WebCore::canvasRenderingContext):
(WebCore::PageConsoleClient::record):
(WebCore::PageConsoleClient::recordEnd):
(WebCore::PageConsoleClient::screenshot):

LayoutTests:

* inspector/console/console-screenshot.html:
* inspector/console/console-screenshot-expected.txt:

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

10 months agoRemove some unused code.
mark.lam@apple.com [Thu, 25 Jul 2019 00:10:51 +0000 (00:10 +0000)]
Remove some unused code.
https://bugs.webkit.org/show_bug.cgi?id=200101

Reviewed by Yusuke Suzuki.

* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::zap): Deleted.
* heap/MarkedBlock.h:
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::appendToMutatorMarkStack): Deleted.
* heap/SlotVisitor.h:

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

10 months agoRemove MediaPlayerPrivate::supportsMuting()
youenn@apple.com [Wed, 24 Jul 2019 23:51:24 +0000 (23:51 +0000)]
Remove MediaPlayerPrivate::supportsMuting()
https://bugs.webkit.org/show_bug.cgi?id=200005

Reviewed by Eric Carlson.

Remove no longer needed interface method.
No change of behavior.

* WebCore.order:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setVolume):
(WebCore::MediaPlayer::setMuted):
* platform/graphics/MediaPlayerPrivate.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:

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

10 months agoperformJITMemcpy should be PACed with a non-zero diversifier when passed and called...
mark.lam@apple.com [Wed, 24 Jul 2019 23:51:13 +0000 (23:51 +0000)]
performJITMemcpy should be PACed with a non-zero diversifier when passed and called via a pointer.
https://bugs.webkit.org/show_bug.cgi?id=200100
<rdar://problem/53474939>

Reviewed by Yusuke Suzuki.

* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::CopyFunction::CopyFunction):
(JSC::ARM64Assembler::CopyFunction::operator()):
- I choose to use ptrauth_auth_function() here instead of retagCodePtr() because
  retagCodePtr() would auth, assert, and re-pac the pointer.  This is needed in
  general because retagCodePtr() doesn't know that you will consume the pointer
  immediately (and therefore crash imminently if a failed auth is encountered).
  Since we know here that we will call with the auth'ed pointer immediately, we
  can skip the assert.

  This also has the benefit of letting Clang do a peephole optimization to emit
  a blrab instruction with the intended diversifier, instead of emitting multiple
  instructions to auth the pointer into a C function, and then using a blraaz to
  do a C function call.

(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
* runtime/JSCPtrTag.h:

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

10 months agoRegression(r247400): Unable to log into AIB Mobile Banking App
cdumez@apple.com [Wed, 24 Jul 2019 22:56:56 +0000 (22:56 +0000)]
Regression(r247400): Unable to log into AIB Mobile Banking App
https://bugs.webkit.org/show_bug.cgi?id=200094
<rdar://problem/52519818>

Reviewed by Brent Fulgham.

In r247400, a change was made to only set the 'app has universal sandbox access' flag
only when issueing the sandbox extension for / actually succeeded (it usually fails
in practice). Previously, AIB Mobile Banking app was relying on this behavior to
trigger a load for file:///login which is outside their container. However, now that
the 'app has universal sandbox access' flag is no longer set, it trips our security
checks and the load gets ignored.

To address the issue, apply only the 'app has universal sandbox access' flag fix with
a linked-on-after check.

* UIProcess/Cocoa/VersionChecks.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):

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

10 months agoDaring Fireball long press highlights are unnecessarily inflated due to false illegib...
timothy_horton@apple.com [Wed, 24 Jul 2019 22:36:13 +0000 (22:36 +0000)]
Daring Fireball long press highlights are unnecessarily inflated due to false illegibility
https://bugs.webkit.org/show_bug.cgi?id=200064

Reviewed by Geoff Garen.

Source/WebCore:

If we consider text illegible on the given estimated background color,
we bail from doing a tightly fitted selection-only TextIndicator and
instead just paint the page without modification into the indicator,
causing ugly overlap and an excessively inflated indicator.

Change the mechanism we use to determine illegibility to be based on
a standard, instead of a constant chosen by hand 13 years ago.

Test: fast/text-indicator/text-indicator-with-low-contrast-text.html

* platform/graphics/ColorUtilities.cpp:
(WebCore::luminance):
Fix a typo.

(WebCore::contrastRatio):
Add a function that computes the contrast ratio given two colors using
the formula from WCAG.

* platform/graphics/ColorUtilities.h:
* rendering/TextPaintStyle.cpp:
(WebCore::textColorIsLegibleAgainstBackgroundColor):
Make use of WCAG's minimum legible contrast ratio instead of an
arbitrary color difference cutoff for determining whether we consider
text legible. It seems sensible and also considers the text on DF readable
(which it seems to be to me!).

* testing/Internals.cpp:
(WebCore::Internals::TextIndicatorInfo::TextIndicatorInfo):
* testing/Internals.h:
* testing/Internals.idl:
Expose all of the text rects to Internals, not just the bounding rect.
Expose some more TextIndicator options to Internals so that we can
turn on the legibility mechanism.

LayoutTests:

* fast/text-indicator/text-indicator-with-low-contrast-text-expected.txt: Added.
* fast/text-indicator/text-indicator-with-low-contrast-text.html: Added.

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

10 months agoModule-enabled users of WKWebProcessPlugInFrame.h fail to build; duplicate declaration
timothy_horton@apple.com [Wed, 24 Jul 2019 21:44:32 +0000 (21:44 +0000)]
Module-enabled users of WKWebProcessPlugInFrame.h fail to build; duplicate declaration
https://bugs.webkit.org/show_bug.cgi?id=200095
<rdar://problem/53512407>

Reviewed by Wenson Hsieh.

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
Import <JavaScriptCore/JavaScriptCore.h> (the module header) instead of
<JavaScriptCore/JSContext.h> directly, otherwise we can end up getting
JSContext.h included twice, to the compiler's chagrin.

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

10 months agoWeb Inspector: print the target of `console.screenshot` last so the target is the...
drousso@apple.com [Wed, 24 Jul 2019 21:39:32 +0000 (21:39 +0000)]
Web Inspector: print the target of `console.screenshot` last so the target is the closest item to the image
https://bugs.webkit.org/show_bug.cgi?id=199308

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/ConsoleMessage.h:
(Inspector::ConsoleMessage::arguments const):

* inspector/ScriptArguments.h:
* inspector/ScriptArguments.cpp:
(Inspector::ScriptArguments::getFirstArgumentAsString const): Added.
(Inspector::ScriptArguments::getFirstArgumentAsString): Deleted.

Source/WebCore:

Right now, evaluating `console.screenshot(document, "test", 1);` will log a message to the
console with `#document`, `"test"`, and `1`, all on different lines (togglable by a
disclosure triangle) since `#document` isn't stringifiable.

The ideal situation would be to have `"test"` and `1` logged on the same line, and then have
`#document` be in a disclosure triangle. This way, you can "label" your images using
additional arguments (e.g. `console.screenshot(document.images[1], "second image");`), as
well as provide other data.

If the only argument was the target, it should print as if it was `console.log(target);`.

If there are no arguments, it should print the text "Viewport"` before the image.

Test: inspector/console/console-screenshot.html

* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::addMessage):
(WebCore::PageConsoleClient::screenshot):

Source/WebInspectorUI:

* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype.render):
(WI.ConsoleMessageView.prototype._appendMessageTextAndArguments):
(WI.ConsoleMessageView.prototype._handleContextMenu):
* UserInterface/Views/ConsoleMessageView.css:
(.console-image > .console-message-body > :matches(hr, img)): Added.
(.console-image > .console-message-body > hr): Added.
(.console-image > .console-message-body > img): Added.
(.console-log-level.console-image::before): Added.
(.console-message-body > .console-image): Deleted.
(.console-log-level.console-image-container::before): Deleted.
Allow `ConsoleMessage.MessageType.Image` to be an `ConsoleMessage.MessageLevel.Error`, and
print the message (and extra parameters) in that case.
Drive-by: reorganize the switch-case so all paths have the same `default` case.
* Localizations/en.lproj/localizedStrings.js:

LayoutTests:

* inspector/console/console-expected.txt:
* inspector/console/console-screenshot.html:
* inspector/console/console-screenshot-expected.txt:

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

10 months agoUnreviewed test gardening, land expectations for rdar://53324867.
ryanhaddad@apple.com [Wed, 24 Jul 2019 20:44:22 +0000 (20:44 +0000)]
Unreviewed test gardening, land expectations for rdar://53324867.

* platform/ios-12/fast/events/touch/ios/pointer-events-with-modifiers-expected.txt: Copied from LayoutTests/platform/ios/fast/events/touch/ios/pointer-events-with-modifiers-expected.txt.
* platform/ios/fast/events/touch/ios/pointer-events-with-modifiers-expected.txt:

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

10 months agoUnreviewed: Added missing expectation file for video_crash_empty_src.html
aboya@igalia.com [Wed, 24 Jul 2019 20:31:07 +0000 (20:31 +0000)]
Unreviewed: Added missing expectation file for video_crash_empty_src.html
https://bugs.webkit.org/show_bug.cgi?id=200081

* web-platform-tests/html/semantics/embedded-content/the-video-element/video_crash_empty_src-expected.txt: Added.

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

10 months agoCrash in WebContent process with custom schemes.
beidson@apple.com [Wed, 24 Jul 2019 20:28:31 +0000 (20:28 +0000)]
Crash in WebContent process with custom schemes.
<rdar://problem/52968793> and https://bugs.webkit.org/show_bug.cgi?id=200062

Reviewed by Andy Estes.

Almost everywhere in WebURLSchemeTaskProxy where we call processNextPendingTask() we first protect the task with a ref.
But not in didReceiveData.
So lets do that.

* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
(WebKit::WebURLSchemeTaskProxy::didReceiveData): Protect this.

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

10 months agoNull check CompletionHandler in WebPreviewLoaderClient::didReceivePassword
commit-queue@webkit.org [Wed, 24 Jul 2019 20:18:50 +0000 (20:18 +0000)]
Null check CompletionHandler in WebPreviewLoaderClient::didReceivePassword
https://bugs.webkit.org/show_bug.cgi?id=200080
<rdar://problem/37275772>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-24
Reviewed by Chris Dumez.

* WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:
(WebKit::WebPreviewLoaderClient::didReceivePassword):

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

10 months agoUnreviewed, update test expectations for Catalina.
ryanhaddad@apple.com [Wed, 24 Jul 2019 20:12:32 +0000 (20:12 +0000)]
Unreviewed, update test expectations for Catalina.

* platform/mac/TestExpectations:

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

10 months agoCrash under WebKit:WTF::Detail::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryS...
cdumez@apple.com [Wed, 24 Jul 2019 19:21:49 +0000 (19:21 +0000)]
Crash under WebKit:WTF::Detail::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking(WTF::CompletionHandler<void ()>&&)::$_32::operator()()::'lambda'(), void>::call
https://bugs.webkit.org/show_bug.cgi?id=200071
<rdar://problem/53335583>

Reviewed by Brent Fulgham and Youenn Fablet.

The WebResourceLoadStatisticsStore is a main thread object. In its destructor, it was dispatching
to the background queue to destroy the m_statisticsStore / m_persistentStorage data members, which
live on the background queue. It would then synchronously wait for the background queue to finish
destroying them. The idea was to guarantee that the ResourceLoadStatisticsMemoryStore and the
ResourceLoadStatisticsPersistentStorage would never outlive the WebResourceLoadStatisticsStore,
given that they keep a raw pointer back to the WebResourceLoadStatisticsStore (via m_store data
member).

The issue is that *while* the WebResourceLoadStatisticsStore destructor is running on the main
thread, the background queue may be running code in ResourceLoadStatisticsMemoryStore or
ResourceLoadStatisticsPersistentStorage which refs the WebResourceLoadStatisticsStore, even
though its ref count has already reached 0. It is actually a common pattern in
ResourceLoadStatisticsMemoryStore to call RunLoop::main().dispatch() and ref their m_store in
the lambda, so that they can interact with the WebResourceLoadStatisticsStore.

To address the issue, we now destroy m_statisticsStore / m_persistentStorage *before* the
WebResourceLoadStatisticsStore destructor runs. The NetworkSession destructor now calls
WebResourceLoadStatisticsStore::didDestroyNetworkSession() which takes care of destroying
m_statisticsStore / m_persistentStorage on the background queue, synchronously. The
WebResourceLoadStatisticsStore destructor will only run later, once all remaining references
to it are gone.

* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::didDestroyNetworkSession):
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::~NetworkSession):

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

10 months ago[MSE] Reenqueue after removeCodedFrames()
aboya@igalia.com [Wed, 24 Jul 2019 18:13:05 +0000 (18:13 +0000)]
[MSE] Reenqueue after removeCodedFrames()
https://bugs.webkit.org/show_bug.cgi?id=199749

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Before this patch, SourceBuffer::removeCodedFrames() did not trigger
an immediate reenqueue, but rather just set the `needsReenqueuing`
flag, deferring it for the next append... but there may not be another
append! In that case, the removed frames would still wrongly play.

This is the case for instance in tests where a single long media
append is done and then "cropped" with SourceBuffer.erase().

Test: media/media-source/media-source-erase-after-last-append.html

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

LayoutTests:

Added a test that checks that when an .erase() is performed after the
last append the erased frames are indeed not played.

* media/media-source/media-source-erase-after-last-append-expected.txt: Added.
* media/media-source/media-source-erase-after-last-append.html: Added.

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

10 months agoSYS___pthread_markcancel is sometimes used by libwebrtc
youenn@apple.com [Wed, 24 Jul 2019 18:08:31 +0000 (18:08 +0000)]
SYS___pthread_markcancel is sometimes used by libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=200087
<rdar://problem/53408606>

Reviewed by Brent Fulgham.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
Whitelist this unix-call within WebProcess as libwebrtc uses it.

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

10 months agorun-javascriptcore-tests won't report test results for testmasm, testair, testb3...
commit-queue@webkit.org [Wed, 24 Jul 2019 18:07:01 +0000 (18:07 +0000)]
run-javascriptcore-tests won't report test results for testmasm, testair, testb3, testdfg and test api
https://bugs.webkit.org/show_bug.cgi?id=199489

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-07-24
Reviewed by Aakash Jain.

* BuildSlaveSupport/build.webkit.org-config/steps.py:
(RunJavaScriptCoreTests.start): Skip run jsc test binaries for mips, armv7, aarch64.
(RunJavaScriptCoreTests.countFailures): Pick up the test binaires failure to total failures count
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
* Scripts/run-javascriptcore-tests: The script now failed wether the run-jsc-stress-tests failed or test binaries failed.
(runTest): Record test binary failure
(reportTestFailures): Report test binary failure
(runJSCStressTests):
* Scripts/webkitpy/common/config/ports.py: Skip run jsc test binaries for those need to run remotely
(JscOnlyPort.build_jsc_command):
(JscOnlyPort):
(JscOnlyPort.run_javascriptcore_tests_command):
* Scripts/webkitpy/common/config/ports_unittest.py:
(DeprecatedPortTest.test_jsconly_port):

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

10 months agoASSERTION FAILED: settings().textAutosizingEnabled() && settings().textAutosizingUses...
zalan@apple.com [Wed, 24 Jul 2019 18:04:20 +0000 (18:04 +0000)]
ASSERTION FAILED: settings().textAutosizingEnabled() && settings().textAutosizingUsesIdempotentMode() in WebCore::Page::recomputeTextAutoSizingInAllFrames()
https://bugs.webkit.org/show_bug.cgi?id=200079
<rdar://problem/53474325>

Reviewed by Wenson Hsieh.

Source/WebKit:

Do not reset idempotent values when the text autosizing is off.

* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetTextAutosizingUsesIdempotentMode):
(WKPreferencesGetTextAutosizingUsesIdempotentMode):
* UIProcess/API/C/WKPreferencesRef.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded):

Tools:

Reset textAutosizingUsesIdempotentMode when transitioning to a new test.

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

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

10 months agoAdd per-document autoplay quirk for netflix.com.
jer.noble@apple.com [Wed, 24 Jul 2019 17:36:44 +0000 (17:36 +0000)]
Add per-document autoplay quirk for netflix.com.
https://bugs.webkit.org/show_bug.cgi?id=200058

Reviewed by Eric Carlson.

Opt netflix.com into the desktop-style per-document autoplay quirk.

* page/Quirks.cpp:
(WebCore::Quirks::needsPerDocumentAutoplayBehavior const):

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

10 months ago[GStreamer] Don't crash with empty video src
aboya@igalia.com [Wed, 24 Jul 2019 17:34:22 +0000 (17:34 +0000)]
[GStreamer] Don't crash with empty video src
https://bugs.webkit.org/show_bug.cgi?id=200081

LayoutTests/imported/w3c:

Reviewed by Philippe Normand.

* web-platform-tests/html/semantics/embedded-content/the-video-element/video_crash_empty_src.html: Added.

Source/WebCore:

When a <video> element is set to load empty or about:blank, a player is still
created, but no pipeline is loaded. This patch fixes some assertion errors that
manifested in that case.

Reviewed by Philippe Normand.

Test: imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/video_crash_empty_src.html

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::platformDuration const):
(WebCore::MediaPlayerPrivateGStreamer::paused const):

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

10 months agoUse 12 digits to show a git commit.
dewei_zhu@apple.com [Wed, 24 Jul 2019 17:10:28 +0000 (17:10 +0000)]
Use 12 digits to show a git commit.
https://bugs.webkit.org/show_bug.cgi?id=200067

Reviewed by Ryosuke Niwa.

Use 12 digits to show a git commit to reasonably descrease commit prefix collision probability
for repository with large amount of commits.

* public/v3/models/commit-log.js: Increase digits from 8 to 12 for git SHA.
(CommitLog.prototype.label):
(CommitLog.prototype.diff):
* unit-tests/commit-log-tests.js: Updated unit tests.
* unit-tests/commit-set-tests.js: Updated unit tests.

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

10 months agoUnreviewed, rolling out r247766.
cdumez@apple.com [Wed, 24 Jul 2019 17:10:19 +0000 (17:10 +0000)]
Unreviewed, rolling out r247766.

Caused an API test failure

Reverted changeset:

"Crash under
WebKit:WTF::Detail::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking(WTF::CompletionHandler<void
()>&&)::$_32::operator()()::'lambda'(), void>::call"
https://bugs.webkit.org/show_bug.cgi?id=200071
https://trac.webkit.org/changeset/247766

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

10 months agoRemove test expectation for fast/events/ios/keydown-keyup-keypress-keys-in-non-editab...
russell_e@apple.com [Wed, 24 Jul 2019 16:27:43 +0000 (16:27 +0000)]
Remove test expectation for fast/events/ios/keydown-keyup-keypress-keys-in-non-editable-using-chinese-keyboard.html
<rdar://problem/52608620>

Unreviewed Test Gardening.

* platform/ios/TestExpectations:

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

10 months agoAdd cheat sheet comment for HashMap/Set iterator/AddResult
keith_miller@apple.com [Wed, 24 Jul 2019 04:29:14 +0000 (04:29 +0000)]
Add cheat sheet comment for HashMap/Set iterator/AddResult
https://bugs.webkit.org/show_bug.cgi?id=200061

Reviewed by Saam Barati.

* wtf/HashMap.h:
* wtf/HashSet.h:

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

10 months agoCrash under WebKit:WTF::Detail::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryS...
cdumez@apple.com [Wed, 24 Jul 2019 04:29:09 +0000 (04:29 +0000)]
Crash under WebKit:WTF::Detail::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking(WTF::CompletionHandler<void ()>&&)::$_32::operator()()::'lambda'(), void>::call
https://bugs.webkit.org/show_bug.cgi?id=200071
<rdar://problem/53335583>

Reviewed by Brent Fulgham and Youenn Fablet.

The WebResourceLoadStatisticsStore is a main thread object. In its destructor, it was dispatching
to the background queue to destroy the m_statisticsStore / m_persistentStorage data members, which
live on the background queue. It would then synchronously wait for the background queue to finish
destroying them. The idea was to guarantee that the ResourceLoadStatisticsMemoryStore and the
ResourceLoadStatisticsPersistentStorage would never outlive the WebResourceLoadStatisticsStore,
given that they keep a raw pointer back to the WebResourceLoadStatisticsStore (via m_store data
member).

The issue is that *while* the WebResourceLoadStatisticsStore destructor is running on the main
thread, the background queue may be running code in ResourceLoadStatisticsMemoryStore or
ResourceLoadStatisticsPersistentStorage which refs the WebResourceLoadStatisticsStore, even
though its ref count has already reached 0. It is actually a common pattern in
ResourceLoadStatisticsMemoryStore to call RunLoop::main().dispatch() and ref their m_store in
the lambda, so that they can interact with the WebResourceLoadStatisticsStore.

To address the issue, we now destroy m_statisticsStore / m_persistentStorage *before* the
WebResourceLoadStatisticsStore destructor runs. The NetworkSession destructor now calls
WebResourceLoadStatisticsStore::didDestroyNetworkSession() which takes care of destroying
m_statisticsStore / m_persistentStorage on the background queue, synchronously. The
WebResourceLoadStatisticsStore destructor will only run later, once all remaining references
to it are gone.

* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::didDestroyNetworkSession):
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::~NetworkSession):

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

10 months ago[WebGPU] Implement errors for GPURenderPipeline creation
justin_fan@apple.com [Wed, 24 Jul 2019 01:42:37 +0000 (01:42 +0000)]
[WebGPU] Implement errors for GPURenderPipeline creation
https://bugs.webkit.org/show_bug.cgi?id=200046

Reviewed by Myles C. Maxfield.

Source/WebCore:

Replacing error logging in GPURenderPipeline creation with GPUError generation.
Update GPUErrorScopes to re-use an error message prefix for less boiler-plate.

Test: webgpu/render-pipeline-errors.html

* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createRenderPipeline const):
* Modules/webgpu/WebGPURenderPipelineDescriptor.cpp:
(WebCore::WebGPURenderPipelineDescriptor::tryCreateGPURenderPipelineDescriptor const):
* Modules/webgpu/WebGPURenderPipelineDescriptor.h:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateRenderPipeline const):
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/GPUErrorScopes.cpp:
(WebCore::GPUErrorScopes::generatePrefixedError):
* platform/graphics/gpu/GPUErrorScopes.h:
(WebCore::GPUErrorScopes::setErrorPrefix):
* platform/graphics/gpu/GPURenderPipeline.h:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::tryCreateMtlDepthStencilState):
(WebCore::trySetVertexInput):
(WebCore::trySetColorStates):
(WebCore::trySetMetalFunctions):
(WebCore::trySetFunctions):
(WebCore::convertRenderPipelineDescriptor):
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::GPURenderPipeline::tryCreate):
(WebCore::GPURenderPipeline::GPURenderPipeline):

LayoutTests:

Add test to cover reproducible render pipeline creation errors.

* webgpu/js/webgpu-functions.js:
(runTestsWithDevice):
* webgpu/render-pipeline-errors-expected.txt: Added.
* webgpu/render-pipeline-errors.html: Added.

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

10 months ago[webkitperl] prepare-ChangeLog_unittest/parser_unittests.pl is failing on Windows...
Hironori.Fujii@sony.com [Wed, 24 Jul 2019 01:33:44 +0000 (01:33 +0000)]
[webkitperl] prepare-ChangeLog_unittest/parser_unittests.pl is failing on Windows Perl
https://bugs.webkit.org/show_bug.cgi?id=199927

Reviewed by Alex Christensen.

convertAbsolutepathToWebKitPath was failing to convert paths on
Windows Perl due to path separators mismatch.

Renamed convertAbsolutepathToWebKitPath to
convertAbsolutePathToRelativeUnixPath, and changed it to replace
paths to relative Unix paths.

* Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
(convertAbsolutePathToRelativeUnixPath): Added.
(convertAbsolutepathToWebKitPath): Deleted.

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

10 months agoFix iOS API test after r247759
achristensen@apple.com [Wed, 24 Jul 2019 00:48:14 +0000 (00:48 +0000)]
Fix iOS API test after r247759
https://bugs.webkit.org/show_bug.cgi?id=200045

* TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:
(TEST):
In the iOS simulator, the WebProcess was being started before we were setting the value on the WKProcessPool.
To fix this, set the value on the WKProcessPool before making the WKWebView.  This makes the test always pass on Mac and iOS.

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

10 months agoRemove rest of NavigatorContentUtils support
krollin@apple.com [Wed, 24 Jul 2019 00:24:20 +0000 (00:24 +0000)]
Remove rest of NavigatorContentUtils support
https://bugs.webkit.org/show_bug.cgi?id=200052
<rdar://problem/53467357>

Reviewed by Alex Christensen.

Bug 196070 removes most of the support for the never-used
NavigatorContentUtils facility. However, there were still a couple of
left-over references after that change. This patch sweeps those up.

PerformanceTests:

* StitchMarker/wtf/FeatureDefines.h:

Source/WTF:

* wtf/FeatureDefines.h:

Tools:

* Scripts/webkitperl/FeatureList.pm:

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

10 months agoWeb Inspector: Styles: Command-X should cut selected properties
nvasilyev@apple.com [Wed, 24 Jul 2019 00:20:39 +0000 (00:20 +0000)]
Web Inspector: Styles: Command-X should cut selected properties
https://bugs.webkit.org/show_bug.cgi?id=199341

Reviewed by Devin Rousso.

Implement cutting of selected CSS properties in the style editor.
Unify cutting and copying logic wherever possible.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.placeTextCaretInFocusedProperty): Added.
Cut/copy events could only fire on SpreadsheetCSSStyleDeclarationEditor element if it
has selection inside of it. Placing text caret at the beginning of the focused property
ensures that.

(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyCopy): Deleted.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._handleKeyDown):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._copySelectedProperties): Added.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._removeSelectedProperties): Added.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._stopSelection):
* UserInterface/Views/SpreadsheetStyleProperty.js:
Remove old copying logic.

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

10 months agoMove javaScriptConfigurationDirectory SPI from _WKProcessPoolConfiguration to WKProce...
achristensen@apple.com [Wed, 24 Jul 2019 00:08:06 +0000 (00:08 +0000)]
Move javaScriptConfigurationDirectory SPI from _WKProcessPoolConfiguration to WKProcessPoolPrivate to make it runtime switchable
https://bugs.webkit.org/show_bug.cgi?id=200045

Reviewed by Mark Lam.

Source/WebKit:

This allows me to maintain the status quo in Safari.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _javaScriptConfigurationDirectory]):
(-[WKProcessPool _setJavaScriptConfigurationDirectory:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration javaScriptConfigurationDirectory]): Deleted.
(-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]): Deleted.
* UIProcess/WebProcessPool.cpp:
(WebKit::legacyWebsiteDataStoreConfiguration):
(WebKit::WebProcessPool::sendWebProcessDataStoreParameters):
* UIProcess/WebProcessPool.h:

Tools:

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

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

10 months agoImageDecoderDirect2D::hotSpot() should return WTF::nullopt instead of default constru...
annulen@yandex.ru [Wed, 24 Jul 2019 00:04:47 +0000 (00:04 +0000)]
ImageDecoderDirect2D::hotSpot() should return WTF::nullopt instead of default constructed value
https://bugs.webkit.org/show_bug.cgi?id=200055

Reviewed by Brent Fulgham.

* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::hotSpot const):

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

10 months agoUnreviewed, rolling out r247745.
russell_e@apple.com [Wed, 24 Jul 2019 00:03:10 +0000 (00:03 +0000)]
Unreviewed, rolling out r247745.

This broke API test
TestWebKitAPI.WKProcessPool.JavaScriptConfiguration as
indicated by EWS

Reverted changeset:

"Move javaScriptConfigurationDirectory SPI from
_WKProcessPoolConfiguration to WKProcessPoolPrivate to make it
runtime switchable"
https://bugs.webkit.org/show_bug.cgi?id=200045
https://trac.webkit.org/changeset/247745

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

10 months agoLong press hint has half blue shape in Feedly.com
timothy_horton@apple.com [Wed, 24 Jul 2019 00:02:05 +0000 (00:02 +0000)]
Long press hint has half blue shape in Feedly.com
https://bugs.webkit.org/show_bug.cgi?id=200053
<rdar://problem/53323369>

Reviewed by Simon Fraser.

No new tests, because TextIndicator snapshots are not yet testable.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintForegroundForFragments):
Paint ChildBlockBackgrounds when painting selection AND backgrounds;
only exclude it when doing a selection-only paint.

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

10 months agoAX: CrashTracer: com.apple.WebKit.WebContent at WebKit: WebKit::WebSpeechSynthesisCli...
cfleizach@apple.com [Tue, 23 Jul 2019 23:24:58 +0000 (23:24 +0000)]
AX: CrashTracer: com.apple.WebKit.WebContent at WebKit: WebKit::WebSpeechSynthesisClient::speak
https://bugs.webkit.org/show_bug.cgi?id=199988

Reviewed by Per Arne Vollan.

Source/WebCore:

Implement the reset state to cancel current speech jobs.

* Modules/speech/SpeechSynthesis.cpp:
(WebCore::SpeechSynthesis::startSpeakingImmediately):
(WebCore::SpeechSynthesis::cancel):
* platform/PlatformSpeechSynthesizer.h:
* platform/ios/PlatformSpeechSynthesizerIOS.mm:
(WebCore::PlatformSpeechSynthesizer::resetState):
* platform/mac/PlatformSpeechSynthesizerMac.mm:
(WebCore::PlatformSpeechSynthesizer::resetState):

Source/WebKit:

Improvements to WebSpeechSynthesis to avoid crashing and improve correctness.
- Reset and cancel speech jobs on page close or reload (otherwise the synthesizer keeps talking after your page is gone)
- Have a separate speech finish callback mechanism, use the start speaking callback when the synthesizer tells us.
- Move an assert on utterance state to only apply when we use the in process synthesizer.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::didStartSpeaking):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reload):
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::resetSpeechSynthesizer):
(WebKit::WebPageProxy::speechSynthesisSetFinishedCallback):
(WebKit::WebPageProxy::speechSynthesisSpeak):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp:
(WebKit::WebSpeechSynthesisClient::speak):

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

10 months agoEnable HAVE_APP_LINKS_WITH_ISENABLED for entire iOS family
krollin@apple.com [Tue, 23 Jul 2019 23:01:26 +0000 (23:01 +0000)]
Enable HAVE_APP_LINKS_WITH_ISENABLED for entire iOS family
https://bugs.webkit.org/show_bug.cgi?id=200040
<rdar://problem/53457670>

Reviewed by Tim Horton.

This feature was enabled for just iOS, but should be enabled for tvOS
and watchOS, too.

* wtf/Platform.h:

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

10 months agoGet rid of unnecessary callback aggregators in WebResourceLoadStatisticsStore
cdumez@apple.com [Tue, 23 Jul 2019 21:56:34 +0000 (21:56 +0000)]
Get rid of unnecessary callback aggregators in WebResourceLoadStatisticsStore
https://bugs.webkit.org/show_bug.cgi?id=200042

Reviewed by Brent Fulgham.

Only 1 asynchronous function is called so there is nothing to "aggregate".

* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdate):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdateForDomains):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearBlockingStateForDomains):

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

10 months agoWeb Inspector: Display "Resource has no content" for about:blank iframes instead...
nvasilyev@apple.com [Tue, 23 Jul 2019 21:50:59 +0000 (21:50 +0000)]
Web Inspector: Display "Resource has no content" for about:blank iframes instead of an error
https://bugs.webkit.org/show_bug.cgi?id=198029

Reviewed by Devin Rousso.

Display "about:blank" in the middle of the content view when selecting "about:blank" resources.
Previoulsly, we showed a misleading "An error occurred trying to load the resource" error
message.

* UserInterface/Models/CSSStyleSheet.js:
(WI.CSSStyleSheet.prototype.requestContentFromBackend):
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.requestContentFromBackend):
* UserInterface/Models/Script.js:
(WI.Script.prototype.requestContentFromBackend):
* UserInterface/Models/SourceCode.js:
(WI.SourceCode.generateSpecialContentForURL):
(WI.SourceCode.prototype._processContent):
(WI.SourceCode):
* UserInterface/Views/ResourceContentView.js:
(WI.ResourceContentView.prototype._contentAvailable):

* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._contentAvailable):
(WI.SourceCodeTextEditor.prototype._showMessage):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView.prototype._contentDidPopulate):
Display empty text editor when it has no content instead of "Resource has no content" message.

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

10 months ago[iOS] Tapping the search field on a search results page on zillow.com shows and immed...
zalan@apple.com [Tue, 23 Jul 2019 21:49:00 +0000 (21:49 +0000)]
[iOS] Tapping the search field on a search results page on zillow.com shows and immediately dismisses the keyboard
https://bugs.webkit.org/show_bug.cgi?id=200044
<rdar://problem/53103732>

Reviewed by Wenson Hsieh.

Source/WebCore:

1. The keyboard gets dismissed as the result of scroll event.
2. The (horizontal)scroll event is initiated by WebKit as we try to re-center the content.
3. The content gets off-centered as the result of the newly constructed drop-down menu which slightly sticks out of the document to the right (layout overflows).

It works with shipping version of iOS because _zoomToFocusRect operates on stale viewport information (see r244494 for the progression).
This patch applies a site specific quirk to restore shipping behavior.

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

Source/WebKit:

* Shared/FocusedElementInformation.cpp:
(WebKit::FocusedElementInformation::encode const):
(WebKit::FocusedElementInformation::decode):
* Shared/FocusedElementInformation.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidBlur]):
(-[WKContentView _shouldAvoidScrollingWhenFocusedContentIsVisible]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getFocusedElementInformation):

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

10 months agoMove javaScriptConfigurationDirectory SPI from _WKProcessPoolConfiguration to WKProce...
achristensen@apple.com [Tue, 23 Jul 2019 21:05:00 +0000 (21:05 +0000)]
Move javaScriptConfigurationDirectory SPI from _WKProcessPoolConfiguration to WKProcessPoolPrivate to make it runtime switchable
https://bugs.webkit.org/show_bug.cgi?id=200045

Reviewed by Mark Lam.

Source/WebKit:

This allows me to maintain the status quo in Safari.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _javaScriptConfigurationDirectory]):
(-[WKProcessPool _setJavaScriptConfigurationDirectory:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration javaScriptConfigurationDirectory]): Deleted.
(-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]): Deleted.
* UIProcess/WebProcessPool.cpp:
(WebKit::legacyWebsiteDataStoreConfiguration):
(WebKit::WebProcessPool::sendWebProcessDataStoreParameters):
* UIProcess/WebProcessPool.h:

Tools:

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

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

10 months agoCanvasRenderingContext2D.setTransfrom() reads only the aliases attributes of DOMMatri...
commit-queue@webkit.org [Tue, 23 Jul 2019 20:39:25 +0000 (20:39 +0000)]
CanvasRenderingContext2D.setTransfrom() reads only the aliases attributes of DOMMatrix2DInit
https://bugs.webkit.org/show_bug.cgi?id=199850

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

Source/WebCore:

The validateAndFixup step of DOMMatrix2DInit sets the matrix attributes
(m** fields) from the aliases attributes (a, b, c, d, e, f) if the former
ones do not exist and the later ones exist. See
https://www.w3.org/TR/geometry-1/#dommatrixinit-dictionary and
DOMMatrixReadOnly::validateAndFixup(DOMMatrix2DInit& init).

Since CanvasRenderingContext2DBase::setTransform() validates and fixes
the input DOMMatrix2DInit, it should rely on matrix attributes.

Test: fast/canvas/setTransfrom-aliases-transform.html

* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::setTransform):

LayoutTests:

* fast/canvas/setTransfrom-aliases-transform-expected.html: Added.
* fast/canvas/setTransfrom-aliases-transform.html: Added.

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

10 months agoFix crashes in ScrollingStateNode::insertChild()
simon.fraser@apple.com [Tue, 23 Jul 2019 19:50:17 +0000 (19:50 +0000)]
Fix crashes in ScrollingStateNode::insertChild()
https://bugs.webkit.org/show_bug.cgi?id=200023
rdar://problem/53265378

Reviewed by Darin Adler.

Crash data suggest that ScrollingStateNode::insertChild() can be passed an index that
is larger than the size of the vector, causing crashes.

Fix defensively by falling back to append() if the passed index is equal to or larger
than the size of the children vector.

* page/scrolling/ScrollingStateNode.cpp:
(WebCore::ScrollingStateNode::insertChild):

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

10 months agoAdd SPI for setting media cache and key location on _WKWebsiteDataStoreConfiguration
achristensen@apple.com [Tue, 23 Jul 2019 19:32:48 +0000 (19:32 +0000)]
Add SPI for setting media cache and key location on _WKWebsiteDataStoreConfiguration
https://bugs.webkit.org/show_bug.cgi?id=199972

Reviewed by Jer Noble.

Source/WebKit:

This is a step towards removing WebsiteDataStore::legacyDefaultDataStoreConfiguration
I added a unit test for the media cache location,
but the media key location can't reasonably be unit tested in an open source project.

* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _initWithConfiguration:]):
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration mediaCacheDirectory]):
(-[_WKWebsiteDataStoreConfiguration setMediaCacheDirectory:]):
(-[_WKWebsiteDataStoreConfiguration mediaKeysStorageDirectory]):
(-[_WKWebsiteDataStoreConfiguration setMediaKeysStorageDirectory:]):

Tools:

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

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

10 months agoLong press hint of AirPods buy buttons are tall and narrow during animation
timothy_horton@apple.com [Tue, 23 Jul 2019 19:06:30 +0000 (19:06 +0000)]
Long press hint of AirPods buy buttons are tall and narrow during animation
https://bugs.webkit.org/show_bug.cgi?id=200036
<rdar://problem/53145697>

Reviewed by Wenson Hsieh.

Source/WebCore:

New test: fast/text-indicator/text-indicator-with-tiny-child.html

* dom/Range.cpp:
(WebCore::Range::borderAndTextRects const):
* dom/Range.h:
Add a BoundingRectBehavior that ignores 1x1 and smaller rects.

* page/TextIndicator.cpp:
(WebCore::absoluteBoundingRectForRange):
Enable IgnoreTinyRects.

LayoutTests:

* fast/text-indicator/text-indicator-with-tiny-child-expected.txt: Added.
* fast/text-indicator/text-indicator-with-tiny-child.html: Added.

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

10 months agoSometimes we miss removable CheckInBounds
justin_michaud@apple.com [Tue, 23 Jul 2019 17:24:13 +0000 (17:24 +0000)]
Sometimes we miss removable CheckInBounds
https://bugs.webkit.org/show_bug.cgi?id=200018

Reviewed by Saam Barati.

JSTests:

* microbenchmarks/typed-array-sum.js: Added.
(doTest):

Source/JavaScriptCore:

We failed to remove the CheckInBounds bounds because we did not see that the index was nonnegative. This is because we do not see the relationship between the two
separate zero constants that appear in the IR for the given test case. This patch re-adds the hack to de-duplicate m_zero that was removed in
<https://trac.webkit.org/changeset/241228/webkit>.

* dfg/DFGIntegerRangeOptimizationPhase.cpp:

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

10 months ago[WTF] Add DataMutex and MainThreadData wrappers
aboya@igalia.com [Tue, 23 Jul 2019 14:51:29 +0000 (14:51 +0000)]
[WTF] Add DataMutex and MainThreadData wrappers
https://bugs.webkit.org/show_bug.cgi?id=199831

Reviewed by Alex Christensen.

Source/WTF:

This patch adds two new wrapper classes:

DataMutex<T> stores an instance of T in a private member along with a
mutex. In order to use its fields, users need to instantiate a
DataMutex<T>::LockedWrapper instance in the stack. This class uses
RAII to lock and unlock the mutex in construction and destruction
respectively, and by using the arrow operator lets the user access T's
members.

This way, DataMutex<T> prevents most instances of accidental access to
data fields that should only be read and modified in an atomic matter.

Still, both the Lock and the LockHolder are exposed once the user has
taken the lock so that special cases such as waiting for a condition
variable or performing an early unlock are doable.

MainThreadData<T> is another wrapper class, in this case for data
fields that should only be accessed from the main thread. In this
case, it works similar to a smart pointer, except that (1) there is no
actual memory indirection, T is stored directly inside
MainThreadData<T> and (2) attempts to use the -> or * operator have an
isMainThread() assertion.

Together, these two wrapper classes make it easier to write
multi-threaded code in a safer, more self-documented way by letting
the author group data into structures that have certain access safety
requirements.

These structures were originally part of the new GStreamer
WebKitMediaSrc rework patch: https://bugs.webkit.org/show_bug.cgi?id=199719

* wtf/CMakeLists.txt:
* wtf/DataMutex.h: Added.
(WTF::DataMutex::DataMutex):
(WTF::DataMutex::LockedWrapper::LockedWrapper):
(WTF::DataMutex::LockedWrapper::operator->):
(WTF::DataMutex::LockedWrapper::operator*):
(WTF::DataMutex::LockedWrapper::mutex):
(WTF::DataMutex::LockedWrapper::lockHolder):
* wtf/MainThreadData.h: Added.
(WTF::MainThreadData::MainThreadData):
(WTF::MainThreadData::operator->):
(WTF::MainThreadData::operator*):

Tools:

Added a very simple test that checks that DataMutex<T> indeed takes
the lock and indeed holds data.

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/Tests/WTF/DataMutex.cpp: Added.
(TestWebKitAPI::TEST):

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

10 months ago[macOS 10.15] Web process crashes when attempting to show the font panel via Font...
wenson_hsieh@apple.com [Tue, 23 Jul 2019 14:47:37 +0000 (14:47 +0000)]
[macOS 10.15] Web process crashes when attempting to show the font panel via Font > Show Fonts
https://bugs.webkit.org/show_bug.cgi?id=200021
<rdar://problem/53301325>

Reviewed by Ryosuke Niwa.

Source/WebCore:

In macOS 10.15, attempting to access ~/Library/FontCollections/ from the web process causes a Sandbox violation
and a subsequent crash. This can be triggered by trying to show the font panel via Font > Show Fonts in the
context menu after right clicking.

In the (near) future, we should fix this by moving logic to show the font panel, color panel and styles panel
from the Editor in the web process to the UI process in WebKit2. However, for the time being, we can just work
around this by adding a new EditorClient hook to determine whether to allow the font panel to show; this returns
true in the legacy macOS WebKit port, and false everywhere else.

Test: editing/mac/style/do-not-crash-when-showing-font-panel.html

* editing/mac/EditorMac.mm:
(WebCore::Editor::showFontPanel):
* loader/EmptyClients.cpp:
* page/EditorClient.h:

Source/WebKit:

Always return false from canShowFontPanel in WebKit2.

* WebProcess/WebCoreSupport/WebEditorClient.h:

Source/WebKitLegacy/mac:

Implement a new editing client hook. In WebKit1, this always returns true on macOS and false on iOS.

* WebCoreSupport/WebEditorClient.h:

Source/WebKitLegacy/win:

Implement a new editing client hook.

* WebCoreSupport/WebEditorClient.h:

Tools:

Add support for grabbing the child menu items of a context menu item.

* WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
(WTR::getMenuItemChildrenCallback):

LayoutTests:

Add a new layout test to verify that attempting to show the font panel doesn't crash the web process in WebKit2.
This test is skipped in WebKit1, since EventSender::contextClick() in WebKit1 only returns an array of strings
corresponding to the titles of each menu item.

* editing/mac/style/do-not-crash-when-showing-font-panel-expected.txt: Added.
* editing/mac/style/do-not-crash-when-showing-font-panel.html: Added.
* platform/mac-wk1/TestExpectations:

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

10 months agoUnreviewed. Update OptionsGTK.cmake and NEWS for 2.25.3 release
carlosgc@webkit.org [Tue, 23 Jul 2019 09:09:18 +0000 (09:09 +0000)]
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.3 release

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers

Source/WebKit:

* gtk/NEWS: Add release notes for 2.25.3.

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

10 months agoWebKit should strip away system font names from the pasted content
rniwa@webkit.org [Tue, 23 Jul 2019 07:21:29 +0000 (07:21 +0000)]
WebKit should strip away system font names from the pasted content
https://bugs.webkit.org/show_bug.cgi?id=199975
<rdar://problem/53336353>

Reviewed by Darin Adler.

Source/WebCore:

Cocoa HTML Writer sometimes generate system font names such as ".AppleSystemUIFont", ".SFUI-Regular", and ".SF UI Mono".
We need to strip away these font names upon paste to avoid these font names falling back to Times New Roman.

Added the code to strip these font names away in EditingStyle::mergeStyleFromRulesForSerialization, which is used by
StylizedMarkupAccumulator to generate HTML during copy. This works because WebContentReader::readWebArchive invokes
sanitizeMarkupWithArchive which inserts the pasteboard content into a temporary document then re-serializes back to HTML
using StylizedMarkupAccumulator before the actual pasting happens.

This approach has a few benefits over stripping away these font names in ReplaceSelectionCommand:

1. It would only affect clients that opts-in to copy & paste sanitization. e.g. it won't affect legacy WebKit clients
and those that opt out of pasteboard content sanitization.

2. It preserves font names such as ".SF Blah" that a website may insert as some kind of house keeping purposes if ever.
While we don't have any evidence that there is any such a website but it's a real risk nonetheless. The copy side fix would
only affect cross-site and cross-app pasting, which is rare and less likely to affect real user scenarios.

3. It avoids exposing bogus .Apple* or .SF* font names to websites that directly use event.clipboardData.getData.
Indeed stripping away bogus markup like this is one of the key features / benefit of using copy & paste sanitization.

Test: editing/pasteboard/paste-cocoa-writer-markup-with-system-fonts.html

* editing/EditingStyle.cpp:
(WebCore::usesForbiddenSystemFontAsOnlyFontFamilyName): Added.
(WebCore::EditingStyle::mergeStyleFromRulesForSerialization): Added the code to remove font-family property when needed.
* platform/graphics/FontCache.h:
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::isSystemFont): Moved.
(WebCore::FontCache::isSystemFontForbiddenForEditing): Added.
* platform/graphics/freetype/FontCacheFreeType.cpp:
(WebCore::FontCache::isSystemFontForbiddenForEditing): Added. Always returns false.
* platform/graphics/win/FontCacheWin.cpp:
(WebCore::FontCache::isSystemFontForbiddenForEditing): Ditto.

Tools:

Added a test to strip away system font names such as ".AppleSystemUIFont", ".SFUI-Regular", and ".SF UI Mono".

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm:
* TestWebKitAPI/Tests/WebKitCocoa/cocoa-writer-markup-with-system-fonts.html: Added.

LayoutTests:

Added a test for ClipboardData.getData returning the original markup and execCommand('insertHTML', ~)
not stripping away system font names.

* editing/pasteboard/paste-cocoa-writer-markup-with-system-fonts-expected.txt: Added.
* editing/pasteboard/paste-cocoa-writer-markup-with-system-fonts.html: Added.

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

10 months ago[GTK] Emoji chooser is misplaced after scrolling
carlosgc@webkit.org [Tue, 23 Jul 2019 07:11:42 +0000 (07:11 +0000)]
[GTK] Emoji chooser is misplaced after scrolling
https://bugs.webkit.org/show_bug.cgi?id=199996

Reviewed by Michael Catanzaro.

Convert caret rectangle coordinates to root view.

* WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::showEmojiPicker):

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

10 months agoWeb Inspector: Uncaught Exception: Breakpoint at specified location already exists.
drousso@apple.com [Tue, 23 Jul 2019 03:45:28 +0000 (03:45 +0000)]
Web Inspector: Uncaught Exception: Breakpoint at specified location already exists.
https://bugs.webkit.org/show_bug.cgi?id=197034
<rdar://problem/50049004>

Reviewed by Joseph Pecoraro.

When "adjusting" a `WI.Breakpoint` (e.g. removing and then re-adding with a different
configuration), make sure to only re-add the `WI.Breakpoint` to the `WI.Target` it was just
removed from, rather to all `WI.targets`.

Since we iterate over `WI.targets` in both `WI.DebuggerManager.prototype._setBreakpoint` and
`WI.DebuggerManager.prototype._removeBreakpoint`, we ended up iterating `WI.targets` twice.

Each time the `WI.Breakpoint` is removed from a `WI.Target`, pass the `WI.Target` to the
`callback` given to `WI.DebuggerManager.prototype._removeBreakpoint`, so that the eventual
call to `WI.DebuggerManager.prototype._setBreakpoint` can reuse it as the `specificTarget`,
instead of iterating `WI.targets` (meaning we only iterate it once).

* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype._removeBreakpoint.didRemoveBreakpoint):
(WI.DebuggerManager.prototype._breakpointDisplayLocationDidChange):
(WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange):

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

10 months ago[bmalloc] Each IsoPage gets 1MB VA because VMHeap::tryAllocateLargeChunk rounds up
ysuzuki@apple.com [Tue, 23 Jul 2019 02:43:11 +0000 (02:43 +0000)]
[bmalloc] Each IsoPage gets 1MB VA because VMHeap::tryAllocateLargeChunk rounds up
https://bugs.webkit.org/show_bug.cgi?id=200024

Reviewed by Saam Barati.

Source/bmalloc:

When we allocate IsoHeap's page, we reused VMHeap::tryAllocateLargeChunk. However, this function is originally designed
to be used for Large allocation in bmalloc (e.g. allocating Chunk in bmalloc). As a result, this function rounds up the
requested size with 1MB (bmalloc::chunkSize). As a result, all IsoHeap's 16KB page gets 1MB VA while it just uses 16KB of
the allocated region. This leads to VA exhaustion since IsoHeap now uses 64x VA than we expected!

This patch fixes the above VA exhaustion issue by allocating a page by using tryVMAllocate. When allocating a page, we start
using a VM tag for IsoHeap. We discussed at e-mail and we decided reusing a VM tag previously assigned to CLoop Stack since
this is less profitable. Since this tag is not Malloc-related tag, Leaks tool can scan memory region conservatively without
registering allocated region into Zone, which was previously done in VMHeap and that's why we reused VMHeap for IsoHeap.

* bmalloc/BVMTags.h:
* bmalloc/IsoPage.cpp:
(bmalloc::IsoPageBase::allocatePageMemory):
* bmalloc/IsoTLS.cpp:
(bmalloc::IsoTLS::ensureEntries):
* bmalloc/VMAllocate.h:
(bmalloc::vmAllocate):

Source/JavaScriptCore:

Discussed and we decided to use this VM tag for IsoHeap instead of CLoop stack.

* interpreter/CLoopStack.cpp:
(JSC::CLoopStack::CLoopStack):

Source/WebCore:

Changed how we interpret VM tags. Add IsoHeap VM tag support, and rename WebAssembly tag
to Gigacage tag.

* page/ResourceUsageData.h:
* page/ResourceUsageOverlay.h:
* page/cocoa/ResourceUsageOverlayCocoa.mm:
(WebCore::HistoricResourceUsageData::HistoricResourceUsageData):
* page/cocoa/ResourceUsageThreadCocoa.mm:
(WebCore::displayNameForVMTag):
(WebCore::categoryForVMTag):

Source/WTF:

Start using a VM tag for IsoHeap instead of CLoop Stack.

* wtf/OSAllocator.h:
* wtf/VMTags.h:

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

10 months agoTurn off Wasm fast memory on iOS
sbarati@apple.com [Tue, 23 Jul 2019 02:24:47 +0000 (02:24 +0000)]
Turn off Wasm fast memory on iOS
https://bugs.webkit.org/show_bug.cgi?id=200016
<rdar://problem/53417726>

Reviewed by Yusuke Suzuki.

We turned them on when we disabled Gigacage on iOS. However, we re-enabled
Gigacage on iOS, but forgot to turn wasm fast memories back off.

* runtime/Options.h:

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

10 months agoFix WebView iframe rendering in macOS Catalina
simon.fraser@apple.com [Tue, 23 Jul 2019 02:08:20 +0000 (02:08 +0000)]
Fix WebView iframe rendering in macOS Catalina
https://bugs.webkit.org/show_bug.cgi?id=200022
rdar://problem/49102040

Reviewed by Darin Adler.
Source/WebKitLegacy/mac:

Adapt to internal NSView method renames in Catalina.

* WebView/WebHTMLView.mm:
(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inContext:topView:]):
(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inContext:topView:]): Deleted.

LayoutTests:

New test for rendering of overlapping iframes, defects when we fail to setAsideSubviews
in WebView.

* fast/frames/frames-not-double-painted-expected.html: Added.
* fast/frames/frames-not-double-painted.html: Added.

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

10 months agoUnreviewed, follow-up fix for tls->size() access
ysuzuki@apple.com [Tue, 23 Jul 2019 00:18:36 +0000 (00:18 +0000)]
Unreviewed, follow-up fix for tls->size() access
https://bugs.webkit.org/show_bug.cgi?id=200019

* bmalloc/IsoTLS.cpp:
(bmalloc::IsoTLS::ensureEntries):
(bmalloc::IsoTLS::destructor):

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

10 months ago[ews-build] EWS fails to parse multi-line full_results.json
aakash_jain@apple.com [Tue, 23 Jul 2019 00:16:18 +0000 (00:16 +0000)]
[ews-build] EWS fails to parse multi-line full_results.json
https://bugs.webkit.org/show_bug.cgi?id=199992

Reviewed by Alexey Proskuryakov.

* BuildSlaveSupport/ews-build/layout_test_failures.py:
(LayoutTestFailures.results_from_string): Concatenate content into single line.
* BuildSlaveSupport/ews-build/steps_unittest.py:
(test_parse_results_json_with_newlines): Unit-test to cover this scenario.

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

10 months ago[bmalloc] IsoTLS is not deallocated in TLS destructor
ysuzuki@apple.com [Tue, 23 Jul 2019 00:09:36 +0000 (00:09 +0000)]
[bmalloc] IsoTLS is not deallocated in TLS destructor
https://bugs.webkit.org/show_bug.cgi?id=200019

Reviewed by Mark Lam.

TLS destructor for IsoTLS needs to deallocate memory used for IsoTLS itself.
While we are correctly deallocating old IsoTLS when extending it to the new one,
we lack deallocation when the thread is destroyed. IsoTLS is per-thread, so we
should destroy IsoTLS when a thread finishes.

* bmalloc/IsoTLS.cpp:
(bmalloc::IsoTLS::ensureEntries):
(bmalloc::IsoTLS::destructor):

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

10 months agoEnable CSSOMViewScrollingAPIEnabled in WebKit1
simon.fraser@apple.com [Tue, 23 Jul 2019 00:07:38 +0000 (00:07 +0000)]
Enable CSSOMViewScrollingAPIEnabled in WebKit1
https://bugs.webkit.org/show_bug.cgi?id=200008
rdar://problem/53409062

Reviewed by Tim Horton.

Default WebKitCSSOMViewScrollingAPIEnabledPreferenceKey to YES, so that
CSSOMViewScrollingAPIEnabled is on for both WebKit1 and WebKit2.

DumpRenderTree already turns this preference on, so this change is not
detected by tests.

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):

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