Timeline



May 26, 2019:

6:12 PM Changeset in webkit [245787] by Simon Fraser
  • 16 edits
    2 adds in trunk/Source

Move VelocityData to WebCore
https://bugs.webkit.org/show_bug.cgi?id=198261

Reviewed by Antti Koivisto.

Move VelocityData and HistoricalVelocityData to WebCore for future use in overflow scroll.
Source/WebCore:

VisibleContentRectUpdateInfo can now store a VelocityData (its timestamp is used as
the timetamp for the entire update).

No behavior change.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/FrameView.cpp:

(WebCore::FrameView::setScrollVelocity):

  • page/FrameView.h:
  • platform/graphics/TiledBacking.h:

(WebCore::VelocityData::VelocityData): Deleted.
(WebCore::VelocityData::velocityOrScaleIsChanging const): Deleted.

  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::adjustTileCoverageRect const):

  • platform/graphics/ca/TileController.h:

Source/WebKit:

VisibleContentRectUpdateInfo can now store a VelocityData (its timestamp is used as
the timetamp for the entire update).

  • Shared/VisibleContentRectUpdateInfo.cpp:

(WebKit::VisibleContentRectUpdateInfo::encode const):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):

  • Shared/VisibleContentRectUpdateInfo.h:

(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::scrollVelocity const):
(WebKit::VisibleContentRectUpdateInfo::enclosedInScrollableAncestorView const):
(WebKit::VisibleContentRectUpdateInfo::timestamp const):
(WebKit::operator==):
(WebKit::VisibleContentRectUpdateInfo::horizontalVelocity const): Deleted.
(WebKit::VisibleContentRectUpdateInfo::verticalVelocity const): Deleted.
(WebKit::VisibleContentRectUpdateInfo::scaleChangeRate const): Deleted.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<VelocityData>::encode):
(IPC::ArgumentCoder<VelocityData>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView didUpdateVisibleRect:unobscuredRect:contentInsets:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
(WebKit::HistoricalVelocityData::VelocityData::VelocityData): Deleted.
(WebKit::HistoricalVelocityData::HistoricalVelocityData): Deleted.
(WebKit::HistoricalVelocityData::velocityForNewData): Deleted.
(WebKit::HistoricalVelocityData::clear): Deleted.
(WebKit::HistoricalVelocityData::append): Deleted.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::viewportConfigurationChanged):
(WebKit::adjustVelocityDataForBoundedScale):
(WebKit::WebPage::updateVisibleContentRects):

5:10 PM Changeset in webkit [245786] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Add a GraphicsLayer::Type for ScrolledContents
https://bugs.webkit.org/show_bug.cgi?id=198257

Reviewed by Zalan Bujtas.

This ScrolledContents layer type will be used to choose different tiling behaviors
in a future patch.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::supportsLayerType):

  • platform/graphics/GraphicsLayer.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayer::supportsLayerType):
(WebCore::GraphicsLayerCA::initialize):
(WebCore::GraphicsLayerCA::adjustCoverageRect const):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateScrollingLayers):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::ensureRootLayer):

4:16 PM Changeset in webkit [245785] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.24.20.5

Tag Safari-608.1.24.20.5.

3:39 PM Changeset in webkit [245784] by wilander@apple.com
  • 22 edits
    3 adds in trunk

Resource Load Statistics: Downgrade document.referrer to the referrer's eTLD+1 if the page was navigated to with a prevalent resource referrer containing link decoration
https://bugs.webkit.org/show_bug.cgi?id=198227
<rdar://problem/51117258>

Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::referrer const):

Now checks if the referrer has been overridden.

(WebCore::Document::wasLoadedWithDataTransferFromPrevalentResource):
(WebCore::Document::downgradeReferrerToRegistrableDomain):

  • dom/Document.h:
  • page/CrossSiteNavigationDataTransfer.h: Added.

New option set for the growing number of navigational data transfers we care about.

  • platform/network/NetworkStorageSession.cpp:

(WebCore::NetworkStorageSession::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
(WebCore::NetworkStorageSession::committedCrossSiteLoadWithLinkDecoration): Deleted.

New name since we no longer only look for link decoration but also other means of navigational data transfer.

  • platform/network/NetworkStorageSession.h:

Source/WebKit:

This patch adds a call back to the UI process if the network process finds the navigational
data transfer was done by a prevalent resource and we need to adjust something for the page.
Currently, that adjustment is to downgrade document.referrer.

The patch also removes an unused completion handler.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration): Deleted.

New name since we no longer only look for link decoration but also other means of navigational data transfer.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
(WebKit::NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration): Deleted.

New name since we no longer only look for link decoration but also other means of navigational data transfer.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::checkIfNavigationContainsDataTransfer):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
(WebKit::isNonUniqueNavigationWithLinkDecoration): Deleted.

New name since we no longer only look for link decoration but also other means of navigational data transfer.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::WebProcessPool::committedCrossSiteLoadWithLinkDecoration): Deleted.

New name since we no longer only look for link decoration but also other means of navigational data transfer.

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::wasLoadedWithDataTransferFromPrevalentResource):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

LayoutTests:

  • http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-expected.txt: Added.
  • http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html: Added.
12:56 PM Changeset in webkit [245783] by bshafiei@apple.com
  • 1 edit in branches/safari-608.1.24.20-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h

Build fix after cherry-picking r245778.

12:05 PM Changeset in webkit [245782] by bshafiei@apple.com
  • 13 edits in branches/safari-608.1.24.20-branch

Cherry-pick r245637. rdar://problem/35205373

[Paste] Add support for preferred presentation size when pasting an image
https://bugs.webkit.org/show_bug.cgi?id=198132
<rdar://problem/50886917>

Reviewed by Wenson Hsieh.

Source/WebCore:

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

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

Source/WebKit:

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

Tools:

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

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

11:21 AM Changeset in webkit [245781] by bshafiei@apple.com
  • 36 edits in branches/safari-608.1.24.20-branch

Cherry-pick r245778. rdar://problem/35205373

[iOS] Dropped text, attachments, and images should animate into place
https://bugs.webkit.org/show_bug.cgi?id=198243
<rdar://problem/35205373>

Reviewed by Tim Horton.

Source/WebCore:

Add some hooks to notify the chrome client when an HTMLImageElement's image is finished loading. See WebKit
changelog for more detail.

Test: DragAndDropTests.DropPreviewForImageInEditableArea

  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/Page.cpp: (WebCore::Page::didFinishLoadingImageForElement):
  • page/Page.h:
  • rendering/RenderImage.cpp: (WebCore::RenderImage::notifyFinished):

Source/WebKit:

Adds support for targeted drop animations on iOS in modern WebKit by adopting UIKit SPI introduced in
<rdar://problem/31075005> to allow updating the drop preview mid-flight. To get the animation right, we refactor
and augment existing logic for taking snapshots after performing a drop in an editable content.

Currently, upon dropping in editable content, we first snapshot the web view and temporarily cover the real web
view with this snapshot. When the TextIndicator data arrives that contains (1) a snapshot of the visible part of
the web view ignoring the selection, and (2) a snapshot of just the selected contents after drop, we crossfade
from the web view snapshot to the snapshot in (1) using a hard-coded time delay (~500ms), and target the drop
preview to the drag caret rect. During this process, snapshot (2) is completely ignored.

This was effectively a halfway implemention of the desired effect of animating the dropped content into place
and crossfading to the final content; before UIKit implemented updateable drag previews, the full implementation
was not possible in modern WebKit (without using synchronous IPC).

Now that we're able to update the drag preview in the middle of the drop animation, we can now utilize snapshot
(2) above and clean up some parts of the drop animation in editable content. See below for more details.

  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _doAfterReceivingEditDragSnapshotForTesting:]):

Add a testing hook to perform the given block after any pending edit drag snapshot has been received. See
TestWebKitAPI changes for more detail.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:

Split up the existing DidConcludeEditDrag IPC message into two messages: WillReceiveEditDragSnapshot and
DidReceiveEditDragSnapshot. This allows us to defer cleaning up the drag session state during an edit drop,
until after the final edit drag snapshot has been received.

  • UIProcess/ios/DragDropInteractionState.h:

Add some new methods to help manage the lifecycle of drop preview provider blocks.

  • UIProcess/ios/DragDropInteractionState.mm: (WebKit::createTargetedDragPreview):

Drive-by fix: make this return a RetainPtr.

(WebKit::DragDropInteractionState::prepareForDelayedDropPreview):

Stores a drop preview provider, given to us by UIKit.

(WebKit::DragDropInteractionState::deliverDelayedDropPreview):

Invokes the stored drop preview providers with given text indicator data. This is invoked after snapshots are
taken following an edit drag (this is additionally after all images in the inserted fragment have finished
loading).

(WebKit::DragDropInteractionState::clearAllDelayedItemPreviewProviders):

Invokes all stored drop preview providers with a nil preview. This is invoked in any case where drag session
cleanup occurs earlier than normal (e.g., if the web process crashes during drop), and ensures that the handlers
are always invoked when cleaning up the drag session.

(WebKit::DragDropInteractionState::previewForDragItem const):
(WebKit::DragDropInteractionState::dragAndDropSessionsDidEnd):

Call clearAllDelayedItemPreviewProviders.

  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::willReceiveEditDragSnapshot): (WebKit::PageClientImpl::didReceiveEditDragSnapshot): (WebKit::PageClientImpl::didConcludeEditDrag): Deleted.

More plumbing (see changes to DidConcludeEditDrag above).

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView cleanupInteraction]): (-[WKContentView cleanUpDragSourceSessionState]): (-[WKContentView _willReceiveEditDragSnapshot]): (-[WKContentView _didReceiveEditDragSnapshot:]):

Set _waitingForEditDragSnapshot to YES in the gap between when -_willReceiveEditDragSnapshot is invoked, and
when -_didReceiveEditDragSnapshot is invoked. If _waitingForEditDragSnapshot is YES, we bail out of
-cleanUpDragSourceSessionState, and instead clean up drag session state after the edit drag snapshot is
received.

(-[WKContentView _deliverDelayedDropPreviewIfPossible:]):
(-[WKContentView _didPerformDragOperation:]):
(-[WKContentView textEffectsWindow]):

Drive-by fix to remove a workaround for a deprecation warning.

(-[WKContentView dropInteraction:item:willAnimateDropWithAnimator:]):
(-[WKContentView dropInteraction:concludeDrop:]):

Implement this hook to ensure that the unselected content snapshot view and visible content snapshot view are
guaranteed to be removed from the view after a drop in editable content, even if the drag edit snapshot arrives
after the drop is concluded.

(-[WKContentView dropInteraction:previewForDroppingItem:withDefault:]):
(-[WKContentView _dropInteraction:delayedPreviewProviderForDroppingItem:previewProvider:]):

Implement the new UIKit SPI here. UIKit hands us a preview provider here, which we can invoke at a later time
to update the drop preview. We do this in _didReceiveEditDragSnapshot.

(-[WKContentView _doAfterReceivingEditDragSnapshotForTesting:]):
(-[WKContentView _didConcludeEditDrag:]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::willReceiveEditDragSnapshot): (WebKit::WebPageProxy::didReceiveEditDragSnapshot): (WebKit::WebPageProxy::didConcludeDrop): (WebKit::WebPageProxy::didConcludeEditDrag): Deleted.
  • WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::didFinishLoadingImageForElement):
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::didFinishLoadingImageForElement):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::didConcludeDrop):

If an edit drag has been concluded, there's no need to hang on to pending dropped image elements anymore; clear
out the set here.

(WebKit::WebPage::didConcludeEditDrag):

After concluding an edit drag, we try to deliver two web content snapshots to the UI process, so that the UI
process can assemble a targeted drop preview for UIKit. One snapshot is of the visible content area, not
including any selected content. The other snapshot is of the selected content only. However, when dropping
images (or a text selection containing images), these images may not yet have been loaded. If that is the case,
these images will appear to be missing from these snapshots.

To ensure that we don't take this snapshot too early, defer it until all image elements in the dropped content
range have finished loading. We can tell that all dropped images have finished loading by using a new client
hook that is invoked when an image has finished loading.

(WebKit::WebPage::didFinishLoadingImageForElement):
(WebKit::WebPage::computeAndSendEditDragSnapshot):

Snapshot the selected content and send it to the UI process.

Source/WebKitLegacy/mac:

Add a new chrome client method. See other changelogs for more detail.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm: (WebChromeClient::didFinishLoadingImageForElement):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.cpp: (WebChromeClient::didFinishLoadingImageForElement):
  • WebCoreSupport/WebChromeClient.h:

Tools:

Adjusts the iOS dragging simulator, and adds a new API test. See below for more detail.

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm: (TestWebKitAPI::isCompletelyWhite): (TestWebKitAPI::TEST):

Add a test that drags and drops an image into a contenteditable element, and then observes the resulting
UITargetedDragPreviews upon drop.

  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:
  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm: (-[DragAndDropSimulator _resetSimulatedState]): (-[DragAndDropSimulator runFrom:to:additionalItemRequestLocations:]): (-[DragAndDropSimulator _concludeDropAndPerformOperationIfNecessary]):

Teach the iOS version of DragAndDropSimulator to invoke -dropInteraction:concludeDrop: on the drop interaction
delegate when the drop finishes. This additionally uses _doAfterReceivingEditDragSnapshotForTesting: to defer
the end of the simulated drag and drop until after drag previews have been received during an edit drag.

(-[DragAndDropSimulator dropPreviews]):
(-[DragAndDropSimulator delayedDropPreviews]):

Have the drag and drop simulator remember which previews were returned by the delegate on drop, as well as which
previews were provided asynchronously.

(-[DragAndDropSimulator _webView:dataInteractionOperationWasHandled:forSession:itemProviders:]):

  • TestWebKitAPI/ios/UIKitSPI.h:

Stage the new private drop interacton delegate method.

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

11:21 AM Changeset in webkit [245780] by bshafiei@apple.com
  • 7 edits in branches/safari-608.1.24.20-branch

Cherry-pick r245775. rdar://problem/35205373

[iOS] Respect -[NSItemProvider preferredPresentationSize] when dropping images
https://bugs.webkit.org/show_bug.cgi?id=198242

Reviewed by Beth Dakin.

Source/WebCore:

Teach the web content reader to respect the -preferredPresentationSize when creating attachment-backed image
elements. See below for more details.

Test: WKAttachmentTestsIOS.InsertDroppedImageWithPreferredPresentationSize

  • editing/WebContentReader.h:
  • editing/cocoa/WebContentReaderCocoa.mm: (WebCore::attachmentForFilePath): (WebCore::attachmentForData):

When creating attachment-backed image elements, additionally set width and height attributes from the preferred
presentation size, if specified.

(WebCore::WebContentReader::readFilePath):

Add a version of readFilePath that takes a single file path, and an optional preferred presentation size.

(WebCore::WebContentReader::readFilePaths):

Reimplement readFilePaths in terms of readFilePath.

(WebCore::WebContentReader::readDataBuffer):

Add more plumbing for preferredPresentationSize.

  • platform/Pasteboard.h: (WebCore::PasteboardWebContentReader::readFilePath): (WebCore::PasteboardWebContentReader::readDataBuffer):
  • platform/ios/PasteboardIOS.mm: (WebCore::Pasteboard::read): (WebCore::Pasteboard::readRespectingUTIFidelities):

Forward PasteboardItemInfo's preferredPresentationSize to the web content reader.

Tools:

Add a new test that simulates dropping an image with a preferred presentation size into an editable element
with attachment elements enabled.

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

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

7:04 AM Changeset in webkit [245779] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Verification] Add areEssentiallyEqual for LayoutRect
https://bugs.webkit.org/show_bug.cgi?id=198250
<rdar://problem/51140119>

Reviewed by Antti Koivisto.

WebKit's inline layout is a mix of int/float/LayoutUnit types, while LFC mostly uses LayoutUnit.
When we compute the used size of a block container (based on the inline tree), the final value might go through a few conversions.

  • layout/Verification.cpp:

(WebCore::Layout::areEssentiallyEqual):
(WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):

4:31 AM Changeset in webkit [245778] by Wenson Hsieh
  • 36 edits in trunk

[iOS] Dropped text, attachments, and images should animate into place
https://bugs.webkit.org/show_bug.cgi?id=198243
<rdar://problem/35205373>

Reviewed by Tim Horton.

Source/WebCore:

Add some hooks to notify the chrome client when an HTMLImageElement's image is finished loading. See WebKit
changelog for more detail.

Test: DragAndDropTests.DropPreviewForImageInEditableArea

  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/Page.cpp:

(WebCore::Page::didFinishLoadingImageForElement):

  • page/Page.h:
  • rendering/RenderImage.cpp:

(WebCore::RenderImage::notifyFinished):

Source/WebKit:

Adds support for targeted drop animations on iOS in modern WebKit by adopting UIKit SPI introduced in
<rdar://problem/31075005> to allow updating the drop preview mid-flight. To get the animation right, we refactor
and augment existing logic for taking snapshots after performing a drop in an editable content.

Currently, upon dropping in editable content, we first snapshot the web view and temporarily cover the real web
view with this snapshot. When the TextIndicator data arrives that contains (1) a snapshot of the visible part of
the web view ignoring the selection, and (2) a snapshot of just the selected contents after drop, we crossfade
from the web view snapshot to the snapshot in (1) using a hard-coded time delay (~500ms), and target the drop
preview to the drag caret rect. During this process, snapshot (2) is completely ignored.

This was effectively a halfway implemention of the desired effect of animating the dropped content into place
and crossfading to the final content; before UIKit implemented updateable drag previews, the full implementation
was not possible in modern WebKit (without using synchronous IPC).

Now that we're able to update the drag preview in the middle of the drop animation, we can now utilize snapshot
(2) above and clean up some parts of the drop animation in editable content. See below for more details.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _doAfterReceivingEditDragSnapshotForTesting:]):

Add a testing hook to perform the given block after any pending edit drag snapshot has been received. See
TestWebKitAPI changes for more detail.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:

Split up the existing DidConcludeEditDrag IPC message into two messages: WillReceiveEditDragSnapshot and
DidReceiveEditDragSnapshot. This allows us to defer cleaning up the drag session state during an edit drop,
until after the final edit drag snapshot has been received.

  • UIProcess/ios/DragDropInteractionState.h:

Add some new methods to help manage the lifecycle of drop preview provider blocks.

  • UIProcess/ios/DragDropInteractionState.mm:

(WebKit::createTargetedDragPreview):

Drive-by fix: make this return a RetainPtr.

(WebKit::DragDropInteractionState::prepareForDelayedDropPreview):

Stores a drop preview provider, given to us by UIKit.

(WebKit::DragDropInteractionState::deliverDelayedDropPreview):

Invokes the stored drop preview providers with given text indicator data. This is invoked after snapshots are
taken following an edit drag (this is additionally after all images in the inserted fragment have finished
loading).

(WebKit::DragDropInteractionState::clearAllDelayedItemPreviewProviders):

Invokes all stored drop preview providers with a nil preview. This is invoked in any case where drag session
cleanup occurs earlier than normal (e.g., if the web process crashes during drop), and ensures that the handlers
are always invoked when cleaning up the drag session.

(WebKit::DragDropInteractionState::previewForDragItem const):
(WebKit::DragDropInteractionState::dragAndDropSessionsDidEnd):

Call clearAllDelayedItemPreviewProviders.

  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::willReceiveEditDragSnapshot):
(WebKit::PageClientImpl::didReceiveEditDragSnapshot):
(WebKit::PageClientImpl::didConcludeEditDrag): Deleted.

More plumbing (see changes to DidConcludeEditDrag above).

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView cleanupInteraction]):
(-[WKContentView cleanUpDragSourceSessionState]):
(-[WKContentView _willReceiveEditDragSnapshot]):
(-[WKContentView _didReceiveEditDragSnapshot:]):

Set _waitingForEditDragSnapshot to YES in the gap between when -_willReceiveEditDragSnapshot is invoked, and
when -_didReceiveEditDragSnapshot is invoked. If _waitingForEditDragSnapshot is YES, we bail out of
-cleanUpDragSourceSessionState, and instead clean up drag session state after the edit drag snapshot is
received.

(-[WKContentView _deliverDelayedDropPreviewIfPossible:]):
(-[WKContentView _didPerformDragOperation:]):
(-[WKContentView textEffectsWindow]):

Drive-by fix to remove a workaround for a deprecation warning.

(-[WKContentView dropInteraction:item:willAnimateDropWithAnimator:]):
(-[WKContentView dropInteraction:concludeDrop:]):

Implement this hook to ensure that the unselected content snapshot view and visible content snapshot view are
guaranteed to be removed from the view after a drop in editable content, even if the drag edit snapshot arrives
after the drop is concluded.

(-[WKContentView dropInteraction:previewForDroppingItem:withDefault:]):
(-[WKContentView _dropInteraction:delayedPreviewProviderForDroppingItem:previewProvider:]):

Implement the new UIKit SPI here. UIKit hands us a preview provider here, which we can invoke at a later time
to update the drop preview. We do this in _didReceiveEditDragSnapshot.

(-[WKContentView _doAfterReceivingEditDragSnapshotForTesting:]):
(-[WKContentView _didConcludeEditDrag:]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::willReceiveEditDragSnapshot):
(WebKit::WebPageProxy::didReceiveEditDragSnapshot):
(WebKit::WebPageProxy::didConcludeDrop):
(WebKit::WebPageProxy::didConcludeEditDrag): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::didFinishLoadingImageForElement):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didFinishLoadingImageForElement):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::didConcludeDrop):

If an edit drag has been concluded, there's no need to hang on to pending dropped image elements anymore; clear
out the set here.

(WebKit::WebPage::didConcludeEditDrag):

After concluding an edit drag, we try to deliver two web content snapshots to the UI process, so that the UI
process can assemble a targeted drop preview for UIKit. One snapshot is of the visible content area, not
including any selected content. The other snapshot is of the selected content only. However, when dropping
images (or a text selection containing images), these images may not yet have been loaded. If that is the case,
these images will appear to be missing from these snapshots.

To ensure that we don't take this snapshot too early, defer it until all image elements in the dropped content
range have finished loading. We can tell that all dropped images have finished loading by using a new client
hook that is invoked when an image has finished loading.

(WebKit::WebPage::didFinishLoadingImageForElement):
(WebKit::WebPage::computeAndSendEditDragSnapshot):

Snapshot the selected content and send it to the UI process.

Source/WebKitLegacy/mac:

Add a new chrome client method. See other changelogs for more detail.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::didFinishLoadingImageForElement):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::didFinishLoadingImageForElement):

  • WebCoreSupport/WebChromeClient.h:

Tools:

Adjusts the iOS dragging simulator, and adds a new API test. See below for more detail.

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:

(TestWebKitAPI::isCompletelyWhite):
(TestWebKitAPI::TEST):

Add a test that drags and drops an image into a contenteditable element, and then observes the resulting
UITargetedDragPreviews upon drop.

  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:
  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:

(-[DragAndDropSimulator _resetSimulatedState]):
(-[DragAndDropSimulator runFrom:to:additionalItemRequestLocations:]):
(-[DragAndDropSimulator _concludeDropAndPerformOperationIfNecessary]):

Teach the iOS version of DragAndDropSimulator to invoke -dropInteraction:concludeDrop: on the drop interaction
delegate when the drop finishes. This additionally uses _doAfterReceivingEditDragSnapshotForTesting: to defer
the end of the simulated drag and drop until after drag previews have been received during an edit drag.

(-[DragAndDropSimulator dropPreviews]):
(-[DragAndDropSimulator delayedDropPreviews]):

Have the drag and drop simulator remember which previews were returned by the delegate on drop, as well as which
previews were provided asynchronously.

(-[DragAndDropSimulator _webView:dataInteractionOperationWasHandled:forSession:itemProviders:]):

  • TestWebKitAPI/ios/UIKitSPI.h:

Stage the new private drop interacton delegate method.

May 25, 2019:

4:14 PM Changeset in webkit [245777] by Simon Fraser
  • 3 edits in trunk/Tools

MobileMiniBrowser: Add iPad support, and allow insecure loads
https://bugs.webkit.org/show_bug.cgi?id=198249

Reviewed by Tim Horton.

Add iPad support to MobileMiniBrowser, and allow insecure loads.

  • MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist:
1:14 PM Changeset in webkit [245776] by Alan Bujtas
  • 26 edits
    2 copies
    1 move
    2 adds
    2 deletes in trunk/Source/WebCore

[LFC][IFC] Introduce DisplayRun to display tree
https://bugs.webkit.org/show_bug.cgi?id=197198

Reviewed by Antti Koivisto.

Add a simple inline layout implementation. Now we've got DisplayBoxes for layout boxes and
DisplayRuns for inline runs.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::contentHeightForFormattingContextRoot):

  • layout/Verification.cpp:

(WebCore::Layout::areEssentiallyEqual):
(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::checkForMatchingNonTextRuns):
(WebCore::Layout::checkForMatchingTextRuns):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):
(WebCore::Layout::resolveForRelativePositionIfNeeded): Deleted.

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/displaytree/DisplayBox.cpp:

(WebCore::Display::Box::marginBox const):
(WebCore::Display::Box::nonCollapsedMarginBox const):
(WebCore::Display::Box::borderBox const):
(WebCore::Display::Box::paddingBox const):
(WebCore::Display::Box::contentBox const):
(WebCore::Display::Box::Rect::Rect): Deleted.

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::rectWithMargin const):
(WebCore::Display::Box::horizontalMargin const):
(WebCore::Display::Box::Rect::intersects const): Deleted.
(WebCore::Display::Box::Rect::invalidateTop): Deleted.
(WebCore::Display::Box::Rect::invalidateLeft): Deleted.
(WebCore::Display::Box::Rect::invalidateWidth): Deleted.
(WebCore::Display::Box::Rect::invalidateHeight): Deleted.
(WebCore::Display::Box::Rect::hasValidPosition const): Deleted.
(WebCore::Display::Box::Rect::hasValidSize const): Deleted.
(WebCore::Display::Box::Rect::hasValidGeometry const): Deleted.
(WebCore::Display::Box::Rect::invalidatePosition): Deleted.
(WebCore::Display::Box::Rect::setHasValidPosition): Deleted.
(WebCore::Display::Box::Rect::setHasValidSize): Deleted.
(WebCore::Display::Box::Rect::top const): Deleted.
(WebCore::Display::Box::Rect::left const): Deleted.
(WebCore::Display::Box::Rect::bottom const): Deleted.
(WebCore::Display::Box::Rect::right const): Deleted.
(WebCore::Display::Box::Rect::topLeft const): Deleted.
(WebCore::Display::Box::Rect::bottomRight const): Deleted.
(WebCore::Display::Box::Rect::size const): Deleted.
(WebCore::Display::Box::Rect::width const): Deleted.
(WebCore::Display::Box::Rect::height const): Deleted.
(WebCore::Display::Box::Rect::setTopLeft): Deleted.
(WebCore::Display::Box::Rect::setTop): Deleted.
(WebCore::Display::Box::Rect::setLeft): Deleted.
(WebCore::Display::Box::Rect::setWidth): Deleted.
(WebCore::Display::Box::Rect::setHeight): Deleted.
(WebCore::Display::Box::Rect::setSize): Deleted.
(WebCore::Display::Box::Rect::shiftLeftTo): Deleted.
(WebCore::Display::Box::Rect::shiftRightTo): Deleted.
(WebCore::Display::Box::Rect::shiftTopTo): Deleted.
(WebCore::Display::Box::Rect::shiftBottomTo): Deleted.
(WebCore::Display::Box::Rect::moveHorizontally): Deleted.
(WebCore::Display::Box::Rect::moveVertically): Deleted.
(WebCore::Display::Box::Rect::expand): Deleted.
(WebCore::Display::Box::Rect::clone const): Deleted.
(WebCore::Display::Box::Rect::operator LayoutRect const): Deleted.

  • layout/displaytree/DisplayRect.h: Added.

(WebCore::Display::Rect::expandHorizontally):
(WebCore::Display::Rect::expandVertically):
(WebCore::Display::Rect::intersects const):
(WebCore::Display::Rect::invalidateTop):
(WebCore::Display::Rect::invalidateLeft):
(WebCore::Display::Rect::invalidateWidth):
(WebCore::Display::Rect::invalidateHeight):
(WebCore::Display::Rect::hasValidPosition const):
(WebCore::Display::Rect::hasValidSize const):
(WebCore::Display::Rect::hasValidGeometry const):
(WebCore::Display::Rect::Rect):
(WebCore::Display::Rect::invalidatePosition):
(WebCore::Display::Rect::setHasValidPosition):
(WebCore::Display::Rect::setHasValidSize):
(WebCore::Display::Rect::top const):
(WebCore::Display::Rect::left const):
(WebCore::Display::Rect::bottom const):
(WebCore::Display::Rect::right const):
(WebCore::Display::Rect::topLeft const):
(WebCore::Display::Rect::bottomRight const):
(WebCore::Display::Rect::size const):
(WebCore::Display::Rect::width const):
(WebCore::Display::Rect::height const):
(WebCore::Display::Rect::setTopLeft):
(WebCore::Display::Rect::setTop):
(WebCore::Display::Rect::setLeft):
(WebCore::Display::Rect::setWidth):
(WebCore::Display::Rect::setHeight):
(WebCore::Display::Rect::setSize):
(WebCore::Display::Rect::shiftLeftTo):
(WebCore::Display::Rect::shiftRightTo):
(WebCore::Display::Rect::shiftTopTo):
(WebCore::Display::Rect::shiftBottomTo):
(WebCore::Display::Rect::moveHorizontally):
(WebCore::Display::Rect::moveVertically):
(WebCore::Display::Rect::expand):
(WebCore::Display::Rect::clone const):
(WebCore::Display::Rect::operator LayoutRect const):

  • layout/displaytree/DisplayRun.h: Renamed from Source/WebCore/layout/inlineformatting/InlineRun.h.

(WebCore::Display::Run::TextContext::start const):
(WebCore::Display::Run::TextContext::end const):
(WebCore::Display::Run::TextContext::length const):
(WebCore::Display::Run::TextContext::expand):
(WebCore::Display::Run::logicalTopLeft const):
(WebCore::Display::Run::logicalLeft const):
(WebCore::Display::Run::logicalRight const):
(WebCore::Display::Run::logicalTop const):
(WebCore::Display::Run::logicalBottom const):
(WebCore::Display::Run::logicalWidth const):
(WebCore::Display::Run::logicalHeight const):
(WebCore::Display::Run::setLogicalWidth):
(WebCore::Display::Run::setLogicalTop):
(WebCore::Display::Run::setLogicalLeft):
(WebCore::Display::Run::setLogicalRight):
(WebCore::Display::Run::moveVertically):
(WebCore::Display::Run::moveHorizontally):
(WebCore::Display::Run::expandVertically):
(WebCore::Display::Run::expandHorizontally):
(WebCore::Display::Run::setTextContext):
(WebCore::Display::Run::textContext):
(WebCore::Display::Run::textContext const):
(WebCore::Display::Run::Run):
(WebCore::Display::Run::TextContext::TextContext):

  • layout/floats/FloatAvoider.cpp:

(WebCore::Layout::FloatAvoider::rectInContainingBlock const):

  • layout/floats/FloatAvoider.h:

(WebCore::Layout::FloatAvoider::rect const):

  • layout/floats/FloatBox.cpp:

(WebCore::Layout::FloatBox::rect const):

  • layout/floats/FloatBox.h:
  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatPair::intersects const):

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::FloatItem::rectWithMargin const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
(WebCore::Layout::InlineFormattingContext::initializeMarginBorderAndPaddingForGenericInlineBox const):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFloatBox const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForInlineBlock const):
(WebCore::Layout::InlineFormattingContext::computeHorizontalMargin const):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::InlineFormattingContext::collectInlineContent const):
(WebCore::Layout::InlineFormattingContext::computeMargin const): Deleted.
(WebCore::Layout::addDetachingRules): Deleted.
(WebCore::Layout::createAndAppendInlineItem): Deleted.

  • layout/inlineformatting/InlineFormattingContext.h:

(WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const):

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::halfLeadingMetrics):
(WebCore::Layout::Line::availableWidth const):
(WebCore::Layout::Line::contentLogicalRight const):
(WebCore::Layout::Line::contentLogicalWidth const):
(WebCore::Layout::Line::logicalTop const):
(WebCore::Layout::Line::logicalLeft const):
(WebCore::Layout::Line::logicalRight const):
(WebCore::Layout::Line::logicalBottom const):
(WebCore::Layout::Line::logicalWidth const):
(WebCore::Layout::Line::logicalHeight const):
(WebCore::Layout::Line::LineItem::LineItem):
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::reset):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::moveLogicalLeft):
(WebCore::Layout::Line::moveLogicalRight):
(WebCore::Layout::isTrimmableContent):
(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::hasContent const):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonTextContent):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::UncommittedContent::isEmpty const):
(WebCore::Layout::UncommittedContent::width const):
(WebCore::Layout::UncommittedContent::add):
(WebCore::Layout::UncommittedContent::reset):
(WebCore::Layout::InlineFormattingContext::LineLayout::LineLayout):
(WebCore::Layout::InlineFormattingContext::LineLayout::initializeLine const):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::LineLayout::closeLine const):
(WebCore::Layout::InlineFormattingContext::LineLayout::handleFloat const):
(WebCore::Layout::InlineFormattingContext::LineLayout::commitInlineItemToLine const):
(WebCore::Layout::horizontalAdjustmentForAlignment):
(WebCore::Layout::InlineFormattingContext::LineLayout::alignRuns const):
(WebCore::Layout::Line::isClosed const): Deleted.
(WebCore::Layout::Line::isFirstLine const): Deleted.
(WebCore::Layout::Line::runs): Deleted.
(WebCore::Layout::Line::contentLogicalLeft const): Deleted.
(WebCore::Layout::Line::lastRunType const): Deleted.
(WebCore::Layout::Line::init): Deleted.
(WebCore::Layout::Line::adjustLogicalLeft): Deleted.
(WebCore::Layout::Line::adjustLogicalRight): Deleted.
(WebCore::Layout::Line::appendContent): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::initializeNewLine const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::splitInlineRunIfNeeded const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::createFinalRuns const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::postProcessInlineRuns const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::appendContentToLine const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::computeFloatPosition const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInFlowPositionedChildren const): Deleted.
(WebCore::Layout::adjustedLineLogicalLeft): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::justifyRuns): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::computeExpansionOpportunities const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::runWidth const): Deleted.

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::inlineItems):
(WebCore::Layout::InlineFormattingState::lineBoxes):
(WebCore::Layout::InlineFormattingState::addInlineItem):
(WebCore::Layout::InlineFormattingState::addInlineRun):
(WebCore::Layout::InlineFormattingState::addLineBox):
(WebCore::Layout::InlineFormattingState::inlineContent): Deleted.
(WebCore::Layout::InlineFormattingState::lastInlineItem const): Deleted.
(WebCore::Layout::InlineFormattingState::appendInlineRun): Deleted.

  • layout/inlineformatting/InlineItem.h:

(WebCore::Layout::InlineItem::type const):
(WebCore::Layout::InlineItem::isText const):
(WebCore::Layout::InlineItem::isBox const):
(WebCore::Layout::InlineItem::isHardLineBreak const):
(WebCore::Layout::InlineItem::isFloat const):
(WebCore::Layout::InlineItem::isLineBreak const):
(WebCore::Layout::InlineItem::isContainerStart const):
(WebCore::Layout::InlineItem::isContainerEnd const):
(WebCore::Layout::InlineItem::InlineItem):
(WebCore::Layout::InlineItem::setWidth):
(WebCore::Layout::InlineItem::width const):
(WebCore::Layout::InlineItem::addDetachingRule): Deleted.
(WebCore::Layout::InlineItem::detachingRules const): Deleted.
(WebCore::Layout::InlineItem::nonBreakableStart const): Deleted.
(WebCore::Layout::InlineItem::nonBreakableEnd const): Deleted.
(WebCore::Layout::InlineItem::addNonBreakableStart): Deleted.
(WebCore::Layout::InlineItem::addNonBreakableEnd): Deleted.
(WebCore::Layout::InlineItem::textContent const): Deleted.

  • layout/inlineformatting/InlineLineBox.h: Copied from Source/WebCore/layout/floats/FloatBox.h.

(WebCore::Layout::LineBox::logicalTopLeft const):
(WebCore::Layout::LineBox::logicalLeft const):
(WebCore::Layout::LineBox::logicalRight const):
(WebCore::Layout::LineBox::logicalTop const):
(WebCore::Layout::LineBox::logicalBottom const):
(WebCore::Layout::LineBox::logicalWidth const):
(WebCore::Layout::LineBox::logicalHeight const):
(WebCore::Layout::LineBox::LineBox):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::LineBreaker):
(WebCore::Layout::LineBreaker::breakingContext):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::runWidth const):
(WebCore::Layout::LineBreaker::isAtBreakingOpportunity):
(WebCore::Layout::LineBreaker::textWidth const):
(WebCore::Layout::InlineLineBreaker::InlineLineBreaker): Deleted.
(WebCore::Layout::InlineLineBreaker::nextRun): Deleted.
(WebCore::Layout::InlineLineBreaker::isAtContentEnd const): Deleted.
(WebCore::Layout::InlineLineBreaker::lineBreakingBehavior): Deleted.
(WebCore::Layout::InlineLineBreaker::runWidth const): Deleted.
(WebCore::Layout::InlineLineBreaker::textWidth const): Deleted.
(WebCore::Layout::InlineLineBreaker::splitRun): Deleted.
(WebCore::Layout::InlineLineBreaker::adjustSplitPositionWithHyphenation const): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/InlineRunProvider.cpp: Removed.
  • layout/inlineformatting/InlineRunProvider.h: Removed.
  • layout/inlineformatting/InlineTextItem.cpp: Added.

(WebCore::Layout::isWhitespaceCharacter):
(WebCore::Layout::isSoftLineBreak):
(WebCore::Layout::moveToNextNonWhitespacePosition):
(WebCore::Layout::moveToNextBreakablePosition):
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
(WebCore::Layout::InlineTextItem::InlineTextItem):

  • layout/inlineformatting/InlineTextItem.h: Copied from Source/WebCore/layout/inlineformatting/text/TextUtil.h.

(WebCore::Layout::InlineTextItem::start const):
(WebCore::Layout::InlineTextItem::end const):
(WebCore::Layout::InlineTextItem::length const):
(WebCore::Layout::InlineTextItem::isWhitespace const):
(WebCore::Layout::InlineTextItem::isCollapsed const):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::hyphenPositionBefore):
(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::fixedPitchWidth):

  • layout/inlineformatting/text/TextUtil.h:
  • layout/layouttree/LayoutBox.h:
  • layout/layouttree/LayoutReplaced.cpp:

(WebCore::Layout::Replaced::intrinsicRatio const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::accumulatedOffsetForInFlowPositionedContinuation):
(WebCore::Layout::TreeBuilder::createSubTree):
(WebCore::Layout::outputInlineRuns):
(WebCore::Layout::outputLayoutBox):

11:59 AM Changeset in webkit [245775] by Wenson Hsieh
  • 7 edits in trunk

[iOS] Respect -[NSItemProvider preferredPresentationSize] when dropping images
https://bugs.webkit.org/show_bug.cgi?id=198242

Reviewed by Beth Dakin.

Source/WebCore:

Teach the web content reader to respect the -preferredPresentationSize when creating attachment-backed image
elements. See below for more details.

Test: WKAttachmentTestsIOS.InsertDroppedImageWithPreferredPresentationSize

  • editing/WebContentReader.h:
  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::attachmentForFilePath):
(WebCore::attachmentForData):

When creating attachment-backed image elements, additionally set width and height attributes from the preferred
presentation size, if specified.

(WebCore::WebContentReader::readFilePath):

Add a version of readFilePath that takes a single file path, and an optional preferred presentation size.

(WebCore::WebContentReader::readFilePaths):

Reimplement readFilePaths in terms of readFilePath.

(WebCore::WebContentReader::readDataBuffer):

Add more plumbing for preferredPresentationSize.

  • platform/Pasteboard.h:

(WebCore::PasteboardWebContentReader::readFilePath):
(WebCore::PasteboardWebContentReader::readDataBuffer):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):

Forward PasteboardItemInfo's preferredPresentationSize to the web content reader.

Tools:

Add a new test that simulates dropping an image with a preferred presentation size into an editable element
with attachment elements enabled.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::TEST):

11:50 AM Changeset in webkit [245774] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Opt naver.com into simulated mouse events quirk on iOS
https://bugs.webkit.org/show_bug.cgi?id=198248
<rdar://problem/50598281>

Reviewed by Brent Fulgham.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

9:41 AM Changeset in webkit [245773] by youenn@apple.com
  • 4 edits in trunk

media/video-remote-control-playpause.html is timing out after r245712
https://bugs.webkit.org/show_bug.cgi?id=198238

Reviewed by Eric Carlson.

Source/WebCore:

Fix regression introduced in r245712.
Covered by test no longer timing out.

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::sessionWillEndPlayback):

LayoutTests:

  • platform/mac/TestExpectations:

Removed old flaky expectation that is no longer valid according dashboard.

8:01 AM Changeset in webkit [245772] by Simon Fraser
  • 4 edits
    3 adds in trunk

[Async overflow scrolling] Absolute positioned element inside async overflow scroll didn't get composited sometimes
https://bugs.webkit.org/show_bug.cgi?id=198237

Reviewed by Antti Koivisto.

Source/WebCore:

The logic in requiresCompositingForIndirectReason() that decides if we need to do
compositing for a layer that needs to move independently of its enclosing scroller
was wrong.

Instead of asking question about the enclosing compositing layer, it needs to ask
whether it has different positioning behavior from the layer that it would
otherwise paint into, which is its paint-order parent.

"paintsIntoProvidedBacking" already does a containing-block check against the
scroller, so we know we don't have to do the check in that case.

Test: scrollingcoordinator/scrolling-tree/absolute-inside-stacking-in-scroller.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::enclosingCompositedScrollingLayer):
(WebCore::isScrolledByOverflowScrollLayer):
(WebCore::isNonScrolledLayerInsideScrolledCompositedAncestor):
(WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):

  • rendering/RenderLayerCompositor.h:

LayoutTests:

  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-inside-stacking-in-scroller-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/absolute-inside-stacking-in-scroller-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/absolute-inside-stacking-in-scroller.html: Added.
8:01 AM Changeset in webkit [245771] by Simon Fraser
  • 3 edits
    2 adds in trunk

[macOS] Fix programmatic scroll in RTL overflow with async scrolling enabled
https://bugs.webkit.org/show_bug.cgi?id=198226

Reviewed by Antti Koivisto.

Source/WebCore:

On macOS we need to use a scroll offset to set the layer position, not
a scroll position.

Test: scrollingcoordinator/mac/rtl-programmatic-overflow-scroll.html

  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):

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

  • scrollingcoordinator/mac/rtl-programmatic-overflow-scroll-expected.html: Added.
  • scrollingcoordinator/mac/rtl-programmatic-overflow-scroll.html: Added.
7:33 AM Changeset in webkit [245770] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[l10n] [pt_BR] Updated Brazilian Portuguese translation
https://bugs.webkit.org/show_bug.cgi?id=198245

Patch by Rafael Fontenelle <rafaelff@gnome.org> on 2019-05-25
Rubber-stamped by Michael Catanzaro.

  • pt_BR.po:
2:25 AM Changeset in webkit [245769] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

JITOperations getByVal should mark negative array indices as out-of-bounds
https://bugs.webkit.org/show_bug.cgi?id=198229

Reviewed by Saam Barati.

JSTests:

  • microbenchmarks/get-by-val-negative-array-index.js: Added.

(foo):

Source/JavaScriptCore:

get_by_val with an array or string as base value and a negative index causes DFG to OSR exit,
but baseline doesn't mark it as out-of-bounds, since it only considers positive indices. This
leads to discarding DFG code, recompiling it and exiting at the same bytecode.

This is observed in the prepack-wtb subtest of JetStream2. In popContext#CdOhFJ, the last item
of the array popped and the new last value is accessed using array[array.length - 1], which
is -1 when the array is empty. It shows a ~0.5% progression in JetStream2, but it's within the
noise.

  • jit/JITOperations.cpp:

(JSC::getByVal):

May 24, 2019:

6:42 PM Changeset in webkit [245768] by jh718.park@samsung.com
  • 10 edits in trunk

Make computed width of non-replaced inline return computed style.
https://bugs.webkit.org/show_bug.cgi?id=197814

Reviewed by Antti Koivisto.

Currently, Computed width of non-replaced inline incorrectly returns "auto"
instead of the computed value.
This patch changes the behavior according to
https://drafts.csswg.org/cssom/#resolved-value as below.

'If the property applies to the element or pseudo-element
and the resolved value of the display property is not none or contents,
then the resolved value is the used value.
Otherwise the resolved value is the computed value.'

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-object-element/object-attributes-expected.txt:

Source/WebCore:

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):

LayoutTests:

  • fast/css/getComputedStyle/getComputedStyle-resolved-values-expected.txt:
  • fast/css/getComputedStyle/getComputedStyle-with-pseudo-element-expected.txt:
  • fast/css/getComputedStyle/getComputedStyle-with-pseudo-element.html:
  • legacy-animation-engine/fast/css/getComputedStyle/getComputedStyle-with-pseudo-element-expected.txt:
  • legacy-animation-engine/fast/css/getComputedStyle/getComputedStyle-with-pseudo-element.html:
6:39 PM Changeset in webkit [245767] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r245715?) [WK2] Layout Test http/wpt/cache-storage/cache-storage-networkprocess-crash.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=198222
<rdar://problem/51114899>

Reviewed by Alex Christensen.

In case a connection gets closed, handle all of its async reply completion handlers.
This ensures they handlers are called in case the connection does not get destroyed until a much later stage.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::~Connection):
(IPC::Connection::connectionDidClose):
(IPC::addAsyncReplyHandler):
(IPC::clearAsyncReplyHandlers):
(IPC::CompletionHandler<void):

5:51 PM Changeset in webkit [245766] by Alan Coon
  • 7 edits in tags/Safari-608.1.25.1/Source

Versioning.

5:51 PM Changeset in webkit [245765] by Justin Michaud
  • 14 edits
    1 add in trunk

[WASM-References] Support Anyref in globals
https://bugs.webkit.org/show_bug.cgi?id=198102

Reviewed by Saam Barati.

JSTests:

Add test for anyrefs in globals, as well as adding a new RefNull initExpr for Builder.

  • wasm/Builder.js:

(export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):

  • wasm/Builder_WebAssemblyBinary.js:

(const.putInitExpr):

  • wasm/references/anyref_globals.js: Added.

(GetGlobal.0.End.End.WebAssembly):
(5.doGCSet):
(doGCTest):
(doGCSet.doGCTest.let.count.0.doBarrierSet):

Source/JavaScriptCore:

Support anyref for globals, imports and exports. This adds code in B3 and Air to emit a write barrier
on the JSWebAssemblyWrapper whenever an anyref global is set. This also fixes a small bug in emitCCall
for air where it adds code to the wrong block.

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitCCall):
(JSC::Wasm::AirIRGenerator::moveOpForValueType):
(JSC::Wasm::AirIRGenerator::setGlobal):
(JSC::Wasm::AirIRGenerator::emitWriteBarrierForJSWrapper):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::setGlobal):
(JSC::Wasm::B3IRGenerator::emitWriteBarrierForJSWrapper):

  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::setGlobal):

  • wasm/WasmInstance.h:

(JSC::Wasm::Instance::loadI32Global const):
(JSC::Wasm::Instance::loadI64Global const):
(JSC::Wasm::Instance::setGlobal):
(JSC::Wasm::Instance::shouldMarkGlobal):
(JSC::Wasm::Instance::numGlobals const):

  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseInitExpr):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::visitChildren):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

5:40 PM Changeset in webkit [245764] by Alan Coon
  • 1 copy in tags/Safari-608.1.25.1

New tag.

5:40 PM Changeset in webkit [245763] by Alan Coon
  • 7 edits in trunk/Source

Versioning.

5:39 PM Changeset in webkit [245762] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.30-branch/Source

Versioning.

5:28 PM Changeset in webkit [245761] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.20-branch/Source

Versioning.

4:45 PM Changeset in webkit [245760] by Alan Coon
  • 1 copy in tags/Safari-608.1.24.30.2

Tag Safari-608.1.24.30.2.

4:38 PM Changeset in webkit [245759] by mmaxfield@apple.com
  • 6 edits
    2 adds in trunk

[WHLSL] Allow vertex attributes to have arbitrary names in the shader
https://bugs.webkit.org/show_bug.cgi?id=198235

Reviewed by Dean Jackson and Justin Fan.

Source/WebCore:

Metal doesn't allow arbitrary vertex attribute IDs. If you try to create a vertex attribute > 16,
the Metal validation layer will assert. So, we need to have a mapping from whatever the WebGPU
API says the vertex attribute IDs should be to the internally-used vertex attribute IDs.

Test: webgpu/whlsl-arbitrary-vertex-attribute-locations.html

  • Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:

(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::VertexEntryPointScaffolding):

  • Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h:
  • Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp:

(WebCore::WHLSL::matchVertexAttributes):

  • platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:

(WebCore::convertRenderPipelineDescriptor):
(WebCore::trySetInputStateForPipelineDescriptor):

LayoutTests:

  • webgpu/whlsl-arbitrary-vertex-attribute-locations-expected.html: Added.
  • webgpu/whlsl-arbitrary-vertex-attribute-locations.html: Added.
4:17 PM Changeset in webkit [245758] by Alan Coon
  • 1 copy in tags/Safari-608.1.24.20.4

Tag Safari-608.1.24.20.4.

3:48 PM Changeset in webkit [245757] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

Remove unused member in WebsiteDataRecord
https://bugs.webkit.org/show_bug.cgi?id=198231

Reviewed by Brent Fulgham.

The data member 'originsWithCredentials' in WebsiteDataRecord is no longer needed since origins
with credentials are now stored in the 'origins' member.

  • UIProcess/WebsiteData/WebsiteDataRecord.cpp:

(WebKit::WebsiteDataRecord::addOriginWithCredential): Deleted.

  • UIProcess/WebsiteData/WebsiteDataRecord.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchDataAndApply):

3:13 PM Changeset in webkit [245756] by david_quesada@apple.com
  • 2 edits in trunk/Source/WebKit

Crash under WebCore::TimerBase::~TimerBase after a download is canceled
https://bugs.webkit.org/show_bug.cgi?id=197927
rdar://problem/50822728

Reviewed by Ryosuke Niwa.

  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::platformCancelNetworkLoad):

CFNetwork makes no guarantees about what thread is used to call the completion block
passed to -[NSURLSessionDownloadTask cancelByProducingResumeData], and in some cases,
it can be called on a background queue. This eventually causes the Download to be
deallocated on the background queue, which triggers a release assertion failure in
~TimerBase. When CFNetwork finishes canceling the download, we should move to the
main thread before calling didCancel().

2:47 PM Changeset in webkit [245755] by Alan Coon
  • 2 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245753. rdar://problem/51068494

Refactor how showLetterpressedGlyphsWithAdvances gets the graphics context.
https://bugs.webkit.org/show_bug.cgi?id=198225

Reviewed by Dean Jackson.

  • platform/graphics/cocoa/FontCascadeCocoa.mm: (WebCore::showLetterpressedGlyphsWithAdvances): (WebCore::FontCascade::drawGlyphs):

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

2:47 PM Changeset in webkit [245754] by Alan Coon
  • 5 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245752. rdar://problem/51068494

Plumb dark appearance down to GraphicsContext.
https://bugs.webkit.org/show_bug.cgi?id=198224
rdar://problem/51068494

Reviewed by Dean Jackson.

No test yet, as it is not testable until this gets used.

  • platform/graphics/GraphicsContext.cpp: (WebCore::GraphicsContextStateChange::changesFromState const): (WebCore::GraphicsContextStateChange::accumulate): (WebCore::GraphicsContextStateChange::apply const): (WebCore::GraphicsContextStateChange::dump const): (WebCore::GraphicsContext::setUseDarkAppearance):
  • platform/graphics/GraphicsContext.h: (WebCore::GraphicsContext::useDarkAppearance const):
  • rendering/TextPaintStyle.cpp: (WebCore::TextPaintStyle::operator== const): (WebCore::computeTextPaintStyle): (WebCore::updateGraphicsContext):
  • rendering/TextPaintStyle.h:

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

2:41 PM Changeset in webkit [245753] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Refactor how showLetterpressedGlyphsWithAdvances gets the graphics context.
https://bugs.webkit.org/show_bug.cgi?id=198225

Reviewed by Dean Jackson.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::showLetterpressedGlyphsWithAdvances):
(WebCore::FontCascade::drawGlyphs):

2:41 PM Changeset in webkit [245752] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebCore

Plumb dark appearance down to GraphicsContext.
https://bugs.webkit.org/show_bug.cgi?id=198224
rdar://problem/51068494

Reviewed by Dean Jackson.

No test yet, as it is not testable until this gets used.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContextStateChange::changesFromState const):
(WebCore::GraphicsContextStateChange::accumulate):
(WebCore::GraphicsContextStateChange::apply const):
(WebCore::GraphicsContextStateChange::dump const):
(WebCore::GraphicsContext::setUseDarkAppearance):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::useDarkAppearance const):

  • rendering/TextPaintStyle.cpp:

(WebCore::TextPaintStyle::operator== const):
(WebCore::computeTextPaintStyle):
(WebCore::updateGraphicsContext):

  • rendering/TextPaintStyle.h:
12:49 PM Changeset in webkit [245751] by Simon Fraser
  • 2 edits in trunk/LayoutTests

Rebase compositing/rtl/rtl-overflow-scrolling.html
https://bugs.webkit.org/show_bug.cgi?id=198220
<rdar://problem/51114177>

Unreviewed test gardening.

New result is a progression (scrollX, which is an offset, should not be negative).

  • platform/ios-wk2/compositing/rtl/rtl-overflow-scrolling-expected.txt:
12:01 PM Changeset in webkit [245750] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Overlay: don't show setting for showing rulers/guides during element selection if it's not supported
https://bugs.webkit.org/show_bug.cgi?id=198221

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createGeneralSettingsView):

11:55 AM Changeset in webkit [245749] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

Update messages_unittest.py after r245715
https://bugs.webkit.org/show_bug.cgi?id=198214

Reviewed by Alexey Proskuryakov.

Update expected results for messages.py output.i
Small refactoring to messages.py: instead of calling the completionHandler in case of decoding error with AsyncReply errors,
call cancelReply directly as it does the same thing.

  • Scripts/webkit/MessageReceiverSuperclass-expected.cpp:

(Messages::WebPage::TestAsyncMessage::callReply):
(Messages::WebPage::TestAsyncMessage::cancelReply):
(Messages::WebPage::TestAsyncMessageWithMultipleArguments::callReply):
(Messages::WebPage::TestAsyncMessageWithMultipleArguments::cancelReply):

  • Scripts/webkit/messages.py:
11:26 AM Changeset in webkit [245748] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Make sure completion handler is always called in SWServer::startSuspension
https://bugs.webkit.org/show_bug.cgi?id=198215

Reviewed by Alex Christensen.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::startSuspension):
Make sure completion handler is called in case of no registration store.

10:47 AM Changeset in webkit [245747] by Shawn Roberts
  • 3 edits in trunk/LayoutTests

scrollingcoordinator/scrolling-tree/fixed-inside-frame.html is no longer flaky
https://bugs.webkit.org/show_bug.cgi?id=194253

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations: Removing failed expectations
9:33 AM Changeset in webkit [245746] by rniwa@webkit.org
  • 4 edits
    2 adds in trunk

Asssertion failure in dispatchSubtreeModifiedEvent due to TextFieldInputType updating UA shadow tree inside Element::removedFromAncestor
https://bugs.webkit.org/show_bug.cgi?id=198216

Reviewed by Brent Fulgham.

Source/WebCore:

The bug was caused by ListAttributeTargetObserver::idTargetChanged() updating the shadow tree of an input element
within Element::removedFromAncestor via TextFieldInputType::createDataListDropdownIndicator(). Fixed it by
supressing the assertions with ScriptDisallowedScope::EventAllowedScope since it's always safe to update
UA shadow trees of input elements as it's not exposed to author scripts.

Avoiding the creation of dropdown indicator in this particular scenario is a lot more involved and it's not
particularly correct because there could be another datalist element which matches the ID specified in list
content attribute after the removal of the old datalist element.

Test: fast/forms/datalist/datalist-removal-assertion.html

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::createDataListDropdownIndicator):
(WebCore::TextFieldInputType::createContainer):

  • html/shadow/DataListButtonElement.cpp:

(WebCore::DataListButtonElement::DataListButtonElement):

LayoutTests:

Added a regression test.

  • fast/forms/datalist/datalist-removal-assertion-expected.txt: Added.
  • fast/forms/datalist/datalist-removal-assertion.html: Added.
1:19 AM Changeset in webkit [245745] by sbarati@apple.com
  • 6 edits in trunk/Source/WebCore

[WHLSL] ReadModifyWriteExpression always has a result and new value expression
https://bugs.webkit.org/show_bug.cgi?id=198079

Reviewed by Myles Maxfield.

Let's not pretend it might not.

  • Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:

(WebCore::WHLSL::AST::ReadModifyWriteExpression::newValueExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::resultExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValueExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeResultExpression):

  • Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:

(WebCore::WHLSL::ASTDumper::visit):

  • Modules/webgpu/WHLSL/WHLSLChecker.cpp:

(WebCore::WHLSL::Checker::visit):

  • Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:

(WebCore::WHLSL::PropertyResolver::visit):

  • Modules/webgpu/WHLSL/WHLSLVisitor.cpp:

(WebCore::WHLSL::Visitor::visit):

12:54 AM Changeset in webkit [245744] by ysuzuki@apple.com
  • 2 edits in trunk/Tools

Make display-profiler-output work with newer HighLine
https://bugs.webkit.org/show_bug.cgi?id=198205

Reviewed by Saam Barati.

Newer HighLine does not have SystemExtensions. Access @terminal member in default instance of HighLine.

  • Scripts/display-profiler-output:

May 23, 2019:

10:27 PM Changeset in webkit [245743] by bshafiei@apple.com
  • 3 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245742. rdar://problem/49720087

With async overflow scrolling, programmatic scroll to a negative offset fails to clamp the scroll offset
https://bugs.webkit.org/show_bug.cgi?id=198208
<rdar://problem/49720087>

Reviewed by Zalan Bujtas.

Source/WebCore:

RenderLayer::scrollToOffset() needs to pass the clamped offset to scrollingCoordinator->requestScrollPositionUpdate(),
otherwise the scrolling tree will round-trip a negative value and scrollLeft will end up negative.

Test: fast/scrolling/programmatic-scroll-to-negative-offset.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollToOffset):

LayoutTests:

  • fast/scrolling/programmatic-scroll-to-negative-offset-expected.txt: Added.
  • fast/scrolling/programmatic-scroll-to-negative-offset.html: Added.

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

8:25 PM Changeset in webkit [245742] by Simon Fraser
  • 3 edits
    2 adds in trunk

With async overflow scrolling, programmatic scroll to a negative offset fails to clamp the scroll offset
https://bugs.webkit.org/show_bug.cgi?id=198208
<rdar://problem/49720087>

Reviewed by Zalan Bujtas.

Source/WebCore:

RenderLayer::scrollToOffset() needs to pass the clamped offset to scrollingCoordinator->requestScrollPositionUpdate(),
otherwise the scrolling tree will round-trip a negative value and scrollLeft will end up negative.

Test: fast/scrolling/programmatic-scroll-to-negative-offset.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollToOffset):

LayoutTests:

  • fast/scrolling/programmatic-scroll-to-negative-offset-expected.txt: Added.
  • fast/scrolling/programmatic-scroll-to-negative-offset.html: Added.
8:19 PM Changeset in webkit [245741] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: prevent stripping console.assert if it's used inside a string
https://bugs.webkit.org/show_bug.cgi?id=198207

Reviewed by Joseph Pecoraro.

  • Scripts/remove-console-asserts.pl:

(removeConsoleAssertsInFile):

7:55 PM Changeset in webkit [245740] by Alan Coon
  • 7 edits in branches/safari-608.1.24.50-branch/Source

Versioning.

7:53 PM Changeset in webkit [245739] by Alan Coon
  • 7 edits in branches/safari-608.1.24.20-branch/Source

Versioning.

7:53 PM Changeset in webkit [245738] by Alan Coon
  • 1 copy in tags/Safari-608.1.24.50.1

Tag Safari-608.1.24.50.1.

7:51 PM Changeset in webkit [245737] by Alan Coon
  • 7 edits in branches/safari-608.1.24.40-branch/Source

Versioning.

7:36 PM Changeset in webkit [245736] by Alan Coon
  • 3 edits in branches/safari-608.1.24.50-branch/Source/WebKit

Cherry-pick r245589. rdar://problem/50971874

[WebAuthN] Make WebAuthN default on only on macOS
https://bugs.webkit.org/show_bug.cgi?id=198068
<rdar://problem/50971874>

Reviewed by Brent Fulgham.

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

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

7:32 PM Changeset in webkit [245735] by Alan Coon
  • 7 edits in branches/safari-608.1.24.50-branch/Source

Versioning.

7:27 PM Changeset in webkit [245734] by Alan Coon
  • 1 copy in branches/safari-608.1.24.50-branch

New branch.

7:27 PM Changeset in webkit [245733] by Fujii Hironori
  • 15 edits in trunk

run-webkit-tests: Remove feature detection support
https://bugs.webkit.org/show_bug.cgi?id=198105

Reviewed by Jonathan Bedard.

Tools:

Feature detection support was added to DRT for Windows and old
run-webkit-tests in Bug 35610. It was added for NRWT in Bug 41842.
But, it doesn't work for DRT for Windows because of feature name
mismatches. Since USE(ACCELERATED_COMPOSITING) flag has been
removed in Bug 127833, it is not needed anymore.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(main):

  • Scripts/webkitpy/port/base.py:

(Port._tests_for_other_platforms):
(Port._skipped_tests_for_unsupported_features):
(Port._runtime_feature_list): Deleted.
(Port.nm_command): Deleted.
(Port._modules_to_search_for_symbols): Deleted.
(Port._symbols_string): Deleted.
(Port._missing_feature_to_skipped_tests): Deleted.
(Port._has_test_in_directories): Deleted.

  • Scripts/webkitpy/port/darwin.py:

(DarwinPort.make_command):
(DarwinPort.nm_command): Deleted.

  • Scripts/webkitpy/port/ios_simulator.py:

(IOSSimulatorPort.reset_preferences):
(IOSSimulatorPort.nm_command): Deleted.

  • Scripts/webkitpy/port/port_testcase.py:

(TestWebKitPort.init):
(TestWebKitPort.all_test_configurations):
(PortTestCase.test_path_to_test_expectations_file):
(TestWebKitPort._symbols_string): Deleted.
(PortTestCase.test_skipped_directories_for_features): Deleted.
(PortTestCase.test_skipped_directories_for_features_no_matching_tests_in_test_list): Deleted.
(PortTestCase.test_skipped_tests_for_unsupported_features_empty_test_list): Deleted.

  • Scripts/webkitpy/port/watch_simulator.py:

(WatchSimulatorPort.reset_preferences):
(WatchSimulatorPort.nm_command): Deleted.

  • Scripts/webkitpy/port/win.py:

(WinPort.show_results_html_file):
(WinPort._runtime_feature_list): Deleted.

  • Scripts/webkitpy/port/win_unittest.py:

(WinPortTest.test_operating_system):
(WinPortTest.test_runtime_feature_list): Deleted.

  • WebKitTestRunner/Options.cpp:

(WTR::OptionsHandler::OptionsHandler):
(WTR::handleOptionPrintSupportedFeatures): Deleted.

  • WebKitTestRunner/Options.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):

LayoutTests:

  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:

Added Skip for all compositing, animations/3d and transforms/3d tests temporarily.

7:09 PM Changeset in webkit [245732] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.24.20.3

Tag Safari-608.1.24.20.3.

6:59 PM Changeset in webkit [245731] by Alan Coon
  • 1 delete in tags/Safari-608.1.24.50

Delete tag.

6:34 PM Changeset in webkit [245730] by Devin Rousso
  • 12 edits in trunk/Source

Web Inspector: Overlay: rulers/guides should be shown whenever element selection is enabled
https://bugs.webkit.org/show_bug.cgi?id=198088

Reviewed by Timothy Hatcher.

When trying to "measure" the absolute position (to the viewport) or relative position (to
another element) of a given element, often the easiest way is to enable Element Selection
and Show Rulers at the same time.

This can have the undesired "side-effect" of having the rulers be always present, even when
not highlighting any nodes.

The ideal functionality is to allow the rulers/guides to be shown when element selection is
active and a node is hovered, regardless of whether "Show Rulers" is enabled.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add an optional showRulers parameter to DOM.setInspectModeEnabled that supersedes the
current value of Page.setShowRulers as to whether rulers/guides are shown.

Source/WebCore:

  • inspector/InspectorOverlay.h:

(WebCore::InspectorOverlay::setShowRulersDuringElementSelection): Added.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::paint):
(WebCore::InspectorOverlay::shouldShowOverlay):
(WebCore::InspectorOverlay::drawNodeHighlight):
(WebCore::InspectorOverlay::drawQuadHighlight):
(WebCore::InspectorOverlay::drawElementTitle):
If showRulersDuringElementSelection is enabled, draw rulers whenever any highlight bounds
are calculated, but don't update the overlay if it's the only thing enabled (e.g. if there's
no currently hovered node, the overlay will disappear).

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorDOMAgent::inspect):
(WebCore::InspectorDOMAgent::setInspectModeEnabled):
(WebCore::InspectorDOMAgent::setSearchingForNode):
Add an optional showRulers parameter to DOM.setInspectModeEnabled that supersedes the
current value of Page.setShowRulers as to whether rulers/guides are shown.

Source/WebInspectorUI:

  • UserInterface/Base/Setting.js:
  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
Add a setting for controlling whether rulers/guides are shown during element selection.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.set inspectModeEnabled):
Pass the setting value as an optional parameter when calling DOM.setInspectModeEnabled.

  • Localizations/en.lproj/localizedStrings.js:
6:22 PM Changeset in webkit [245729] by commit-queue@webkit.org
  • 20 edits in trunk

Unreviewed, rolling out r245665.
https://bugs.webkit.org/show_bug.cgi?id=198203

Inspector appears blank, again. (Requested by NVI on #webkit).

Reverted changeset:

"Web Inspector: Provide UIString descriptions to improve
localizations"
https://bugs.webkit.org/show_bug.cgi?id=195132
https://trac.webkit.org/changeset/245665

5:10 PM Changeset in webkit [245728] by Devin Rousso
  • 3 edits in trunk/Source/WebCore

Web Inspector: Overlay: rulers should switch sides if they intersect the highlighted node(s) so they don't obstruct any content
https://bugs.webkit.org/show_bug.cgi?id=198165

Reviewed by Timothy Hatcher.

If the highlighted node is against the top edge of the screen, the top ruler should shift to
the bottom, unless the highlighted node is also against the bottom edge of the screen.

If the highlighted node is against the left edge of the screen, the left ruler should shift
to the right, unless the highlighted node is also against the right edge of the screen.

This way, unless the node is very wide/tall, the rulers won't be drawn on top of anything
being highlighted.

  • inspector/InspectorOverlay.h:
  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::paint):
(WebCore::InspectorOverlay::drawNodeHighlight):
(WebCore::InspectorOverlay::drawQuadHighlight):
(WebCore::InspectorOverlay::drawBounds):
(WebCore::InspectorOverlay::drawRulers):
Drive-by: create an alias for the type (FloatRect) used when calculating the bounds of

everything that's highlighted.

4:41 PM Changeset in webkit [245727] by sbarati@apple.com
  • 2 edits in trunk/Source/WebCore

[WHLSL] Make the AST dumper disambiguate expressions using parenthesis to represent AST construction
https://bugs.webkit.org/show_bug.cgi?id=198199

Reviewed by Myles C. Maxfield.

We would dump "*foo.bar" for "(*foo).bar", which is super confusing.
We now dump "(*foo).bar".

  • Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:

(WebCore::WHLSL::ASTDumper::visit):

4:36 PM Changeset in webkit [245726] by Ross Kirsling
  • 7 edits in trunk/Source

Socket-based RWI should be able to inspect a JSContext
https://bugs.webkit.org/show_bug.cgi?id=198197

Reviewed by Don Olmstead.

Source/JavaScriptCore:

  • inspector/remote/socket/RemoteInspectorSocket.cpp:

(Inspector::RemoteInspector::listingForInspectionTarget const):
Just use the debuggableType strings that WebInspectorUI ultimately wants.

Source/WebKit:

  • UIProcess/socket/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::inspect):

  • UIProcess/socket/RemoteInspectorClient.h:
  • UIProcess/socket/RemoteInspectorProtocolHandler.cpp:

(WebKit::RemoteInspectorProtocolHandler::inspect):
(WebKit::RemoteInspectorProtocolHandler::targetListChanged):
(WebKit::RemoteInspectorProtocolHandler::platformStartTask):

  • UIProcess/socket/RemoteInspectorProtocolHandler.h:

Have the RWI client actually pass the debuggableType to WebInspectorUI.

4:34 PM Changeset in webkit [245725] by Ryan Haddad
  • 3 edits in branches/safari-607-branch/LayoutTests

Land test changes for rdar://problem/51086725.

  • inspector/runtime/parse-expected.txt:
  • inspector/runtime/parse.html:
4:13 PM Changeset in webkit [245724] by sbarati@apple.com
  • 2 edits in trunk/Source/WebCore

[WHLSL] Don't wrap anonymous variables in parens in the AST dumper
https://bugs.webkit.org/show_bug.cgi?id=198196

Reviewed by Myles C. Maxfield.

This makes the dump of 'foo.bar.x = 42' go from
($(0x7f86d9d94440) = &foo, $(0x7f86d9d944e0) = operator.bar(*$(0x7f86d9d94440)), $(0x7f86d9d944e0) = operator.x=($(0x7f86d9d944e0), 42), *$(0x7f86d9d94440) = operator.bar=(*$(0x7f86d9d94440), $(0x7f86d9d944e0)));

to:
($0x7f86d9d94440 = &foo, $0x7f86d9d944e0 = operator.bar(*$0x7f86d9d94440), $0x7f86d9d944e0 = operator.x=($0x7f86d9d944e0, 42), *$0x7f86d9d94440 = operator.bar=(*$0x7f86d9d94440, $0x7f86d9d944e0));

  • Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:

(WebCore::WHLSL::ASTDumper::visit):

3:58 PM Changeset in webkit [245723] by don.olmstead@sony.com
  • 10 edits in trunk

[CMake] Use target oriented design for bmalloc
https://bugs.webkit.org/show_bug.cgi?id=198046

Reviewed by Konstantin Tokarev.

.:

Add WEBKIT_COPY_FILES to WebKitMacros so it is available to all CMake code. Add
bmalloc_FRAMEWORK_HEADERS_DIR for specifying the location to copy bmalloc headers to.

  • Source/cmake/WebKitFS.cmake:
  • Source/cmake/WebKitMacros.cmake:

Source/bmalloc:

Switch to a target oriented dsign for bmalloc. Use target_include_directories directly
instead of include_directories.

List the headers for bmalloc and copy them using WEBKIT_COPY_FILES.

Add an intermediate target bmalloc_PostBuild which depends on bmalloc and the headers
being copied. Then alias that to WebKit::bmalloc.

  • CMakeLists.txt:
  • PlatformMac.cmake:

Source/ThirdParty/ANGLE:

Remove WEBKIT_COPY_FILES from CMakelists.txt now that it is in WebKitMacros.

  • CMakeLists.txt:

Source/WTF:

Use WebKit::bmalloc target.

  • wtf/CMakeLists.txt:
3:41 PM Changeset in webkit [245722] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[WHLSL] Implement property resolver
https://bugs.webkit.org/show_bug.cgi?id=195925
<rdar://problem/48219643>

Unreviewed watchOS build fix.

  • Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:

(WebCore::WHLSL::AST::AssignmentExpression::AssignmentExpression):

3:21 PM Changeset in webkit [245721] by sbarati@apple.com
  • 3 edits
    2 adds in trunk

[WHLSL] Property resolver needs to recurse to handle the base when simplifying rvalues
https://bugs.webkit.org/show_bug.cgi?id=198193

Reviewed by Myles Maxfield.

Source/WebCore:

We were only transforming the top most node in the AST. So things like
'x = foo.bar' would work, but 'x = foo.bar.baz' would not.

Test: webgpu/whlsl-nested-dot-expression-rvalue.html

  • Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:

(WebCore::WHLSL::PropertyResolver::simplifyRightValue):

LayoutTests:

  • webgpu/whlsl-nested-dot-expression-rvalue-expected.html: Added.
  • webgpu/whlsl-nested-dot-expression-rvalue.html: Added.
3:08 PM Changeset in webkit [245720] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

http/tests/resourceLoadStatistics/prune-statistics.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=197285

Unreviewed test gardening. Updating expectations for Release as well

  • platform/mac-wk2/TestExpectations:
2:39 PM Changeset in webkit [245719] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

fast/css-grid-layout/flex-content-sized-columns-resize.html is a flaky ImageOnlyFailure
https://bugs.webkit.org/show_bug.cgi?id=187828#add_comment

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating for flkay test
2:22 PM Changeset in webkit [245718] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

fast/css/sticky/sticky-left-percentage.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=198195

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating for flaky test
2:19 PM Changeset in webkit [245717] by Stephanie Lewis
  • 4 edits in trunk/Source

release builds of webkit cannot be used to generate a dyld shared cache
https://bugs.webkit.org/show_bug.cgi?id=198150
<rdar://problem/50675982>

Reviewed by Dan Bernstein.

Restrict the -not_for_dyld_shared_cache linker flag to macosx

Source/WebCore:

  • Configurations/WebCore.xcconfig:

Source/WebKit:

  • Configurations/WebKit.xcconfig:
2:17 PM Changeset in webkit [245716] by Alan Bujtas
  • 20 edits in trunk/Source

[Hittest] Move hittesting from RenderView to Document
https://bugs.webkit.org/show_bug.cgi?id=198192
<rdar://problem/51077762>

Reviewed by Antti Koivisto.

Source/WebCore:

RenderView is not refcounted and may be destroyed in updateLayout(), so enter hit-testing from Document.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::press):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::visiblePositionForPoint const):

  • dom/Document.cpp:

(WebCore::FrameFlatteningLayoutDisallower::FrameFlatteningLayoutDisallower):
(WebCore::FrameFlatteningLayoutDisallower::~FrameFlatteningLayoutDisallower):
(WebCore::Document::scheduleStyleRecalc):
(WebCore::Document::prepareMouseEvent):
(WebCore::Document::hitTest):

  • dom/Document.h:

(WebCore::Document::inHitTesting const):

  • dom/TreeScope.cpp:

(WebCore::TreeScope::nodeFromPoint):
(WebCore::TreeScope::elementsFromPoint):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::contains const):

  • html/HTMLPlugInElement.cpp:

(WebCore::HTMLPlugInElement::isReplacementObscured):

  • html/MediaElementSession.cpp:

(WebCore::isElementMainContentForPurposesOfAutoplay):

  • page/DragController.cpp:

(WebCore::elementUnderMouse):

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMouseDraggedEvent):
(WebCore::EventHandler::eventMayStartDrag const):
(WebCore::EventHandler::updateSelectionForMouseDrag):
(WebCore::EventHandler::hitTestResultAtPoint const):
(WebCore::EventHandler::updateCursor):
(WebCore::EventHandler::isInsideScrollbar const):
(WebCore::EventHandler::handleWheelEvent):
(WebCore::EventHandler::hoverTimerFired):
(WebCore::EventHandler::handleDrag):
(WebCore::hitTestResultInFrame):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::setNeedsLayoutAfterViewConfigurationChange):

  • rendering/RenderView.cpp:

(WebCore::FrameFlatteningLayoutDisallower::FrameFlatteningLayoutDisallower): Deleted.
(WebCore::FrameFlatteningLayoutDisallower::~FrameFlatteningLayoutDisallower): Deleted.
(): Deleted.
(WebCore::RenderView::hitTest): Deleted.

  • rendering/RenderView.h:
  • rendering/RenderWidget.cpp:

(WebCore::RenderWidget::nodeAtPoint):

  • testing/Internals.cpp:

(WebCore::Internals::nodesFromRect const):

Source/WebKit:

  • WebProcess/WebPage/ViewGestureGeometryCollector.cpp:

(WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::determinePrimarySnapshottedPlugIn):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):

2:15 PM Changeset in webkit [245715] by youenn@apple.com
  • 26 edits
    2 adds
    1 delete in trunk

CacheStorageConnection callbacks should be completed on network connection close
https://bugs.webkit.org/show_bug.cgi?id=195757

Reviewed by Alex Christensen.

Source/WebCore:

Move HashMap-based callbacks to WorkerCacheStorageConnection.
Make CacheStorageConnection default API to implement use callbacks.
This is used by WebKit layer to do AsyncReply IPC.

Move DOMCacheEngine callbacks to CompletionHandler.

Test: http/wpt/cache-storage/cache-storage-networkprocess-crash.html

  • Modules/cache/CacheStorageConnection.cpp:
  • Modules/cache/CacheStorageConnection.h:

(WebCore::CacheStorageConnection::engineRepresentation):

  • Modules/cache/DOMCacheEngine.h:
  • Modules/cache/WorkerCacheStorageConnection.cpp:

(WebCore::recordsDataFromRecords):
(WebCore::recordsDataOrErrorFromRecords):
(WebCore::recordsFromRecordsData):
(WebCore::recordsOrErrorFromRecordsData):
(WebCore::WorkerCacheStorageConnection::open):
(WebCore::WorkerCacheStorageConnection::openOrRemoveCompleted):
(WebCore::WorkerCacheStorageConnection::remove):
(WebCore::WorkerCacheStorageConnection::retrieveCaches):
(WebCore::WorkerCacheStorageConnection::retrieveCachesCompleted):
(WebCore::WorkerCacheStorageConnection::retrieveRecords):
(WebCore::WorkerCacheStorageConnection::retrieveRecordsCompleted):
(WebCore::WorkerCacheStorageConnection::batchDeleteOperation):
(WebCore::WorkerCacheStorageConnection::deleteRecordsCompleted):
(WebCore::WorkerCacheStorageConnection::batchPutOperation):
(WebCore::WorkerCacheStorageConnection::putRecordsCompleted):
(WebCore::WorkerCacheStorageConnection::reference):
(WebCore::WorkerCacheStorageConnection::dereference):
(WebCore::WorkerCacheStorageConnection::clearPendingRequests):

  • Modules/cache/WorkerCacheStorageConnection.h:
  • page/CacheStorageProvider.h:

(WebCore::CacheStorageProvider::createCacheStorageConnection):

Source/WebKit:

Update according new WebCore CacheStorageConnection interface.
Use Async IPC replies so that the completion handlers are called on network crash.

Allow to have specific error handling in case of cancelled reply or badly decoded message.
This allows to reject the corresponding JS promise.

  • CMakeLists.txt:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::clearMemoryRepresentation):

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::requestSpace):
(WebKit::CacheStorage::Caches::writeRecord):

  • NetworkProcess/cache/CacheStorageEngineConnection.cpp:

(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::remove):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::retrieveRecords):
(WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
(WebKit::CacheStorageEngineConnection::putRecords):

  • NetworkProcess/cache/CacheStorageEngineConnection.h:

(IPC::AsyncReplyError<WebCore::DOMCacheEngine::CacheIdentifierOrError>::create):
(IPC::AsyncReplyError<WebCore::DOMCacheEngine::RecordIdentifiersOrError>::create):
(IPC::AsyncReplyError<WebCore::DOMCacheEngine::CacheInfosOrError>::create):
(IPC::AsyncReplyError<WebCore::DOMCacheEngine::RecordsOrError>::create):

  • NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
  • Platform/IPC/ArgumentCoders.h:
  • Platform/IPC/Connection.h:

(IPC::AsyncReplyError::create):

  • Scripts/webkit/messages.py:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Cache/WebCacheStorageConnection.cpp:

(WebKit::WebCacheStorageConnection::open):
(WebKit::WebCacheStorageConnection::remove):
(WebKit::WebCacheStorageConnection::retrieveCaches):
(WebKit::WebCacheStorageConnection::retrieveRecords):
(WebKit::WebCacheStorageConnection::batchDeleteOperation):
(WebKit::WebCacheStorageConnection::batchPutOperation):
(WebKit::WebCacheStorageConnection::engineRepresentation):

  • WebProcess/Cache/WebCacheStorageConnection.h:
  • WebProcess/Cache/WebCacheStorageConnection.messages.in: Removed.
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):

LayoutTests:

  • http/wpt/cache-storage/cache-storage-networkprocess-crash-expected.txt: Added.
  • http/wpt/cache-storage/cache-storage-networkprocess-crash.html: Added.
2:08 PM Changeset in webkit [245714] by Alan Coon
  • 1 edit in branches/safari-608.1.24.20-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

Fix incorrect merge conflict resolution. rdar://problem/50613388

2:06 PM Changeset in webkit [245713] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unused CSS class "offset-sections"
https://bugs.webkit.org/show_bug.cgi?id=198194
<rdar://problem/51080111>

Reviewed by Devin Rousso.

  • UserInterface/Views/DebuggerSidebarPanel.js:
  • UserInterface/Views/StyleDetailsPanel.js:

(WI.StyleDetailsPanel):

1:56 PM Changeset in webkit [245712] by youenn@apple.com
  • 11 edits
    2 adds in trunk

Multiple videos (with audios) with autoplay & playinline not working. Only one video play at a time.
https://bugs.webkit.org/show_bug.cgi?id=193312
<rdar://problem/47189864>

Reviewed by Jer Noble.

Source/WebCore:

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

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

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

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

Test: webrtc/concurrentVideoPlayback.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager):
(WebCore::HTMLMediaElement::hasMediaStreamSource const):

  • html/HTMLMediaElement.h:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::activeAudioSessionRequired const):
(WebCore::PlatformMediaSession::canPlayConcurrently const):
(WebCore::PlatformMediaSession::activeAudioSessionRequired): Deleted.

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSessionClient::hasMediaStreamSource const):

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::has const):
(WebCore::PlatformMediaSessionManager::activeAudioSessionRequired const):
(WebCore::PlatformMediaSessionManager::canProduceAudio const):
(WebCore::PlatformMediaSessionManager::count const):
(WebCore::PlatformMediaSessionManager::beginInterruption):
(WebCore::PlatformMediaSessionManager::endInterruption):
(WebCore::PlatformMediaSessionManager::addSession):
(WebCore::PlatformMediaSessionManager::removeSession):
(WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
(WebCore::PlatformMediaSessionManager::sessionWillEndPlayback):
(WebCore::PlatformMediaSessionManager::setCurrentSession):
(WebCore::PlatformMediaSessionManager::currentSession const):
(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive):
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive):
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground):
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground):
(WebCore::PlatformMediaSessionManager::systemWillSleep):
(WebCore::PlatformMediaSessionManager::systemDidWake):
(WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForProcess):
(WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::currentSessionsMatching const):
(WebCore::PlatformMediaSessionManager::forEachMatchingSession):
(WebCore::PlatformMediaSessionManager::forEachMatchingSession const):
(WebCore::PlatformMediaSessionManager::forEachSession):
(WebCore::PlatformMediaSessionManager::anyOfSessions const):
(): Deleted.
(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive const): Deleted.
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive const): Deleted.
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground const): Deleted.
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground const): Deleted.
(WebCore::PlatformMediaSessionManager::forEachSession const): Deleted.
(WebCore::PlatformMediaSessionManager::findSession const): Deleted.

  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::anyOfSessions const): Deleted.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(MediaSessionManagerCocoa::updateSessionState):
(MediaSessionManagerCocoa::beginInterruption):

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring):
(WebCore::MediaSessionManageriOS::externalOutputDeviceAvailableDidChange):

LayoutTests:

  • webrtc/concurrentVideoPlayback-expected.txt: Added.
  • webrtc/concurrentVideoPlayback.html: Added.
1:44 PM Changeset in webkit [245711] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

Updating test expectations for failing tests.
<rdar://problem/47088939>

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:43 PM Changeset in webkit [245710] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

DFG::OSREntry should not perform arity check
https://bugs.webkit.org/show_bug.cgi?id=198189

Reviewed by Saam Barati.

JSTests:

  • microbenchmarks/loop-osr-with-arity-mismatch.js: Added.

(foo):

Source/JavaScriptCore:

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

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

1:23 PM Changeset in webkit [245709] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Handling for non-persistent data should be consistent in computeNetworkProcessAccessTypeForDataFetch
https://bugs.webkit.org/show_bug.cgi?id=198050

Reviewed by Youenn Fablet.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::computeNetworkProcessAccessTypeForDataFetch):

1:20 PM Changeset in webkit [245708] by Alan Coon
  • 1 edit in branches/safari-608.1.24.20-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

Unreviewed build fix. rdar://problem/50613388

1:15 PM Changeset in webkit [245707] by stephan.szabo@sony.com
  • 2 edits in trunk/Tools

[Win][CMake] Pass architecture to cmake via -A for both x64 and Win32
https://bugs.webkit.org/show_bug.cgi?id=198098

Reviewed by Don Olmstead.

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

  • Scripts/webkitdirs.pm:

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

12:54 PM Changeset in webkit [245706] by sbarati@apple.com
  • 4 edits in trunk/Source/WebCore

[WHLSL] Add a helper for in-place AST mutation
https://bugs.webkit.org/show_bug.cgi?id=198175

Reviewed by Myles Maxfield.

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

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

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

  • Modules/webgpu/WHLSL/AST/WHLSLNode.h:

(WebCore::WHLSL::AST::replaceWith):

  • Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:

(WebCore::WHLSL::NameResolver::visit):

  • Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:

(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::visit):

12:45 PM Changeset in webkit [245705] by Alan Coon
  • 3 edits in tags/Safari-608.1.24.50/Source/WebKit

Cherry-pick r245589. rdar://problem/50971874

[WebAuthN] Make WebAuthN default on only on macOS
https://bugs.webkit.org/show_bug.cgi?id=198068
<rdar://problem/50971874>

Reviewed by Brent Fulgham.

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

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

12:42 PM Changeset in webkit [245704] by Alan Coon
  • 7 edits in tags/Safari-608.1.24.50/Source

Versioning.

12:33 PM Changeset in webkit [245703] by Alan Coon
  • 1 copy in tags/Safari-608.1.24.50

New tag.

12:33 PM Changeset in webkit [245702] by Alan Coon
  • 1 copy in tags/Safari-608.1.24.40.4

Tag Safari-608.1.24.40.4.

12:12 PM Changeset in webkit [245701] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[macOS,iOS] Add always-on logging for AVPlayerTimeControlStatus changes
https://bugs.webkit.org/show_bug.cgi?id=197946
<rdar://problem/50627457>

Reviewed by Jon Lee.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::convertEnumerationToString):
(WTF::LogArgument<AVPlayerTimeControlStatus>::toString):
(WebCore::MediaPlayerPrivateAVFoundationObjC::timeControlStatusDidChange):

11:32 AM Changeset in webkit [245700] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Build fix after r245695.

  • dom/Element.cpp:
11:13 AM Changeset in webkit [245699] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[Pointer Events] Compatibility mouse events can only be prevented while the pointer is pressed
https://bugs.webkit.org/show_bug.cgi?id=198178

Patch by Antoine Quint <Antoine Quint> on 2019-05-23
Reviewed by Dean Jackson.

Source/WebCore:

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

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

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::pointerEventWasDispatched):

  • page/PointerCaptureController.h:

LayoutTests:

Add a test that listens "mousemove" events and checks it is not dispatched after preventDefault() is called when handling

"pointerdown" but it is dispatched after releasing the mouse pointer and moving it again.

  • pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released-expected.txt: Added.
  • pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released.html: Added.
11:08 AM Changeset in webkit [245698] by youenn@apple.com
  • 4 edits in trunk

Set default WebsiteDataStore storage quota based on StorageQuotaManager
https://bugs.webkit.org/show_bug.cgi?id=198133
<rdar://problem/51031436>

Reviewed by Geoffrey Garen.

Source/WebKit:

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/StorageQuota.mm:

(doTest):

11:07 AM Changeset in webkit [245697] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

Lexer<T>::parseDecimal ought to ASSERT isASCIIDigit
https://bugs.webkit.org/show_bug.cgi?id=198156

Reviewed by Keith Miller.

  • parser/Lexer.cpp:

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

(JSC::Lexer<T>::lexWithoutClearingLineTerminator):
Clean up a few things in the vicinity of r245655:

  • fix token enum values in a couple of error cases added in the last patch
  • add UNLIKELY for existing error cases that forgot to use it
  • simplify some control flow
11:04 AM Changeset in webkit [245696] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: clicking a source link should never open the Network tab
https://bugs.webkit.org/show_bug.cgi?id=197951

Reviewed by Timothy Hatcher.

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

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

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

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

  • UserInterface/Base/Main.js:

(WI.dialogWasDismissedWithRepresentedObject):

  • UserInterface/Views/ResourceHeadersContentView.js:

(WI.ResourceHeadersContentView.prototype._refreshSummarySection):

11:02 AM Changeset in webkit [245695] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[Pointer Events] The mouseover, mouseout, mouseenter, and mouseleave events should not be prevented while the pointer is down
https://bugs.webkit.org/show_bug.cgi?id=198177

Patch by Antoine Quint <Antoine Quint> on 2019-05-23
Reviewed by Dean Jackson.

Source/WebCore:

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

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

  • dom/Element.cpp:

(WebCore::isCompatibilityMouseEvent):
(WebCore::Element::dispatchMouseEvent):

LayoutTests:

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

  • platform/mac-wk1/TestExpectations: Skipping the test on WK1 where the sequence of dispatched mouse events does not match.
  • pointerevents/mouse/compatibility-mouse-events-prevention-mouse-pressed-expected.txt: Added.
  • pointerevents/mouse/compatibility-mouse-events-prevention-mouse-pressed.html: Added.
10:59 AM Changeset in webkit [245694] by Jon Davis
  • 2 edits in trunk/Source/WebCore

Update feature status for shipped features
https://bugs.webkit.org/show_bug.cgi?id=196783

Reviewed by Timothy Hatcher.

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

  • features.json:
10:46 AM Changeset in webkit [245693] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Add Mojave+ back to media/track/track-cue-rendering-vertical.html expectation
https://bugs.webkit.org/show_bug.cgi?id=136627

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:33 AM Changeset in webkit [245692] by Keith Rollin
  • 3 edits in trunk/Tools

generate-xcfilelists should not store temporary build files in /tmp
https://bugs.webkit.org/show_bug.cgi?id=198136

Reviewed by Jonathan Bedard.

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

  • Scripts/webkitpy/generate_xcfilelists_lib/application.py:

(get_xcode_project_temp_dir):

  • Scripts/webkitpy/generate_xcfilelists_lib/generators.py:

(BaseGenerator._generate_derived):
(BaseGenerator._generate_unified):
(BaseGenerator):
(BaseGenerator._get_temp_dir):

10:20 AM Changeset in webkit [245691] by achristensen@apple.com
  • 9 edits in trunk/Source/WebKit

Deprecate more preview API
https://bugs.webkit.org/show_bug.cgi?id=198152

Reviewed by Dean Jackson.

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

  • UIProcess/API/Cocoa/WKPreviewActionItem.h:
  • UIProcess/API/Cocoa/WKPreviewActionItem.mm:
  • UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.h:
  • UIProcess/API/Cocoa/WKPreviewActionItemInternal.h:
  • UIProcess/API/Cocoa/WKPreviewElementInfo.h:
  • UIProcess/API/Cocoa/WKPreviewElementInfo.mm:
  • UIProcess/API/Cocoa/WKUIDelegate.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::activeTouchActions const):

  • UIProcess/ios/WKContentViewInteraction.mm:

(previewIdentifierForElementAction):
(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
(-[WKContentView _presentedViewControllerForPreviewItemController:]):
(-[WKContentView _previewItemController:commitPreview:]):

10:01 AM Changeset in webkit [245690] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245661. rdar://problem/50613388

REGRESSION(r245148): Removing inputmode="none" does not bring up software keyboard
https://bugs.webkit.org/show_bug.cgi?id=198141

Reviewed by Geoffrey Garen.

Source/WebKit:

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

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

LayoutTests:

Added a regression test.

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

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

10:00 AM Changeset in webkit [245689] by Kocsen Chung
  • 3 edits
    1 add in branches/safari-608.1.24.20-branch

Cherry-pick r245622. rdar://problem/50754184

[JSC] ArrayBufferContents::tryAllocate signs the pointer with allocation size and authenticates it with sizeInBytes
https://bugs.webkit.org/show_bug.cgi?id=198101

Reviewed by Michael Saboff.

JSTests:

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

Source/JavaScriptCore:

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

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

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

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

9:59 AM Changeset in webkit [245688] by Ross Kirsling
  • 2 edits
    1 add in trunk/Source/WTF

[PlayStation] Implement platformUserPreferredLanguages.
https://bugs.webkit.org/show_bug.cgi?id=198149

Reviewed by Fujii Hironori.

  • wtf/PlatformPlayStation.cmake:
  • wtf/playstation/LanguagePlayStation.cpp: Added.

(WTF::platformUserPreferredLanguages):

9:53 AM Changeset in webkit [245687] by stephan.szabo@sony.com
  • 3 edits in trunk/JSTests

[PlayStation] Skip additional tests on PlayStation
https://bugs.webkit.org/show_bug.cgi?id=198145

Reviewed by Ross Kirsling.

  • exceptionFuzz.yaml:

Add skip on hostOS playstation

  • executableAllocationFuzz.yaml:

Add skip on hostOS playstation

9:44 AM Changeset in webkit [245686] by Kocsen Chung
  • 6 edits in branches/safari-608.1.24.40-branch/Source/WebKit

Cherry-pick r245660. rdar://problem/50698533

REGRESSION (r240552): PDF contents are not exposed to Accessibility (VO, etc.)
https://bugs.webkit.org/show_bug.cgi?id=198146
<rdar://problem/50698533>

Reviewed by Simon Fraser.

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

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

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

9:41 AM Changeset in webkit [245685] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.40-branch/Source

Versioning.

9:39 AM Changeset in webkit [245684] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.20-branch/Source

Versioning.

9:36 AM Changeset in webkit [245683] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.30-branch/Source

Versioning.

8:49 AM WebKitGTK/2.24.x edited by Adrian Perez de Castro
(diff)
8:48 AM Changeset in webkit [245682] by Simon Fraser
  • 5 edits
    2 copies
    1 add in trunk

Create scrolling tree nodes for descendants of position:absolute inside stacking-context overflow
https://bugs.webkit.org/show_bug.cgi?id=198154

Reviewed by Antti Koivisto.
Source/WebCore:

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

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

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

  • rendering/RenderLayerCompositor.cpp:

(WebCore::collectStationaryLayerRelatedOverflowNodes):
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
(WebCore::collectRelatedCoordinatedScrollingNodes):

LayoutTests:

  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow-expected.txt: Copied from LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt.
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow-expected.txt: Copied from LayoutTests/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt.
  • scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow.html: Added.
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
8:47 AM Changeset in webkit [245681] by Adrian Perez de Castro
  • 7 edits in trunk/Source

Fix a few missing header inclusions often masked by by unified sources
https://bugs.webkit.org/show_bug.cgi?id=198180

Reviewed by Eric Carlson.

Source/JavaScriptCore:

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

Source/WebCore:

  • editing/markup.h: Add missing "FloatSize.h" inclusion.
  • html/FeaturePolicy.cpp: Add missing "HTMLParserIdioms.h" inclusion.
  • platform/text/TextCodec.cpp: Add missing <cstdio> inclusion.
3:29 AM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
3:28 AM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
3:21 AM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
3:15 AM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
3:15 AM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
2:29 AM Changeset in webkit [245680] by mmaxfield@apple.com
  • 56 edits
    1 copy
    3 adds in trunk

[WHLSL] Implement property resolver
https://bugs.webkit.org/show_bug.cgi?id=195925
<rdar://problem/48219643>

Reviewed by Saam Barati and Robin Morisset.

Source/WebCore:

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

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

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

Test: webgpu/whlsl-dot-expressions.html

  • Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:

(WebCore::WHLSL::AST::TypeAnnotation::TypeAnnotation):
(WebCore::WHLSL::AST::TypeAnnotation::leftAddressSpace const):
(WebCore::WHLSL::AST::TypeAnnotation::isRightValue const):
(WebCore::WHLSL::AST::TypeAnnotation::visit):

  • Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:

(WebCore::WHLSL::AST::AssignmentExpression::takeRight):

  • Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
  • Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
  • Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:
  • Modules/webgpu/WHLSL/AST/WHLSLExpression.h:

(WebCore::WHLSL::AST::Expression::maybeResolvedType):
(WebCore::WHLSL::AST::Expression::resolvedType):
(WebCore::WHLSL::AST::Expression::maybeTypeAnnotation const):
(WebCore::WHLSL::AST::Expression::typeAnnotation const):
(WebCore::WHLSL::AST::Expression::setTypeAnnotation):
(WebCore::WHLSL::AST::Expression::addressSpace const): Deleted.
(WebCore::WHLSL::AST::Expression::setAddressSpace): Deleted.

  • Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:

(WebCore::WHLSL::AST::FloatLiteral::clone const):

  • Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
  • Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.cpp:

(WebCore::WHLSL::AST::IntegerLiteral::valueForSelectedType const):

  • Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:

(WebCore::WHLSL::AST::IntegerLiteral::clone const):

  • Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:

(WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression):
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::leftValue):
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::lValue): Deleted.

  • Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:

(WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression):
(WebCore::WHLSL::AST::MakePointerExpression::leftValue):
(WebCore::WHLSL::AST::MakePointerExpression::lValue): Deleted.

  • Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:

(WebCore::WHLSL::AST::NullLiteral::clone const):

  • Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:

(WebCore::WHLSL::AST::PropertyAccessExpression::possibleGetterOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleSetterOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleAnderOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::getterFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::anderFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::threadAnderFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setterFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleGetterOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleAnderOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleSetterOverloads):
(WebCore::WHLSL::AST::PropertyAccessExpression::setGetterFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setAnderFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setThreadAnderFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::setSetterFunction):
(WebCore::WHLSL::AST::PropertyAccessExpression::takeBase):
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleGetOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleSetOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::possibleAndOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleGetOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleSetOverloads): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleAndOverloads): Deleted.

  • Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:

(WebCore::WHLSL::AST::ReadModifyWriteExpression::oldVariableReference):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::newVariableReference):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::leftValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeLeftValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeOldValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValueExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeResultExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::lValue): Deleted.

  • Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:

(WebCore::WHLSL::AST::ResolvableType::maybeResolvedType const):
(WebCore::WHLSL::AST::ResolvableType::resolvedType const):
(WebCore::WHLSL::AST::ResolvableType::maybeResolvedType):
(WebCore::WHLSL::AST::ResolvableType::resolvedType):

  • Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp:

(WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const):

  • Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp:

(WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableType const):

  • Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp:

(WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableType const):

  • Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:

(WebCore::WHLSL::AST::StructureDefinition::find):

  • Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:

(WebCore::WHLSL::AST::TypeReference::maybeResolvedType const):
(WebCore::WHLSL::AST::TypeReference::resolvedType const):

  • Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.cpp:

(WebCore::WHLSL::AST::UnsignedIntegerLiteral::valueForSelectedType const):

  • Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:

(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):

  • Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
  • Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:

(WebCore::WHLSL::AST::VariableDeclarationsStatement::VariableDeclarationsStatement):
(WebCore::WHLSL::AST::VariableDeclarationsStatement::variableDeclarations):

  • Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:

(WebCore::WHLSL::Metal::attributeForSemantic):
(WebCore::WHLSL::Metal::EntryPointScaffolding::mangledInputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::unpack):

  • Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:

(WebCore::WHLSL::Metal::FunctionDeclarationWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):

  • Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:

(WebCore::WHLSL::Metal::writeNativeFunction):

  • Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:

(WebCore::WHLSL::Metal::writeNativeType):

  • Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:

(WebCore::WHLSL::Metal::findInVector):
(WebCore::WHLSL::Metal::TypeNamer::visit):
(WebCore::WHLSL::Metal::TypeNamer::createNameNode):

  • Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:

(WebCore::WHLSL::ASTDumper::visit):

  • Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:

(WebCore::WHLSL::checkDuplicateFunctions):

  • Modules/webgpu/WHLSL/WHLSLChecker.cpp:

(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::commit):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::Checker::recurseAndGetInfo):
(WebCore::WHLSL::Checker::getInfo):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
(WebCore::WHLSL::getUnnamedType):
(WebCore::WHLSL::Checker::finishVisitingPropertyAccess): Deleted.
(WebCore::WHLSL::Checker::recurseAndWrapBaseType): Deleted.

  • Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:

(WebCore::WHLSL::Gatherer::takeEntryPointItems):
(WebCore::WHLSL::Gatherer::visit):

  • Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:

(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::commit):
(WebCore::WHLSL::inferTypesForCall):

  • Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.cpp:

(WebCore::WHLSL::getNativeTypeDeclaration):

  • Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:

(WebCore::WHLSL::NameResolver::visit):

  • Modules/webgpu/WHLSL/WHLSLParser.cpp:

(WebCore::WHLSL::Parser::parseParameters):
(WebCore::WHLSL::Parser::parseVariableDeclarations):

  • Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h:
  • Modules/webgpu/WHLSL/WHLSLPrepare.cpp:

(WebCore::WHLSL::prepareShared):

  • Modules/webgpu/WHLSL/WHLSLPrepare.h:
  • Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp: Added.

(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::visit):
(WebCore::WHLSL::PropertyResolver::simplifyLeftValue):
(WebCore::WHLSL::resolveProperties):

  • Modules/webgpu/WHLSL/WHLSLPropertyResolver.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h.
  • Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:

(WebCore::WHLSL::RecursiveTypeChecker::visit):

  • Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:

(WebCore::WHLSL::conversionCost):

  • Modules/webgpu/WHLSL/WHLSLResolvingType.h:

(WebCore::WHLSL::ResolvingType::getUnnamedType):

  • Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
  • Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:

(WebCore::WHLSL::FindArrayTypes::takeArrayTypes):
(WebCore::WHLSL::synthesizeArrayOperatorLength):

  • Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:

(WebCore::WHLSL::FindAllTypes::takeUnnamedTypes):
(WebCore::WHLSL::FindAllTypes::takeNamedTypes):
(WebCore::WHLSL::synthesizeConstructors):

  • Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:

(WebCore::WHLSL::synthesizeEnumerationFunctions):

  • Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:

(WebCore::WHLSL::synthesizeStructureAccessors):

  • Modules/webgpu/WHLSL/WHLSLVisitor.cpp:

(WebCore::WHLSL::Visitor::visit):

  • Modules/webgpu/WHLSL/WHLSLVisitor.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:

(WebCore::trySetWHLSLFunctionsForPipelineDescriptor):

LayoutTests:

  • webgpu/whlsl-dot-expressions-expected.html: Added.
  • webgpu/whlsl-dot-expressions.html: Added.
1:39 AM Changeset in webkit [245679] by graouts@webkit.org
  • 7 edits in trunk/Source/WebKit

[tvOS] Build broken by r245639
https://bugs.webkit.org/show_bug.cgi?id=198172
<rdar://problem/51048991>

Unreviewed build fix.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::touchWithIdentifierWasRemoved):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::touchWithIdentifierWasRemoved): Deleted.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::touchWithIdentifierWasRemoved):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::touchWithIdentifierWasRemoved): Deleted.

1:01 AM WebKitGTK/2.24.x edited by Adrian Perez de Castro
(diff)
12:55 AM Changeset in webkit [245678] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKit

[tvOS] Build broken by r245639
https://bugs.webkit.org/show_bug.cgi?id=198172
<rdar://problem/51048991>

Unreviewed build fix.

  • WebProcess/WebPage/WebPage.messages.in:
12:41 AM Changeset in webkit [245677] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[JHBuild][GStreamer] Enable libsrtp
https://bugs.webkit.org/show_bug.cgi?id=198041

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

  • gstreamer/jhbuild.modules: Enable libsrtp. The system version

can't be used from Stretch because it's too old.

12:28 AM Changeset in webkit [245676] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebKit

[WPE] Build fails with ENABLE_VIDEO=OFF and ENABLE_WEB_AUDIO=OFF
https://bugs.webkit.org/show_bug.cgi?id=198125

Reviewed by Philippe Normand.

  • UIProcess/glib/WebProcessPoolGLib.cpp: Guard the inclusion of GStreamerCommon.h with USE(GSTREAMER).
  • WebProcess/glib/WebProcessGLib.cpp: Ditto.
12:06 AM Changeset in webkit [245675] by Tadeu Zagallo
  • 6 edits
    3 adds in trunk

createListFromArrayLike should throw if value is not an object
https://bugs.webkit.org/show_bug.cgi?id=198138

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/create-list-from-array-like-not-object.js: Added.

(testValid):
(testInvalid):

  • stress/proxy-get-own-property-names-should-not-clear-previous-results.js:

(opt):

  • stress/proxy-proto-enumerator.js: Added.

(main):

  • stress/proxy-proto-own-keys.js: Added.

(assert):
(ownKeys):

Source/JavaScriptCore:

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

  • runtime/JSObjectInlines.h:

(JSC::createListFromArrayLike):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::performGetOwnPropertyNames):

  • runtime/ReflectObject.cpp:

(JSC::reflectObjectConstruct):

May 22, 2019:

11:57 PM Changeset in webkit [245674] by Ryan Haddad
  • 2 edits in trunk/Tools

Move win-ews queue bubble to Win10 section of dashboard
https://bugs.webkit.org/show_bug.cgi?id=198159

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:

(BubbleQueueServer): Change platform to Windows10 to match the OS version of the bots.

10:54 PM Changeset in webkit [245673] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKit

[tvOS] Build broken by r245639
https://bugs.webkit.org/show_bug.cgi?id=198172
<rdar://problem/51048991>

Unreviewed build fix.

  • UIProcess/ios/WKSyntheticTapGestureRecognizer.m:

(-[WKSyntheticTapGestureRecognizer reset]):
(-[WKSyntheticTapGestureRecognizer touchesEnded:withEvent:]):

9:18 PM Changeset in webkit [245672] by mmaxfield@apple.com
  • 9 edits
    12 adds in trunk

font-optical-sizing applies the wrong variation value
https://bugs.webkit.org/show_bug.cgi?id=197528
<rdar://problem/50152854>

Reviewed by Antti Koivisto.

Source/WebCore:

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

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

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

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

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

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

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontType::FontType):
(WebCore::preparePlatformFont):
(WebCore::fontWithFamily):
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/graphics/cocoa/FontCacheCoreText.h:
  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::FontFamilySpecificationCoreText::fontRanges const):

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData):

Source/WTF:

  • wtf/Platform.h:

LayoutTests:

  • fast/text/variations/optical-sizing-trak-2-expected-mismatch.html: Added.
  • fast/text/variations/optical-sizing-trak-2.html: Added.
  • fast/text/variations/optical-sizing-trak-expected.html: Added.
  • fast/text/variations/optical-sizing-trak.html: Added.
  • fast/text/variations/optical-sizing-units-2-expected-mismatch.html: Added.
  • fast/text/variations/optical-sizing-units-2.html: Added.
  • fast/text/variations/optical-sizing-units-expected.html: Added.
  • fast/text/variations/optical-sizing-units.html: Added.
  • fast/text/variations/resources/Amstelvar/Amstelvar-Roman-VF104.ttf: Added.

This font havariations/s been approved by the lawyers to add for layout tests.

  • fast/text/variations/resources/Amstelvar/COPYRIGHT.md: Added.
  • fast/text/variations/resources/Amstelvar/OFL.txt: Added.
  • platform/win/TestExpectations:
9:12 PM Changeset in webkit [245671] by mmaxfield@apple.com
  • 2 edits
    2 adds in trunk/Tools

[Mac] Add API test to make sure the system font is drawn just like in native code
https://bugs.webkit.org/show_bug.cgi?id=198010

Reviewed by Daniel Bates.

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

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/TextWidth.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/TextWidth.mm: Added.

(TEST):

7:17 PM Changeset in webkit [245670] by youenn@apple.com
  • 7 edits in trunk/Source/WebKit

Use modern async IPC for EngineRepresentationCompleted and ClearMemoryRepresentationCompleted
https://bugs.webkit.org/show_bug.cgi?id=198134

Reviewed by Alex Christensen.

  • NetworkProcess/cache/CacheStorageEngineConnection.cpp:

(WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
(WebKit::CacheStorageEngineConnection::engineRepresentation):

  • NetworkProcess/cache/CacheStorageEngineConnection.h:
  • NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
  • WebProcess/Cache/WebCacheStorageConnection.cpp:

(WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
(WebKit::WebCacheStorageConnection::engineRepresentation):
(WebKit::WebCacheStorageConnection::clearMemoryRepresentationCompleted): Deleted.
(WebKit::WebCacheStorageConnection::engineRepresentationCompleted): Deleted.

  • WebProcess/Cache/WebCacheStorageConnection.h:
  • WebProcess/Cache/WebCacheStorageConnection.messages.in:
6:47 PM Changeset in webkit [245669] by ysuzuki@apple.com
  • 10 edits
    1 add in trunk/Source/JavaScriptCore

[JSC] UnlinkedMetadataTable's offset table should be small
https://bugs.webkit.org/show_bug.cgi?id=197910

Reviewed by Saam Barati.

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

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

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

offset = offsetTable16[opcode]
if (!offset)

offset = offsetTable32[opcode]

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

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

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

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

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/MetadataTable.cpp:

(JSC::MetadataTable::~MetadataTable):
(JSC::MetadataTable::destroy):

  • bytecode/MetadataTable.h:

(JSC::MetadataTable::ref):
(JSC::MetadataTable::deref):
(JSC::MetadataTable::buffer):
(JSC::MetadataTable::is32Bit const):
(JSC::MetadataTable::offsetTable16 const):
(JSC::MetadataTable::offsetTable32 const):
(JSC::MetadataTable::totalSize const):
(JSC::MetadataTable::getOffset const):
(JSC::MetadataTable::getImpl):
(JSC::MetadataTable::ref const): Deleted.
(JSC::MetadataTable::deref const): Deleted.

  • bytecode/Opcode.cpp:
  • bytecode/UnlinkedMetadataTable.cpp: Added.

(JSC::UnlinkedMetadataTable::finalize):

  • bytecode/UnlinkedMetadataTable.h:

(JSC::UnlinkedMetadataTable::create):
(JSC::UnlinkedMetadataTable::totalSize const):
(JSC::UnlinkedMetadataTable::offsetTableSize const):
(JSC::UnlinkedMetadataTable::preprocessBuffer const):
(JSC::UnlinkedMetadataTable::buffer const):
(JSC::UnlinkedMetadataTable::offsetTable16 const):
(JSC::UnlinkedMetadataTable::offsetTable32 const):

  • bytecode/UnlinkedMetadataTableInlines.h:

(JSC::UnlinkedMetadataTable::UnlinkedMetadataTable):
(JSC::UnlinkedMetadataTable::addEntry):
(JSC::UnlinkedMetadataTable::sizeInBytes):
(JSC::UnlinkedMetadataTable::link):
(JSC::UnlinkedMetadataTable::unlink):
(JSC::UnlinkedMetadataTable::finalize): Deleted.

  • llint/LowLevelInterpreter.asm:
  • runtime/CachedTypes.cpp:

(JSC::CachedMetadataTable::encode):
(JSC::CachedMetadataTable::decode const):

6:39 PM Changeset in webkit [245668] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.24.30.1

Tag Safari-608.1.24.30.1.

6:22 PM Changeset in webkit [245667] by ysuzuki@apple.com
  • 7 edits
    1 add in trunk

[JSC] ArrayAllocationProfile should not access to butterfly in concurrent compiler
https://bugs.webkit.org/show_bug.cgi?id=197809

Reviewed by Michael Saboff.

JSTests:

  • stress/array-allocation-profile-should-not-update-itself-in-concurrent-compiler.js: Added.

(foo):

Source/JavaScriptCore:

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

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

  • bytecode/ArrayAllocationProfile.cpp:

(JSC::ArrayAllocationProfile::updateProfile):

  • bytecode/ArrayAllocationProfile.h:

(JSC::ArrayAllocationProfile::selectIndexingTypeConcurrently):
(JSC::ArrayAllocationProfile::selectIndexingType):
(JSC::ArrayAllocationProfile::vectorLengthHintConcurrently):
(JSC::ArrayAllocationProfile::vectorLengthHint):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::updateAllValueProfilePredictionsAndCountLiveness):
(JSC::CodeBlock::updateAllValueProfilePredictions):
(JSC::CodeBlock::shouldOptimizeNow):
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness): Deleted.

  • bytecode/CodeBlock.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

5:56 PM Changeset in webkit [245666] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.24.20.2

Tag Safari-608.1.24.20.2.

5:44 PM Changeset in webkit [245665] by Nikita Vasilyev
  • 20 edits in trunk

Web Inspector: Provide UIString descriptions to improve localizations
https://bugs.webkit.org/show_bug.cgi?id=195132
<rdar://problem/48457817>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/LoadLocalizedStrings.js:

(WI.UIString):
(WI.repeatedUIString.timelineRecordLayout):
(WI.repeatedUIString.timelineRecordPaint):
(WI.repeatedUIString.timelineRecordComposite):
(WI.repeatedUIString.allExceptions):
(WI.repeatedUIString.uncaughtExceptions):
(WI.repeatedUIString.assertionFailures):
(WI.repeatedUIString.allRequests):
(WI.repeatedUIString.fetch):
(WI.repeatedUIString.revealInDOMTree):

  • UserInterface/Models/LayoutTimelineRecord.js:

(WI.LayoutTimelineRecord.displayNameForEventType):

  • UserInterface/Models/RenderingFrameTimelineRecord.js:

(WI.RenderingFrameTimelineRecord.displayNameForTaskType):

  • UserInterface/Models/Resource.js:

(WI.Resource.displayNameForType):

  • UserInterface/Views/AuditTestGroupContentView.js:

(WI.AuditTestGroupContentView.prototype.layout):

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView.displayNameForSampleType):

  • UserInterface/Views/ContextMenuUtilities.js:
  • UserInterface/Views/DOMBreakpointTreeElement.js:

(WI.DOMBreakpointTreeElement.displayNameForType):

  • UserInterface/Views/DOMNodeTreeElement.js:

(WI.DOMNodeTreeElement.prototype.populateContextMenu):
(WI.DOMNodeTreeElement):

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement.prototype.populateDOMNodeContextMenu):

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown):
(WI.DebuggerSidebarPanel):

  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:

(WI.LayerTreeDetailsSidebarPanel.prototype._buildDataGridSection):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.shortDisplayNameForResourceType):
(WI.NetworkTableContentView.prototype.initialLayout):

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):

  • UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:

(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):

Tools:

Allow WI.UIString to take:

  • WI.UIString(string, key, comment)
  • WI.UIString(string, comment)
  • WI.UIString(string)
  • Scripts/extract-localizable-js-strings:
5:43 PM Changeset in webkit [245664] by Antti Koivisto
  • 3 edits
    2 adds in trunk

Subselectors not searched when determining property whitelist for selector
https://bugs.webkit.org/show_bug.cgi?id=198147
<rdar://problem/50405208>

Reviewed by Zalan Bujtas.

Source/WebCore:

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

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

  • css/RuleSet.cpp:

(WebCore::determinePropertyWhitelistType):

Check subselectors too.

LayoutTests:

  • fast/lists/marker-style-subselector-whitelist-expected.txt: Added.
  • fast/lists/marker-style-subselector-whitelist.html: Added.
5:41 PM Changeset in webkit [245663] by Wenson Hsieh
  • 7 edits in trunk

[iOS] The shouldIgnoreMetaViewport test option incorrectly persists across layout tests
https://bugs.webkit.org/show_bug.cgi?id=198135
<rdar://problem/51001306>

Reviewed by Alexey Proskuryakov.

Tools:

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

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

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformConfigureViewForTest):

LayoutTests:

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

  • fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html:
  • fast/viewport/ios/device-width-viewport-after-changing-view-scale.html:
  • fast/viewport/ios/initial-scale-after-changing-view-scale.html:
  • fast/viewport/ios/minimum-scale-after-changing-view-scale.html:
5:33 PM Changeset in webkit [245662] by sbarati@apple.com
  • 5 edits
    2 adds in trunk

WHLSL: fix enum parsing
https://bugs.webkit.org/show_bug.cgi?id=198087

Reviewed by Myles Maxfield.

Source/WebCore:

This fixes two bugs:

  1. We were using a String by reference after moving the underlying owner of

the string. This would lead to the String becoming the empty value, and
crashing when used as a key in a hash map.

  1. We were incorrectly producing a syntax error for enum declarations by

saying it's invalid if an enum value was added to a hash map for the first
time. This logic should be negated. We need to error when it's added for
the second time and onwards.

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

  • Modules/webgpu/WHLSL/AST/WHLSLAST.h: Replaced.
  • Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:

(WebCore::WHLSL::AST::EnumerationDefinition::add):

  • Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:

(WebCore::WHLSL::AST::EnumerationMember::name):

  • Modules/webgpu/WHLSL/WHLSLASTDumper.cpp: Replaced.

(WebCore::WHLSL::ASTDumper::visit):

  • Modules/webgpu/WHLSL/WHLSLASTDumper.h: Replaced.

LayoutTests:

  • webgpu/whlsl-dont-crash-parsing-enum-expected.html: Added.
  • webgpu/whlsl-dont-crash-parsing-enum.html: Added.
5:30 PM Changeset in webkit [245661] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

REGRESSION(r245148): Removing inputmode="none" does not bring up software keyboard
https://bugs.webkit.org/show_bug.cgi?id=198141

Reviewed by Geoffrey Garen.

Source/WebKit:

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

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView shouldShowAutomaticKeyboardUI]):
(-[WKContentView _shouldShowAutomaticKeyboardUIIgnoringInputMode]):
(-[WKContentView _requiresKeyboardWhenFirstResponder]):

LayoutTests:

Added a regression test.

  • fast/forms/ios/inputmode-removing-none-expected.txt: Added.
  • fast/forms/ios/inputmode-removing-none.html: Added.
5:07 PM Changeset in webkit [245660] by timothy_horton@apple.com
  • 6 edits in trunk/Source/WebKit

REGRESSION (r240552): PDF contents are not exposed to Accessibility (VO, etc.)
https://bugs.webkit.org/show_bug.cgi?id=198146
<rdar://problem/50698533>

Reviewed by Simon Fraser.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::updateMockAccessibilityElementAfterCommittingLoad):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::updateMockAccessibilityElementAfterCommittingLoad):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h:
  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:

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

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

4:46 PM Changeset in webkit [245659] by Simon Fraser
  • 5 edits in trunk/LayoutTests

<rdar://problem/50058173> REGRESSION (r243347) Layout tests fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on* are failing

Unreviewed test gardening.

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

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

  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block-expected.txt:
  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html:
  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document-expected.txt:
  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html:
4:42 PM Changeset in webkit [245658] by ysuzuki@apple.com
  • 35 edits in trunk/Source/JavaScriptCore

[JSC] Shrink Metadata
https://bugs.webkit.org/show_bug.cgi?id=197940

Reviewed by Michael Saboff.

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

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

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

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

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

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

  • bytecode/ArrayProfile.cpp:
  • bytecode/ArrayProfile.h:

(JSC::ArrayProfile::ArrayProfile):
(JSC::ArrayProfile::bytecodeOffset const): Deleted.
(JSC::ArrayProfile::isValid const): Deleted.

  • bytecode/BytecodeList.rb:
  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::computeFromLLInt):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finalizeLLIntInlineCaches):
(JSC::CodeBlock::getArrayProfile):
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness):
(JSC::CodeBlock::dumpValueProfiles):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::valueProfileForArgument):

  • bytecode/CodeBlockInlines.h:

(JSC::CodeBlock::forEachValueProfile):
(JSC::CodeBlock::forEachArrayProfile):

  • bytecode/GetByIdMetadata.h:

We use ProtoLoad's JSObject's high bits to embed hitCountForLLIntCaching and mode, since they
are always zero for ProtoLoad mode.

(): Deleted.

  • bytecode/GetByIdStatus.cpp:

(JSC::GetByIdStatus::computeFromLLInt):

  • bytecode/LLIntCallLinkInfo.h:

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

  • bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp:

(JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::clearLLIntGetByIdCache):

  • bytecode/LazyOperandValueProfile.h:

(JSC::LazyOperandValueProfile::LazyOperandValueProfile):
(JSC::LazyOperandValueProfile::key const):

  • bytecode/MetadataTable.h:

(JSC::MetadataTable::buffer):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfileBase::offsetOfAllocator):
(JSC::ObjectAllocationProfileBase::offsetOfStructure):
(JSC::ObjectAllocationProfileBase::clear):
(JSC::ObjectAllocationProfileBase::visitAggregate):
(JSC::ObjectAllocationProfile::setPrototype):
(JSC::ObjectAllocationProfileWithPrototype::prototype):
(JSC::ObjectAllocationProfileWithPrototype::clear):
(JSC::ObjectAllocationProfileWithPrototype::visitAggregate):
(JSC::ObjectAllocationProfileWithPrototype::setPrototype):
(JSC::ObjectAllocationProfile::offsetOfAllocator): Deleted.
(JSC::ObjectAllocationProfile::offsetOfStructure): Deleted.
(JSC::ObjectAllocationProfile::offsetOfInlineCapacity): Deleted.
(JSC::ObjectAllocationProfile::ObjectAllocationProfile): Deleted.
(JSC::ObjectAllocationProfile::isNull): Deleted.
(JSC::ObjectAllocationProfile::structure): Deleted.
(JSC::ObjectAllocationProfile::prototype): Deleted.
(JSC::ObjectAllocationProfile::inlineCapacity): Deleted.
(JSC::ObjectAllocationProfile::clear): Deleted.
(JSC::ObjectAllocationProfile::visitAggregate): Deleted.

  • bytecode/ObjectAllocationProfileInlines.h:

(JSC::ObjectAllocationProfileBase<Derived>::initializeProfile):
(JSC::ObjectAllocationProfileBase<Derived>::possibleDefaultPropertyCount):
(JSC::ObjectAllocationProfile::initializeProfile): Deleted.
(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount): Deleted.
OpNewObject's ObjectAllocationProfile does not need to hold prototype. So we have two versions now, ObjectAllocationProfile and ObjectAllocationProfileWithPrototype
to cut one pointer. We also remove inline capacity since this can be retrieved from Structure.

  • bytecode/Opcode.h:
  • bytecode/ValueProfile.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGOperations.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCreateThis):

  • ftl/FTLAbstractHeapRepository.h:
  • jit/JITCall.cpp:

(JSC::JIT::compileSetupFrame):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileSetupFrame):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_create_this):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emit_op_to_this):

  • jit/JITOperations.cpp:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_id):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setupGetByIdPrototypeCache):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setUpCall):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/FunctionRareData.h:
  • tools/HeapVerifier.cpp:

(JSC::HeapVerifier::validateJSCell):

4:12 PM Changeset in webkit [245657] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: provide a debug setting button to reset all settings for easier testing/presentation
https://bugs.webkit.org/show_bug.cgi?id=195777

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/Setting.js:

(WI.Setting.reset): Added.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createDebugSettingsView):

3:58 PM Changeset in webkit [245656] by Simon Fraser
  • 3 edits
    6 adds in trunk

Fix scrolling tree state for more obscure combinations of positioning and paint order
https://bugs.webkit.org/show_bug.cgi?id=198139

Reviewed by Antti Koivisto.

Source/WebCore:

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

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

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

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

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

scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::traverseAncestorLayers):
(WebCore::enclosingClippingScopes):
(WebCore::isScrolledByOverflowScrollLayer):
(WebCore::collectStationaryLayerRelatedOverflowNodes):
(WebCore::collectRelatedCoordinatedScrollingNodes):

LayoutTests:

  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt: Added.
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html: Added.
  • scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html: Added.
3:43 PM Changeset in webkit [245655] by Ross Kirsling
  • 5 edits
    1 add in trunk

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

Reviewed by Keith Miller.

JSTests:

  • stress/numeric-literal-separators.js: Added.

Add tests for feature.

  • test262/expectations.yaml:

Mark 60 test cases as passing.

Source/JavaScriptCore:

Implement the following proposal, which is now Stage 3:

https://github.com/tc39/proposal-numeric-separator

Specifically, this allows _ to be used as a separator in numeric literals.
It may be inserted arbitrarily without semantic effect, but it may not occur:

  • multiple times in a row
  • at the beginning or end of the literal
  • adjacent to 0x, 0b, 0o, ., e, or n
  • after a leading zero (e.g. 0_123), even in sloppy mode
  • parser/Lexer.cpp:

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

  • parser/Lexer.h:
3:34 PM Changeset in webkit [245654] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.24.40.3

Tag Safari-608.1.24.40.3.

3:32 PM Changeset in webkit [245653] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebKit

Crash in WebFrame::jsContext() when m_coreFrame is null
https://bugs.webkit.org/show_bug.cgi?id=198067

Reviewed by Alex Christensen.

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

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::jsContext):
(WebKit::WebFrame::jsContextForWorld):

3:19 PM Changeset in webkit [245652] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

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

Reviewed by Michael Saboff.

  • stress/get-array-length-concurrently-change-mode.js: Added.

(main):

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

Reviewed by Michael Saboff.

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

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

3:08 PM Changeset in webkit [245651] by Simon Fraser
  • 4 edits
    3 adds in trunk

Inner scroller of nested overflow:scrolls jitters when scrolling
https://bugs.webkit.org/show_bug.cgi?id=198131

Reviewed by Antti Koivisto.

Source/WebCore:

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

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

  • rendering/RenderLayerCompositor.cpp:

(WebCore::enclosingCompositedScrollingLayer):

LayoutTests:

  • fast/scrolling/ios/overflow-scroll-overlap-6-expected.txt: Progression
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-overflow-scroll-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/nested-overflow-scroll-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/nested-overflow-scroll.html: Added.
3:05 PM Changeset in webkit [245650] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.25

Tag Safari-608.1.25.

3:03 PM Changeset in webkit [245649] by sihui_liu@apple.com
  • 7 edits in trunk

API Test landed in r245540 [Mac WK2] TestWebKitAPI.WKWebView.LocalStorageProcessCrashes is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=198090
<rdar://problem/51003644>

Reviewed by Youenn Fablet.

Source/WebKit:

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

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

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

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::webPageWasAdded):

  • NetworkProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::processDidCloseConnection):
(WebKit::StorageManager::createLocalStorageMap):
(WebKit::StorageManager::createTransientLocalStorageMap):
(WebKit::StorageManager::createSessionStorageMap):
(WebKit::StorageManager::destroyStorageMap):
(WebKit::didGetValues):
(WebKit::StorageManager::getValues):
(WebKit::StorageManager::setItem):
(WebKit::StorageManager::setItems):
(WebKit::StorageManager::removeItem):
(WebKit::StorageManager::clear):
(WebKit::StorageManager::processWillOpenConnection): Deleted.
(WebKit::StorageManager::dispatchMessageToQueue): Deleted.
(WebKit::StorageManager::dispatchSyncMessageToQueue): Deleted.

  • NetworkProcess/WebStorage/StorageManager.h:

Tools:

WebView was wrongly loaded multiple times.

  • TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm:

(TEST):

2:52 PM Changeset in webkit [245648] by commit-queue@webkit.org
  • 5 edits in trunk

Unreviewed, rolling out r245634.
https://bugs.webkit.org/show_bug.cgi?id=198140

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

Reverted changeset:

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

2:39 PM Changeset in webkit [245647] by Ryan Haddad
  • 9 edits
    9 deletes in trunk

Unreviewed, rolling out r245598.

Breaks watchOS build.

Reverted changeset:

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

2:03 PM Changeset in webkit [245646] by Tadeu Zagallo
  • 6 edits in trunk/Source/JavaScriptCore

Fix validateExceptionChecks for CLoop
https://bugs.webkit.org/show_bug.cgi?id=191253

Reviewed by Keith Miller.

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

  • runtime/CatchScope.h:
  • runtime/ExceptionScope.h:
  • runtime/ThrowScope.h:
  • runtime/VM.cpp:

(JSC::VM::currentCLoopStackPointer const):

  • runtime/VM.h:
2:01 PM Changeset in webkit [245645] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

Stack-buffer-overflow in decodeURIComponent
https://bugs.webkit.org/show_bug.cgi?id=198109
<rdar://problem/50397550>

Reviewed by Michael Saboff.

JSTests:

  • stress/decode-uri-icu-count-trail-bytes.js: Added.

(i.j.try.i.toString):
(i.j.catch):

Source/JavaScriptCore:

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

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::decode):

1:58 PM Changeset in webkit [245644] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

WebKit does not generate an ESC key event for CMD+.
https://bugs.webkit.org/show_bug.cgi?id=198137
<rdar://problem/51038641>

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

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

  • platform/ios/WebEvent.mm:

(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):

1:34 PM Changeset in webkit [245643] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

Don't clear PropertyNameArray in Proxy code
https://bugs.webkit.org/show_bug.cgi?id=197691

Reviewed by Saam Barati.

JSTests:

  • stress/proxy-get-own-property-names-should-not-clear-previous-results.js: Added.

(shouldBe):
(opt):

Source/JavaScriptCore:

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

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

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

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

  • runtime/PropertyNameArray.h:

(JSC::PropertyNameArray::reset): Deleted.

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::performGetOwnPropertyNames):

1:22 PM Changeset in webkit [245642] by ajuma@chromium.org
  • 5 edits
    2 adds in trunk

Intersection Observer: bounding client rect is wrong for an inline element
https://bugs.webkit.org/show_bug.cgi?id=198009

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

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

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

Source/WebCore:

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

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

  • dom/Document.cpp:

(WebCore::computeIntersectionState):

  • dom/Element.cpp:

(WebCore::Element::boundingAbsoluteRectWithoutLayout):
(WebCore::Element::boundingClientRect):

  • dom/Element.h:
1:08 PM Changeset in webkit [245641] by Ryan Haddad
  • 2 edits in branches/safari-608.1.24.20-branch/Tools

Land workaround for rdar://problem/51031394.

  • WebKitTestRunner/Configurations/Base.xcconfig:
1:06 PM Changeset in webkit [245640] by Ryan Haddad
  • 2 edits in branches/safari-608.1.24.40-branch/Tools

Land workaround for rdar://problem/51031394.

  • WebKitTestRunner/Configurations/Base.xcconfig:
12:58 PM Changeset in webkit [245639] by graouts@webkit.org
  • 20 edits
    1 move
    2 adds in trunk

[iOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown
https://bugs.webkit.org/show_bug.cgi?id=198124
<rdar://problem/50410863>

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

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

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

Source/WebCore:

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

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

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

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

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

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.cpp:

(WebCore::Element::dispatchMouseEvent): When dealing with a mouse event on iOS, check whether the mouse event's PointerID allows for compatibility
mouse events to be dispatched using PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier(). The "click" event is not a compatibility
mouse event.

  • dom/PointerEvent.h:
  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::PointerCaptureController):
(WebCore::PointerCaptureController::touchWithIdentifierWasRemoved):
(WebCore::PointerCaptureController::touchEndedOrWasCancelledForIdentifier): Deleted.

  • page/PointerCaptureController.h:
  • platform/PlatformMouseEvent.h:

(WebCore::PlatformMouseEvent::PlatformMouseEvent):
(WebCore::PlatformMouseEvent::pointerId const):

  • platform/PointerID.h: Renamed from Source/WebCore/dom/PointerID.h.

(WebCore::mousePointerID):

Source/WebKit:

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

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

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

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

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _singleTapDidReset:]):
(-[WKContentView _singleTapRecognized:]):

  • UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
  • UIProcess/ios/WKSyntheticTapGestureRecognizer.m:

(-[WKSyntheticTapGestureRecognizer reset]):
(-[WKSyntheticTapGestureRecognizer touchesEnded:withEvent:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::touchWithIdentifierWasRemoved):
(WebKit::WebPageProxy::commitPotentialTap):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::dispatchSyntheticMouseMove):
(WebKit::WebPage::handleSyntheticClick):
(WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):
(WebKit::WebPage::completeSyntheticClick):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::touchWithIdentifierWasRemoved):

LayoutTests:

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

  • platform/ios/imported/w3c/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click-expected.txt: Added.
12:27 PM Changeset in webkit [245638] by jiewen_tan@apple.com
  • 31 edits
    2 copies in trunk

[WebAuthN] Support Attestation Conveyance Preference
https://bugs.webkit.org/show_bug.cgi?id=192722
<rdar://problem/49939647>

Reviewed by Brent Fulgham.

Source/WebCore:

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

Covered by new tests within existing files.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Headers.cmake:
  • Modules/webauthn/AttestationConveyancePreference.h: Copied from Source/WebCore/Modules/webauthn/WebAuthenticationUtils.h.
  • Modules/webauthn/AttestationConveyancePreference.idl: Copied from Source/WebCore/Modules/webauthn/WebAuthenticationUtils.h.
  • Modules/webauthn/PublicKeyCredentialCreationOptions.h:

(WebCore::PublicKeyCredentialCreationOptions::encode const):
(WebCore::PublicKeyCredentialCreationOptions::decode):

  • Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
  • Modules/webauthn/WebAuthenticationConstants.h:
  • Modules/webauthn/WebAuthenticationUtils.cpp:

(WebCore::buildAttestationObject):

  • Modules/webauthn/WebAuthenticationUtils.h:
  • Modules/webauthn/fido/DeviceResponseConverter.cpp:

(fido::readCTAPMakeCredentialResponse):

  • Modules/webauthn/fido/DeviceResponseConverter.h:
  • Modules/webauthn/fido/FidoConstants.h:

noneAttestationValue is moved to WebAuthenticationConstants.h.

  • Modules/webauthn/fido/U2fResponseConverter.cpp:

(fido::readU2fRegisterResponse):

  • Modules/webauthn/fido/U2fResponseConverter.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):

  • UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:

(WebKit::CtapHidAuthenticator::continueMakeCredentialAfterResponseReceived const):

  • UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp:

(WebKit::U2fHidAuthenticator::continueRegisterCommandAfterResponseReceived):

Tools:

  • TestWebKitAPI/Tests/WebCore/CtapRequestTest.cpp:

(TestWebKitAPI::TEST):
Updates the test with AttestationConveyancePreference.

LayoutTests:

  • http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-local.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-u2f.https.html:
12:13 PM Changeset in webkit [245637] by Alan Bujtas
  • 13 edits in trunk

[Paste] Add support for preferred presentation size when pasting an image
https://bugs.webkit.org/show_bug.cgi?id=198132
<rdar://problem/50886917>

Reviewed by Wenson Hsieh.

Source/WebCore:

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

  • editing/WebContentReader.h:
  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::createFragmentForImageAttachment):
(WebCore::WebContentReader::readImage):

  • editing/markup.cpp:

(WebCore::createFragmentForImageAndURL):

  • editing/markup.h:
  • platform/Pasteboard.h:

(WebCore::PasteboardWebContentReader::readImage):

  • platform/PasteboardItemInfo.h:

(WebCore::PasteboardItemInfo::encode const):
(WebCore::PasteboardItemInfo::decode):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::informationForItemAtIndex):

Source/WebKit:

  • UIProcess/API/Cocoa/_WKElementAction.mm:

(addToReadingList):

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
(-[WKActionSheetAssistant defaultActionsForImageSheet:]):

Tools:

  • TestWebKitAPI/Tests/ios/UIPasteboardTests.mm:

(TestWebKitAPI::TEST):

12:10 PM Changeset in webkit [245636] by jer.noble@apple.com
  • 9 edits
    1 copy
    8 adds in trunk

Hide MediaCapabilities.encodingInfo() when the platform does not support it.
https://bugs.webkit.org/show_bug.cgi?id=197476

Reviewed by Eric Carlson.

Source/WebCore:

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

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

  • Modules/mediacapabilities/MediaCapabilities.idl:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSMediaCapabilitiesCustom.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl.

(WebCore::JSMediaCapabilitiesEncodingInfoIsEnabled):

  • bindings/scripts/CodeGeneratorJS.pm:

(NeedsRuntimeCheck):
(GenerateRuntimeEnableConditionalString):

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/preprocess-idls.pl:

(GenerateConstructorAttributes):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:

(WebCore::MediaEngineConfigurationFactory::hasDecodingConfigurationFactory):
(WebCore::MediaEngineConfigurationFactory::hasEncodingConfigurationFactory):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.h:

LayoutTests:

  • platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Added.
  • platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Added.
  • platform/ios/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.
  • platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Added.
  • platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Added.
  • platform/mac/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.
12:09 PM Changeset in webkit [245635] by Keith Rollin
  • 2 edits in trunk/Tools

Use a different variable when testing for Xcode context in generate-xcfilelists
https://bugs.webkit.org/show_bug.cgi?id=198130
<rdar://problem/51032752>

Reviewed by Jonathan Bedard.

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

  • Scripts/webkitpy/generate_xcfilelists_lib/util.py:

(subprocess_run):
(is_running_under_xcode):

12:06 PM Changeset in webkit [245634] by Ross Kirsling
  • 5 edits in trunk

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

Reviewed by Keith Miller.

JSTests:

  • stress/numeric-literal-separators.js: Added.

Add tests for feature.

  • test262/expectations.yaml:

Mark 60 test cases as passing.

Source/JavaScriptCore:

Implement the following proposal, which is now Stage 3:

https://github.com/tc39/proposal-numeric-separator

Specifically, this allows _ to be used as a separator in numeric literals.
It may be inserted arbitrarily without semantic effect, but it may not occur:

  • multiple times in a row
  • at the beginning or end of the literal
  • adjacent to 0x, 0b, 0o, ., e, or n
  • after a leading zero (e.g. 0_123), even in sloppy mode
  • parser/Lexer.cpp:

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

  • parser/Lexer.h:
11:08 AM Changeset in webkit [245633] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.40-branch/Source

Versioning.

10:49 AM Changeset in webkit [245632] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245220. rdar://problem/50686229

When the set of backing-sharing layers changes, we need to issue a repaint
https://bugs.webkit.org/show_bug.cgi?id=197825

Reviewed by Zalan Bujtas.

Source/WebCore:

If the set of layers painting into a shared backing store changes, we need
to repaint that backing store. This happens when scrolling as shared layers
enter the visible area.

Test: compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::setBackingSharingLayers):

LayoutTests:

  • compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll-expected.html: Added.
  • compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll.html: Added.

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

10:49 AM Changeset in webkit [245631] by Kocsen Chung
  • 4 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245218. rdar://problem/50705506

Refactor composited backing-sharing code
https://bugs.webkit.org/show_bug.cgi?id=197824

Reviewed by Zalan Bujtas.

Clean up the backing-sharing code to share more code, and make it easier to understand.

Moves more logic into member functions on BackingSharingState, which are named to make
their functions clearer: startBackingSharingSequence/endBackingSharingSequence.

computeCompositingRequirements() and traverseUnchangedSubtree() now just call
updateBeforeDescendantTraversal/updateAfterDescendantTraversal.

No behavior change.

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::willBeDestroyed): (WebCore::RenderLayerBacking::setBackingSharingLayers): Remove the early return, since we need to call setBackingProviderLayer() on the sharing layers in both code paths. (WebCore::RenderLayerBacking::removeBackingSharingLayer): (WebCore::RenderLayerBacking::clearBackingSharingLayers):
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::backingProviderCandidate const): (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::startBackingSharingSequence): (WebCore::RenderLayerCompositor::BackingSharingState::endBackingSharingSequence): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::BackingSharingState::updateAfterDescendantTraversal): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::BackingSharingState::resetBackingProviderCandidate): Deleted.
  • rendering/RenderLayerCompositor.h:

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

10:49 AM Changeset in webkit [245630] by Kocsen Chung
  • 6 edits
    14 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245205. rdar://problem/50652127

Backing-sharing layers with transforms render incorrectly
https://bugs.webkit.org/show_bug.cgi?id=197692
<rdar://problem/50652127>

Reviewed by Antti Koivisto.
Source/WebCore:

Layers that paint into shared backing need to enter the RenderLayer painting code
in a way that paints the filters, transforms, opacity and blending.

RenderLayerBacking::paintIntoLayer() normally enters at paintLayerContents(), because
the effects are rendered via the GraphicsLayer, but shared layers will paint effects.
Note that if the backing-provider has effects, it will be the stacking context
for the shared layers, so it's correct that sharing layers are impacted by effects
on the backing-provider.

In addition, we have to ensure that we don't over-eagerly make layers shared.
Consider:

<div class="clipping">

<div class="sharing">

<div class="inner">
</div>

</div>

</div>

Here "clipping" is the provider layer, "sharing" paints into shared backing, but
we don't want to also mark "inner" as sharing, since "sharing" will just paint it.
This is akin to avoiding unnecessary compositing of z-order descendants when they can just
paint.

To do this we need to ensure that sharing layers are treated like compositing layers
in the overlap map, i.e. when a layer is sharing, we call overlapMap.pushCompositingContainer(),
and later overlapMap.popCompositingContainer().

Tests: compositing/shared-backing/nested-shared-layers-with-opacity.html

compositing/shared-backing/shared-layer-has-blending.html
compositing/shared-backing/shared-layer-has-filter.html
compositing/shared-backing/shared-layer-has-opacity.html
compositing/shared-backing/shared-layer-has-reflection.html
compositing/shared-backing/shared-layer-has-transform.html
compositing/shared-backing/shared-layer-isolates-blending.html
compositing/shared-backing/shared-transformed-layer-bounds.html
compositing/shared-backing/sharing-layer-becomes-non-scrollable.html
compositing/shared-backing/sharing-layer-has-effect.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintLayer): (WebCore::RenderLayer::paintLayerWithEffects):
  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::paintIntoLayer):
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::CompositingState::stateForPaintOrderChildren const): (WebCore::backingProviderLayerCanIncludeLayer): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):

LayoutTests:

Ref tests for effects on sharing layers. The references make "clipping" be stacking context via z-index,
which eliminates sharing.

  • compositing/shared-backing/nested-shared-layers-with-opacity-expected.html: Added.
  • compositing/shared-backing/nested-shared-layers-with-opacity.html: Added.
  • compositing/shared-backing/shared-layer-has-blending-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-blending.html: Added.
  • compositing/shared-backing/shared-layer-has-filter-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-filter.html: Added.
  • compositing/shared-backing/shared-layer-has-opacity-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-opacity.html: Added.
  • compositing/shared-backing/shared-layer-has-reflection-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-reflection.html: Added.
  • compositing/shared-backing/shared-layer-has-transform-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-transform.html: Added.
  • compositing/shared-backing/shared-layer-isolates-blending-expected.html: Added.
  • compositing/shared-backing/shared-layer-isolates-blending.html: Added.

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

10:49 AM Changeset in webkit [245629] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245181. rdar://problem/50670806

ASSERT(isSelfPaintingLayer()
hasSelfPaintingLayerDescendant()) on nytimes.com after r245170

https://bugs.webkit.org/show_bug.cgi?id=197776

Reviewed by Zalan Bujtas.

Source/WebCore:

Only try to paint into shared backing for layers that are able to be composited. This
avoids trying to do sharing for non-self-painting layers, which doesn't make sense.

Test: compositing/shared-backing/overflow-scroll/non-self-painting-layer-should-not-share.html

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements):

LayoutTests:

  • compositing/shared-backing/overflow-scroll/non-self-painting-layer-should-not-share-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/non-self-painting-layer-should-not-share.html: Added.

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

10:49 AM Changeset in webkit [245628] by Kocsen Chung
  • 4 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245175. rdar://problem/50584991

Event region generation needs to know about backing-sharing
https://bugs.webkit.org/show_bug.cgi?id=197694
<rdar://problem/50584991>

Reviewed by Simon Fraser.

Source/WebCore:

Test: pointerevents/ios/touch-action-region-backing-sharing.html

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

Gather event region from backing sharing layers too.

LayoutTests:

  • platform/ios-wk2/TestExpectations:
  • pointerevents/ios/touch-action-region-backing-sharing-expected.txt: Added.
  • pointerevents/ios/touch-action-region-backing-sharing.html: Added.

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

10:49 AM Changeset in webkit [245627] by Kocsen Chung
  • 36 edits
    7 copies
    35 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245170. rdar://problem/50445998

Implement backing-sharing in compositing layers, allowing overlap layers to paint into the backing store of another layer
https://bugs.webkit.org/show_bug.cgi?id=197561
<rdar://problem/50445998>

Reviewed by Antti Koivisto.
Source/WebCore:

This change introduces the concept of layers that share backing store for compositing. A layer
which is sharing its backing store first paints itself, and then some set of layers which come
later in paint order in the same stacking context. This reduces the composited layer count in
some overflow scrolling scenarios, thereby also simplifying the scrolling tree.

A backing-shared layer stores a vector of "sharing" RenderLayer* in its RenderLayerBacking. At
paint time, the owning layer is painted, then the sharing layers, setting the owning layer as the
painting root so that positioning and clipping just work.

Sharing layer relationships are constructed in RenderLayerCompositor::computeCompositingRequirements().
We track the last layer which was composited in paint order as a shared candidate. If a later layer
would composite for overlap (and no other reasons), then we allow it to share with the candidate
if the candidate is in its ancestor containing block chain. Sharing is currently limited to layers
in the same stacking context.

isComposited() returns false for sharing layers, but they are like composited layers in that
they behave as painting boundaries, so RenderLayer::paintLayer() needs to stop at them,
and repaints in shared layers have to be directed to their shared layer, hence
changes to RenderLayer::clippingRootForPainting() and RenderLayer::enclosingCompositingLayerForRepaint().

The clipping boundary logic in RenderLayer::backgroundClipRect() needed to be generalized so that
all calls to RenderLayer::parentClipRects() check for crossing painting boundaries and use
TemporaryClipRects in that case.

Tests: compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller.html

compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller.html
compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow.html
compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness.html
compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping.html
compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping.html
compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll.html
compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content.html
compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip.html
compositing/shared-backing/overflow-scroll/shared-layer-clipping.html
compositing/shared-backing/overflow-scroll/shared-layer-composited-bounds.html
compositing/shared-backing/overflow-scroll/shared-layer-nested-relative-stacking.html
compositing/shared-backing/overflow-scroll/shared-layer-repaint.html
compositing/shared-backing/partial-compositing-update.html
compositing/shared-backing/partial-compositing-update2.html
compositing/shared-backing/remove-sharing-layer.html
compositing/shared-backing/sharing-cached-clip-rects.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::~RenderLayer): (WebCore::RenderLayer::ancestorLayerIsInContainingBlockChain const): (WebCore::RenderLayer::setBackingProviderLayer): (WebCore::RenderLayer::disconnectFromBackingProviderLayer): (WebCore::RenderLayer::enclosingCompositingLayerForRepaint const): (WebCore::RenderLayer::clippingRootForPainting const): (WebCore::RenderLayer::clipToRect): (WebCore::RenderLayer::paintLayer): (WebCore::RenderLayer::updateClipRects): (WebCore::RenderLayer::clipCrossesPaintingBoundary const): (WebCore::RenderLayer::calculateClipRects const): (WebCore::outputPaintOrderTreeLegend): (WebCore::outputPaintOrderTreeRecursive): (WebCore::inContainingBlockChain): Deleted.
  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::willBeDestroyed): (WebCore::clearBackingSharingLayerProviders): (WebCore::RenderLayerBacking::setBackingSharingLayers): (WebCore::RenderLayerBacking::removeBackingSharingLayer): (WebCore::RenderLayerBacking::clearBackingSharingLayers): (WebCore::RenderLayerBacking::updateCompositedBounds): (WebCore::RenderLayerBacking::updateDrawsContent): (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer const): (WebCore::RenderLayerBacking::paintIntoLayer): (WebCore::RenderLayerBacking::paintContents):
  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::CompositingState::stateForPaintOrderChildren const): (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildren): (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildrenForUnchangedSubtree): (WebCore::RenderLayerCompositor::BackingSharingState::resetBackingProviderCandidate): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::backingProviderLayerCanIncludeLayer): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::updateBacking): (WebCore::RenderLayerCompositor::layerWillBeRemoved): (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
  • rendering/RenderLayerCompositor.h:
  • rendering/RenderTreeAsText.cpp:

LayoutTests:

New tests for backing sharing, and new baselines of tests whose behavior is changed.

Scrolling tree tests that would be invalidate by sharing are changed to defeat sharing by adding
compositing layers early in stacking order.

  • TestExpectations:
  • compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • compositing/layer-creation/overflow-scroll-overlap-expected.txt:
  • compositing/layer-creation/overflow-scroll-overlap.html:
  • compositing/overflow/scrolling-content-clip-to-viewport.html:
  • compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller.html: Added.
  • compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller.html: Added.
  • compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow.html: Copied from LayoutTests/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow.html.
  • compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness.html: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping.html: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping.html: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll.html: Added.
  • compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content.html: Added.
  • compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip-expected.html: Added.
  • compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-clipping-expected.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-clipping.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-composited-bounds-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-composited-bounds.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-nested-relative-stacking-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-nested-relative-stacking.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-repaint-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-repaint.html: Added.
  • compositing/shared-backing/partial-compositing-update-expected.txt: Added.
  • compositing/shared-backing/partial-compositing-update.html: Added.
  • compositing/shared-backing/partial-compositing-update2-expected.txt: Added.
  • compositing/shared-backing/partial-compositing-update2.html: Added.
  • compositing/shared-backing/remove-sharing-layer-expected.txt: Added.
  • compositing/shared-backing/remove-sharing-layer.html: Added.
  • compositing/shared-backing/sharing-cached-clip-rects-expected.txt: Added.
  • compositing/shared-backing/sharing-cached-clip-rects.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt:
  • platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • platform/ios/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
  • platform/ios/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
  • platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
  • platform/mac-wk1/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
  • platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow.html:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow.html:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow.html:
  • scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt:
  • scrollingcoordinator/scrolling-tree/positioned-nodes-complex.html:

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

10:49 AM Changeset in webkit [245626] by Kocsen Chung
  • 2 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245147. rdar://problem/50621407

fast/hidpi/video-controls-in-hidpi.html sometimes asserts in WK1
https://bugs.webkit.org/show_bug.cgi?id=197695

Reviewed by Zalan Bujtas.

With the backing-sharing changes that landed in r245058, some WebKit1 tests with media controls asserted in
RenderLayerBacking::computeParentGraphicsLayerRect() because a layer would have a m_ancestorClippingLayer,
but backgroundClipRect() would return an infinite rect.

This happened when a layer tree change caused the layer's compositing ancestor to no longer isolate
composited blending (which affects the behavior of RenderLayerCompositor:clippedByAncestor()), but we failed
to mark its composited children as needing the configuration update which would eliminate their m_ancestorClippingLayers.

The fix is to call setChildrenNeedCompositingGeometryUpdate() when isolatesCompositedBlending changes. We don't haev
setChildrenNeedCompositingConfigurationUpdate(), but setChildrenNeedCompositingGeometryUpdate() has the desired side-effect.

I was unable to make a standalone test case for this, but the code is exercised by media control tests.

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements):

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

10:38 AM Changeset in webkit [245625] by youenn@apple.com
  • 13 edits
    4 adds in trunk

Implement Feature policy self/none/* parsing
https://bugs.webkit.org/show_bug.cgi?id=198078

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

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

Source/WebCore:

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

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

  • Headers.cmake:
  • Modules/mediastream/UserMediaController.cpp:

(WebCore::isSecure):
(WebCore::isAllowedByFeaturePolicy):
(WebCore::isAllowedToUse):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/FeaturePolicy.cpp: Added.

(WebCore::isAllowedByFeaturePolicy):
(WebCore::processOriginItem):
(WebCore::updateList):
(WebCore::FeaturePolicy::parse):
(WebCore::FeaturePolicy::allows const):

  • html/FeaturePolicy.h: Added.
  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::featurePolicy const):

  • html/HTMLIFrameElement.h:

Source/WebKit:

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

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted):

LayoutTests:

  • http/tests/media/media-stream/get-display-media-iframe-allow-attribute-expected.txt:
  • http/tests/media/media-stream/get-display-media-iframe-allow-attribute.html:
10:31 AM Changeset in webkit [245624] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.20-branch/Source

Versioning.

10:25 AM Changeset in webkit [245623] by aboya@igalia.com
  • 11 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=198128

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/gtk/fast/forms/input-align-expected.png:
  • platform/gtk/fast/forms/input-align-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt:
  • platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/gtk/media/controls-after-reload-expected.txt:
  • platform/gtk/printing/page-with-10mm-left-margin-expected.txt:
  • platform/gtk/printing/page-with-zero-margin-expected.txt:
  • platform/wpe/js/dom/dom-static-property-for-in-iteration-expected.txt:
10:21 AM Changeset in webkit [245622] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] ArrayBufferContents::tryAllocate signs the pointer with allocation size and authenticates it with sizeInBytes
https://bugs.webkit.org/show_bug.cgi?id=198101

Reviewed by Michael Saboff.

JSTests:

  • stress/zero-sized-array-buffer-pointer-should-be-signed-with-zero.js: Added.

(shouldBe):

Source/JavaScriptCore:

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

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

  • runtime/ArrayBuffer.cpp:

(JSC::ArrayBufferContents::tryAllocate):

10:18 AM Changeset in webkit [245621] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test http/wpt/cache-storage/cache-put-stream.https.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=181107
<rdar://problem/36188028>

Unreviewed.

  • platform/mac-wk2/TestExpectations:

Marking more tests as slow.

9:55 AM Changeset in webkit [245620] by Ross Kirsling
  • 2 edits in trunk/Source/WebKit

Unreviewed fix for non-unified build after r245320.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::convertRectFromFrameClientToRootView):
(WebKit::convertPointFromFrameClientToRootView):
(WebKit::WebAutomationSessionProxy::computeElementLayout):

7:23 AM Changeset in webkit [245619] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test http/tests/security/showModalDialog-sync-cross-origin-page-load2.html is failing
https://bugs.webkit.org/show_bug.cgi?id=198112

Unreviewed test gardening.

  • platform/win/TestExpectations:
3:41 AM Changeset in webkit [245618] by Carlos Garcia Campos
  • 4 edits in trunk/Tools

Unreviewed. Fix WPE unit tests after r245565

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

  • TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp:

(testAutomationSessionRequestSession):

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewGeolocationPermissionRequests):

  • TestWebKitAPI/glib/WebKitGLib/TestMain.h:

(Test::createWebViewBackend):
(Test::addLogFatalFlag):
(Test::removeLogFatalFlag):

1:37 AM Changeset in webkit [245617] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

Unreviewed. Fix GTK unit tests after r245565

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseDispose): Null check accessible before calling webkitWebViewAccessibleSetWebView().

Note: See TracTimeline for information about the timeline view.