Timeline



Feb 11, 2020:

10:15 PM Changeset in webkit [256426] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

[ Mac Debug wk2 ] ASSERTION FAILED: m_wasConstructedOnMainThread == isMainThread()
https://bugs.webkit.org/show_bug.cgi?id=207509
<rdar://problem/59325466>

Reviewed by Chris Dumez.

Covered by existing tests.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::writeSizeFile):
Make sure completion handler is always called on the main thread.
Minor refactoring to make things more efficient.

9:41 PM Changeset in webkit [256425] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

Add WebCrypto LayoutTests to check if PKCS#7 padding is correctly implemented in AES-CBC
https://bugs.webkit.org/show_bug.cgi?id=207174

Patch by Tomoki Imai <Tomoki Imai> on 2020-02-11
Reviewed by Jiewen Tan.

WebCrypto AES-CBC specification requires PKCS#7 padding,

Add decrypt/encrypt test cases for 0 ~ 33 bytes data.
It covers the boundary values where the padding size are changed, namely, 0, 1, 15, 16, 17, 31, 32, and 33.

  • crypto/subtle/aes-cbc-import-key-decrypt-expected.txt:
  • crypto/subtle/aes-cbc-import-key-decrypt.html:
  • crypto/subtle/aes-cbc-import-key-encrypt-expected.txt:
  • crypto/subtle/aes-cbc-import-key-encrypt.html:
9:11 PM Changeset in webkit [256424] by Peng Liu
  • 9 edits
    3 moves in trunk/Source/WebCore

Rename VideoFullscreenLayerManager to VideoLayerManager
https://bugs.webkit.org/show_bug.cgi?id=207502

Reviewed by Youenn Fablet.

No new tests -- no new or changed functionality.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/VideoLayerManager.h: Renamed from Source/WebCore/platform/graphics/VideoFullscreenLayerManager.h.

(WebCore::VideoLayerManager::~VideoLayerManager):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyVideoLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformLayer const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoFullscreenInlineImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenFrame):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoLayerGravity):
(WebCore::MediaPlayerPrivateAVFoundationObjC::requiresTextTrackRepresentation const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::syncTextTrackBounds):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setTextTrackRepresentation):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::platformLayer const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenFrame):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::requiresTextTrackRepresentation const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::syncTextTrackBounds):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setTextTrackRepresentation):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::platformLayer const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenFrame):

  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h: Renamed from Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.h.
  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm: Renamed from Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm.

(WebCore::VideoLayerManagerObjC::VideoLayerManagerObjC):
(WebCore::VideoLayerManagerObjC::setVideoLayer):
(WebCore::VideoLayerManagerObjC::updateVideoFullscreenInlineImage):
(WebCore::VideoLayerManagerObjC::setVideoFullscreenLayer):
(WebCore::VideoLayerManagerObjC::setVideoFullscreenFrame):
(WebCore::VideoLayerManagerObjC::didDestroyVideoLayer):
(WebCore::VideoLayerManagerObjC::requiresTextTrackRepresentation const):
(WebCore::VideoLayerManagerObjC::syncTextTrackBounds):
(WebCore::VideoLayerManagerObjC::setTextTrackRepresentation):
(WebCore::VideoLayerManagerObjC::logChannel const):

8:11 PM Changeset in webkit [256423] by ysuzuki@apple.com
  • 3 edits in trunk/Source/WebCore

Compress ImmutableStyleProperties by using PackedPtr
https://bugs.webkit.org/show_bug.cgi?id=207604

Reviewed by Mark Lam.

ImmutableStyleProperties is kept so long and consumes enough memory.
We already attempted to compact it by storing CSSProperty's members separately.
But we can compact further by using PackedPtr. This patch makes,

  1. Use PackedPtr for CSSValue* in ImmutableStyleProperties so that we can cut some bytes
  2. Reorder CSSValue* and StylePropertyMetadata arrays since StylePropertyMetadata requires alignment while PackedPtr<CSSValue> is not.

No behavior change.

  • css/StyleProperties.cpp:

(WebCore::sizeForImmutableStylePropertiesWithPropertyCount):
(WebCore::ImmutableStyleProperties::ImmutableStyleProperties):
(WebCore::ImmutableStyleProperties::~ImmutableStyleProperties):
(WebCore::ImmutableStyleProperties::findCustomPropertyIndex const):

  • css/StyleProperties.h:

(WebCore::ImmutableStyleProperties::valueArray const):
(WebCore::ImmutableStyleProperties::metadataArray const):
(WebCore::ImmutableStyleProperties::propertyAt const):

7:43 PM Changeset in webkit [256422] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening some tests crashing in debug builds
https://bugs.webkit.org/show_bug.cgi?id=207607

Unreviewed test gardening.

Patch by Lauro Moura <Lauro Moura> on 2020-02-11

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
6:56 PM Changeset in webkit [256421] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Debug build fix after r256353.

Unreviewed build fix.

  • platform/graphics/gstreamer/InbandMetadataTextTrackPrivateGStreamer.h:

(WebCore::InbandMetadataTextTrackPrivateGStreamer::addDataCue):
(WebCore::InbandMetadataTextTrackPrivateGStreamer::addGenericCue):

5:59 PM Changeset in webkit [256420] by Fujii Hironori
  • 21 edits in trunk/Source

Fix declarations marked by wrong export macros (WEBCORE_EXPORT and WTF_EXPORT)
https://bugs.webkit.org/show_bug.cgi?id=207453

Reviewed by Ross Kirsling.

Source/WebCore:

No new tests because there is no behavior change.

  • rendering/RenderTheme.h:
  • testing/MockContentFilterSettings.h:
  • testing/MockGamepadProvider.h:

Source/WebKit:

  • UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h:
  • UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.h:

Source/WebKitLegacy:

  • Storage/InProcessIDBServer.h:

Source/WebKitLegacy/win:

  • Plugins/PluginMainThreadScheduler.h:

Source/WTF:

Export macros are prone to be misused because thier definitions
are identical for POSIX ports. They can be used interchangeably on
such ports.

WTF should use WTF_EXPORT_PRIVATE instead of WTF_EXPORT.

  • wtf/HexNumber.h:
  • wtf/Language.h:
  • wtf/Logger.h:
  • wtf/ProcessPrivilege.h:
  • wtf/cocoa/CrashReporter.h:
  • wtf/cocoa/Entitlements.h:
  • wtf/text/LineEnding.h:
  • wtf/text/TextBreakIterator.h:
  • wtf/text/icu/UTextProviderLatin1.h:

Replaced WTF_EXPORT with WTF_EXPORT_PRIVATE.

5:50 PM Changeset in webkit [256419] by Fujii Hironori
  • 2 edits in trunk/Source/WebKitLegacy

[Win][CMake][WK1] WebKitLegacyGUID doesn't get recompiled by updating IDL files
https://bugs.webkit.org/show_bug.cgi?id=207456

Reviewed by Don Olmstead.

In GENERATE_INTERFACE macro, only *.h files were specified to
OUTPUT of add_custom_command. Generated *_i.c files were just
marked GENERATED source file property. So, WebKitLegacyGUID didn't
know which command generates *_i.c files.

Added a new option HEADER_ONLY to GENERATE_INTERFACE. If
HEADER_ONLY is not specified, append ${_filewe}_i.c to the OUTPUT.
Only AccessibleStates.idl and IA2CommonTypes.idl are marked with
HEADER_ONLY.

Removed _defines and _depends options to simplify
GENERATE_INTERFACE.

  • PlatformWin.cmake:
5:21 PM Changeset in webkit [256418] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

REGRESSION (r236025): Correct flaky WebGL2 test failures
https://bugs.webkit.org/show_bug.cgi?id=207595
<rdar://problem/59367393>

Reviewed by Jon Lee.

Correct handling of sample parameters in the prototype WebGL2 implementation.

Tested by existing tests.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getInternalformatParameter):

5:08 PM Changeset in webkit [256417] by Alan Bujtas
  • 42 edits
    2 moves in trunk/Source/WebCore

[LFC] Rename Layout::Container to Layout::ContainerBox
https://bugs.webkit.org/show_bug.cgi?id=207585
<rdar://problem/59363845>

Reviewed by Antti Koivisto.

ContainerBox name is more inline with the rest of the box classes.

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

(WebCore::Layout::FormattingContext::FormattingContext):
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):
(WebCore::Layout::mapHorizontalPositionToAncestor):
(WebCore::Layout::FormattingContext::mapTopToFormattingContextRoot const):

  • layout/FormattingContext.h:

(WebCore::Layout::FormattingContext::root const):

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):
(WebCore::Layout::LayoutContext::createFormattingContext):

  • layout/LayoutContext.h:
  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::LayoutState):
(WebCore::Layout::LayoutState::establishedFormattingState const):
(WebCore::Layout::LayoutState::establishedInlineFormattingState const):
(WebCore::Layout::LayoutState::establishedBlockFormattingState const):
(WebCore::Layout::LayoutState::establishedTableFormattingState const):
(WebCore::Layout::LayoutState::ensureFormattingState):
(WebCore::Layout::LayoutState::ensureInlineFormattingState):
(WebCore::Layout::LayoutState::ensureBlockFormattingState):
(WebCore::Layout::LayoutState::ensureTableFormattingState):

  • layout/LayoutState.h:

(WebCore::Layout::LayoutState::hasInlineFormattingState const):
(WebCore::Layout::LayoutState::root const):

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
(WebCore::Layout::verifyAndOutputSubtree):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::BlockFormattingContext):
(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren):
(WebCore::Layout::BlockFormattingContext::computedIntrinsicWidthConstraints):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

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

  • layout/blockformatting/BlockFormattingContextQuirks.cpp:

(WebCore::Layout::initialContainingBlock):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter const):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::absoluteDisplayBox):
(WebCore::Display::paintSubtree):
(WebCore::Display::collectPaintRootsAndContentRect):

  • layout/floats/FloatAvoider.cpp:
  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::FloatingContext):
(WebCore::Layout::FloatingContext::mapTopToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapPointFromFormattingContextRootToFloatingStateRoot const):

  • layout/floats/FloatingContext.h:

(WebCore::Layout::FloatingContext::root const):

  • layout/floats/FloatingState.cpp:

(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::FloatingState::append):
(WebCore::Layout::FloatingState::bottom const):
(WebCore::Layout::FloatingState::top const):

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::create):
(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::leftBottom const):
(WebCore::Layout::FloatingState::rightBottom const):
(WebCore::Layout::FloatingState::bottom const):
(WebCore::Layout::FloatingState::FloatItem::isDescendantOfFormattingRoot const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::InlineFormattingContext):
(WebCore::Layout::nextInlineLevelBoxToLayout):
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::collectInlineContentIfNeeded):

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::InlineFormattingContext::Geometry::computedTextIndent const):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::LineLayoutContext):

  • layout/inlineformatting/LineLayoutContext.h:

(WebCore::Layout::LineLayoutContext::root const):

  • layout/integration/LayoutIntegrationBoxTree.h:

(WebCore::LayoutIntegration::BoxTree::rootLayoutBox const):
(WebCore::LayoutIntegration::BoxTree::rootLayoutBox):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::rootLayoutBox const):
(WebCore::LayoutIntegration::LineLayout::rootLayoutBox):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/invalidation/InvalidationState.h:
  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::establishesInlineFormattingContext const):
(WebCore::Layout::Box::containingBlock const):
(WebCore::Layout::Box::formattingContextRoot const):
(WebCore::Layout::Box::initialContainingBlock const):
(WebCore::Layout::Box::isDescendantOf const):
(WebCore::Layout::Box::isContainingBlockDescendantOf const):
(WebCore::Layout::Box::isOverflowVisible const):

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::parent const):
(WebCore::Layout::Box::isContainerBox const):
(WebCore::Layout::Box::setParent):
(WebCore::Layout::Box::isContainer const): Deleted.

  • layout/layouttree/LayoutChildIterator.h:

(WebCore::Layout::LayoutChildIterator<T>::LayoutChildIterator):
(WebCore::Layout::LayoutChildIteratorAdapter<T>::LayoutChildIteratorAdapter):
(WebCore::Layout::childrenOfType):

  • layout/layouttree/LayoutContainerBox.cpp: Renamed from Source/WebCore/layout/layouttree/LayoutContainer.cpp.

(WebCore::Layout::ContainerBox::ContainerBox):
(WebCore::Layout::ContainerBox::firstInFlowChild const):
(WebCore::Layout::ContainerBox::firstInFlowOrFloatingChild const):
(WebCore::Layout::ContainerBox::lastInFlowChild const):
(WebCore::Layout::ContainerBox::lastInFlowOrFloatingChild const):
(WebCore::Layout::ContainerBox::setFirstChild):
(WebCore::Layout::ContainerBox::setLastChild):
(WebCore::Layout::ContainerBox::appendChild):

  • layout/layouttree/LayoutContainerBox.h: Renamed from Source/WebCore/layout/layouttree/LayoutContainer.h.
  • layout/layouttree/LayoutDescendantIterator.h:

(WebCore::Layout::LayoutDescendantIterator<T>::LayoutDescendantIterator):
(WebCore::Layout::LayoutDescendantIteratorAdapter<T>::LayoutDescendantIteratorAdapter):
(WebCore::Layout::descendantsOfType):

  • layout/layouttree/LayoutIterator.h:

(WebCore::Layout::LayoutBoxTraversal::firstChild):
(WebCore::Layout::LayoutBoxTraversal::nextAncestorSibling):
(WebCore::Layout::LayoutBoxTraversal::next):
(WebCore::Layout::LayoutBoxTraversal::nextSkippingChildren):
(WebCore::Layout::Traversal::next):
(WebCore::Layout::LayoutIterator<T>::LayoutIterator):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::LayoutTreeContent::LayoutTreeContent):
(WebCore::Layout::appendChild):
(WebCore::Layout::TreeBuilder::buildLayoutTree):
(WebCore::Layout::TreeBuilder::createContainer):
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::TreeBuilder::buildTableStructure):
(WebCore::Layout::TreeBuilder::buildSubTree):
(WebCore::Layout::outputInlineRuns):
(WebCore::Layout::outputLayoutTree):

  • layout/layouttree/LayoutTreeBuilder.h:

(WebCore::Layout::LayoutTreeContent::rootLayoutBox const):
(WebCore::Layout::LayoutTreeContent::rootLayoutBox):
(WebCore::Layout::LayoutTreeContent::addBox):
(WebCore::Layout::LayoutTreeContent::addContainer):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::TableFormattingContext):
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
(WebCore::Layout::TableFormattingContext::ensureTableGrid):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):

  • layout/tableformatting/TableFormattingContext.h:
5:06 PM Changeset in webkit [256416] by Russell Epstein
  • 1 copy in tags/Safari-609.1.17.0.1

Tag Safari-609.1.17.0.1.

5:06 PM Changeset in webkit [256415] by Alan Coon
  • 1 copy in tags/Safari-609.1.17.1.1

Tag Safari-609.1.17.1.1.

5:05 PM Changeset in webkit [256414] by sihui_liu@apple.com
  • 7 edits in trunk

IndexedDB: iteration of cursors skip records if deleted
https://bugs.webkit.org/show_bug.cgi?id=207437

Reviewed by Brady Eidson.

Source/WebCore:

When changes are made to records, cursors will dump cached records and set new key range for iteration.
The new range did not include key of current cursor record, which is wrong because two index records can have
the same key but different values.
r237590 tried fixing this issue by caching all the following records which have the same key as current record.
That is not quite right as there could be changes on the cached records, and the cached records were not
updated.

To correctly fix the issue, set the new key range to include key of current cursor record and exclude values
visited before. To not regress preformance, we complete this by making an extra statment and changing
IndexRecordsIndex index of table IndexRecords to cover value column.

Added test case in: storage/indexeddb/cursor-update-while-iterating.html
Index upgrade covered by existing API test: IndexedDB.IDBObjectStoreInfoUpgradeToV2

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsIndex):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::buildPreIndexStatement):
(WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindPreIndexStatementIfNecessary):
(WebCore::IDBServer::SQLiteIDBCursor::fetch):
(WebCore::IDBServer::SQLiteIDBCursor::fetchNextRecord):
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):

  • Modules/indexeddb/server/SQLiteIDBCursor.h:

(WebCore::IDBServer::SQLiteIDBCursor::isDirectionNext const):

LayoutTests:

  • storage/indexeddb/cursor-update-while-iterating-expected.txt:
  • storage/indexeddb/resources/cursor-update-while-iterating.js:

(populateObjectStore):
(onOpenSuccess.request.onsuccess):
(onOpenSuccess):
(prepareDatabase): Deleted.

5:00 PM Changeset in webkit [256413] by Alan Coon
  • 26 edits
    2 adds in branches/safari-609-branch

Cherry-pick r255668. rdar://problem/59299120

MediaDevices should handle changes of iframe allow attribute value
https://bugs.webkit.org/show_bug.cgi?id=207112

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaStream-feature-policy-none.https-expected.txt:

Source/WebCore:

MediaDevices was computing whether it could access camera or microphone at creation time.
Since the iframe allow attribute can be modified, we cannot do that.
Instead, we get the feature policy everytime this is needed.

Refactor code to use the newly added routine to check for feature policy.
Update logging to give origin and allow attribute value of the frame that fail the feature policy check.

Test: http/tests/webrtc/enumerateDevicesInFrames.html

  • Modules/mediastream/MediaDevices.cpp: (WebCore::MediaDevices::MediaDevices): (WebCore::MediaDevices::refreshDevices): (WebCore::MediaDevices::enumerateDevices): (WebCore::MediaDevices::listenForDeviceChanges):
  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/UserMediaController.cpp: (WebCore::UserMediaController::logGetUserMediaDenial): (WebCore::UserMediaController::logGetDisplayMediaDenial): (WebCore::UserMediaController::logEnumerateDevicesDenial):
  • Modules/mediastream/UserMediaController.h:
  • Modules/mediastream/UserMediaRequest.cpp: (WebCore::UserMediaRequest::start):
  • html/FeaturePolicy.cpp: (WebCore::policyTypeName): (WebCore::isFeaturePolicyAllowedByDocumentAndAllOwners):
  • html/FeaturePolicy.h:
  • page/DOMWindow.cpp: (WebCore::DOMWindow::printErrorMessage const):
  • page/DOMWindow.h:

LayoutTests:

  • TestExpectations:
  • fullscreen/full-screen-enabled-expected.txt:
  • fullscreen/full-screen-enabled-prefixed-expected.txt:
  • fullscreen/full-screen-iframe-not-allowed-expected.txt:
  • fullscreen/full-screen-iframe-without-allow-attribute-allowed-from-parent-expected.txt:
  • fullscreen/full-screen-restrictions-expected.txt:
  • http/tests/fullscreen/fullscreen-feature-policy-expected.txt:
  • http/tests/media/media-stream/enumerate-devices-iframe-allow-attribute-expected.txt:
  • http/tests/media/media-stream/get-display-media-iframe-allow-attribute-expected.txt:
  • http/tests/ssl/media-stream/get-user-media-different-host-expected.txt:
  • http/tests/ssl/media-stream/get-user-media-nested-expected.txt:
  • http/tests/webrtc/enumerateDevicesInFrames-expected.txt: Added.
  • http/tests/webrtc/enumerateDevicesInFrames.html: Added.

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

5:00 PM Changeset in webkit [256412] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r255562. rdar://problem/59299120

Do not copy feature policy in isFeaturePolicyAllowedByDocumentAndAllOwners
https://bugs.webkit.org/show_bug.cgi?id=207110

Reviewed by Eric Carlson.

Use auto& instead of auto to not copy the feature policy object.
Add some auto* to improve code readability.
No change of behavior.

  • html/FeaturePolicy.cpp: (WebCore::isFeaturePolicyAllowedByDocumentAndAllOwners):

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

5:00 PM Changeset in webkit [256411] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/JavaScriptCore

Apply patch. rdar://problem/59299139

5:00 PM Changeset in webkit [256410] by Alan Coon
  • 22 edits in branches/safari-609-branch

Cherry-pick r256073. rdar://problem/59299148

Remember if we used legacy TLS in the back/forward cache like we remember if we have only secure content
https://bugs.webkit.org/show_bug.cgi?id=207409
rdar://problem/59275641

Patch by Alex Christensen <achristensen@apple.com> on 2020-02-07
Reviewed by Chris Dumez.

Source/WebCore:

Covered by an API test.

  • history/CachedFrame.cpp: (WebCore::CachedFrame::setHasInsecureContent):
  • history/CachedFrame.h: (WebCore::CachedFrame::usedLegacyTLS const):
  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::receivedFirstData): (WebCore::FrameLoader::commitProvisionalLoad): (WebCore::FrameLoader::dispatchDidCommitLoad):
  • loader/FrameLoader.h:
  • loader/FrameLoaderClient.h:

Source/WebKit:

  • Scripts/webkit/messages.py:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::hasInsecureContent):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad): (WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame):
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::dispatchDidCommitLoad):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp: (WebFrameLoaderClient::dispatchDidCommitLoad):
  • WebCoreSupport/WebFrameLoaderClient.h:

Tools:

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

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

5:00 PM Changeset in webkit [256409] by Alan Coon
  • 17 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r256060. rdar://problem/59298138

Captions sometimes render at the wrong size when in fullscreen and PiP
https://bugs.webkit.org/show_bug.cgi?id=207389
<rdar://problem/58677864>

Reviewed by Jer Noble.

The TextTrackRepresentation, used to render captions when in fullscreen and PiP on
iOS and and in PiP on macOS, frequently rendered captions before layout completed
immediately after it was created. Fix this by having it not render until a layout
happens. Additionally, make the code more efficient by hiding the TextTrackRepresentation's
backing layer when cues are not visible instead of destroying the whole object.
Drive by: RELEASE_LOG_DISABLED is always defined for PLATFORM(COCOA), so remove it
from the macOS/iOS media players to make it easier to add logging to VideoFullscreenLayerManagerObjC.

  • html/HTMLMediaElement.cpp: (WebCore::convertEnumerationToString): (WebCore::HTMLMediaElement::configureTextTrackDisplay):
  • html/HTMLMediaElementEnums.h: (WTF::LogArgument<WebCore::HTMLMediaElementEnums::TextTrackVisibilityCheckType>::toString):
  • html/shadow/MediaControlElements.cpp: (WebCore::MediaControlTextTrackContainerElement::MediaControlTextTrackContainerElement): (WebCore::MediaControlTextTrackContainerElement::updateDisplay): (WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentation): (WebCore::MediaControlTextTrackContainerElement::clearTextTrackRepresentation): (WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentationStyle): (WebCore::MediaControlTextTrackContainerElement::layoutIfNecessary): (WebCore::MediaControlTextTrackContainerElement::updateVideoDisplaySize): (WebCore::MediaControlTextTrackContainerElement::updateSizes): (WebCore::MediaControlTextTrackContainerElement::updateCueStyles): (WebCore::MediaControlTextTrackContainerElement::logger const): (WebCore::MediaControlTextTrackContainerElement::logIdentifier const): (WebCore::MediaControlTextTrackContainerElement::updateTimerFired): Deleted. (WebCore::MediaControlTextTrackContainerElement::updateStyleForTextTrackRepresentation): Deleted.
  • platform/graphics/TextTrackRepresentation.h:
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation): (WebCore::MediaPlayerPrivateAVFoundation::logChannel const):
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenFrame): (WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateAudioTracks): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::mediaPlayerLogger):
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::logChannel const):
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::logChannel const):
  • platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.h:
  • platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm: (WebCore::VideoFullscreenLayerManagerObjC::VideoFullscreenLayerManagerObjC): (WebCore::VideoFullscreenLayerManagerObjC::setVideoLayer): (WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenLayer): (WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenFrame): (WebCore::VideoFullscreenLayerManagerObjC::didDestroyVideoLayer): (WebCore::VideoFullscreenLayerManagerObjC::syncTextTrackBounds): (WebCore::VideoFullscreenLayerManagerObjC::setTextTrackRepresentation): (WebCore::VideoFullscreenLayerManagerObjC::logChannel const):
  • platform/graphics/cocoa/TextTrackRepresentationCocoa.h:
  • platform/graphics/cocoa/TextTrackRepresentationCocoa.mm: (-[WebCoreTextTrackRepresentationCocoaHelper observeValueForKeyPath:ofObject:change:context:]): (TextTrackRepresentationCocoa::setHidden const): (TextTrackRepresentationCocoa::boundsChanged):
  • rendering/RenderMediaControlElements.cpp: (WebCore::RenderTextTrackContainerElement::layout):

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

4:59 PM Changeset in webkit [256408] by Alan Coon
  • 14 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255992. rdar://problem/59298165

[WK2][iOS] Add WKWebviewConfiguration SPI to run client navigations at foreground priority, even if the view is background
https://bugs.webkit.org/show_bug.cgi?id=207341
<rdar://problem/59227077>

Reviewed by Geoff Garen.

Add WKWebviewConfiguration SPI to run client navigations at foreground priority, even if the view is background,
as long as the application itself is foreground. The new SPI is:
WKWebViewConfiguration._clientNavigationsRunAtForegroundPriority

The use case is that the client may choose to load something in an offscreen view and only show the view once the
load is complete (to avoid flashing for e.g.). In such cases, it makes sense to use foreground priority for the
load since it needs to complete as fast as possible, even though the view is technically background.

  • UIProcess/API/APINavigation.h: (API::Navigation::setForegroundActivity):
  • UIProcess/API/APIPageConfiguration.cpp: (API::PageConfiguration::copy const):
  • UIProcess/API/APIPageConfiguration.h: (API::PageConfiguration::clientNavigationsRunAtForegroundPriority const): (API::PageConfiguration::setClientNavigationsRunAtForegroundPriority): (API::PageConfiguration::alwaysRunsAtForegroundPriority const): (API::PageConfiguration::alwaysRunsAtForegroundPriority): Deleted.
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration _clientNavigationsRunAtForegroundPriority]): (-[WKWebViewConfiguration _setClientNavigationsRunAtForegroundPriority:]):
  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::loadRequest): (WebKit::WebPageProxy::loadFile): (WebKit::WebPageProxy::loadData): (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared): (WebKit::WebPageProxy::didFinishLoadForFrame): (WebKit::WebPageProxy::didFailLoadForFrame):
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::isApplicationVisible):
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::shouldUseForegroundPriorityForClientNavigation const):

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

4:59 PM Changeset in webkit [256407] by Alan Coon
  • 11 edits in branches/safari-609-branch/Source

Cherry-pick r255881. rdar://problem/59299143

Adopt MTOverrideShouldPlayHDRVideo()
https://bugs.webkit.org/show_bug.cgi?id=207275
<rdar://problem/58837093>

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/PlatformScreen.h:
  • platform/mac/PlatformScreenMac.mm: (WebCore::setShouldOverrideScreenSupportsHighDynamicRange):

Source/WebCore/PAL:

  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h:

Source/WebKit:

The WebProcess sandbox can block access to the services necessary for MediaToolbox to determine whether
the current display is capable of displaying HDR. Rather than opening up the sandbox, provide the information
gathered by the UIProcess by way of MTOverrideShouldPlayHDRVideo().

  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::windowScreenDidChange): (WebKit::WebPage::displayID const):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::setScreenProperties): Deleted.
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::setScreenProperties): (WebKit::WebProcess::updatePageScreenProperties):

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

4:59 PM Changeset in webkit [256406] by Alan Coon
  • 2 edits in branches/safari-609-branch/Tools

Cherry-pick r255880. rdar://problem/59299151

Unreviewed, another build fix after r255846

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

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

4:59 PM Changeset in webkit [256405] by Alan Coon
  • 38 edits in branches/safari-609-branch

Cherry-pick r255846. rdar://problem/59299151

Make WKWebView._negotiatedLegacyTLS accurate when loading main resouorce from network or cache
https://bugs.webkit.org/show_bug.cgi?id=207207

Reviewed by Chris Dumez.

Source/WebCore:

  • platform/network/ResourceResponseBase.cpp: (WebCore::ResourceResponseBase::includeCertificateInfo const):
  • platform/network/ResourceResponseBase.h: (WebCore::ResourceResponseBase::usedLegacyTLS const): (WebCore::ResourceResponseBase::encode const): (WebCore::ResourceResponseBase::decode):

Source/WebKit:

In PageLoadState::didCommitLoad, I was resetting the value of _negotiatedLegacyTLS to false.
That created a race condition when loading the main resource because the NetworkProcess would
message the UIProcess setting _negotiatedLegacyTLS to false, while the NetworkProcess would
message the WebProcess which would message the UIProcess to call PageLoadState::didCommitLoad
which would reset it to false. Now it resets it to the correct value, whatever it is.

Updating the ResourceResponseBase serialization code has the desirable side effect that the disk
cache will remember whether legacy TLS was used to fetch each resource. This will make it so
_negotiatedLegacyTLS is true if we read content from the disk cache that was originally fetched
using legacy TLS.

In order to not increase the memory footprint of ResourceResponse, I changed m_httpStatusCode from
an int to a short. It just needs to be able to cover the values 0-600 or so, which really only needs 10 bits.

Covered by new API tests.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp: (WebKit::NetworkCORSPreflightChecker::didReceiveResponse):
  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkDataTask.cpp: (WebKit::NetworkDataTask::didReceiveResponse): (WebKit::NetworkDataTask::negotiatedLegacyTLS const): Deleted.
  • NetworkProcess/NetworkDataTask.h: (WebKit::NetworkDataTaskClient::negotiatedLegacyTLS const): Deleted.
  • NetworkProcess/NetworkDataTaskBlob.cpp: (WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
  • NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveResponse): (WebKit::NetworkLoad::notifyDidReceiveResponse): (WebKit::NetworkLoad::throttleDelayCompleted): (WebKit::NetworkLoad::negotiatedLegacyTLS const): Deleted.
  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/PingLoad.cpp: (WebKit::PingLoad::didReceiveResponse):
  • NetworkProcess/PingLoad.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::didReceiveResponse):
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
  • NetworkProcess/curl/NetworkDataTaskCurl.cpp: (WebKit::NetworkDataTaskCurl::invokeDidReceiveResponse):
  • NetworkProcess/soup/NetworkDataTaskSoup.cpp: (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
  • UIProcess/PageLoadState.cpp: (WebKit::PageLoadState::didCommitLoad):
  • UIProcess/PageLoadState.h:
  • UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::commitProvisionalPage): (WebKit::WebPageProxy::didCommitLoadForFrame):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):

Source/WTF:

  • wtf/persistence/PersistentDecoder.cpp: (WTF::Persistence::Decoder::decode):
  • wtf/persistence/PersistentDecoder.h:
  • wtf/persistence/PersistentEncoder.cpp: (WTF::Persistence::Encoder::encode):
  • wtf/persistence/PersistentEncoder.h:

Tools:

HTTPServer now supports HTTPS. Tell your friends!

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm: (testCertificate): (testIdentity): (credentialWithIdentity):
  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm: (TestWebKitAPI::webViewWithNavigationDelegate): (TestWebKitAPI::TEST):
  • TestWebKitAPI/cocoa/HTTPServer.h:
  • TestWebKitAPI/cocoa/HTTPServer.mm: (TestWebKitAPI::HTTPServer::HTTPServer): (TestWebKitAPI::HTTPServer::request const):

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

4:59 PM Changeset in webkit [256404] by Alan Coon
  • 16 edits in branches/safari-609-branch

Cherry-pick r255845. rdar://problem/59298143

_WKDownload should expose the originating FrameInfo.
<rdar://problem/58022576> and https://bugs.webkit.org/show_bug.cgi?id=207185

Patch by Brady Eidson <beidson@apple.com> on 2020-02-05
Reviewed by Geoff Garen.

Source/WebKit:

Covered by new API test.

For the cases where a navigation is converted into a download, include the relevant
WKFrameInfo on the _WKDownload object.

  • UIProcess/API/APIFrameInfo.h:
  • UIProcess/API/Cocoa/_WKDownload.h:
  • UIProcess/API/Cocoa/_WKDownload.mm: (-[_WKDownload originatingFrameInfo]):
  • UIProcess/Downloads/DownloadProxy.cpp: (WebKit::generateDownloadID): (WebKit::DownloadProxy::DownloadProxy): (WebKit::DownloadProxy::create): Deleted. (WebKit::DownloadProxy::setOriginatingPage): Deleted.
  • UIProcess/Downloads/DownloadProxy.h: (WebKit::DownloadProxy::create): (WebKit::DownloadProxy::frameInfo):
  • UIProcess/Downloads/DownloadProxyMap.cpp: (WebKit::DownloadProxyMap::createDownloadProxy):
  • UIProcess/Downloads/DownloadProxyMap.h:
  • UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::createDownloadProxy):
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::receivedPolicyDecision):
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::download): (WebKit::WebProcessPool::resumeDownload): (WebKit::WebProcessPool::createDownloadProxy):
  • UIProcess/WebProcessPool.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm: (-[DownloadTestSchemeDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]): (-[DownloadSecurityOriginDelegate _downloadDidStart:]): (loaded):
  • TestWebKitAPI/cocoa/HTTPServer.mm:

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

4:59 PM Changeset in webkit [256403] by Alan Coon
  • 2 edits in branches/safari-609-branch/Tools

Cherry-pick r255826. rdar://problem/59299115

REGRESSION(r255595): page not closed after beforeunload handler returns true
https://bugs.webkit.org/show_bug.cgi?id=207189
<rdar://problem/59149593>

Reviewed by Youenn Fablet.

Add API test coverage for fix landed in r255677.

  • TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm: (-[SlowBeforeUnloadPromptUIDelegate _webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:]): (TEST):

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

4:59 PM Changeset in webkit [256402] by Alan Coon
  • 4 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r255825. rdar://problem/59299127

REGRESSION: [ iOS wk2 ] fast/scrolling/ios/scroll-events-back-forward.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207194
<rdar://problem/59148073>

Reviewed by Wenson Hsieh.

Test was flaky because it relied on a 10ms timer.

  • fast/scrolling/ios/scroll-events-back-forward-expected.txt:
  • fast/scrolling/ios/scroll-events-back-forward.html:
  • platform/ios-wk2/TestExpectations:

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

4:49 PM Changeset in webkit [256401] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

WebPage::getFocusedElementInformation should be robust when the focused element changes during layout
https://bugs.webkit.org/show_bug.cgi?id=207582
<rdar://problem/47634344>

Reviewed by Tim Horton.

This is a speculative fix for <rdar://problem/47634344>, wherein the initial layout update in WebPage::
getFocusedElementInformation may cause the currently focused element to disappear (or change). In the case where
m_focusedElement becomes nil, we end up crashing with a null pointer deref, since the rest of the method assumes
that m_focusedElement exists.

To patch this crash, bail early (after the first layout update) if m_focusedElement changed during the layout
pass. Since the rest of the function my trigger even more layout updates that could nuke m_focusedElement, I
also changed the rest of the function to use the locally stored focusedElement variable instead of
m_focusedElement, on WebPage.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getFocusedElementInformation):

4:49 PM Changeset in webkit [256400] by Ryan Haddad
  • 3 edits in trunk/Source/WebCore

Unreviewed, partial rollout of r255037.
<rdar://problem/59240559>

  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm:

(WebCore::ScrollingTreeFixedNode::applyLayerPositions):

  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm:

(WebCore::ScrollingTreeStickyNode::computeLayerPosition const):

4:47 PM Changeset in webkit [256399] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] Deny access to unused tcp service from NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=207590
<rdar://problem/57895351>

Reviewed by Darin Adler.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
4:47 PM Changeset in webkit [256398] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] webgpu/whlsl/do-while-loop.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207599

Unreviewed test gardening.

Adjusted expectations to reflect image failure.

  • platform/mac-wk2/TestExpectations:
4:39 PM Changeset in webkit [256397] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] webgpu/whlsl/do-while-loop.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207599

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:31 PM Changeset in webkit [256396] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Unreviewed, revert r255662 as it seems to cause blank views in SVC.
https://bugs.webkit.org/show_bug.cgi?id=207144
<rdar://problem/59334011>

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
4:13 PM Changeset in webkit [256395] by ddkilzer@apple.com
  • 4 edits in trunk

Bug 207424: Crash in WebCore::ParsedContentType::parseContentType when parsing invalid MIME type
<https://webkit.org/b/207424>
<rdar://problem/59250384>

Patch by Rob Buis <rbuis@igalia.com> and David Kilzer <ddkilzer@apple.com> on 2020-02-11
Reviewed by Rob Buis.

Source/WebCore:

Return StringView directly rather than wrapping
it in Optional, since StringView's can be null tested.

Tests: TestWebKitAPI.ParsedContentType

  • platform/network/ParsedContentType.cpp:

(WebCore::parseToken):
(WebCore::parseQuotedString):
(WebCore::ParsedContentType::parseContentType): Don't set type
parameter if parameterName is null string. Remove unneeded
parameterName variable; use keyRange.toString() instead.

Tools:

  • TestWebKitAPI/Tests/WebCore/ParsedContentType.cpp:

(TestWebKitAPI::TEST): Add more tests.

4:05 PM Changeset in webkit [256394] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] fast/viewport/ios/width-is-device-width-overflowing-body-overflow-hidden-tall.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207596

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:55 PM Changeset in webkit [256393] by Alan Coon
  • 1 edit in branches/safari-609-branch/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.cpp

Unreviewed build fix. rdar://problem/59298172

3:55 PM Changeset in webkit [256392] by Alan Coon
  • 12 edits
    2 adds
    2 deletes in branches/safari-609-branch

Cherry-pick r255162. rdar://problem/59299120

Support 'allow="fullscreen"' feature policy
https://bugs.webkit.org/show_bug.cgi?id=206806
<rdar://problem/55640448>

Patch by Jer Noble <jer.noble@apple.com> on 2020-01-27
Reviewed by Youenn Fablet.

Source/WebCore:

Test: http/tests/fullscreen/fullscreen-feature-policy.html

The unprefixed version of the Fullscreen API has deprecated the 'allowfullscreen' iframe
attribute in favor of the 'allow="fullscreen"' style attribute used by Feature Policy.
Add support for such, including the specified handling for the legacy 'allowfullscreen'
attribute.

Note: this patch will (intentionally) change the default behavior of <iframe>s. Previously
any <iframe> without the "allowfullscreen" attribute would not be allowed to enter fullscreen
mode. After this patch, <iframes> without the legacy attribute or an explicit fullscreen
Feature Policy will be allowed to enter fullscreen so long as their origin is the same as
the top document (and that all parent iframes are also allowed to enter fullscreen).

  • dom/FullscreenManager.cpp: (WebCore::FullscreenManager::requestFullscreenForElement): (WebCore::FullscreenManager::isFullscreenEnabled const): (WebCore::isAttributeOnAllOwners): Deleted. (WebCore::FullscreenManager::fullscreenIsAllowedForElement const): Deleted.
  • dom/FullscreenManager.h:
  • html/FeaturePolicy.cpp: (WebCore::isFeaturePolicyAllowedByDocumentAndAllOwners): (WebCore::FeaturePolicy::parse): (WebCore::FeaturePolicy::allows const):
  • html/FeaturePolicy.h:
  • html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::parseAttribute): (WebCore::HTMLIFrameElement::featurePolicy const):
  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::createRequest): (WebCore::isSyncXHRAllowedByFeaturePolicy): Deleted.

LayoutTests:

  • fullscreen/full-screen-enabled-prefixed.html:
  • fullscreen/full-screen-enabled.html:
  • fullscreen/full-screen-frameset-expected.txt: Removed.
  • fullscreen/full-screen-frameset.html: Removed.
  • fullscreen/full-screen-iframe-not-allowed.html:
  • fullscreen/full-screen-restrictions.html:
  • http/tests/fullscreen/fullscreen-feature-policy-expected.txt: Added.
  • http/tests/fullscreen/fullscreen-feature-policy.html: Added.

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

3:55 PM Changeset in webkit [256391] by Alan Coon
  • 2 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r255672. rdar://problem/59299127

Regression: (252234?) [ iOS wk2 ] fast/scrolling/ios/scroll-events-back-forward.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207194

Unreviewed test gardening.

Patch by Jason Lawrence <Jason_Lawrence> on 2020-02-04

  • platform/ios-wk2/TestExpectations:

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

3:55 PM Changeset in webkit [256390] by Alan Coon
  • 5 edits
    1 add in branches/safari-609-branch

Cherry-pick r255595. rdar://problem/59298183

Regression(r253224) WKUIDelegate.webViewDidClose may get called twice after calling _tryClose on the WKWebView
https://bugs.webkit.org/show_bug.cgi?id=207121
<rdar://problem/58880177>

Reviewed by Alex Christensen.

Source/WebKit:

WKUIDelegate.webViewDidClose may get called twice after calling _tryClose on the WKWebView, in case we time out
while waiting for an answer from the WebProcess but the WebProcess eventually responds.

Change is covered by new API test.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::tryClose):

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/beforeunload-slow.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm: (-[SlowBeforeUnloadHandlerUIDelegate _webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:]): (-[SlowBeforeUnloadHandlerUIDelegate webViewDidClose:]): (TEST):

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

3:55 PM Changeset in webkit [256389] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255519. rdar://problem/59298166

Unreviewed macOS build fix after r255518

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleGestureEvent):

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

3:55 PM Changeset in webkit [256388] by Alan Coon
  • 8 edits in branches/safari-609-branch

Cherry-pick r255518. rdar://problem/59298166

[ iOS ] imported/w3c/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.serviceworker.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=206934
<rdar://problem/58991581>

Source/WebKit:

Reviewed by Brady Eidson.

Flakiness would happen when the service worker would take too long to launch and the responsiveness timer would fire and
report the process as unresponsive while still launching or very shortly after. When a service worker is reported as
unresponsive, we would kill it.

To address the issue, several changes were made:

  • Responsiveness checks are now disabled for slow builds (Debug, ASAN, GuardMalloc)
  • We only start the ResponsivenessTimer after the process has finished launching since the responsiveness check relies on IPC to the process and we cannot send the IPC until after the process has launched.
  • UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: (WebKit::DrawingAreaProxyCoordinatedGraphics::sendUpdateBackingStoreState):
  • UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::goToBackForwardItem):
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::launchProcessForReload): (WebKit::WebPageProxy::launchProcessWithItem): (WebKit::WebPageProxy::loadRequestWithNavigationShared): (WebKit::WebPageProxy::loadFile): (WebKit::WebPageProxy::loadDataWithNavigationShared): (WebKit::WebPageProxy::loadAlternateHTML): (WebKit::WebPageProxy::loadWebArchiveData): (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick): (WebKit::WebPageProxy::stopLoading): (WebKit::WebPageProxy::reload): (WebKit::WebPageProxy::goToBackForwardItem): (WebKit::WebPageProxy::dispatchActivityStateChange): (WebKit::WebPageProxy::processNextQueuedMouseEvent): (WebKit::WebPageProxy::handleKeyboardEvent): (WebKit::WebPageProxy::handleGestureEvent): (WebKit::WebPageProxy::handlePreventableTouchEvent): (WebKit::WebPageProxy::handleTouchEvent): (WebKit::WebPageProxy::runJavaScriptAlert): (WebKit::WebPageProxy::runJavaScriptConfirm): (WebKit::WebPageProxy::runJavaScriptPrompt): (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel): (WebKit::WebPageProxy::runOpenPanel):
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::mayBecomeUnresponsive): (WebKit::WebProcessProxy::didFinishLaunching): (WebKit::WebProcessProxy::startResponsivenessTimer): (WebKit::WebProcessProxy::isResponsive):
  • UIProcess/WebProcessProxy.h: (WebKit::WebProcessProxy::responsivenessTimer):

LayoutTests:

Unskip test which should no longer be flaky.

  • platform/ios-wk2/TestExpectations:

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

3:55 PM Changeset in webkit [256387] by Alan Coon
  • 2 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r255379. rdar://problem/59298188

2020-01-29 Jacob Uphoff <Jacob Uphoff>

[ macOS wk2 ] http/tests/media/media-stream/get-display-media-prompt.html is flaky failure & flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=206958

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:

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

3:55 PM Changeset in webkit [256386] by Alan Coon
  • 2 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r255360. rdar://problem/59298166

[ iOS ] imported/w3c/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.serviceworker.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=206934

Unreviewed test gardening.

Patch by Jason Lawrence <Jason_Lawrence> on 2020-01-29

  • platform/ios-wk2/TestExpectations:

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

3:55 PM Changeset in webkit [256385] by Alan Coon
  • 54 edits
    4 adds in branches/safari-609-branch

Cherry-pick r255158. rdar://problem/59298137

Throttling requestAnimationFrame should be controlled by RenderingUpdateScheduler
https://bugs.webkit.org/show_bug.cgi?id=204713

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-01-27
Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/animation/request-animation-frame-throttling-outside-viewport.html

requestAnimationFrame is throttled by a timer although its callback are
serviced by the page RenderingUpdate. This led to excessive rAF firing
which makes it more than the preferred frame per seconds.

The solution is to have two throttling types:

1) Page throttling (or full throttling) which slows down all the steps of

RenderingUpdate for the main document and all the sub-documents.

2) Document throttling (or partial throttling) which only slows down the

rAF of a certain document.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::animationInterval const): (WebCore::DocumentTimeline::updateThrottlingState): Deleted.
  • animation/DocumentTimeline.h: There is no need to have DocumentTimeline throttling. It is already throttled when the page RenderingUpdate is throttled.
  • dom/Document.cpp: (WebCore::Document::requestAnimationFrame): (WebCore::Document::updateLastHandledUserGestureTimestamp): LowPowerMode throttling is now handled by the page. So remove its handling in the Document side.
  • dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::ScriptedAnimationController): (WebCore::ScriptedAnimationController::page const): (WebCore::ScriptedAnimationController::preferredScriptedAnimationInterval const): (WebCore::ScriptedAnimationController::interval const): (WebCore::ScriptedAnimationController::isThrottled const): (WebCore::ScriptedAnimationController::isThrottledRelativeToPage const): (WebCore::ScriptedAnimationController::shouldRescheduleRequestAnimationFrame const): (WebCore::ScriptedAnimationController::registerCallback): (WebCore::ScriptedAnimationController::cancelCallback): (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): (WebCore::ScriptedAnimationController::scheduleAnimation): (WebCore::throttlingReasonToString): Deleted. (WebCore::throttlingReasonsToString): Deleted. (WebCore::ScriptedAnimationController::addThrottlingReason): Deleted. (WebCore::ScriptedAnimationController::removeThrottlingReason): Deleted. (WebCore::ScriptedAnimationController::animationTimerFired): Deleted.
  • dom/ScriptedAnimationController.h: (WebCore::ScriptedAnimationController::addThrottlingReason): (WebCore::ScriptedAnimationController::removeThrottlingReason): Get rid of the rAF throttling timer. Service the rAF callback only when the period from the current time stamp till the last service time stamp is greater than the preferred rAF interval .
  • page/FrameView.cpp: (WebCore::FrameView::updateScriptedAnimationsAndTimersThrottlingState): ThrottlingReason is now defined outside ScriptedAnimationController.
  • page/Page.cpp: (WebCore::Page::renderingUpdateThrottlingEnabled const): (WebCore::Page::renderingUpdateThrottlingEnabledChanged): (WebCore::Page::isRenderingUpdateThrottled const):

(WebCore::Page::preferredRenderingUpdateInterval const):
Calculate the preferred RenderingUpdate interval from the throttling
reasons.

(WebCore::Page::setIsVisuallyIdleInternal):
(WebCore::Page::handleLowModePowerChange):
Call adjustRenderingUpdateFrequency() when isLowPowerModeEnabled or
IsVisuallyIdle is toggled.

(WebCore::updateScriptedAnimationsThrottlingReason): Deleted.

  • page/Page.h:
  • page/RenderingUpdateScheduler.cpp: (WebCore::RenderingUpdateScheduler::adjustFramesPerSecond): (WebCore::RenderingUpdateScheduler::adjustRenderingUpdateFrequency): Change the preferredFramesPerSecond of the DisplayRefreshMonitor if the throttling is not aggressive e.g. 10_s. Otherwise use the timer.

(WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate):
Call adjustFramesPerSecond() when DisplayRefreshMonitor is created.

(WebCore::RenderingUpdateScheduler::startTimer):

  • page/RenderingUpdateScheduler.h:
  • page/Settings.yaml:
  • page/SettingsBase.cpp: (WebCore::SettingsBase::renderingUpdateThrottlingEnabledChanged):
  • page/SettingsBase.h: Add a setting to enable/disable RenderingUpdateThrottling.
  • platform/graphics/AnimationFrameRate.h: Added. (WebCore::preferredFrameInterval): (WebCore::preferredFramesPerSecond):
  • platform/graphics/DisplayRefreshMonitor.h: (WebCore::DisplayRefreshMonitor::setPreferredFramesPerSecond):
  • platform/graphics/DisplayRefreshMonitorManager.cpp: (WebCore::DisplayRefreshMonitorManager::monitorForClient): Rename createMonitorForClient() to monitorForClient() since it may return a cached DisplayRefreshMonitor.

(WebCore::DisplayRefreshMonitorManager::setPreferredFramesPerSecond):
(WebCore::DisplayRefreshMonitorManager::scheduleAnimation):
(WebCore::DisplayRefreshMonitorManager::windowScreenDidChange):
No need to call registerClient(). This function was just ensuring the
DisplayRefreshMonitor is created. scheduleAnimation() does the same thing.

(WebCore::DisplayRefreshMonitorManager::createMonitorForClient): Deleted.
(WebCore::DisplayRefreshMonitorManager::registerClient): Deleted.

  • platform/graphics/DisplayRefreshMonitorManager.h: (WebCore::DisplayRefreshMonitorManager::DisplayRefreshMonitorManager): Deleted.
  • platform/graphics/GraphicsLayerUpdater.cpp: (WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater):
  • platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (-[WebDisplayLinkHandler setPreferredFramesPerSecond:]): Set the preferredFramesPerSecond of the CADisplayLink.

Source/WebKit:

Create an IPC message on the DrawingArea to send a message from the
WebProcess to the UIProcess to setPreferredFramesPerSecond of the
DisplayRefreshMonitor.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetRenderingUpdateThrottlingEnabled): (WKPreferencesGetRenderingUpdateThrottlingEnabled):
  • UIProcess/API/C/WKPreferencesRefPrivate.h: Add a WKPreference key for RenderingUpdateThrottlingEnabled.
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (-[WKOneShotDisplayLinkHandler setPreferredFramesPerSecond:]): (WebKit::RemoteLayerTreeDrawingAreaProxy::setPreferredFramesPerSecond): Set the preferredFramesPerSecond of the CADisplayLink.
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm: (WebKit::RemoteLayerTreeDisplayRefreshMonitor::setPreferredFramesPerSecond): Delegate the call to RemoteLayerTreeDrawingArea.
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::setPreferredFramesPerSecond): Send the IPC message from the WebProcess to the UIProcess.

Source/WebKitLegacy/mac:

Add a WKPreference key for RenderingUpdateThrottling.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm: (+[WebPreferences initialize]): (-[WebPreferences renderingUpdateThrottlingEnabled]): (-[WebPreferences setRenderingUpdateThrottlingEnabled:]):
  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm: (-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

Add a WKPreference key for RenderingUpdateThrottling.

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp: (WebPreferences::initializeDefaultSettings): (WebPreferences::renderingUpdateThrottlingEnabled): (WebPreferences::setRenderingUpdateThrottlingEnabled):
  • WebPreferences.h:
  • WebView.cpp: (WebView::notifyPreferencesChanged):

Tools:

RenderingUpdateThrottling is enabled by default. Turn it off for DRT and
WTR. In some cases, the page may not get visually active while it's
waiting for rAF. Throttling tests will have to explicitly turn it on.

  • DumpRenderTree/mac/DumpRenderTree.mm: (resetWebPreferencesToConsistentValues):
  • DumpRenderTree/win/DumpRenderTree.cpp: (resetWebPreferencesToConsistentValues):
  • WebKitTestRunner/TestController.cpp: (WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

  • fast/animation/css-animation-throttling-lowPowerMode.html:
  • fast/animation/request-animation-frame-throttle-subframe.html:
  • fast/animation/request-animation-frame-throttling-detached-iframe.html: Enable RenderingUpdateThrottling for these tests.
  • fast/animation/request-animation-frame-throttling-lowPowerMode-expected.txt:
  • fast/animation/request-animation-frame-throttling-lowPowerMode.html: Ensure the actual rAF interval is > 30ms for lowPowerMode.
  • fast/animation/request-animation-frame-throttling-outside-viewport-expected.txt: Added.
  • fast/animation/request-animation-frame-throttling-outside-viewport.html: Added.
  • fast/animation/resources/frame-with-animation-2.html: Added. Test the OutsideViewport throttling case.
  • http/tests/frame-throttling/raf-throttle-in-cross-origin-subframe.html: Enable RenderingUpdateThrottling for this test.

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

3:51 PM Changeset in webkit [256384] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC] Do not create generic Layout::Box leaf boxes
https://bugs.webkit.org/show_bug.cgi?id=207570
<rdar://problem/59356417>

Reviewed by Antti Koivisto.

A Layout::Box is either a container box or a very specific leaf type (text, replaced etc).

  • layout/layouttree/LayoutBox.cpp:
  • layout/layouttree/LayoutBox.h:
3:49 PM Changeset in webkit [256383] by commit-queue@webkit.org
  • 4 edits in trunk

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

It is breaking an API test (Requested by youenn on #webkit).

Reverted changeset:

"WebSWServerConnection::registerServiceWorkerClient is not
sending IPC message to UIProcess when it should"
https://bugs.webkit.org/show_bug.cgi?id=207537
https://trac.webkit.org/changeset/256314

3:42 PM Changeset in webkit [256382] by Jonathan Bedard
  • 2 edits in trunk/Tools

results.webkit.org: Configuration documentation should include architecture
https://bugs.webkit.org/show_bug.cgi?id=207584

Reviewed by Aakash Jain.

  • resultsdbpy/resultsdbpy/view/templates/documentation.html: Add architecture documentation.
3:32 PM Changeset in webkit [256381] by youenn@apple.com
  • 7 edits in trunk

Parent service worker controller should be used for child iframe as per https://w3c.github.io/ServiceWorker/#control-and-use-window-client
https://bugs.webkit.org/show_bug.cgi?id=207506

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/local-url-inherit-controller.https-expected.txt:

Source/WebCore:

Instead of checking document URL protocol, implement the rules as per spec, in particular:

  • If http/https, do not reuse controller
  • If iframe has a unique origin, do not reuse controller
  • If iframe does not have same origin as parent, do not reuse controller.

Covered by rebased test.

  • loader/DocumentLoader.cpp:

(WebCore::isInheritingControllerFromParent):
(WebCore::DocumentLoader::commitData):
(WebCore::isLocalURL): Deleted.

LayoutTests:

  • http/tests/workers/service/serviceworkerclients-claim.https-expected.txt:

Rebased test since now the frame is doing a fetch that is no longer intercepted by the service worker,
and is thus failing due to CORS.

  • http/tests/workers/service/serviceworkerclients-claim.https.html:
3:13 PM Changeset in webkit [256380] by Alan Bujtas
  • 18 edits
    2 moves in trunk/Source/WebCore

[LFC] Introduce Layout::ReplacedBox
https://bugs.webkit.org/show_bug.cgi?id=207561
<rdar://problem/59353151>

Reviewed by Antti Koivisto.

This is in preparation for making Layout::Box an "abstract" box (so that it stops being a leaf type of box).

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

(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedMarginBefore):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::append):
(WebCore::Layout::LineBuilder::appendReplacedInlineBox):
(WebCore::Layout::LineBuilder::runContentHeight const):
(WebCore::Layout::LineBuilder::isVisuallyNonEmpty const):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::inlineItemWidth const):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::Box):
(WebCore::Layout::Box::isInlineBox const):
(WebCore::Layout::Box::replaced const): Deleted.
(WebCore::Layout::Box::replaced): Deleted.

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::isTableCell const):
(WebCore::Layout::Box::isReplacedBox const):
(WebCore::Layout::Box::isReplaced const): Deleted.

  • layout/layouttree/LayoutReplacedBox.cpp: Renamed from Source/WebCore/layout/layouttree/LayoutReplaced.cpp.

(WebCore::Layout::ReplacedBox::ReplacedBox):
(WebCore::Layout::ReplacedBox::hasIntrinsicWidth const):
(WebCore::Layout::ReplacedBox::hasIntrinsicHeight const):
(WebCore::Layout::ReplacedBox::hasIntrinsicRatio const):
(WebCore::Layout::ReplacedBox::intrinsicWidth const):
(WebCore::Layout::ReplacedBox::intrinsicHeight const):
(WebCore::Layout::ReplacedBox::intrinsicRatio const):
(WebCore::Layout::ReplacedBox::hasAspectRatio const):

  • layout/layouttree/LayoutReplacedBox.h: Renamed from Source/WebCore/layout/layouttree/LayoutReplaced.h.

(WebCore::Layout::ReplacedBox::setCachedImage):
(WebCore::Layout::ReplacedBox::cachedImage const):
(WebCore::Layout::ReplacedBox::setIntrinsicSize):
(WebCore::Layout::ReplacedBox::setIntrinsicRatio):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::outputLayoutBox):

2:59 PM Changeset in webkit [256379] by Jason_Lawrence
  • 3 edits in trunk/LayoutTests

[ iOS wk2 ] http/wpt/service-workers/service-worker-spinning-fetch.https.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207515

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
2:57 PM Changeset in webkit [256378] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

Should not allow zooming to reveal focused element when suppressing selection assistant
https://bugs.webkit.org/show_bug.cgi?id=207575

Reviewed by Wenson Hsieh.

Do not tell the UIScrollView to scroll and zoom to reveal the focused element when the
selection assistant is being suppressed as it does not make sense to do so: the primary
motivation for zooming to reveal the focused (aka the editable) element is make it easier
to edit it.

This fixes a bug where previewing a partially offscreen link inside an editable element
would cause the page content to scroll and zoom to reveal the editable element. Previewing
a link is not considered an editing operation and selection assistance is prevented, but
"zoom to reveal" was inadvertently allowed. Now it is not.

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

(-[WKContentView _zoomToRevealFocusedElement]): Bail out if selection is being suppressed
for any reason. Note that pre-r245882 there was reason SuppressSelectionAssistantReason::DropAnimationIsRunning
that was used to suppress selection assistance AND allow "zoom to reveal". But this
reason was removed and there are no suppression reasons as of the time of writing where
it makes sense to have behavior like SuppressSelectionAssistantReason::DropAnimationIsRunning.

2:53 PM Changeset in webkit [256377] by youenn@apple.com
  • 5 edits in trunk

Regression: RTCRtpSender.getCapabilities("video") returns null on iOS 13.4 (17E5223h)
https://bugs.webkit.org/show_bug.cgi?id=207325
<rdar://problem/59224810>

Reviewed by Eric Carlson.

Source/WebCore:

Manually tested and covered by API test.

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProvider::webRTCAvailable):
Return true unconditionally on iOS since libwebrtc.dylib is always available.

Tools:

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:

(TestWebKitAPI::TEST):
Add a test validating that RTCRtpSender.getCapabilities does not return null.

  • TestWebKitAPI/Tests/WebKit/getUserMedia.html:
2:50 PM Changeset in webkit [256376] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Deprecate _WKUserContentWorld replaced by WKContentWorld
https://bugs.webkit.org/show_bug.cgi?id=207514

Add the rest of the SPI to convert between the two.

  • UIProcess/API/Cocoa/_WKUserContentWorld.h:
  • UIProcess/API/Cocoa/_WKUserContentWorld.mm:

(-[_WKUserContentWorld contentWorld]):

2:43 PM Changeset in webkit [256375] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.serviceworker.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=206934

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
2:38 PM Changeset in webkit [256374] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector RTL: Elements closing tag is reversed
https://bugs.webkit.org/show_bug.cgi?id=207214

Reviewed by Timothy Hatcher.

Wrap text nodes in unicode-bidi: isolate-override. From MDN:

isolate-override:

This keyword applies the isolation behavior of the isolate
keyword to the surrounding content and the override behavior
of the bidi-override keyword to the inner content.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom li > span > .html-text-node):

2:36 PM Changeset in webkit [256373] by Ryan Haddad
  • 3 edits in trunk/Source/WebKit

Unreviewed, rolling out r256345.

Broke iOS builds.

Reverted changeset:

"Deprecate _WKUserContentWorld replaced by WKContentWorld"
https://bugs.webkit.org/show_bug.cgi?id=207514
https://trac.webkit.org/changeset/256345

2:36 PM Changeset in webkit [256372] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Cleanup WebCore.xcodeproj/project.pbxproj
https://bugs.webkit.org/show_bug.cgi?id=207573

Reviewed by Darin Adler.

No new tests -- no new or changed functionality.

  • WebCore.xcodeproj/project.pbxproj:
2:22 PM Changeset in webkit [256371] by pvollan@apple.com
  • 5 edits in trunk

[iOS] Deny mach lookup access to the tccd service in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=207488

Reviewed by Darin Adler.

Source/WebKit:

As part of sandbox hardening, deny mach lookup access to the tccd service.

Test: fast/sandbox/ios/sandbox-mach-lookup.html

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

LayoutTests:

  • fast/sandbox/ios/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/ios/sandbox-mach-lookup.html:
2:13 PM Changeset in webkit [256370] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] http/wpt/beacon/cors/crossorigin-arraybufferview-no-preflight.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207583

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:03 PM Changeset in webkit [256369] by Alan Coon
  • 3 edits
    3 adds in branches/safari-609.1.17.1-branch

Cherry-pick r256214. rdar://problem/59349205

WebContent jetsams on Sony lens webpage due to spike of IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=207493
rdar://problem/59020443

Reviewed by Zalan Bujtas.
Source/WebCore:

There were three issues that contributed to massive backing store allocation on
<https://www.sony.com/electronics/lenses/t/camera-lenses>.

The first, fixed in r256095, was that the Web Animations code unioned the untransitioning
bounds with the transitioning bounds, causing the computation of large extent rects.

The second, fixed in r256181, was that GraphicsLayerCA would keep hold of a transform
animation for an extra frame, causing a rendering update where
RenderLayerBacking::updateGeometry() would have cleared the extent, but GraphicsLayerCA
still thought transform was animating, causing GraphicsLayerCA::updateCoverage() to keep
backing store attached.

This patch is the final fix; when animations start and end, we need to ensure that
RenderLayerBacking::updateGeometry() is called so that we compute the animation extent in
the same frame that adds the animation.

Test: compositing/backing/transition-extent.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::animationFinished):

LayoutTests:

Test with an out-of-view transitioning element which should not get backing store.

  • compositing/backing/transition-extent-expected.txt: Added.
  • compositing/backing/transition-extent.html: Added.
  • platform/ios-wk2/compositing/backing/transition-extent-expected.txt: Added.

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

2:03 PM Changeset in webkit [256368] by Alan Coon
  • 7 edits in branches/safari-609.1.17.1-branch

Cherry-pick r256181. rdar://problem/59349184

There's an event loop cycle between an animation finishing, and it being removed from GraphicsLayerCA
https://bugs.webkit.org/show_bug.cgi?id=207361
<rdar://problem/59280370>

Reviewed by Simon Fraser.

Source/WebCore:

Animations should be removed from GraphicsLayersCAs in the same rendering update that changes the playState of the
animation to "finished", to avoid layer flush where a GraphicsLayersCAs has no extent set, but thinks there is
an active transform animation.

To do this, instead of enqueuing accelerated actions when resolving animations during style resolution, in
KeyframeAnimation::apply(), we enqueue them as soon as an animation's current time may have changed: in
WebAnimation::tick() and WebAnimation::play() with supporting functions newly exposed on AnimationEffect.

Now, accelerated animations are enqueued and applied during the "update animations and send events" procedure.

  • animation/AnimationEffect.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::apply): (WebCore::KeyframeEffect::updateAcceleratedActions): (WebCore::KeyframeEffect::animationDidTick): (WebCore::KeyframeEffect::animationDidPlay):
  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::play): (WebCore::WebAnimation::tick):

LayoutTests:

Lower the number of frames to wait after an animation completes by one to check that the accelerated animation has been removed
to show that we enqueue accelerated actions as part of the "update animations and send events" procedure.

  • webanimations/accelerated-animation-removal-upon-transition-completion.html: Added.

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

2:03 PM Changeset in webkit [256367] by Alan Coon
  • 8 edits
    8 adds in branches/safari-609.1.17.1-branch

Cherry-pick r256095. rdar://problem/59349202

Extent of a composited animation should not include the untransformed position
https://bugs.webkit.org/show_bug.cgi?id=207434

Reviewed by Sam Weinig.
Source/WebCore:

To determine whether to create ("attach") backing store for layers with transform animations,
we compute the union of all the states of the animation as an "extent", and ask whether it intersects
the coverage rect in GraphicsLayerCA.

The non-Web Animations transition code did this correctly, just unioning the bounds transformed by
the start and end state.

The non-Web Animations keyframe code, and the Web Animations KeyframeEffect code (used for both CSS transitions
and animations) also unioned with the unanimated bounds, which could create overly large extents in some
cases, contributing to jetsams on iOS (rdar://problem/59020443).

Fix KeyframeAnimation and KeyframeEffect to not union with the untransformed bounds.

Tests: compositing/backing/backing-store-attachment-animating-outside-viewport.html

legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):
  • page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

LayoutTests:

New test that checks backing store attachment and overlap for an element which is positioned in-view,
but is move offscreen by the animation.

New baselines for overlap tests, since overlap no longer considers the unanimated position.

  • compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • platform/ios-wk2/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • platform/ios-wk2/legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.

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

2:03 PM Changeset in webkit [256366] by Alan Coon
  • 3 edits
    2 adds in branches/safari-609.1.17.1-branch

Cherry-pick r255810. rdar://problem/59349189

[Web Animations] Canceling an accelerated animation before it was committed does not prevent it from playing
https://bugs.webkit.org/show_bug.cgi?id=207253
<rdar://problem/59143624>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: webanimations/accelerated-animation-canceled-before-commit.html

Merely checking whether an accelerated animation is running prior to enqueuing an action to cancel it is not sufficient
since there could be an uncommitted change to start it upon the next animation frame. The same logic would need to apply
in other situations where the playback state changes for a potentially in-flight animation.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::animationDidSeek): (WebCore::KeyframeEffect::animationWasCanceled): (WebCore::KeyframeEffect::willChangeRenderer): (WebCore::KeyframeEffect::animationSuspensionStateDidChange):

LayoutTests:

Add a new test that checks that an accelerated animation that has been enqueued to start but has
not yet been committed is correctly canceled when the cancel() method is called. This test fails
prior to this source change.

  • webanimations/accelerated-animation-canceled-before-commit-expected.html: Added.
  • webanimations/accelerated-animation-canceled-before-commit.html: Added.

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

2:03 PM Changeset in webkit [256365] by Alan Coon
  • 9 edits
    2 adds in branches/safari-609.1.17.1-branch

Cherry-pick r255663. rdar://problem/59349185

Accelerated animations freeze on render tree rebuild
https://bugs.webkit.org/show_bug.cgi?id=201048
<rdar://problem/54612621>

Reviewed by Antoine Quint.

Source/WebCore:

If there is an accelerated animation in progress for a renderer and the render tree is rebuild the animation
does not continue with the new renderer.

To fix, make sure that the animation leaves the accelerated state when the renderer is removed. The new renderer
will then become accelerated automatically.

Original test case by Tim Guan-tin Chien.

Test: webanimations/accelerated-animation-renderer-change.html

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::willChangeRendererForElement):
  • animation/AnimationTimeline.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::willChangeRenderer):
  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::willChangeRenderer):
  • animation/WebAnimation.h:
  • rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

  • webanimations/accelerated-animation-renderer-change-expected.html: Added.
  • webanimations/accelerated-animation-renderer-change.html: Added.

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

2:03 PM Changeset in webkit [256364] by Alan Coon
  • 6 edits
    4 adds in branches/safari-609.1.17.1-branch

Cherry-pick r255593. rdar://problem/59349198

[Web Animations] Accelerated animations don't run until their natural completion
https://bugs.webkit.org/show_bug.cgi?id=207130
<rdar://problem/59106047>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: webanimations/transform-accelerated-animation-finishes-before-removal.html

webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise.html

Ensure we don't tear down a composited renderer until all of its runnning accelerated animations are completed.
The accelerated animations will be queued for removal in the next animation frame.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::isRunningAcceleratedAnimationForProperty const):
  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::isCurrentlyAffectingProperty const):

LayoutTests:

Add two new tests that ensures that an accelerated animation still yields compositing on an element when
its finished promise is resolved, but that it's no longer the case on the next frame.

This required an existing test to be updated to wait until the next frame before checking the composited
status of an element on which an animation had just completed.

  • compositing/geometry/limit-layer-bounds-opacity-transition.html:
  • webanimations/transform-accelerated-animation-finishes-before-removal-expected.txt: Added.
  • webanimations/transform-accelerated-animation-finishes-before-removal.html: Added.
  • webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise-expected.txt: Added.
  • webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise.html: Added.

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

2:03 PM Changeset in webkit [256363] by Alan Coon
  • 4 edits in branches/safari-609.1.17.1-branch

Cherry-pick r255552. rdar://problem/59349213

ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) on animations/keyframe-autoclose-brace.html
https://bugs.webkit.org/show_bug.cgi?id=207071
<rdar://problem/59076249>

Patch by Antoine Quint <Antoine Quint> on 2020-02-02
Reviewed by Dean Jackson.

Source/WebCore:

We cannot add CSSPropertyInvalid to a HashSet<CSSPropertyID>, because it triggers an ASSERT, and also we shouldn't
because we wouldn't know how to animate that CSS property.

  • animation/AnimationTimeline.cpp: (WebCore::compileTransitionPropertiesInStyle):

LayoutTests:

The crash is fixed, we can start running the test as expected again.

  • platform/ipad/TestExpectations:

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

2:02 PM Changeset in webkit [256362] by Alan Coon
  • 2 edits in branches/safari-609.1.17.1-branch/LayoutTests

Cherry-pick r255525. rdar://problem/59349213

[ iOS Debug wk2 ] animations/keyframe-autoclose-brace.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207071

Unreviewed test gardening.

Patch by Jason Lawrence <Jason_Lawrence> on 2020-01-31

  • platform/ipad/TestExpectations:

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

1:55 PM Changeset in webkit [256361] by Alan Coon
  • 8 edits in branches/safari-609.1.17.1-branch/Source

Versioning.

1:53 PM Changeset in webkit [256360] by Megan Gardner
  • 6 edits
    2 adds in trunk

Draw underlines when specified in highlights
https://bugs.webkit.org/show_bug.cgi?id=207319

Reviewed by Simon Fraser.

Source/WebCore:

Test: http/wpt/css/css-highlight-api/highlight-text-decorations.html

When determining if we have any text decorations, currently we were only looking at the lineStyle,
but since highlights can have text decorations, they need to be considered in these calculations.

  • dom/Document.cpp:

(WebCore::Document::updateHighlightPositions):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::collectMarkedTextsForHighlights const):
(WebCore::InlineTextBox::paintMarkedTextDecoration):

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::textDecorationsInEffectForStyle):

  • rendering/TextDecorationPainter.h:

LayoutTests:

  • http/wpt/css/css-highlight-api/highlight-text-decorations-expected.html: Copied from LayoutTests/http/wpt/css/css-highlight-api/highlight-text-expected.html.
  • http/wpt/css/css-highlight-api/highlight-text-decorations.html: Added.
  • http/wpt/css/css-highlight-api/highlight-text-expected.html:
1:39 PM Changeset in webkit [256359] by Alan Coon
  • 1 copy in tags/Safari-610.1.1.4.3

Tag Safari-610.1.1.4.3.

1:38 PM Changeset in webkit [256358] by Russell Epstein
  • 2 edits in branches/safari-609.1.17.0-branch/Source/WebCore

Cherry-pick r256230. rdar://problem/59335800

Adjust the minor version number for the desktop user agent string.
https://bugs.webkit.org/show_bug.cgi?id=207498
<rdar://problem/59274765>

Patch by Keith Rollin <Keith Rollin> on 2020-02-10
Reviewed by Wenson Hsieh.

This helps with Netflix compatibility on the iPad.

No new tests -- no new or changed functionality.

  • platform/ios/UserAgentIOS.mm: (WebCore::standardUserAgentWithApplicationName):

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

1:38 PM Changeset in webkit [256357] by Russell Epstein
  • 3 edits
    3 adds in branches/safari-609.1.17.0-branch

Cherry-pick r256214. rdar://problem/59349590

WebContent jetsams on Sony lens webpage due to spike of IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=207493
rdar://problem/59020443

Reviewed by Zalan Bujtas.
Source/WebCore:

There were three issues that contributed to massive backing store allocation on
<https://www.sony.com/electronics/lenses/t/camera-lenses>.

The first, fixed in r256095, was that the Web Animations code unioned the untransitioning
bounds with the transitioning bounds, causing the computation of large extent rects.

The second, fixed in r256181, was that GraphicsLayerCA would keep hold of a transform
animation for an extra frame, causing a rendering update where
RenderLayerBacking::updateGeometry() would have cleared the extent, but GraphicsLayerCA
still thought transform was animating, causing GraphicsLayerCA::updateCoverage() to keep
backing store attached.

This patch is the final fix; when animations start and end, we need to ensure that
RenderLayerBacking::updateGeometry() is called so that we compute the animation extent in
the same frame that adds the animation.

Test: compositing/backing/transition-extent.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::animationFinished):

LayoutTests:

Test with an out-of-view transitioning element which should not get backing store.

  • compositing/backing/transition-extent-expected.txt: Added.
  • compositing/backing/transition-extent.html: Added.
  • platform/ios-wk2/compositing/backing/transition-extent-expected.txt: Added.

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

1:38 PM Changeset in webkit [256356] by Russell Epstein
  • 7 edits in branches/safari-609.1.17.0-branch

Cherry-pick r256181. rdar://problem/59335793

There's an event loop cycle between an animation finishing, and it being removed from GraphicsLayerCA
https://bugs.webkit.org/show_bug.cgi?id=207361
<rdar://problem/59280370>

Reviewed by Simon Fraser.

Source/WebCore:

Animations should be removed from GraphicsLayersCAs in the same rendering update that changes the playState of the
animation to "finished", to avoid layer flush where a GraphicsLayersCAs has no extent set, but thinks there is
an active transform animation.

To do this, instead of enqueuing accelerated actions when resolving animations during style resolution, in
KeyframeAnimation::apply(), we enqueue them as soon as an animation's current time may have changed: in
WebAnimation::tick() and WebAnimation::play() with supporting functions newly exposed on AnimationEffect.

Now, accelerated animations are enqueued and applied during the "update animations and send events" procedure.

  • animation/AnimationEffect.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::apply): (WebCore::KeyframeEffect::updateAcceleratedActions): (WebCore::KeyframeEffect::animationDidTick): (WebCore::KeyframeEffect::animationDidPlay):
  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::play): (WebCore::WebAnimation::tick):

LayoutTests:

Lower the number of frames to wait after an animation completes by one to check that the accelerated animation has been removed
to show that we enqueue accelerated actions as part of the "update animations and send events" procedure.

  • webanimations/accelerated-animation-removal-upon-transition-completion.html: Added.

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

1:38 PM Changeset in webkit [256355] by Russell Epstein
  • 8 edits
    6 adds in branches/safari-609.1.17.0-branch

Cherry-pick r256095. rdar://problem/59335804

Extent of a composited animation should not include the untransformed position
https://bugs.webkit.org/show_bug.cgi?id=207434

Reviewed by Sam Weinig.
Source/WebCore:

To determine whether to create ("attach") backing store for layers with transform animations,
we compute the union of all the states of the animation as an "extent", and ask whether it intersects
the coverage rect in GraphicsLayerCA.

The non-Web Animations transition code did this correctly, just unioning the bounds transformed by
the start and end state.

The non-Web Animations keyframe code, and the Web Animations KeyframeEffect code (used for both CSS transitions
and animations) also unioned with the unanimated bounds, which could create overly large extents in some
cases, contributing to jetsams on iOS (rdar://problem/59020443).

Fix KeyframeAnimation and KeyframeEffect to not union with the untransformed bounds.

Tests: compositing/backing/backing-store-attachment-animating-outside-viewport.html

legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):
  • page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

LayoutTests:

New test that checks backing store attachment and overlap for an element which is positioned in-view,
but is move offscreen by the animation.

New baselines for overlap tests, since overlap no longer considers the unanimated position.

  • compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • platform/ios-wk2/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • platform/ios-wk2/legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.

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

1:38 PM Changeset in webkit [256354] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-609.1.17.0-branch

Cherry-pick r255810. rdar://problem/59335797

[Web Animations] Canceling an accelerated animation before it was committed does not prevent it from playing
https://bugs.webkit.org/show_bug.cgi?id=207253
<rdar://problem/59143624>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: webanimations/accelerated-animation-canceled-before-commit.html

Merely checking whether an accelerated animation is running prior to enqueuing an action to cancel it is not sufficient
since there could be an uncommitted change to start it upon the next animation frame. The same logic would need to apply
in other situations where the playback state changes for a potentially in-flight animation.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::animationDidSeek): (WebCore::KeyframeEffect::animationWasCanceled): (WebCore::KeyframeEffect::willChangeRenderer): (WebCore::KeyframeEffect::animationSuspensionStateDidChange):

LayoutTests:

Add a new test that checks that an accelerated animation that has been enqueued to start but has
not yet been committed is correctly canceled when the cancel() method is called. This test fails
prior to this source change.

  • webanimations/accelerated-animation-canceled-before-commit-expected.html: Added.
  • webanimations/accelerated-animation-canceled-before-commit.html: Added.

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

1:37 PM Changeset in webkit [256353] by eric.carlson@apple.com
  • 60 edits
    1 copy
    5 adds in trunk

Support in-band VTT captions when loading media in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=207467
<rdar://problem/59312749>

Reviewed by Jer Noble.

Source/WebCore:

No new tests, existing tests enabled in GPU process.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment):

  • Modules/webaudio/AudioContext.h:

(WebCore::AudioContext::nextAudioNodeLogIdentifier):
(WebCore::AudioContext::nextAudioParameterLogIdentifier):

  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack):
(WebCore::HTMLMediaElement::mediaPlayerDidAddTextTrack):
(WebCore::HTMLMediaElement::mediaPlayerDidAddVideoTrack):

  • html/track/AudioTrack.cpp:

(WebCore::AudioTrack::AudioTrack):
(WebCore::AudioTrack::willRemove):
(WebCore::AudioTrack::setMediaElement):
(WebCore::AudioTrack::setLogger):

  • html/track/AudioTrack.h:
  • html/track/InbandGenericTextTrack.cpp:

(WebCore::InbandGenericTextTrack::parseWebVTTCueData):

  • html/track/InbandGenericTextTrack.h:
  • html/track/InbandTextTrack.cpp:

(WebCore::InbandTextTrack::create):
(WebCore::InbandTextTrack::InbandTextTrack):
(WebCore::toPrivate):
(WebCore::InbandTextTrack::updateKindFromPrivate):
(WebCore::InbandTextTrack::setLogger):

  • html/track/InbandTextTrack.h:
  • html/track/InbandWebVTTTextTrack.cpp:

(WebCore::InbandWebVTTTextTrack::parseWebVTTCueData):

  • html/track/InbandWebVTTTextTrack.h:
  • html/track/TextTrack.cpp:

(WebCore::TextTrack::setKind):
(WebCore::TextTrack::setMode):
(WebCore::TextTrack::removeAllCues):
(WebCore::TextTrack::addCue):

  • html/track/TextTrack.h:

(WTF::LogArgument<WebCore::TextTrack::Kind>::toString):
(WTF::LogArgument<WebCore::TextTrack::Mode>::toString):

  • html/track/TrackBase.cpp:

(WebCore::TrackBase::TrackBase):
(WebCore::TrackBase::setMediaElement):
(WebCore::TrackBase::setLogger):
(WebCore::nextLogIdentifier): Deleted.

  • html/track/TrackBase.h:
  • html/track/VideoTrack.cpp:

(WebCore::VideoTrack::VideoTrack):
(WebCore::VideoTrack::setMediaElement):
(WebCore::VideoTrack::setLogger):

  • html/track/VideoTrack.h:
  • platform/graphics/InbandTextTrackPrivate.h:

(WebCore::InbandTextTrackPrivate::kind const):
(WebCore::InbandTextTrackPrivate::cueFormat const):
(WebCore::InbandTextTrackPrivate::InbandTextTrackPrivate):

  • platform/graphics/InbandTextTrackPrivateClient.h:
  • platform/graphics/MediaPlayerEnums.h:
  • platform/graphics/TrackPrivateBase.cpp:

(WebCore::TrackPrivateBase::setLogger):

  • platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp:

(WebCore::InbandMetadataTextTrackPrivateAVF::addDataCue):

  • platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:

(WebCore::InbandTextTrackPrivateAVF::processNativeSamples):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::configureInbandTracks):

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

(WebCore::InbandTextTrackPrivateAVFObjC::kind const):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::synchronizeTextTrackState):
(WebCore::MediaPlayerPrivateAVFoundationObjC::processMediaSelectionOptions):
(WebCore::MediaPlayerPrivateAVFoundationObjC::processMetadataTrack):

  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/OutOfBandTextTrackPrivateAVF.h:

(WebCore::OutOfBandTextTrackPrivateAVF::OutOfBandTextTrackPrivateAVF):

  • platform/graphics/iso/ISOVTTCue.cpp:

(WebCore::ISOWebVTTCue::ISOWebVTTCue):

  • platform/graphics/iso/ISOVTTCue.h:
  • platform/mock/mediasource/MockTracks.h:

(WebCore::MockTextTrackPrivate::MockTextTrackPrivate):

Source/WebKit:

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/media/RemoteAudioTrackProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerDidAddAudioTrack):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerDidAddVideoTrack):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerDidAddTextTrack):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerDidRemoveTextTrack):
(WebKit::RemoteMediaPlayerProxy::textTrackRepresentationBoundsChanged):
(WebKit::RemoteMediaPlayerProxy::textTrackSetMode):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/RemoteTextTrackProxy.cpp: Added.

(WebKit::RemoteTextTrackProxy::RemoteTextTrackProxy):
(WebKit::RemoteTextTrackProxy::configuration):
(WebKit::RemoteTextTrackProxy::configurationChanged):
(WebKit::RemoteTextTrackProxy::willRemove):
(WebKit::RemoteTextTrackProxy::idChanged):
(WebKit::RemoteTextTrackProxy::labelChanged):
(WebKit::RemoteTextTrackProxy::languageChanged):
(WebKit::RemoteTextTrackProxy::addDataCue):
(WebKit::RemoteTextTrackProxy::updateDataCue):
(WebKit::RemoteTextTrackProxy::removeDataCue):
(WebKit::RemoteTextTrackProxy::addGenericCue):
(WebKit::RemoteTextTrackProxy::updateGenericCue):
(WebKit::RemoteTextTrackProxy::removeGenericCue):
(WebKit::RemoteTextTrackProxy::parseWebVTTFileHeader):
(WebKit::RemoteTextTrackProxy::parseWebVTTCueData):

  • GPUProcess/media/RemoteTextTrackProxy.h: Copied from Source/WebKit/GPUProcess/media/RemoteVideoTrackProxy.h.
  • GPUProcess/media/RemoteVideoTrackProxy.h:
  • GPUProcess/media/TextTrackPrivateRemoteConfiguration.h: Added.

(WebKit::TextTrackPrivateRemoteConfiguration::encode const):
(WebKit::TextTrackPrivateRemoteConfiguration::decode):

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp:

(WebKit::RemoteSampleBufferDisplayLayerManager::createLayer):

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h:
  • Scripts/webkit/messages.py:
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::removeRemoteAudioTrack):
(WebKit::MediaPlayerPrivateRemote::remoteAudioTrackConfigurationChanged):
(WebKit::MediaPlayerPrivateRemote::addRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::remoteTextTrackConfigurationChanged):
(WebKit::MediaPlayerPrivateRemote::parseWebVTTFileHeader):
(WebKit::MediaPlayerPrivateRemote::parseWebVTTCueData):
(WebKit::MediaPlayerPrivateRemote::parseWebVTTCueDataStruct):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
  • WebProcess/GPU/media/TextTrackPrivateRemote.cpp: Added.

(WebKit::TextTrackPrivateRemote::TextTrackPrivateRemote):
(WebKit::TextTrackPrivateRemote::setMode):
(WebKit::TextTrackPrivateRemote::updateConfiguration):
(WebKit::TextTrackPrivateRemote::addDataCue):
(WebKit::TextTrackPrivateRemote::updateDataCue):
(WebKit::TextTrackPrivateRemote::removeDataCue):
(WebKit::TextTrackPrivateRemote::addGenericCue):
(WebKit::TextTrackPrivateRemote::updateGenericCue):
(WebKit::TextTrackPrivateRemote::removeGenericCue):
(WebKit::TextTrackPrivateRemote::parseWebVTTFileHeader):
(WebKit::TextTrackPrivateRemote::parseWebVTTCueData):
(WebKit::TextTrackPrivateRemote::parseWebVTTCueDataStruct):

  • WebProcess/GPU/media/TextTrackPrivateRemote.h: Added.
  • WebProcess/GPU/media/TextTrackPrivateRemote.messages.in: Added.

Source/WTF:

  • wtf/LoggerHelper.h:

(WTF::LoggerHelper::childLogIdentifier const):

LayoutTests:

  • gpu-process/TestExpectations:
1:37 PM Changeset in webkit [256352] by Russell Epstein
  • 9 edits
    2 adds in branches/safari-609.1.17.0-branch

Cherry-pick r255663. rdar://problem/59335773

Accelerated animations freeze on render tree rebuild
https://bugs.webkit.org/show_bug.cgi?id=201048
<rdar://problem/54612621>

Reviewed by Antoine Quint.

Source/WebCore:

If there is an accelerated animation in progress for a renderer and the render tree is rebuild the animation
does not continue with the new renderer.

To fix, make sure that the animation leaves the accelerated state when the renderer is removed. The new renderer
will then become accelerated automatically.

Original test case by Tim Guan-tin Chien.

Test: webanimations/accelerated-animation-renderer-change.html

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::willChangeRendererForElement):
  • animation/AnimationTimeline.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::willChangeRenderer):
  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::willChangeRenderer):
  • animation/WebAnimation.h:
  • rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

  • webanimations/accelerated-animation-renderer-change-expected.html: Added.
  • webanimations/accelerated-animation-renderer-change.html: Added.

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

1:37 PM Changeset in webkit [256351] by Russell Epstein
  • 6 edits
    4 adds in branches/safari-609.1.17.0-branch

Cherry-pick r255593. rdar://problem/59335802

[Web Animations] Accelerated animations don't run until their natural completion
https://bugs.webkit.org/show_bug.cgi?id=207130
<rdar://problem/59106047>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: webanimations/transform-accelerated-animation-finishes-before-removal.html

webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise.html

Ensure we don't tear down a composited renderer until all of its runnning accelerated animations are completed.
The accelerated animations will be queued for removal in the next animation frame.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::isRunningAcceleratedAnimationForProperty const):
  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::isCurrentlyAffectingProperty const):

LayoutTests:

Add two new tests that ensures that an accelerated animation still yields compositing on an element when
its finished promise is resolved, but that it's no longer the case on the next frame.

This required an existing test to be updated to wait until the next frame before checking the composited
status of an element on which an animation had just completed.

  • compositing/geometry/limit-layer-bounds-opacity-transition.html:
  • webanimations/transform-accelerated-animation-finishes-before-removal-expected.txt: Added.
  • webanimations/transform-accelerated-animation-finishes-before-removal.html: Added.
  • webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise-expected.txt: Added.
  • webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise.html: Added.

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

1:37 PM Changeset in webkit [256350] by Russell Epstein
  • 4 edits in branches/safari-609.1.17.0-branch

Cherry-pick r255552. rdar://problem/59335812

ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) on animations/keyframe-autoclose-brace.html
https://bugs.webkit.org/show_bug.cgi?id=207071
<rdar://problem/59076249>

Patch by Antoine Quint <Antoine Quint> on 2020-02-02
Reviewed by Dean Jackson.

Source/WebCore:

We cannot add CSSPropertyInvalid to a HashSet<CSSPropertyID>, because it triggers an ASSERT, and also we shouldn't
because we wouldn't know how to animate that CSS property.

  • animation/AnimationTimeline.cpp: (WebCore::compileTransitionPropertiesInStyle):

LayoutTests:

The crash is fixed, we can start running the test as expected again.

  • platform/ipad/TestExpectations:

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

1:37 PM Changeset in webkit [256349] by Russell Epstein
  • 2 edits in branches/safari-609.1.17.0-branch/LayoutTests

Cherry-pick r255525. rdar://problem/59335812

[ iOS Debug wk2 ] animations/keyframe-autoclose-brace.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207071

Unreviewed test gardening.

Patch by Jason Lawrence <Jason_Lawrence> on 2020-01-31

  • platform/ipad/TestExpectations:

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

1:37 PM Changeset in webkit [256348] by Russell Epstein
  • 20 edits
    17 deletes in branches/safari-609.1.17.0-branch

Revert "Cherry-pick r256214. rdar://problem/59349205"

This reverts commit 136c83914552143e2f30738b1892c80bdce440bf.

Revert "Cherry-pick r256181. rdar://problem/59349184"

This reverts commit c243d1210b16f08fe15d2655e5404fc58e3a8f2f.

Revert "Cherry-pick r256095. rdar://problem/59349202"

This reverts commit da093df9a0316d7248cd43eead2fda895dbdc415.

Revert "Cherry-pick r255810. rdar://problem/59349189"

This reverts commit 410a91668843774b2cea733ea441221c8ad6bc40.

Revert "Cherry-pick r255663. rdar://problem/59349185"

This reverts commit ee4f679f99959f7eee3d509950a6b44c611f7dc6.

Revert "Cherry-pick r255593. rdar://problem/59349198"

This reverts commit 1ae924558dd4ff09bf20d97fa3a3648cd9766bcf.

Revert "Cherry-pick r255552. rdar://problem/59349213"

This reverts commit f8feeed1205b837e4912f66bdf76c935612be0f3.

Revert "Cherry-pick r255525. rdar://problem/59349213"

This reverts commit 444142aa67ab570929cada2fcd63156d65e4d55c.

1:33 PM Changeset in webkit [256347] by Andres Gonzalez
  • 3 edits in trunk/Source/WebCore

Fix for crashes in WebAccessibilityObjectWrapper after notification updates in IsolatedTree mode.
https://bugs.webkit.org/show_bug.cgi?id=207558

Reviewed by Chris Fleizach.

  • Accessibility methods invoked in the secondary thread that Return id

values retrieved from the main thread, need to retain/autorelease the
returned ids.

  • When serving a request on the AX thread that requires retrieving a

value from the main thread, the backing obbject on the main thread may
have gone away, so need to check for nullity of the backing object also
on the main thread.

  • accessibility/AccessibilityObjectInterface.h:

(WebCore::Accessibility::retrieveAutoreleasedValueFromMainThread):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper attachmentView]):
(-[WebAccessibilityObjectWrapper textMarkerRangeFromRange:]):
(-[WebAccessibilityObjectWrapper renderWidgetChildren]):
(-[WebAccessibilityObjectWrapper associatedPluginParent]):
(-[WebAccessibilityObjectWrapper scrollViewParent]):
(-[WebAccessibilityObjectWrapper windowElement:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

1:14 PM Changeset in webkit [256346] by eric.carlson@apple.com
  • 4 edits
    2 adds in trunk

video.currentTime is not being updated in iOS 13.4 Beta
https://bugs.webkit.org/show_bug.cgi?id=207489
<rdar://problem/59322640>

Reviewed by Youenn Fablet.

Source/WebKit:

Allow the Web process and the GPU process to communicate with
'com.apple.coremedia.audiodeviceclock.xpc' because it is necessary to use a
CMTimeBase, which is used by MediaPlayerPrivateMediaStreamAVFObjC for currentTime.

Test: fast/mediastream/media-element-current-time.html

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

LayoutTests:

  • fast/mediastream/media-element-current-time.html: Added.
1:09 PM Changeset in webkit [256345] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Deprecate _WKUserContentWorld replaced by WKContentWorld
https://bugs.webkit.org/show_bug.cgi?id=207514

Add the rest of the SPI to convert between the two.

  • UIProcess/API/Cocoa/_WKUserContentWorld.h:
  • UIProcess/API/Cocoa/_WKUserContentWorld.mm:

(-[_WKUserContentWorld contentWorld]):

1:08 PM Changeset in webkit [256344] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/tests/ssl/applepay/ApplePayBillingAddress.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207577

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
12:59 PM Changeset in webkit [256343] by Wenson Hsieh
  • 2 edits in trunk/Tools

KeyboardInputTests.SupportsImagePaste fails on recent versions of UIKit
https://bugs.webkit.org/show_bug.cgi?id=207557

Reviewed by Jonathan Bedard.

The exception occurs because UIKit attempts to create a QoS interval upon setting the initially selected row in
a UITableView when we focus a date picker. This fails because TestWebKitAPI isn't actually an app, so the call
to work_interval_create with WORK_INTERVAL_TYPE_CA_CLIENT as the option flag fails. For the time being, work
around this by focusing an empty select element instead (for which we won't attempt to create and select any
table view cells).

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
12:49 PM Changeset in webkit [256342] by Russell Epstein
  • 3 edits
    3 adds in branches/safari-609.1.17.0-branch

Cherry-pick r256214. rdar://problem/59349205

WebContent jetsams on Sony lens webpage due to spike of IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=207493
rdar://problem/59020443

Reviewed by Zalan Bujtas.
Source/WebCore:

There were three issues that contributed to massive backing store allocation on
<https://www.sony.com/electronics/lenses/t/camera-lenses>.

The first, fixed in r256095, was that the Web Animations code unioned the untransitioning
bounds with the transitioning bounds, causing the computation of large extent rects.

The second, fixed in r256181, was that GraphicsLayerCA would keep hold of a transform
animation for an extra frame, causing a rendering update where
RenderLayerBacking::updateGeometry() would have cleared the extent, but GraphicsLayerCA
still thought transform was animating, causing GraphicsLayerCA::updateCoverage() to keep
backing store attached.

This patch is the final fix; when animations start and end, we need to ensure that
RenderLayerBacking::updateGeometry() is called so that we compute the animation extent in
the same frame that adds the animation.

Test: compositing/backing/transition-extent.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::animationFinished):

LayoutTests:

Test with an out-of-view transitioning element which should not get backing store.

  • compositing/backing/transition-extent-expected.txt: Added.
  • compositing/backing/transition-extent.html: Added.
  • platform/ios-wk2/compositing/backing/transition-extent-expected.txt: Added.

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

12:49 PM Changeset in webkit [256341] by Russell Epstein
  • 7 edits in branches/safari-609.1.17.0-branch

Cherry-pick r256181. rdar://problem/59349184

There's an event loop cycle between an animation finishing, and it being removed from GraphicsLayerCA
https://bugs.webkit.org/show_bug.cgi?id=207361
<rdar://problem/59280370>

Reviewed by Simon Fraser.

Source/WebCore:

Animations should be removed from GraphicsLayersCAs in the same rendering update that changes the playState of the
animation to "finished", to avoid layer flush where a GraphicsLayersCAs has no extent set, but thinks there is
an active transform animation.

To do this, instead of enqueuing accelerated actions when resolving animations during style resolution, in
KeyframeAnimation::apply(), we enqueue them as soon as an animation's current time may have changed: in
WebAnimation::tick() and WebAnimation::play() with supporting functions newly exposed on AnimationEffect.

Now, accelerated animations are enqueued and applied during the "update animations and send events" procedure.

  • animation/AnimationEffect.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::apply): (WebCore::KeyframeEffect::updateAcceleratedActions): (WebCore::KeyframeEffect::animationDidTick): (WebCore::KeyframeEffect::animationDidPlay):
  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::play): (WebCore::WebAnimation::tick):

LayoutTests:

Lower the number of frames to wait after an animation completes by one to check that the accelerated animation has been removed
to show that we enqueue accelerated actions as part of the "update animations and send events" procedure.

  • webanimations/accelerated-animation-removal-upon-transition-completion.html: Added.

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

12:48 PM Changeset in webkit [256340] by Russell Epstein
  • 8 edits
    8 adds in branches/safari-609.1.17.0-branch

Cherry-pick r256095. rdar://problem/59349202

Extent of a composited animation should not include the untransformed position
https://bugs.webkit.org/show_bug.cgi?id=207434

Reviewed by Sam Weinig.
Source/WebCore:

To determine whether to create ("attach") backing store for layers with transform animations,
we compute the union of all the states of the animation as an "extent", and ask whether it intersects
the coverage rect in GraphicsLayerCA.

The non-Web Animations transition code did this correctly, just unioning the bounds transformed by
the start and end state.

The non-Web Animations keyframe code, and the Web Animations KeyframeEffect code (used for both CSS transitions
and animations) also unioned with the unanimated bounds, which could create overly large extents in some
cases, contributing to jetsams on iOS (rdar://problem/59020443).

Fix KeyframeAnimation and KeyframeEffect to not union with the untransformed bounds.

Tests: compositing/backing/backing-store-attachment-animating-outside-viewport.html

legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):
  • page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

LayoutTests:

New test that checks backing store attachment and overlap for an element which is positioned in-view,
but is move offscreen by the animation.

New baselines for overlap tests, since overlap no longer considers the unanimated position.

  • compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • platform/ios-wk2/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • platform/ios-wk2/legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.

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

12:48 PM Changeset in webkit [256339] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-609.1.17.0-branch

Cherry-pick r255810. rdar://problem/59349189

[Web Animations] Canceling an accelerated animation before it was committed does not prevent it from playing
https://bugs.webkit.org/show_bug.cgi?id=207253
<rdar://problem/59143624>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: webanimations/accelerated-animation-canceled-before-commit.html

Merely checking whether an accelerated animation is running prior to enqueuing an action to cancel it is not sufficient
since there could be an uncommitted change to start it upon the next animation frame. The same logic would need to apply
in other situations where the playback state changes for a potentially in-flight animation.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::animationDidSeek): (WebCore::KeyframeEffect::animationWasCanceled): (WebCore::KeyframeEffect::willChangeRenderer): (WebCore::KeyframeEffect::animationSuspensionStateDidChange):

LayoutTests:

Add a new test that checks that an accelerated animation that has been enqueued to start but has
not yet been committed is correctly canceled when the cancel() method is called. This test fails
prior to this source change.

  • webanimations/accelerated-animation-canceled-before-commit-expected.html: Added.
  • webanimations/accelerated-animation-canceled-before-commit.html: Added.

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

12:48 PM Changeset in webkit [256338] by Russell Epstein
  • 9 edits
    2 adds in branches/safari-609.1.17.0-branch

Cherry-pick r255663. rdar://problem/59349185

Accelerated animations freeze on render tree rebuild
https://bugs.webkit.org/show_bug.cgi?id=201048
<rdar://problem/54612621>

Reviewed by Antoine Quint.

Source/WebCore:

If there is an accelerated animation in progress for a renderer and the render tree is rebuild the animation
does not continue with the new renderer.

To fix, make sure that the animation leaves the accelerated state when the renderer is removed. The new renderer
will then become accelerated automatically.

Original test case by Tim Guan-tin Chien.

Test: webanimations/accelerated-animation-renderer-change.html

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::willChangeRendererForElement):
  • animation/AnimationTimeline.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::willChangeRenderer):
  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::willChangeRenderer):
  • animation/WebAnimation.h:
  • rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

  • webanimations/accelerated-animation-renderer-change-expected.html: Added.
  • webanimations/accelerated-animation-renderer-change.html: Added.

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

12:48 PM Changeset in webkit [256337] by Russell Epstein
  • 6 edits
    4 adds in branches/safari-609.1.17.0-branch

Cherry-pick r255593. rdar://problem/59349198

[Web Animations] Accelerated animations don't run until their natural completion
https://bugs.webkit.org/show_bug.cgi?id=207130
<rdar://problem/59106047>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: webanimations/transform-accelerated-animation-finishes-before-removal.html

webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise.html

Ensure we don't tear down a composited renderer until all of its runnning accelerated animations are completed.
The accelerated animations will be queued for removal in the next animation frame.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::isRunningAcceleratedAnimationForProperty const):
  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::isCurrentlyAffectingProperty const):

LayoutTests:

Add two new tests that ensures that an accelerated animation still yields compositing on an element when
its finished promise is resolved, but that it's no longer the case on the next frame.

This required an existing test to be updated to wait until the next frame before checking the composited
status of an element on which an animation had just completed.

  • compositing/geometry/limit-layer-bounds-opacity-transition.html:
  • webanimations/transform-accelerated-animation-finishes-before-removal-expected.txt: Added.
  • webanimations/transform-accelerated-animation-finishes-before-removal.html: Added.
  • webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise-expected.txt: Added.
  • webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise.html: Added.

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

12:48 PM Changeset in webkit [256336] by Russell Epstein
  • 4 edits in branches/safari-609.1.17.0-branch

Cherry-pick r255552. rdar://problem/59349213

ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) on animations/keyframe-autoclose-brace.html
https://bugs.webkit.org/show_bug.cgi?id=207071
<rdar://problem/59076249>

Patch by Antoine Quint <Antoine Quint> on 2020-02-02
Reviewed by Dean Jackson.

Source/WebCore:

We cannot add CSSPropertyInvalid to a HashSet<CSSPropertyID>, because it triggers an ASSERT, and also we shouldn't
because we wouldn't know how to animate that CSS property.

  • animation/AnimationTimeline.cpp: (WebCore::compileTransitionPropertiesInStyle):

LayoutTests:

The crash is fixed, we can start running the test as expected again.

  • platform/ipad/TestExpectations:

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

12:48 PM Changeset in webkit [256335] by Russell Epstein
  • 2 edits in branches/safari-609.1.17.0-branch/LayoutTests

Cherry-pick r255525. rdar://problem/59349213

[ iOS Debug wk2 ] animations/keyframe-autoclose-brace.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207071

Unreviewed test gardening.

Patch by Jason Lawrence <Jason_Lawrence> on 2020-01-31

  • platform/ipad/TestExpectations:

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

11:54 AM Changeset in webkit [256334] by Brent Fulgham
  • 2 edits in branches/safari-609-branch/Source/WebKit

Apply patch. rdar://problem/59354409

11:41 AM Changeset in webkit [256333] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] http/tests/IndexedDB/collect-IDB-objects.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207571

Unreviewed test gardening

  • platform/mac-wk2/TestExpectations:
11:40 AM Changeset in webkit [256332] by achristensen@apple.com
  • 16 edits
    1 add in trunk/Source/WebKit

Deprecate _WKUserContentWorld replaced by WKContentWorld
https://bugs.webkit.org/show_bug.cgi?id=207514

Reviewed by Brady Eidson.

I also add SPI to convert between the two to aid a smooth transition.

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • UIProcess/API/APIContentWorld.cpp:

(API::ContentWorld::fromUserContentWorld):
(API::ContentWorld::ContentWorld):

  • UIProcess/API/APIContentWorld.h:

(API::ContentWorldBase::ContentWorldBase):

  • UIProcess/API/APIUserContentWorld.cpp:

(API::UserContentWorld::fromContentWorld):
(API::UserContentWorld::UserContentWorld):

  • UIProcess/API/APIUserContentWorld.h:
  • UIProcess/API/Cocoa/WKContentWorld.mm:

(-[WKContentWorld _userContentWorld]):

  • UIProcess/API/Cocoa/WKContentWorldInternal.h:
  • UIProcess/API/Cocoa/WKContentWorldPrivate.h: Added.
  • UIProcess/API/Cocoa/WKUserContentController.mm:
  • UIProcess/API/Cocoa/WKUserScript.mm:
  • UIProcess/API/Cocoa/_WKUserContentWorld.h:
  • UIProcess/API/Cocoa/_WKUserContentWorld.mm:
  • UIProcess/API/Cocoa/_WKUserContentWorldInternal.h:
  • UIProcess/API/Cocoa/_WKUserStyleSheet.h:
  • UIProcess/API/Cocoa/_WKUserStyleSheet.mm:
  • WebKit.xcodeproj/project.pbxproj:
11:34 AM Changeset in webkit [256331] by Russell Epstein
  • 8 edits in branches/safari-609.1.17.0-branch/Source

Versioning.

11:25 AM Changeset in webkit [256330] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] legacy-animation-engine/animations/3d/transform-origin-vs-functions.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207569

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
11:16 AM Changeset in webkit [256329] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] inspector/page/overrideUserAgent.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207568

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
11:16 AM Changeset in webkit [256328] by Russell Epstein
  • 1 copy in branches/safari-609.1.17.1-branch

New branch, safari-609.1.17.1-branch

11:15 AM Changeset in webkit [256327] by Russell Epstein
  • 1 delete in branches/Safari-609.1.17.1

Delete branch.

11:12 AM Changeset in webkit [256326] by Russell Epstein
  • 1 copy in branches/safari-609.1.17.0-branch

New branch, safari-609.1.17.0-branch

11:11 AM Changeset in webkit [256325] by Russell Epstein
  • 1 delete in branches/Safari-609.1.17.0

Delete branch.

11:06 AM Changeset in webkit [256324] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] imported/w3c/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207566

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
11:05 AM Changeset in webkit [256323] by Russell Epstein
  • 1 copy in branches/Safari-609.1.17.1

New branch, safari-609.1.17.1-branch

11:05 AM Changeset in webkit [256322] by Russell Epstein
  • 1 copy in branches/Safari-609.1.17.0

New branch, safari-609.1.17.0-branch

11:04 AM Changeset in webkit [256321] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-from-serviceworker.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207563

Unreviewed test gardening

  • platform/ios/TestExpectations:
10:58 AM Changeset in webkit [256320] by Chris Fleizach
  • 2 edits in trunk/Source/WebCore/PAL

AX: Wrong includes for internal SDK
https://bugs.webkit.org/show_bug.cgi?id=207554

Reviewed by Chris Dumez.

  • pal/spi/mac/HIServicesSPI.h:
10:49 AM Changeset in webkit [256319] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS iOS ] animations/animation-callback-timestamp.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207153

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
10:38 AM Changeset in webkit [256318] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

BOTWATCH: editing/selection/5354455-1.html causes nasty crash
rdar://problem/13448458

Unreviewed test gardening

  • platform/mac-wk2/TestExpectations: unskip test because it no longer crashes locally
10:26 AM Changeset in webkit [256317] by youenn@apple.com
  • 4 edits in trunk

REGRESSION (r256009): [ Mojave wk2 Debug ] ASSERTION FAILED: Completion handler should always be called under WebKit::WebMDNSRegister::PendingRegistration
https://bugs.webkit.org/show_bug.cgi?id=207521
<rdar://problem/59331313>

Reviewed by Eric Carlson.

Source/WebKit:

Covered by debug assertion not hit in layout tests.

  • WebProcess/Network/webrtc/WebMDNSRegister.cpp:

(WebKit::WebMDNSRegister::finishedRegisteringMDNSName):
Call completion handler even if the document entry has been cleared, which can happen in suspend/destruction case.
If the entry is not there, all MDNS names for the document have been unregistered. We then report a registration error.

LayoutTests:

  • platform/mac-wk2/TestExpectations:
10:18 AM Changeset in webkit [256316] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] media/airplay-target-availability.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207560

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
10:14 AM Changeset in webkit [256315] by commit-queue@webkit.org
  • 7 edits
    1 add in trunk

Add WKHTTPCookieStore._getCookiesForURL SPI
https://bugs.webkit.org/show_bug.cgi?id=207527

Patch by Alex Christensen <achristensen@webkit.org> on 2020-02-11
Reviewed by Brady Eidson.

Source/WebKit:

This is needed to implement rdar://problem/57193106 without re-implementing the cookie/URL matching logic that exists in CFNetwork.
Covered by an API test with a great pun in it.

  • UIProcess/API/APIHTTPCookieStore.cpp:

(API::HTTPCookieStore::cookiesForURL):

  • UIProcess/API/APIHTTPCookieStore.h:
  • UIProcess/API/Cocoa/WKHTTPCookieStore.mm:

(-[WKHTTPCookieStore _getCookiesForURL:completionHandler:]):

  • UIProcess/API/Cocoa/WKHTTPCookieStorePrivate.h: Added.
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

(TEST):

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

WebSWServerConnection::registerServiceWorkerClient is not sending IPC message to UIProcess when it should
https://bugs.webkit.org/show_bug.cgi?id=207537

Reviewed by Chris Dumez.

Source/WebKit:

Covered by added API test.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::registerServiceWorkerClient):
Fix use after move so that we can get the context connection and send the IPC message to UIProcess as expected.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
9:51 AM Changeset in webkit [256313] by Jacob Uphoff
  • 3 edits in trunk/LayoutTests

[ macOS iOS ] fast/parser/parser-yield-timing.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207559

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
9:48 AM Changeset in webkit [256312] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Add WKContentWorld.h to WebKit.h
https://bugs.webkit.org/show_bug.cgi?id=207351

Suggested by Alex Christensen.

Patch by Brady Eidson <beidson@apple.com> on 2020-02-11

  • Shared/API/Cocoa/WebKit.h:
9:12 AM Changeset in webkit [256311] by Alan Bujtas
  • 8 edits
    2 adds in trunk/Source/WebCore

[LFC] Introduce Layout::LineBreakBox
https://bugs.webkit.org/show_bug.cgi?id=207550
<rdar://problem/59348274>

Reviewed by Antti Koivisto.

This is in preparation for making Layout::Box an abstract box (so that it stops being a leaf type of box).

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

(WebCore::Layout::InlineFormattingContext::collectInlineContentIfNeeded):

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::isImage const):
(WebCore::Layout::Box::isLineBreakBox const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLineBreakBox):
(WebCore::Layout::TreeBuilder::createLayoutBox):

  • layout/layouttree/LayoutTreeBuilder.h:
9:11 AM Changeset in webkit [256310] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/IndexedDB-private-browsing/idbcursor_update_objectstore8.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=207555

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
8:50 AM Changeset in webkit [256309] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/IndexedDB-private-browsing/abort-in-initial-upgradeneeded.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=207553

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
8:42 AM Changeset in webkit [256308] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

Layout Test imported/w3c/web-platform-tests/service-workers/service-worker/redirected-response.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=190852

Updating expectations to include ios

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
8:40 AM UpdatingANGLE edited by Michael Catanzaro
Update instructions for updating ANGLE (diff)
8:36 AM Changeset in webkit [256307] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] http/tests/storageAccess/has-storage-access-false-by-default-ephemeral-database.html is flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=207552

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
8:15 AM Changeset in webkit [256306] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] http/tests/adClickAttribution/store-disabled-in-ephemeral-session.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=207551

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
7:58 AM Changeset in webkit [256305] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

REGRESSION (r253312): imported/w3c/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html is super flaky
https://bugs.webkit.org/show_bug.cgi?id=205216

Updated test expectations to include ios.

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
7:13 AM Changeset in webkit [256304] by Alan Bujtas
  • 20 edits
    1 copy
    1 move in trunk/Source/WebCore

[LFC] Introduce Layout::InlineTextBox
https://bugs.webkit.org/show_bug.cgi?id=207530
<rdar://problem/59336020>

Reviewed by Antti Koivisto.

Any text that is directly contained inside a block container element (not inside an inline element) must be treated as an anonymous inline element.

  • Sources.txt:
  • layout/Verification.cpp:

(WebCore::Layout::checkForMatchingTextRuns):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::collectInlineContentIfNeeded):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::m_textContext):

  • layout/inlineformatting/InlineSoftLineBreakItem.h:

(WebCore::Layout::InlineSoftLineBreakItem::createSoftLineBreakItem):
(WebCore::Layout::InlineSoftLineBreakItem::InlineSoftLineBreakItem):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
(WebCore::Layout::InlineTextItem::isEmptyContent const):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::inlineTextBox const):
(WebCore::Layout::InlineTextItem::createWhitespaceItem):
(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):
(WebCore::Layout::InlineTextItem::createEmptyItem):
(WebCore::Layout::InlineTextItem::InlineTextItem):
(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::endsWithSoftWrapOpportunity):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::split):

  • layout/inlineformatting/text/TextUtil.h:
  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::Box):
(): Deleted.

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::isInlineTextBox const):
(WebCore::Layout::Box::hasTextContent const): Deleted.
(WebCore::Layout::Box::textContext const): Deleted.

  • layout/layouttree/LayoutContainer.cpp:

(WebCore::Layout::Container::Container):
(): Deleted.

  • layout/layouttree/LayoutInlineTextBox.cpp: Copied from Source/WebCore/layout/layouttree/TextContext.h.

(WebCore::Layout::InlineTextBox::InlineTextBox):
(WebCore::Layout::m_canUseSimplifiedContentMeasuring):

  • layout/layouttree/LayoutInlineTextBox.h: Renamed from Source/WebCore/layout/layouttree/TextContext.h.

(WebCore::Layout::InlineTextBox::content const):
(WebCore::Layout::InlineTextBox::canUseSimplifiedContentMeasuring const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createTextBox):
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::outputLayoutBox):

  • layout/layouttree/LayoutTreeBuilder.h:
6:08 AM Changeset in webkit [256303] by youenn@apple.com
  • 17 edits
    1 copy in trunk/Source/WebKit

Use ObjectIdentifier for WebSocketStream/WebSocketChannel
https://bugs.webkit.org/show_bug.cgi?id=207507

Reviewed by Alex Christensen.

Replace uint64_t by ObjectIdentifier.
This adds type safety and ensures we get valid identifiers from IPC.
We still need to check for destinationID being not null in a few places.
No observable change of behavior.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::createSocketStream):
(WebKit::NetworkConnectionToWebProcess::createSocketChannel):
(WebKit::NetworkConnectionToWebProcess::removeSocketChannel):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::create):
(WebKit::NetworkSocketChannel::NetworkSocketChannel):

  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/NetworkSocketStream.cpp:

(WebKit::NetworkSocketStream::create):
(WebKit::NetworkSocketStream::NetworkSocketStream):
(WebKit::NetworkSocketStream::messageSenderDestinationID const):

  • NetworkProcess/NetworkSocketStream.h:
  • Scripts/webkit/messages.py:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::WebSocketChannel):
(WebKit::WebSocketChannel::messageSenderDestinationID const):
(WebKit::WebSocketChannel::connect):

  • WebProcess/Network/WebSocketChannel.h:

(WebKit::WebSocketChannel::identifier const):

  • WebProcess/Network/WebSocketChannelManager.cpp:

(WebKit::WebSocketChannelManager::didReceiveMessage):

  • WebProcess/Network/WebSocketChannelManager.h:
  • WebProcess/Network/WebSocketIdentifier.h: Added.
  • WebProcess/Network/WebSocketStream.cpp:

(WebKit::WebSocketStream::streamWithIdentifier):
(WebKit::WebSocketStream::WebSocketStream):
(WebKit::WebSocketStream::~WebSocketStream):
(WebKit::WebSocketStream::messageSenderDestinationID const):

  • WebProcess/Network/WebSocketStream.h:
5:09 AM Changeset in webkit [256302] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[WPE][WebDriver] MiniBrowser should react to close session commands
https://bugs.webkit.org/show_bug.cgi?id=207529

Patch by Lauro Moura <Lauro Moura> on 2020-02-11
Reviewed by Carlos Garcia Campos.

WebDriver delete session command asks to close the WebView associated to the
current automation session. We must react to it to avoid lots of
timeouts and errors.

  • MiniBrowser/wpe/main.cpp:

(main): Listen to "close" signal on the main WebView.

5:03 AM Changeset in webkit [256301] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fix WPE build after r256298

It started to fail in r256298 because of unified builds, but the issue was introduced in r256013.

  • platform/network/soup/ResourceRequestSoup.cpp: Add missing header include.
3:31 AM Changeset in webkit [256300] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Mac ] legacy-animation-engine/fast/animation/request-animation-frame-iframe2.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=206624

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-02-11
Reviewed by Antoine Quint.

Rewrite test to have a reliable asynchronous execution order.

  • fast/animation/script-tests/request-animation-frame-subframe.html:
2:47 AM Changeset in webkit [256299] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

[GTK][WPE] imported/w3c/web-platform-tests/css/css-lists/counter-* tests consistently pass
https://bugs.webkit.org/show_bug.cgi?id=207533

Unreviewed test gardening.

Patch by Chris Lord <Chris Lord> on 2020-02-11

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
1:35 AM Changeset in webkit [256298] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebCore

[WPE] Add initial support for rendering scrollbars
https://bugs.webkit.org/show_bug.cgi?id=206999

Reviewed by Michael Catanzaro.

Show overlay scrollbars with a style similar to Adwaita.

  • SourcesWPE.txt: Add ScrollAnimatorGeneric.cpp to the build.
  • platform/ScrollAnimator.cpp: Switch to use ScrollAnimatorGeneric, required to show/hide the overlay scrollbars.
  • platform/wpe/ScrollbarThemeWPE.cpp:

(WebCore::ScrollbarThemeWPE::scrollbarThickness):
(WebCore::ScrollbarThemeWPE::minimumThumbLength):
(WebCore::ScrollbarThemeWPE::hasButtons):
(WebCore::ScrollbarThemeWPE::hasThumb):
(WebCore::ScrollbarThemeWPE::backButtonRect):
(WebCore::ScrollbarThemeWPE::forwardButtonRect):
(WebCore::ScrollbarThemeWPE::trackRect):
(WebCore::ScrollbarThemeWPE::paint):

  • platform/wpe/ScrollbarThemeWPE.h:
12:24 AM Changeset in webkit [256297] by Wenson Hsieh
  • 3 edits in trunk/Tools

[iOS] Non-internal API test runners frequently crash due to Objective-C exceptions
https://bugs.webkit.org/show_bug.cgi?id=207525
<rdar://problem/59110543>

Reviewed by Tim Horton.

After the fix for <rdar://problem/56301207>, some scroll view content offset changes will attempt to call into
CoreAnalytics API to try and report data about scrolling velocities. In the iOS 13.3 simulator, this involves
creating a dictionary, of which one of the keys is the bundle identifier of the application. The value is
unconditionally inserted into the dictionary. Since TestWebKitAPI does not run in the context of a
UIApplication, the bundle identifier (that is, NSBundle.mainBundle.bundleIdentifier) ends up being nil,
causing us to crash upon trying to create the dictionary.

While it would make things easier, we can't just swizzle -bundleIdentifier for the entirely of every test, since
some tests expect the bundle identifier to be nil (or call into system frameworks that expect the bundle
identifier to be nil). These tests fail or time out when -bundleIdentifier is unconditionally swizzled
throughout the test run. To work around this bug for the time being, simply pretend that we have a bundle
identifier when running API tests on iOS, by swizzling -[NSBundle bundleIdentifier] to return a string at the
beginning of each API test.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(overrideBundleIdentifier):

Move this to the top of the file, so it can be shared.

(+[WKWebView initialize]):

At the start of each test, force UIKit to cache a fake value for _UIMainBundleIdentifier() by invoking an
internal class method that calls into the internal helper function, with no other side effects.

  • TestWebKitAPI/ios/UIKitSPI.h:
12:21 AM Changeset in webkit [256296] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.27.90

WPE WebKit 2.27.90

12:21 AM Changeset in webkit [256295] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.28

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.27.90 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.27.90.
12:10 AM Changeset in webkit [256294] by Chris Fleizach
  • 4 edits in trunk/Source

AX: Unable to build webkit open source - build errors related to AXClientType
https://bugs.webkit.org/show_bug.cgi?id=207524
<rdar://problem/59279722>

Reviewed by Mark Lam.

Source/WebCore/PAL:

  • pal/spi/mac/HIServicesSPI.h:

Source/WebKit:

  • Platform/spi/mac/ApplicationServicesSPI.h:

Feb 10, 2020:

10:26 PM Changeset in webkit [256293] by Alan Coon
  • 3 edits
    3 adds in branches/safari-609-branch

Cherry-pick r256214. rdar://problem/59329555

WebContent jetsams on Sony lens webpage due to spike of IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=207493
rdar://problem/59020443

Reviewed by Zalan Bujtas.
Source/WebCore:

There were three issues that contributed to massive backing store allocation on
<https://www.sony.com/electronics/lenses/t/camera-lenses>.

The first, fixed in r256095, was that the Web Animations code unioned the untransitioning
bounds with the transitioning bounds, causing the computation of large extent rects.

The second, fixed in r256181, was that GraphicsLayerCA would keep hold of a transform
animation for an extra frame, causing a rendering update where
RenderLayerBacking::updateGeometry() would have cleared the extent, but GraphicsLayerCA
still thought transform was animating, causing GraphicsLayerCA::updateCoverage() to keep
backing store attached.

This patch is the final fix; when animations start and end, we need to ensure that
RenderLayerBacking::updateGeometry() is called so that we compute the animation extent in
the same frame that adds the animation.

Test: compositing/backing/transition-extent.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::animationFinished):

LayoutTests:

Test with an out-of-view transitioning element which should not get backing store.

  • compositing/backing/transition-extent-expected.txt: Added.
  • compositing/backing/transition-extent.html: Added.
  • platform/ios-wk2/compositing/backing/transition-extent-expected.txt: Added.

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

10:26 PM Changeset in webkit [256292] by Alan Coon
  • 7 edits in branches/safari-609-branch

Cherry-pick r256181. rdar://problem/59329544

There's an event loop cycle between an animation finishing, and it being removed from GraphicsLayerCA
https://bugs.webkit.org/show_bug.cgi?id=207361
<rdar://problem/59280370>

Reviewed by Simon Fraser.

Source/WebCore:

Animations should be removed from GraphicsLayersCAs in the same rendering update that changes the playState of the
animation to "finished", to avoid layer flush where a GraphicsLayersCAs has no extent set, but thinks there is
an active transform animation.

To do this, instead of enqueuing accelerated actions when resolving animations during style resolution, in
KeyframeAnimation::apply(), we enqueue them as soon as an animation's current time may have changed: in
WebAnimation::tick() and WebAnimation::play() with supporting functions newly exposed on AnimationEffect.

Now, accelerated animations are enqueued and applied during the "update animations and send events" procedure.

  • animation/AnimationEffect.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::apply): (WebCore::KeyframeEffect::updateAcceleratedActions): (WebCore::KeyframeEffect::animationDidTick): (WebCore::KeyframeEffect::animationDidPlay):
  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::play): (WebCore::WebAnimation::tick):

LayoutTests:

Lower the number of frames to wait after an animation completes by one to check that the accelerated animation has been removed
to show that we enqueue accelerated actions as part of the "update animations and send events" procedure.

  • webanimations/accelerated-animation-removal-upon-transition-completion.html: Added.

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

10:26 PM Changeset in webkit [256291] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r256173. rdar://problem/59329542

Make FormDataElement::lengthInBytes() safe to call on a non-main thread
https://bugs.webkit.org/show_bug.cgi?id=207419
<rdar://problem/54386521>

Reviewed by Youenn Fablet.

Make FormDataElement::lengthInBytes() safe to call on a non-main thread by using the
ThreadableBlobRegistry. DOMCache code in workers may call this on worker threads for
example.

  • platform/network/FormData.cpp: (WebCore::FormDataElement::lengthInBytes const):

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

10:26 PM Changeset in webkit [256290] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256105. rdar://problem/59302221

Fix the watchOS build after <rdar://problem/56134081>
https://bugs.webkit.org/show_bug.cgi?id=207443
<rdar://problem/59295173>

Reviewed by Maciej Stachowiak.

Use the version of the SPI that's guaranteed to be available across all platforms.

  • UIProcess/ios/WKContentViewInteraction.mm: (gestureRecognizerModifierFlags):

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

10:26 PM Changeset in webkit [256289] by Alan Coon
  • 8 edits
    8 adds in branches/safari-609-branch

Cherry-pick r256095. rdar://problem/59329549

Extent of a composited animation should not include the untransformed position
https://bugs.webkit.org/show_bug.cgi?id=207434

Reviewed by Sam Weinig.
Source/WebCore:

To determine whether to create ("attach") backing store for layers with transform animations,
we compute the union of all the states of the animation as an "extent", and ask whether it intersects
the coverage rect in GraphicsLayerCA.

The non-Web Animations transition code did this correctly, just unioning the bounds transformed by
the start and end state.

The non-Web Animations keyframe code, and the Web Animations KeyframeEffect code (used for both CSS transitions
and animations) also unioned with the unanimated bounds, which could create overly large extents in some
cases, contributing to jetsams on iOS (rdar://problem/59020443).

Fix KeyframeAnimation and KeyframeEffect to not union with the untransformed bounds.

Tests: compositing/backing/backing-store-attachment-animating-outside-viewport.html

legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):
  • page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

LayoutTests:

New test that checks backing store attachment and overlap for an element which is positioned in-view,
but is move offscreen by the animation.

New baselines for overlap tests, since overlap no longer considers the unanimated position.

  • compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • platform/ios-wk2/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • platform/ios-wk2/legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.

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

10:26 PM Changeset in webkit [256288] by Alan Coon
  • 3 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256090. rdar://problem/59298156

Resource Load Statistics: Hold off non-cookie website data deletion until an hour after user interaction
https://bugs.webkit.org/show_bug.cgi?id=207418
<rdar://problem/58550164>

Reviewed by Chris Dumez.

This change makes sure there is at least a one-hour or older timestamp
for user interaction for some website before activating deletion of
non-cookie website data for sites the user has not interacted with.
This ensures that a fresh start such as after a reset or on a new
device doesn't interpret the lack of data as lack of user interaction.

No new tests. Existing tests make sure we don't regress the functionality.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor):
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor):

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

10:26 PM Changeset in webkit [256287] by Alan Coon
  • 34 edits in branches/safari-609-branch/Source

Cherry-pick r256075. rdar://problem/59298173

[Hardening] Validate Geolocation access permission on UIProcess side
https://bugs.webkit.org/show_bug.cgi?id=207393
<rdar://problem/56816051>

Reviewed by Brent Fulgham.

Source/WebCore:

Validate Geolocation access permission on UIProcess side, instead of only relying solely on the WebProcess for this.

The workflow is as follows:

  • The Geolocation objects request for permission to access location data
  • The UIProcess shows a prompt
  • If the user accepts, the UIProcess sends an authorization token (a UUID string) to the Geolocation object.
  • When the Geolocation object later asks for location updates from the UIProcess, the UIProcess validates that this is a valid authorization token (one that it previously issued for this page)
  • When the Geolocation objects gets destroyed (or resets its permission), the authorization token gets revoked so that it is no longer valid.

No new tests, no Web-facing behavior change, merely hardening.

  • Modules/geolocation/Geolocation.cpp: (WebCore::Geolocation::~Geolocation): (WebCore::Geolocation::resumeTimerFired): (WebCore::Geolocation::resetAllGeolocationPermission): (WebCore::Geolocation::stop): (WebCore::Geolocation::setIsAllowed): (WebCore::Geolocation::revokeAuthorizationTokenIfNecessary): (WebCore::Geolocation::resetIsAllowed):
  • Modules/geolocation/Geolocation.h:
  • Modules/geolocation/GeolocationClient.h: (WebCore::GeolocationClient::revokeAuthorizationToken):
  • Modules/geolocation/GeolocationController.cpp: (WebCore::GeolocationController::addObserver): (WebCore::GeolocationController::revokeAuthorizationToken): (WebCore::GeolocationController::activityStateDidChange):
  • Modules/geolocation/GeolocationController.h:
  • platform/mock/GeolocationClientMock.cpp: (WebCore::GeolocationClientMock::permissionTimerFired): (WebCore::GeolocationClientMock::startUpdating):
  • platform/mock/GeolocationClientMock.h:

Source/WebKit:

  • UIProcess/GeolocationPermissionRequestManagerProxy.cpp: (WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision): (WebKit::GeolocationPermissionRequestManagerProxy::isValidAuthorizationToken const): (WebKit::GeolocationPermissionRequestManagerProxy::revokeAuthorizationToken):
  • UIProcess/GeolocationPermissionRequestManagerProxy.h:
  • UIProcess/WebGeolocationManagerProxy.cpp: (WebKit::WebGeolocationManagerProxy::startUpdating):
  • UIProcess/WebGeolocationManagerProxy.h:
  • UIProcess/WebGeolocationManagerProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::geolocationPermissionRequestManager):
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: (WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation): (WebKit::GeolocationPermissionRequestManager::revokeAuthorizationToken): (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision):
  • WebProcess/Geolocation/GeolocationPermissionRequestManager.h:
  • WebProcess/Geolocation/WebGeolocationManager.cpp: (WebKit::WebGeolocationManager::registerWebPage):
  • WebProcess/Geolocation/WebGeolocationManager.h:
  • WebProcess/WebCoreSupport/WebGeolocationClient.cpp: (WebKit::WebGeolocationClient::startUpdating): (WebKit::WebGeolocationClient::revokeAuthorizationToken):
  • WebProcess/WebCoreSupport/WebGeolocationClient.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::didReceiveGeolocationPermissionDecision):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebGeolocationClient.h:
  • WebCoreSupport/WebGeolocationClient.mm: (WebGeolocationClient::startUpdating): (WebGeolocationClient::requestPermission): (-[WebGeolocationPolicyListener allow]): (-[WebGeolocationPolicyListener deny]):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebGeolocationClient.cpp: (WebGeolocationClient::startUpdating):
  • WebCoreSupport/WebGeolocationClient.h:

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

10:26 PM Changeset in webkit [256286] by Alan Coon
  • 1 edit
    3 adds in branches/safari-609-branch/Source/WebInspectorUI

Cherry-pick r256056. rdar://problem/59299137

Web Inspector: Add another Protocol Version (iOS 13.4)
https://bugs.webkit.org/show_bug.cgi?id=207213
<rdar://problem/52846208>

Reviewed by Timothy Hatcher.

  • UserInterface/Protocol/Legacy/13.4/InspectorBackendCommands.js: Added.
  • Versions/Inspector-iOS-13.4.json: Added.

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

10:26 PM Changeset in webkit [256285] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WTF

Cherry-pick r256030. rdar://problem/59298146

Mandate UUID version 4 for mDNS ICE candidates
https://bugs.webkit.org/show_bug.cgi?id=207329
<rdar://problem/59221606>

Address post-commit comments from Darin by using isASCIIHexDigit.

Unreviewed.

  • wtf/UUID.cpp: (WTF::isVersion4UUID): (WTF::isHexadecimalCharacter): Deleted.

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

10:26 PM Changeset in webkit [256284] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256022. rdar://problem/59298187

Address post-landing review comments from Darin on r255989.

  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::terminateServiceWorkerProcess):

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

10:26 PM Changeset in webkit [256283] by Alan Coon
  • 7 edits in branches/safari-609-branch/Source

Cherry-pick r256016. rdar://problem/59298146

Mandate UUID version 4 for mDNS ICE candidates
https://bugs.webkit.org/show_bug.cgi?id=207329

Reviewed by Alex Christensen.

Source/WebCore:

Ignore ICE candidates if they are mDNS but not UUID version 4.
Covered by existing tests relying on mDNS to do the connection.

  • Modules/mediastream/PeerConnectionBackend.cpp: (WebCore::shouldIgnoreCandidate): (WebCore::PeerConnectionBackend::addIceCandidate):

Source/WebKit:

  • NetworkProcess/webrtc/NetworkMDNSRegister.cpp: (WebKit::NetworkMDNSRegister::registerMDNSName): Remove the count at the end of the mDNS name to make it a fully version 4 UUID.

Source/WTF:

Add a routine to validate version 4 UUID.

  • wtf/UUID.cpp: (WTF::isHexadecimalCharacter): (WTF::isVersion4UUID):
  • wtf/UUID.h:

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

10:26 PM Changeset in webkit [256282] by Alan Coon
  • 4 edits
    3 adds in branches/safari-609-branch

Cherry-pick r256009. rdar://problem/59298150

Do not process newly gathered ICE candidates if document is suspended
https://bugs.webkit.org/show_bug.cgi?id=207326
<rdar://problem/57336453>

Reviewed by Alex Christensen.

Source/WebCore:

We should not register MDNS candidates for suspended documents.
For that reason, enqueue a task when receiving a new candidate.
If document is not suspended, it will be executed immediately.
Otherwise, we will wait until document gets unsuspended.

Add a mock endpoint that delays gathering of candidates until document is suspended.

Test: webrtc/peerconnection-new-candidate-page-cache.html

  • Modules/mediastream/PeerConnectionBackend.cpp: (WebCore::PeerConnectionBackend::newICECandidate):
  • testing/MockLibWebRTCPeerConnection.cpp: (WebCore::MockLibWebRTCPeerConnection::GetTransceivers const): (WebCore::MockLibWebRTCPeerConnectionForIceCandidates::MockLibWebRTCPeerConnectionForIceCandidates): (WebCore::MockLibWebRTCPeerConnectionForIceCandidates::gotLocalDescription): (WebCore::MockLibWebRTCPeerConnectionForIceCandidates::sendCandidates): (WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection):

LayoutTests:

  • fast/history/resources/page-cache-helper-100ms.html: Added.
  • webrtc/peerconnection-new-candidate-page-cache-expected.txt: Added.
  • webrtc/peerconnection-new-candidate-page-cache.html: Added.

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

10:26 PM Changeset in webkit [256281] by Alan Coon
  • 6 edits in branches/safari-609-branch/Source

Cherry-pick r256005. rdar://problem/59299335

macCatalyst: Unnecessary I-beam over images in editable areas
https://bugs.webkit.org/show_bug.cgi?id=207370
<rdar://problem/59235429>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • dom/Position.h:

Source/WebKit:

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm: (WebKit::InteractionInformationAtPosition::encode const): (WebKit::InteractionInformationAtPosition::decode):
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::populateCaretContext): Add a bit indicating whether the forced I-beam for editable contexts should be used or not, based on whether it is adjacent to (or immediately over) a replaced element.

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

10:25 PM Changeset in webkit [256280] by Alan Coon
  • 6 edits
    1 add in branches/safari-609-branch

Cherry-pick r256000. rdar://problem/59299326

WebPage::rangeForGranularityAtPoint always returns null in the case of CharacterGranularity
https://bugs.webkit.org/show_bug.cgi?id=207350
<rdar://problem/59239914>

Reviewed by Tim Horton.

Source/WebKit:

Handle the character granularity case in WebPage::rangeForGranularityAtPoint by just returning a collapsed
Range. Certain internal clients will have a need to place and update the text selection using character
granularity; see radar for more details.

Test: UIWKInteractionViewProtocol.SelectTextWithCharacterGranularity

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView supportsTextSelectionWithCharacterGranularity]):
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::rangeForGranularityAtPoint):

Tools:

Add a test to exercise the corner case in the SPI.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/ios/UIWKInteractionViewProtocol.mm: Added.

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

10:25 PM Changeset in webkit [256279] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255989. rdar://problem/59298187

REGRESSION (r254706): Crash under WebProcessPool::terminateServiceWorkerProcess()
https://bugs.webkit.org/show_bug.cgi?id=207354
<rdar://problem/59184818>

Reviewed by Geoffrey Garen.

No new tests, not easily testable AFAIK since this happens on failure to send sync IPC to
the service worker when terminating it.

  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::terminateServiceWorkerProcess): 'auto' resolved to 'WeakPtr<WebProcessProxy>' in this method and the call to disableServiceWorkers() could cause the process to get destroyed. We would then do a null dereference on the next line.

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

10:25 PM Changeset in webkit [256278] by Alan Coon
  • 5 edits in branches/safari-609-branch

Cherry-pick r255982. rdar://problem/59298167

Web Inspector: REGRESSION(r249831): Sources: endless spinner when trying to view a resource
https://bugs.webkit.org/show_bug.cgi?id=207346
<rdar://problem/59209016>

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

LayoutTests:

  • inspector/formatting/resources/html-tests/attributes.html:
  • inspector/formatting/resources/html-tests/attributes-expected.html:

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

10:25 PM Changeset in webkit [256277] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r255908. rdar://problem/59298159

Crash when printing at WebCore: WebCore::FrameView::paintContents
<https://webkit.org/b/207313>
<rdar://problem/56675778>

Reviewed by Brent Fulgham.

  • page/PrintContext.cpp: (WebCore::PrintContext::spoolPage): (WebCore::PrintContext::spoolRect):
  • Add nullptr check for frame.view(). This matches similar checks in other methods.

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

10:25 PM Changeset in webkit [256276] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255879. rdar://problem/59299329

[macCatalyst] Incorrect IBeam cursor when selecting text on Wikipedia
https://bugs.webkit.org/show_bug.cgi?id=207299
<rdar://problem/59200545>

Reviewed by Tim Horton.

After r255827, if EventHandler selects an IBeam cursor at the position information request location, we will
always attempt to show a caret at that location, whose height is the height of the editing caret for that
visible position. However, this means that:

  • It's possible for the caret to be incorrectly sized if the caret is before a large replaced element, such as

a table. Since the request location is also outside of any line rect, it doesn't make sense to use the caret
height for the height of the cursor. Instead, fall back to computed line height. This fixes an issue on
en.wikipedia.org where the line rect would sometimes update to an enormous size when selecting text, since
the caret would temporarily hover over an editing position that is before a large table.

  • This fallback path completely negates certain cursor behaviors; partially restore this behavior by making it

so that in the case where the cursor is in editable content and the line caret first line from the top of
the hit-tested node already contains the request point, don't bother trying to recenter the line rect to be
right over the request point.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::populateCaretContext):

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

10:25 PM Changeset in webkit [256275] by Alan Coon
  • 6 edits in branches/safari-609-branch/Source

Cherry-pick r255874. rdar://problem/59298178

[iOS] Do not create sandbox reports when the UI process cannot issue extensions to diagnostics service
https://bugs.webkit.org/show_bug.cgi?id=207279
<rdar://problem/59030957>
Source/WebKit:

Reviewed by Brent Fulgham.

Do not create sandbox reports when the UI process cannot issue mach extensions to the diagnostics service.
The majority of clients are capable of doing this.

No new tests, since it is not trivial to test if no sandbox reports are generated for a violation.

  • Shared/Cocoa/SandboxExtensionCocoa.mm: (WebKit::SandboxExtensionImpl::create): (WebKit::SandboxExtensionImpl::sandboxExtensionForType): (WebKit::SandboxExtensionImpl::SandboxExtensionImpl): (WebKit::SandboxExtension::createHandleForMachLookup):
  • Shared/SandboxExtension.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess):

Source/WTF:

Reviewed by Brent Fulgham.

Add flag which avoids generating sandbox reports.

  • wtf/spi/darwin/SandboxSPI.h:

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

10:25 PM Changeset in webkit [256274] by Alan Coon
  • 2 edits in branches/safari-609-branch/Tools

Cherry-pick r255863. rdar://problem/59299151

Unreviewed build fix after r255846.

  • TestWebKitAPI/cocoa/HTTPServer.h:

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

10:25 PM Changeset in webkit [256273] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255848. rdar://problem/59298190

[IPC Hardening] Protect against bad RegistrableDomain under WebProcessProxy::didCollectPrewarmInformation()
https://bugs.webkit.org/show_bug.cgi?id=207281
<rdar://problem/55318108>

Reviewed by Geoffrey Garen.

  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::didCollectPrewarmInformation):

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

10:25 PM Changeset in webkit [256272] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255827. rdar://problem/59299345

[macCatalyst] IBeam cursor doesn't show up when hovering over text form controls prior to editing
https://bugs.webkit.org/show_bug.cgi?id=207268
<rdar://problem/59188152>

Reviewed by Tim Horton.

On macCatalyst, when hovering over textareas and input fields that have not been edited yet, the cursor fails to
change to an IBeam and instead falls back to the default style. Even though EventHandler::selectCursor()
returns IBeam, we end up not actually using an IBeam because the position information's lineCaretExtent is
an empty rect, which means the caret height is 0 and, more importantly, the line rect will not contain the
request point.

The line rect is empty in text fields that have not been edited yet because the form control's inner plaintext
contenteditable div (embedded in the shadow root) does not contain any child renderers with a non-zero height.
Even if it did, however, the element may still be much taller than the combined height of the inner div's
children, so the line rect may still not contain the position information request point (this is most easily
noticeable when focusing a textarea, typing a few letters, and then moving the cursor to near the bottom of the
textarea element).

To fix this, add a fallback path for the scenario where we want to show an IBeam, but fail to find line rects
that contain the request point. Instead, we still show an IBeam, but simply fake the lineCaretExtent to be an
element-wide rect that is the height of the caret, and is also vertically centered about the request point.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::populateCaretContext):

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

10:25 PM Changeset in webkit [256271] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255814. rdar://problem/59298180

Unreviewed, follow-up assertion fix after r255662.

  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::initializeNewWebProcess):

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

10:25 PM Changeset in webkit [256270] by Alan Coon
  • 3 edits
    2 adds in branches/safari-609-branch

Cherry-pick r255810. rdar://problem/59298154

[Web Animations] Canceling an accelerated animation before it was committed does not prevent it from playing
https://bugs.webkit.org/show_bug.cgi?id=207253
<rdar://problem/59143624>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: webanimations/accelerated-animation-canceled-before-commit.html

Merely checking whether an accelerated animation is running prior to enqueuing an action to cancel it is not sufficient
since there could be an uncommitted change to start it upon the next animation frame. The same logic would need to apply
in other situations where the playback state changes for a potentially in-flight animation.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::animationDidSeek): (WebCore::KeyframeEffect::animationWasCanceled): (WebCore::KeyframeEffect::willChangeRenderer): (WebCore::KeyframeEffect::animationSuspensionStateDidChange):

LayoutTests:

Add a new test that checks that an accelerated animation that has been enqueued to start but has
not yet been committed is correctly canceled when the cancel() method is called. This test fails
prior to this source change.

  • webanimations/accelerated-animation-canceled-before-commit-expected.html: Added.
  • webanimations/accelerated-animation-canceled-before-commit.html: Added.

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

10:25 PM Changeset in webkit [256269] by Alan Coon
  • 4 edits
    2 adds in branches/safari-609-branch

Cherry-pick r255786. rdar://problem/59298135

REGRESSION (r251320): Can't double tap to select word in Notes on iCloud.com
https://bugs.webkit.org/show_bug.cgi?id=207239
<rdar://problem/58686015>

Reviewed by Tim Horton.

Source/WebKit:

Following r251320, all synthetic mouse events on iOS additionally dispatched corresponding pointer events. This
led to duplicate "pointerdown"/"pointerup" events dispatched with every tap. r253878 fixed this by avoiding
pointer event dispatch for synthetically generated mouse events (and made this determination by consulting
syntheticClickType()).

However, in the case where we're synthesizing a mouse event for a "dblclick" event handler (after a double-
tap), we currently pass NoTap as the synthetic click event type when creating the mouse event. This causes
additional pointer events to be synthesized and dispatched during a double tap, which creates three pairs of
"pointerdown"/"pointerup" events upon double-tap. This subsequently confuses iCloud Notes' web app when double
tapping to select a word.

Fix this by passing in OneFingerTap as the synthetic click type instead (since two-finger double taps should
already be handled by the two-finger double-tap magnification gesture).

Test: pointerevents/ios/pointer-events-for-double-tap.html

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint):

LayoutTests:

Add a test to verify that performing a double tap on an element with a dblclick handler results in the following
sequence of events: [ "pointerdown", "pointerup", "pointerdown", "pointerup", "dblclick" ].

  • pointerevents/ios/pointer-events-for-double-tap-expected.txt: Added.
  • pointerevents/ios/pointer-events-for-double-tap.html: Added.
  • pointerevents/utils.js: (const.ui.new.UIController.prototype.doubleTap):

Add a helper method to simulate a double-tap gesture.

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

10:25 PM Changeset in webkit [256268] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255710. rdar://problem/59299340

macCatalyst: Shouldn't get text cursor on checkboxes
https://bugs.webkit.org/show_bug.cgi?id=207234
<rdar://problem/59155917>

Reviewed by Wenson Hsieh.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::canForceCaretForPosition): (WebKit::populateCaretContext): (WebKit::lineCaretExtent): Deleted. The I-beam forcing code was a bit too aggressive; it should consider the style of the node that it ends up finding after searching, not just assume it wants an I-beam because it's "texty".

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

10:25 PM Changeset in webkit [256267] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255705. rdar://problem/59298180

Unreviewed, follow-up assertion fix after r255662.

  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::initializeNewWebProcess):

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

10:25 PM Changeset in webkit [256266] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255691. rdar://problem/59299315

[macCatalyst] Missing custom cursors in subframes that are offset from the origin of the root view
https://bugs.webkit.org/show_bug.cgi?id=207215
<rdar://problem/59157625>

Reviewed by Tim Horton.

<https://trac.webkit.org/r255046> added support for custom cursor styles when hovering over subframes. However,
we currently try to hit-test content in the subframe using the interaction information request's point, which is
in root view coordinates; as such, we only get the correct custom cursor styles when hovering over elements in a
subframe, if the subframe is also at the origin of the root view.

To fix this, simply convert from root view coordinates to frame coordinates when performing the hit-test.
Unfortunately, this change is currently untestable; see <rdar://problem/59158410>.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::lineCaretExtent):

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

10:25 PM Changeset in webkit [256265] by Alan Coon
  • 21 edits in branches/safari-609-branch/Source

Cherry-pick r255681. rdar://problem/59298166

NetworkProcess should be notified by UIProcess when its service worker process connection should be on
https://bugs.webkit.org/show_bug.cgi?id=207122
<rdar://problem/59089780>

Reviewed by Chris Dumez.

Source/WebCore:

Add a completion handler to the create context connection callback.
This is called when the context connection should have been created.
In case there is a context connection, completion handler does nothing.
Otherwise, SWServer will retry creating a context connection if needed.

The pending connection map entry is now removed in the completion handler instead of addContextConnection.
This ensures that only one connection request is sent by network process at a time.

Add extra logging to monitor creation of a context connection.

  • workers/service/context/SWContextManager.h:
  • workers/service/server/SWServer.cpp: (WebCore::SWServer::addContextConnection): (WebCore::SWServer::removeContextConnection): (WebCore::SWServer::createContextConnectionFinished):
  • workers/service/server/SWServer.h:

Source/WebKit:

Add completion handlers to the messaging from NetworkProcess -> UIProcess -> WebProcess -> NetworkProcess
used to create a service worker context connection.

This allows NetworkProcess to ask again for a connection if the connection is still needed but NetworkProcess did not find the context connection.

This is difficult to test since we would need for the process selected to host service workers to exit between the
time it is selected and the time it sends the message to Networking process.

To ensure that the context connection is created by WebProcess, WebProcessProxy takes a background assertion until WebProcess finishes
creating the context connection to Network process.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::establishSWContextConnection):
  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::swServerForSession):
  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::establishServiceWorkerContext):
  • UIProcess/WebProcessProxy.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp: (WebKit::m_userAgent): (WebKit::WebSWContextManagerConnection::establishConnection):
  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

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

10:25 PM Changeset in webkit [256264] by Alan Coon
  • 4 edits in branches/safari-609-branch

Cherry-pick r255680. rdar://problem/59298160

Check for callback being null in Notification.requestPermission
https://bugs.webkit.org/show_bug.cgi?id=207192
<rdar://problem/59130804>

Reviewed by Chris Dumez.

Source/WebCore:

Covered by updated test.

  • Modules/notifications/Notification.cpp: (WebCore::Notification::requestPermission): Callback can be null if no function is given to requestPermission. Check this before calling the callback.

LayoutTests:

  • http/tests/notifications/notification-in-non-secure-context.html:

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

10:25 PM Changeset in webkit [256263] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255679. rdar://problem/59298180

Unreviewed, follow-up assertion fix after r255662.

  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::initializeNewWebProcess):

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

10:25 PM Changeset in webkit [256262] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255677. rdar://problem/59299115

REGRESSION(r255595): page not closed after beforeunload handler returns true
https://bugs.webkit.org/show_bug.cgi?id=207189

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-02-04
Reviewed by Chris Dumez.

We are assuming the try close did timeout in that case, because the timer is stopped before running the
beforeunload dialog.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel): Start the try close timer again when the beforeunload dialog replies.

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

10:24 PM Changeset in webkit [256261] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255664. rdar://problem/59299338

Add a WebKitAdditions hook to provide additional customizations to UIDragInteraction
https://bugs.webkit.org/show_bug.cgi?id=207177
<rdar://problem/59121266>

Reviewed by Tim Horton.

Add a WebKitAdditions extension point that runs immediately after setting up UIDragInteraction and
UIDropInteraction.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupDragAndDropInteractions]):

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

10:24 PM Changeset in webkit [256260] by Alan Coon
  • 9 edits
    2 adds in branches/safari-609-branch

Cherry-pick r255663. rdar://problem/59299135

Accelerated animations freeze on render tree rebuild
https://bugs.webkit.org/show_bug.cgi?id=201048
<rdar://problem/54612621>

Reviewed by Antoine Quint.

Source/WebCore:

If there is an accelerated animation in progress for a renderer and the render tree is rebuild the animation
does not continue with the new renderer.

To fix, make sure that the animation leaves the accelerated state when the renderer is removed. The new renderer
will then become accelerated automatically.

Original test case by Tim Guan-tin Chien.

Test: webanimations/accelerated-animation-renderer-change.html

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::willChangeRendererForElement):
  • animation/AnimationTimeline.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::willChangeRenderer):
  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::willChangeRenderer):
  • animation/WebAnimation.h:
  • rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

  • webanimations/accelerated-animation-renderer-change-expected.html: Added.
  • webanimations/accelerated-animation-renderer-change.html: Added.

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

10:24 PM Changeset in webkit [256259] by Alan Coon
  • 5 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255662. rdar://problem/59298180

Stop relying on ResponsivenessTimer to keep the WebProcess from suspending during initialization
https://bugs.webkit.org/show_bug.cgi?id=207144

Reviewed by Brady Eidson.

Stop relying on ResponsivenessTimer to keep the WebProcess from suspending during initialization. Instead, make the
WebProcess::InitializeWebProcess IPC async with a reply and take a process assertion on behalf of the WebContent
process until we get a response back.

This avoids sending an extra WebProcess::MainThreadPing IPC to the WebProcess for no reason (since we're already
sending the WebProcess::InitializeWebProcess IPC) and this is also more reliable since the ResponsivenessTimer can
actually time out and cause the process to get suspended during initialization still.

  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::initializeNewWebProcess):
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess):
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

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

10:24 PM Changeset in webkit [256258] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255658. rdar://problem/59299333

Unreviewed, fix the internal build after <rdar://problem/59132944>

  • UIProcess/ios/WKContentViewInteraction.h: Declare this helper in the header, now that it's consulted by some WebKitAdditions code.

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

10:24 PM Changeset in webkit [256257] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255625. rdar://problem/59299317

Add a WebKitAdditions hook to override the behavior of -[WKContentView gestureRecognizer:shouldReceiveTouch:]
https://bugs.webkit.org/show_bug.cgi?id=207162
<rdar://problem/59129739>

Reviewed by Tim Horton.

Allow an internal implementation of -_allowGestureRecognizer:toReceiveTouch: to prevent touches from being
routed to certain gesture recognizers, if necessary.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView gestureRecognizer:shouldReceiveTouch:]):

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

10:24 PM Changeset in webkit [256256] by Alan Coon
  • 4 edits in branches/safari-609-branch/Source

Cherry-pick r255615. rdar://problem/59298181

Crash in WebCore::IDBServer::IDBServer::createIndex
https://bugs.webkit.org/show_bug.cgi?id=207137
<rdar://problem/59096231>

Reviewed by Darin Adler.

Source/WebCore:

Export IDBIndexInfo::isolatedCopy so it can be used in WebKitLegacy framework code.

  • Modules/indexeddb/shared/IDBIndexInfo.h:

Source/WebKitLegacy:

  • Storage/InProcessIDBServer.cpp: (InProcessIDBServer::createIndex): Create an isolated copy of IDBIndexInfo before passing it to IDB thread.

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

10:24 PM Changeset in webkit [256255] by Alan Coon
  • 6 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255610. rdar://problem/59298157

[WK2] Use per-UIProcess default cookie storage for Mac Catalyst apps
https://bugs.webkit.org/show_bug.cgi?id=207139
<rdar://problem/59047014>

Reviewed by Brent Fulgham.

Use per-UIProcess default cookie storage for Mac Catalyst apps, similarly to what
we do for regular macOS apps.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcessCreationParameters.cpp: (WebKit::NetworkProcessCreationParameters::encode const): (WebKit::NetworkProcessCreationParameters::decode):
  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeNetworkProcess):

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

10:24 PM Changeset in webkit [256254] by Alan Coon
  • 6 edits
    2 adds in branches/safari-609-branch

Cherry-pick r255603. rdar://problem/59299321

[iOS 13] Dragging on-screen volume control on a YouTube video selects text around the panel
https://bugs.webkit.org/show_bug.cgi?id=207140
<rdar://problem/58852938>

Reviewed by Tim Horton.

Source/WebKit:

This bug occurs on iPadOS when long pressing the volume controls on the desktop version of YouTube, and then
performing a pan gesture; this activates the highlight text selection gesture recognizer added in iOS 13,
causing text to be selected while adjusting the volume using these custom controls. On macOS, we avoid this
because Node::canStartSelection() returns false, due to a container node having both user-drag: element
and user-select: none; in this scenario, we allow dragging to take precendence over text selection, so the
volume slider can be moved using a mouse without simultaneously selecting text.

This logic is currently absent on iOS, where UIKit text interaction gesture recognizers ask us for information
about the DOM at given locations, and we determine whether to allow text interaction gestures (such as long
pressing) to begin in -textInteractionGesture:shouldBeginAtPoint: and -hasSelectablePositionAtPoint:.
Ideally, we'd want to eventually unify these two codepaths for triggering text selection (and preferably just
have both go through EventHandler); in lieu of this, simply make the iOS codepath behave a little more like
macOS by adding a bit to allow text interaction gestures to bail in the case where at least one container of the
hit-tested element is both draggable and unselectable.

Test: editing/selection/ios/prefer-drag-over-text-selection.html

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm: (WebKit::InteractionInformationAtPosition::encode const): (WebKit::InteractionInformationAtPosition::decode):

Add the new bit to InteractionInformationAtPosition.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

Avoid beginning text selection if the bit is set.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::selectionPositionInformation):

Move a comment about the ">= 97% of the document's visible area" heuristic next to the relevant code, and also
leave a FIXME mentioning that we should reconsider whether this is really needed; it seems that this was
originally intended to avoid ending up with an excessively large block selection, but block selection has been
removed entirely since iOS 12. That said, this logic may still be helping avoid situations where the text
selection is too aggressive on iOS and ends up selecting too much text.

LayoutTests:

Add a layout test to verify that we don't allow text selection gestures inside of containers that have both
user-drag: element and user-select: none.

  • editing/selection/ios/prefer-drag-over-text-selection-expected.txt: Added.
  • editing/selection/ios/prefer-drag-over-text-selection.html: Added.

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

10:24 PM Changeset in webkit [256253] by Alan Coon
  • 6 edits
    4 adds in branches/safari-609-branch

Cherry-pick r255593. rdar://problem/59298189

[Web Animations] Accelerated animations don't run until their natural completion
https://bugs.webkit.org/show_bug.cgi?id=207130
<rdar://problem/59106047>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: webanimations/transform-accelerated-animation-finishes-before-removal.html

webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise.html

Ensure we don't tear down a composited renderer until all of its runnning accelerated animations are completed.
The accelerated animations will be queued for removal in the next animation frame.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::isRunningAcceleratedAnimationForProperty const):
  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::isCurrentlyAffectingProperty const):

LayoutTests:

Add two new tests that ensures that an accelerated animation still yields compositing on an element when
its finished promise is resolved, but that it's no longer the case on the next frame.

This required an existing test to be updated to wait until the next frame before checking the composited
status of an element on which an animation had just completed.

  • compositing/geometry/limit-layer-bounds-opacity-transition.html:
  • webanimations/transform-accelerated-animation-finishes-before-removal-expected.txt: Added.
  • webanimations/transform-accelerated-animation-finishes-before-removal.html: Added.
  • webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise-expected.txt: Added.
  • webanimations/transform-accelerated-animation-removed-one-frame-after-finished-promise.html: Added.

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

10:24 PM Changeset in webkit [256252] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r255586. rdar://problem/59298164

Replace the custom allocator in AudioArray::allocate() with fastAlignedMalloc().
https://bugs.webkit.org/show_bug.cgi?id=206504

Reviewed by Filip Pizlo.

AudioArray wants to have its data aligned at 16-byte boundaries, as that's a requirement for
some of the accelerated math frameworks used by Web Audio. Now that we have fastAlignedMalloc(),
there's no need to use a custom aligned allocator.

Drive-by fixes: clean up the constructors a bit to use the modern initialization syntax.

  • platform/audio/AudioArray.h: (WebCore::AudioArray::AudioArray): (WebCore::AudioArray::~AudioArray): (WebCore::AudioArray::allocate): (WebCore::AudioArray::data): (WebCore::AudioArray::data const): (WebCore::AudioArray::alignedAddress): Deleted.

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

10:24 PM Changeset in webkit [256251] by Alan Coon
  • 4 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r255582. rdar://problem/59298188

[ macOS wk2 ] http/tests/media/media-stream/get-display-media-prompt.html is flaky failure
https://bugs.webkit.org/show_bug.cgi?id=206958
<rdar://problem/59003765>

Reviewed by Eric Carlson.

We added a rule to only allow one getDisplayMedia call per gesture.
For that reason, we were storing a pointer to the gesture event and
resetting in case the current gesture event was equal to the stored pointer.
Instead, store a WeakPtr which ensures that if the previous event is destroyed,
the weak pointer will be null and so will not have the same value as the new gesture event.
Covered by existing tests no longer being flaky.

  • Modules/mediastream/MediaDevices.cpp: (WebCore::MediaDevices::computeUserGesturePriviledge):
  • Modules/mediastream/MediaDevices.h:
  • dom/UserGestureIndicator.h:

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

10:24 PM Changeset in webkit [256250] by Alan Coon
  • 8 edits in branches/safari-609-branch/Source

Cherry-pick r255581. rdar://problem/59298169

[macOS] AirPlay sometimes stops after 60 minutes of playback
https://bugs.webkit.org/show_bug.cgi?id=207056
Source/WebCore:

<rdar://problem/53649508>

Reviewed by Jer Noble.

No new tests, this only reproduces when playing to an AirPlay device.

AVPlayerItem.tracks is empty during AirPlay. If AirPlay is activated immediately
after the item is created, as is typically the case when switching from an MSE to
a url based player, MediaPlayerPrivateAVFoundationObjC doesn't know if the AVPlayerItem
has audio or video so the state reported to the WebMediaSessionManager is incorrect.
AirPlay can't actually be active if an item doesn't have audio or video, so always claim
to have both during AirPlay.

Converted WebMediaSessionManager logging from debug-only to runtime to make it easier
to diagnose problems in the future.

  • Modules/mediasession/WebMediaSessionManager.cpp: (WebCore::mediaProducerStateString): (WebCore::WebMediaSessionLogger::create): (WebCore::WebMediaSessionLogger::WebMediaSessionLogger): (WebCore::WebMediaSessionLogger::log const): (WebCore::WebMediaSessionManager::logger): (WebCore::WebMediaSessionManager::alwaysOnLoggingAllowed const): (WebCore::WebMediaSessionManager::setMockMediaPlaybackTargetPickerEnabled): (WebCore::WebMediaSessionManager::setMockMediaPlaybackTargetPickerState): (WebCore::WebMediaSessionManager::mockMediaPlaybackTargetPickerDismissPopup): (WebCore::WebMediaSessionManager::addPlaybackTargetPickerClient): (WebCore::WebMediaSessionManager::removePlaybackTargetPickerClient): (WebCore::WebMediaSessionManager::removeAllPlaybackTargetPickerClients): (WebCore::WebMediaSessionManager::showPlaybackTargetPicker): (WebCore::WebMediaSessionManager::clientStateDidChange): (WebCore::WebMediaSessionManager::setPlaybackTarget): (WebCore::WebMediaSessionManager::externalOutputDeviceAvailableDidChange): (WebCore::WebMediaSessionManager::playbackTargetPickerWasDismissed): (WebCore::WebMediaSessionManager::configurePlaybackTargetClients): (WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring): (WebCore::WebMediaSessionManager::configureWatchdogTimer): (WebCore::WebMediaSessionManager::watchdogTimerFired): (WebCore::ClientState::logAlways const): Deleted.
  • Modules/mediasession/WebMediaSessionManager.h:
  • Modules/mediasession/WebMediaSessionManagerClient.h: (WebCore::WebMediaSessionManagerClient::alwaysOnLoggingAllowed):
  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::mediaState const):
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::hasVideo const): (WebCore::MediaPlayerPrivateAVFoundationObjC::hasAudio const):

Source/WebKit:

Reviewed by Jer Noble.

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

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

10:24 PM Changeset in webkit [256249] by Alan Coon
  • 4 edits in branches/safari-609-branch

Cherry-pick r255552. rdar://problem/59298191

ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) on animations/keyframe-autoclose-brace.html
https://bugs.webkit.org/show_bug.cgi?id=207071
<rdar://problem/59076249>

Patch by Antoine Quint <Antoine Quint> on 2020-02-02
Reviewed by Dean Jackson.

Source/WebCore:

We cannot add CSSPropertyInvalid to a HashSet<CSSPropertyID>, because it triggers an ASSERT, and also we shouldn't
because we wouldn't know how to animate that CSS property.

  • animation/AnimationTimeline.cpp: (WebCore::compileTransitionPropertiesInStyle):

LayoutTests:

The crash is fixed, we can start running the test as expected again.

  • platform/ipad/TestExpectations:

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

10:24 PM Changeset in webkit [256248] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/JavaScriptCore

Cherry-pick r255539. rdar://problem/59299142

GetButterfly should check if the input value is an object in safe to execute
https://bugs.webkit.org/show_bug.cgi?id=207082

Reviewed by Mark Lam.

We can only hoist GetButterfly when we know the incoming value is an object.
We might want to reconsider making GetButterfly use ObjectUse as its edge
kind, but that's out of the scope of this patch. Currently, we use CellUse
for GetButterfly node's child1.

  • dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute):

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

10:24 PM Changeset in webkit [256247] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255527. rdar://problem/59299116

Unreviewed build fix after r255522.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): Switched to a C-style cast.

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

10:24 PM Changeset in webkit [256246] by Alan Coon
  • 2 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r255525. rdar://problem/59298191

[ iOS Debug wk2 ] animations/keyframe-autoclose-brace.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207071

Unreviewed test gardening.

Patch by Jason Lawrence <Jason_Lawrence> on 2020-01-31

  • platform/ipad/TestExpectations:

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

10:24 PM Changeset in webkit [256245] by Alan Coon
  • 22 edits in branches/safari-609-branch

Cherry-pick r255522. rdar://problem/59299116

Add KVO SPI WKWebView._negotiatedLegacyTLS
https://bugs.webkit.org/show_bug.cgi?id=207067

Patch by Alex Christensen <achristensen@webkit.org> on 2020-01-31
Reviewed by Andy Estes.

Source/WebKit:

Covered by API tests.

  • NetworkProcess/NetworkDataTask.cpp: (WebKit::NetworkDataTask::negotiatedLegacyTLS const):
  • NetworkProcess/NetworkDataTask.h: (WebKit::NetworkDataTaskClient::negotiatedLegacyTLS const):
  • NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::negotiatedLegacyTLS const):
  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
  • Shared/Authentication/AuthenticationManager.cpp: (WebKit::AuthenticationManager::negotiatedLegacyTLS const):
  • Shared/Authentication/AuthenticationManager.h:
  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _negotiatedLegacyTLS]):
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm: (WebKit::NavigationState::willChangeNegotiatedLegacyTLS): (WebKit::NavigationState::didChangeNegotiatedLegacyTLS):
  • UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::negotiatedLegacyTLS):
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/PageLoadState.cpp: (WebKit::PageLoadState::commitChanges): (WebKit::PageLoadState::hasNegotiatedLegacyTLS const): (WebKit::PageLoadState::negotiatedLegacyTLS): (WebKit::PageLoadState::didCommitLoad):
  • UIProcess/PageLoadState.h: (WebKit::PageLoadState::Observer::willChangeNegotiatedLegacyTLS): (WebKit::PageLoadState::Observer::didChangeNegotiatedLegacyTLS): (WebKit::PageLoadState::Data::Data): Deleted.
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm: (-[TLSObserver observeValueForKeyPath:ofObject:change:context:]): (-[TLSObserver waitUntilNegotiatedLegacyTLSChanged]): (TestWebKitAPI::TEST):
  • TestWebKitAPI/config.h:

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

10:24 PM Changeset in webkit [256244] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255438. rdar://problem/59299136

Disable Service Workers before terminating an unresponsive service worker process
https://bugs.webkit.org/show_bug.cgi?id=206994

Reviewed by Chris Dumez.

In case a process becomes unresponsive, we terminate it in case it is a service worker process.
In that case, we should make sure not to call the service worker process crash callback.
To do so, disable service workers before terminating the IPC connection.

  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::didBecomeUnresponsive):

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

10:23 PM Changeset in webkit [256243] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r255898. rdar://problem/59298172

Unreviewed build fix for Windows ports since r255875
https://bugs.webkit.org/show_bug.cgi?id=207073
<rdar://problem/59168065>

WEBCORE_TESTSUPPORT_EXPORT should be used only for WebCoreTestSupport, not for WebCore
See also Bug 203876.

  • storage/StorageNamespaceProvider.h: Replaced WEBCORE_TESTSUPPORT_EXPORT with WEBCORE_EXPORT.

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

10:23 PM Changeset in webkit [256242] by Alan Coon
  • 15 edits
    3 adds in branches/safari-609-branch

Cherry-pick r255875. rdar://problem/59298172

Regression(r248734) StorageAreaMap objects are getting leaked
https://bugs.webkit.org/show_bug.cgi?id=207073
<rdar://problem/59168065>

Reviewed by Darin Adler.

Source/WebCore:

Add test infrastructure for testing this change.

Test: http/tests/storage/storage-map-leaking.html

  • storage/StorageNamespace.h: (WebCore::StorageNamespace::storageAreaMapCountForTesting const):
  • storage/StorageNamespaceProvider.h:
  • testing/Internals.cpp: (WebCore::Internals::storageAreaMapCount const):
  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

Make sure that StorageAreaMap objects are getting removed from the HashMap
in StorageNamespaceImpl, once they no longer have any users.

  • WebProcess/WebStorage/StorageAreaImpl.cpp: (WebKit::StorageAreaImpl::StorageAreaImpl): (WebKit::StorageAreaImpl::~StorageAreaImpl):
  • WebProcess/WebStorage/StorageAreaMap.cpp: (WebKit::StorageAreaMap::incrementUseCount): (WebKit::StorageAreaMap::decrementUseCount):
  • WebProcess/WebStorage/StorageAreaMap.h:
  • WebProcess/WebStorage/StorageNamespaceImpl.cpp: (WebKit::StorageNamespaceImpl::destroyStorageAreaMap): (WebKit::StorageNamespaceImpl::didDestroyStorageAreaMap): Deleted.
  • WebProcess/WebStorage/StorageNamespaceImpl.h: (WebKit::StorageNamespaceImpl::storageType const): Deleted. (WebKit::StorageNamespaceImpl::storageNamespaceID const): Deleted. (WebKit::StorageNamespaceImpl::topLevelOrigin const): Deleted. (WebKit::StorageNamespaceImpl::quotaInBytes const): Deleted.

LayoutTests:

Add layout test coverage.

  • TestExpectations:
  • http/tests/storage/resources/storage-map-leaking-iframe.html: Added.
  • http/tests/storage/storage-map-leaking-expected.txt: Added.
  • http/tests/storage/storage-map-leaking.html: Added.
  • platform/wk2/TestExpectations:

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

10:23 PM Changeset in webkit [256241] by Alan Coon
  • 8 edits in branches/safari-609-branch/Source

Versioning.

10:08 PM Changeset in webkit [256240] by Alan Coon
  • 4 edits
    1 add in branches/safari-610.1.3-branch

Cherry-pick r256234. rdar://problem/59336307

[iOS] Crash when granting access to asset services
https://bugs.webkit.org/show_bug.cgi?id=207520
Source/WebKit:

<rdar://problem/59321848>

Reviewed by Brent Fulgham.

Pass correct handle when calling SandboxExtension::createHandleForMachLookup.

API test: WebKit.GrantAccessToMobileAssetsCrash

  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::grantAccessToAssetServices):

Tools:

Reviewed by Brent Fulgham.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/GrantAccessToMobileAssets.mm: Added. (TEST):

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

10:08 PM Changeset in webkit [256239] by Alan Coon
  • 2 edits in branches/safari-610.1.3-branch/Source/WebCore

Cherry-pick r256228. rdar://problem/59336278

[iOS] REGRESSION (r255592): The simulated mouse event dispatch quirk should not be on by default
https://bugs.webkit.org/show_bug.cgi?id=207513
<rdar://problem/59326119>

Reviewed by Tim Horton.

Turn shouldDispatchSimulatedMouseEvents back off by default (r255592 enabled it by default on all web pages).

  • page/Quirks.cpp: (WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

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

7:35 PM Changeset in webkit [256238] by jiewen_tan@apple.com
  • 6 edits in trunk/Source/WebKit

[WebAuthn] Move the async code from WebAuthenticationPanelClient to AuthenticatorManager
https://bugs.webkit.org/show_bug.cgi?id=206248

Reviewed by Alex Christensen.

No change of behaviors.

  • UIProcess/API/APIWebAuthenticationPanelClient.h:

(API::WebAuthenticationPanelClient::selectAssertionResponse const):

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::serviceStatusUpdated):
(WebKit::AuthenticatorManager::authenticatorStatusUpdated):
(WebKit::AuthenticatorManager::requestPin):
(WebKit::AuthenticatorManager::selectAssertionResponse):
(WebKit::AuthenticatorManager::runPanel):
(WebKit::AuthenticatorManager::invokePendingCompletionHandler):
(WebKit::AuthenticatorManager::dispatchPanelClientCall const):

  • UIProcess/WebAuthentication/AuthenticatorManager.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:

(WebKit::WebAuthenticationPanelClient::updatePanel const):
(WebKit::WebAuthenticationPanelClient::dismissPanel const):
(WebKit::WebAuthenticationPanelClient::requestPin const):
(WebKit::WebAuthenticationPanelClient::selectAssertionResponse const):

7:32 PM Changeset in webkit [256237] by Jonathan Bedard
  • 2 edits in trunk/Tools

TestWebKitAPI: Support ClipboardTests.ReadMultipleItems on Catalyst
https://bugs.webkit.org/show_bug.cgi?id=207501
<rdar://problem/59323414>

Reviewed by Alex Christensen.

  • TestWebKitAPI/Tests/WebKitCocoa/ClipboardTests.mm:

(writeMultipleObjectsToPlatformPasteboard): All iOS family ports should have
The same behavior.

6:18 PM Changeset in webkit [256236] by commit-queue@webkit.org
  • 12 edits
    1 add in trunk

Add a variant of -[WKWebViewPrivate _getContentsAsStringWithCompletionHandler:] that includes contents from subframes
https://bugs.webkit.org/show_bug.cgi?id=207352
<rdar://problem/59115798>

Patch by Alan Sien Wei Hshieh <hshieh@apple.com> on 2020-02-10
Reviewed by Alex Christensen.

Source/WebKit:

A number of intelligence features like Spotlight rely on -_getContentsAsStringWithCompletionHandler:. However, this
method does not return content strings for subframes. This means that Spotlight and others are not able to get
text for things like AMP pages, that live in subframes. -_getContentsAsStringWithCompletionHandler: has clients outside
of just intelligence features, and we don't want to wholesale change their behavior. As a result, introduce a new
-_getContentsAsStringInAllFrames:withCompletionHandler: which clients can adopt as necessary. Providing NO for the first
parameter allows clients to get the same contents as -_getContentsAsStringWithCompletionHandler:. Otherwise, we enumerate
all subframes and extract text from there. Finally, append a test for getting stuff out of frames.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _getContentsAsStringWithCompletionHandler:]):
(-[WKWebView _getContentsOfAllFramesAsStringWithCompletionHandler:]): Call the new function to extract contents from all
frames.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h: Expose a new SPI for clients.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getContentsAsStringInAllFrames): Piping. This emulates what getContentsAsString() does.

  • UIProcess/WebPageProxy.h: Expose new method.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getContentsAsString): Augment to take a flag saying whether or not we want to extract
from all frames. If we do, iterate over all the frames and get their content strings, appending two
new lines in the middle.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in: Piping.
  • Shared/ContentAsStringIncludesChildFrames.h: Add a new header to expose an enum.

Tools:

Add a test to exercise the new SPI.

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm: Add a test for getting text from all frames with

a webpage that contains text in subframes.

6:08 PM Changeset in webkit [256235] by sihui_liu@apple.com
  • 6 edits in trunk/LayoutTests

REGRESSION: (253807) [ macOS iOS ] storage/indexeddb/intversion-long-queue-private.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=206965
<rdar://problem/59005652>

Reviewed by Ryosuke Niwa.

Modify a test to make it less flaky. Based on our current implementation, there is no guarantee that Block event on
delete request would be fired before Complete event on transaction from connection2 in this test. The events
sequence we are sure are:

  1. UpgradeNeeded event on openRequest2 -> VersionChange event on connection2 -> Complete event on VersionChange

transaction on connection2 -> Success event on openRequest2.

  1. VersionChange event on connection2 -> Block event on delete request.

Therefore I am changing the test to ensure sequence 1.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • storage/indexeddb/intversion-long-queue-expected.txt:
  • storage/indexeddb/intversion-long-queue-private-expected.txt:
  • storage/indexeddb/resources/intversion-long-queue.js:

(connection2Blocked):
(connection2UpgradeNeeded):
(connection2VersionChangeCallback):
(deleteDatabaseBlockedCallback): Deleted.

5:46 PM Changeset in webkit [256234] by pvollan@apple.com
  • 4 edits
    1 add in trunk

[iOS] Crash when granting access to asset services
https://bugs.webkit.org/show_bug.cgi?id=207520
Source/WebKit:

<rdar://problem/59321848>

Reviewed by Brent Fulgham.

Pass correct handle when calling SandboxExtension::createHandleForMachLookup.

API test: WebKit.GrantAccessToMobileAssetsCrash

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::grantAccessToAssetServices):

Tools:

Reviewed by Brent Fulgham.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/GrantAccessToMobileAssets.mm: Added.

(TEST):

5:13 PM Changeset in webkit [256233] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

WebKit::WebProcessPool::initializeClassesForParameterCoding() should keep a copy of CString
<https://webkit.org/b/207519>
<rdar://problem/59043436>

Reviewed by Brent Fulgham.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::initializeClassesForParameterCoding):

  • Change className to keep a copy of the CString object.
4:53 PM Changeset in webkit [256232] by Chris Dumez
  • 2 edits in trunk/Tools

[DRT] InternalSettingsGenerated::resetToConsistentState() may override TestOptions
https://bugs.webkit.org/show_bug.cgi?id=207481

Reviewed by Alexey Proskuryakov.

InternalSettingsGenerated::resetToConsistentState() may override TestOptions such as enableBackForwardCache.
This is causing issues such as the back/forward cache sometimes getting enabled on tests where
TestOptions::enableBackForwardCache() is false, because a previous test has enabled the back/forward cache.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebViewToConsistentStateBeforeTesting):
Make sure we reset preferences after we call WebCoreTestSupport::resetInternalsObject(), since
resetInternalsObject() updates settings and TestOptions / DRT preferences should have priority
over internal settings.

4:49 PM Changeset in webkit [256231] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

Regression: (r256009?) [ Mojave wk2 Debug ] webrtc/peerconnection-page-cache-long.html is crashing.
https://bugs.webkit.org/show_bug.cgi?id=207521

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:44 PM Changeset in webkit [256230] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Adjust the minor version number for the desktop user agent string.
https://bugs.webkit.org/show_bug.cgi?id=207498
<rdar://problem/59274765>

Patch by Keith Rollin <Keith Rollin> on 2020-02-10
Reviewed by Wenson Hsieh.

This helps with Netflix compatibility on the iPad.

No new tests -- no new or changed functionality.

  • platform/ios/UserAgentIOS.mm:

(WebCore::standardUserAgentWithApplicationName):

4:30 PM Changeset in webkit [256229] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] tiled-drawing/simple-document-with-margin-tiles.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207518

unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:22 PM Changeset in webkit [256228] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

[iOS] REGRESSION (r255592): The simulated mouse event dispatch quirk should not be on by default
https://bugs.webkit.org/show_bug.cgi?id=207513
<rdar://problem/59326119>

Reviewed by Tim Horton.

Turn shouldDispatchSimulatedMouseEvents back off by default (r255592 enabled it by default on all web pages).

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

4:12 PM Changeset in webkit [256227] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] inspector/animation/lifecycle-css-transition.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207517

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:57 PM Changeset in webkit [256226] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/wpt/service-workers/service-worker-spinning-fetch.https.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207515

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:49 PM Changeset in webkit [256225] by pvollan@apple.com
  • 4 edits
    1 add in trunk

[watchOS] Notification listener is never unregistered
https://bugs.webkit.org/show_bug.cgi?id=207459
Source/WebKit:

<rdar://problem/58923393>

Reviewed by Maciej Stachowiak.

On watchOS, the backlight changed notification is registered in WebProcessPool::registerNotificationObservers(),
but not unregistered in WebProcessPool::unregisterNotificationObservers().

API test: WebKit.BacklightLevelNotificationCrash

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::unregisterNotificationObservers):

Tools:

Reviewed by Maciej Stachowiak.

Add a test which tests that posting a backlight level change notification will not cause a crash.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/BacklightLevelNotification.mm: Added.

(TEST):

3:46 PM Changeset in webkit [256224] by Alan Coon
  • 8 edits in branches/safari-610.1.1.4-branch/Source

Versioning.

3:17 PM Changeset in webkit [256223] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/WebCore

[WebCore] Shrink Vectors passed to SharedBuffer
https://bugs.webkit.org/show_bug.cgi?id=207503

Reviewed by Yusuke Suzuki.

Once SharedBuffer::DataSegment is created, the content won't change in its life cycle. Shrink the passed vector
before assigning to member variable to save space.

With the quick research, when displaying Apple's website, 1~3% RSS usage reduction on PlayStation port.

No new tests because there's no behavior change.

  • platform/SharedBuffer.h:
3:14 PM Changeset in webkit [256222] by Antti Koivisto
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Win ] ( r254044 ) css1/box_properties/padding_left.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207480
<rdar://problem/59316463>

Unreviewed test gardening.

  • platform/win/css1/box_properties/padding_left-expected.txt:
3:11 PM Changeset in webkit [256221] by Russell Epstein
  • 1 copy in tags/Safari-609.1.17.2.1

Tag Safari-609.1.17.2.1.

3:03 PM Changeset in webkit [256220] by Alan Coon
  • 8 edits in branches/safari-610.1.3-branch/Source

Versioning.

2:43 PM Changeset in webkit [256219] by Russell Epstein
  • 2 edits in branches/safari-609.1.17.2-branch/Source/WebKit

Cherry-pick r256105. rdar://problem/59301764

Fix the watchOS build after <rdar://problem/56134081>
https://bugs.webkit.org/show_bug.cgi?id=207443
<rdar://problem/59295173>

Reviewed by Maciej Stachowiak.

Use the version of the SPI that's guaranteed to be available across all platforms.

  • UIProcess/ios/WKContentViewInteraction.mm: (gestureRecognizerModifierFlags):

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

2:42 PM Changeset in webkit [256218] by Alan Coon
  • 1 copy in branches/safari-610.1.3-branch

New branch.

2:40 PM Changeset in webkit [256217] by timothy@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r246055): Data detected URLs are no longer blue
https://bugs.webkit.org/show_bug.cgi?id=207490
rdar://problem/58760796

Reviewed by Tim Horton.

This matches how the old code ended up working, since the old approach inlined the blue link color when
"shouldUseLightLinks" was false. This change allows the link style color to naturally apply as expected.
DD only uses light links when the category is "link" or "phone number" and not in the email signature.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange): Only set color: currentColor when setting underline color.

2:39 PM Changeset in webkit [256216] by Russell Epstein
  • 8 edits in branches/safari-609.1.17.2-branch/Source

Versioning.

2:38 PM Changeset in webkit [256215] by commit-queue@webkit.org
  • 27 edits in trunk

Standard gamepad mapping for GameControllerGamepads
https://bugs.webkit.org/show_bug.cgi?id=206033

Patch by James Howard <jameshoward@mac.com> on 2020-02-10
Reviewed by Dean Jackson.
Source/WebCore:

Extend PlatformGamepad to add a field for the gamepad mapping.
The mapping defines the order and interpretation of the axes and
buttons vectors, and is passed along to users of the Gamepad
API[1].

Letting PlatformGamepad subclassers define their mapping is the
natural place for this functionality. The PlatformGamepad
already defines the order of the axes and buttons and
PlatformGamepad subclassers may know something about the
physical layout of the gamepad they represent.

This change modifies the GameControllerGamepad subclass of
PlatformGamepad to set the mapping to "standard" when a
GCExtendedGamepad is detected, and to bind the axes and buttons
appropriately. Previously, the buttons and axes were bound
arbitrarily, and in some cases incompletely. While that wasn't a
bug per se, because with the mapping set to the empty string an
implementation is free to provide any interpretation of the
gamepad elements it likes, it was certainly less useful than the
"standard" mapping.

[1] https://www.w3.org/TR/gamepad/#remapping

  • Modules/gamepad/Gamepad.cpp:

(WebCore::Gamepad::Gamepad):

  • platform/gamepad/PlatformGamepad.h:

(WebCore::PlatformGamepad::mapping const):

  • platform/gamepad/cocoa/GameControllerGamepad.mm:

(WebCore::GameControllerGamepad::setupAsExtendedGamepad):

  • testing/MockGamepad.cpp:

(WebCore::MockGamepad::MockGamepad):
(WebCore::MockGamepad::updateDetails):

  • testing/MockGamepad.h:
  • testing/MockGamepadProvider.cpp:

(WebCore::MockGamepadProvider::setMockGamepadDetails):

  • testing/MockGamepadProvider.h:
  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::setMockGamepadDetails):

  • testing/js/WebCoreTestSupport.h:

Source/WebKit:

Make the mapping as provided by PlatformGamepad
available in UIGamepad, and pass it along to
GamepadData so it can be correctly reflected
in the Gamepad API.

  • Shared/Gamepad/GamepadData.cpp:

(WebKit::GamepadData::GamepadData):
(WebKit::GamepadData::encode const):
(WebKit::GamepadData::decode):

  • Shared/Gamepad/GamepadData.h:

(WebKit::GamepadData::mapping const):

  • UIProcess/Gamepad/UIGamepad.cpp:

(WebKit::UIGamepad::UIGamepad):
(WebKit::UIGamepad::fullGamepadData const):

  • UIProcess/Gamepad/UIGamepad.h:
  • WebProcess/Gamepad/WebGamepad.cpp:

(WebKit::WebGamepad::WebGamepad):

Tools:

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setMockGamepadDetails):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • gamepad/gamepad-polling-access-expected.txt:
  • gamepad/gamepad-polling-access.html:
  • gamepad/gamepad-timestamp.html:
  • gamepad/gamepad-visibility-1.html:
2:27 PM Changeset in webkit [256214] by Simon Fraser
  • 3 edits
    3 adds in trunk

WebContent jetsams on Sony lens webpage due to spike of IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=207493
rdar://problem/59020443

Reviewed by Zalan Bujtas.
Source/WebCore:

There were three issues that contributed to massive backing store allocation on
<https://www.sony.com/electronics/lenses/t/camera-lenses>.

The first, fixed in r256095, was that the Web Animations code unioned the untransitioning
bounds with the transitioning bounds, causing the computation of large extent rects.

The second, fixed in r256181, was that GraphicsLayerCA would keep hold of a transform
animation for an extra frame, causing a rendering update where
RenderLayerBacking::updateGeometry() would have cleared the extent, but GraphicsLayerCA
still thought transform was animating, causing GraphicsLayerCA::updateCoverage() to keep
backing store attached.

This patch is the final fix; when animations start and end, we need to ensure that
RenderLayerBacking::updateGeometry() is called so that we compute the animation extent in
the same frame that adds the animation.

Test: compositing/backing/transition-extent.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::startAnimation):
(WebCore::RenderLayerBacking::animationFinished):

LayoutTests:

Test with an out-of-view transitioning element which should not get backing store.

  • compositing/backing/transition-extent-expected.txt: Added.
  • compositing/backing/transition-extent.html: Added.
  • platform/ios-wk2/compositing/backing/transition-extent-expected.txt: Added.
2:24 PM Changeset in webkit [256213] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug wk2 ] imported/w3c/web-platform-tests/fetch/api/request/destination/fetch-destination-worker.https.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207509

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:08 PM Changeset in webkit [256212] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Display flaky layout test names in build summary
https://bugs.webkit.org/show_bug.cgi?id=207504

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(ReRunWebKitTests.evaluateCommand): Drive-by fix to correct the pluralization.
(AnalyzeLayoutTestsResults.report_pre_existing_failures): Append the flaky failure information.
(AnalyzeLayoutTestsResults.start):

2:08 PM Changeset in webkit [256211] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] webgpu/whlsl/textures-load.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207508

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:35 PM Changeset in webkit [256210] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] http/wpt/cache-storage/cache-put-keys.https.any.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207496

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
1:29 PM Changeset in webkit [256209] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Folloup to r256193 to set the proper ImageOnlyFailure expectation.
https://bugs.webkit.org/show_bug.cgi?id=207477

unreviewed test gardening.

  • platform/win/TestExpectations:
1:27 PM Changeset in webkit [256208] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Win ] (r255593) webanimations/transform-accelerated-animation-finishes-before-removal.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207499

Unreviewed test gardening.

  • platform/win/TestExpectations:
1:23 PM Changeset in webkit [256207] by rniwa@webkit.org
  • 8 edits in trunk

Don't update selection when calling setSelectionRange on a disconnected input element
https://bugs.webkit.org/show_bug.cgi?id=207357

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaselined the test that progressed a little. The test now passes offset checks but still fails direction check.

  • web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt:

Source/WebCore:

Don't update FrameSelection when the text form control element is disconnected from document.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setSelectionRange):

LayoutTests:

Rebaselined the test that has progressed with this change.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
1:14 PM Changeset in webkit [256206] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] Use SetBuildSummary instead of buildFinished in Layout tests
https://bugs.webkit.org/show_bug.cgi?id=207492

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(RunWebKitTests.evaluateCommand):
(ReRunWebKitTests.evaluateCommand):
(AnalyzeLayoutTestsResults.report_pre_existing_failures):

  • BuildSlaveSupport/ews-build/factories.py:

(TestFactory.init):

1:06 PM Changeset in webkit [256205] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Win ] (r255383) webanimations/width-and-opacity-separate-animation-yields-compositing.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207495

Unreviewed test gardening.

  • platform/win/TestExpectations:
12:58 PM Changeset in webkit [256204] by Russell Epstein
  • 1 copy in branches/safari-609.1.17.2-branch

New branch, safari-609.1.17.2-branch.

12:51 PM Changeset in webkit [256203] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WTF

Unreviewed, speculative build fix on watchOS simulator
https://bugs.webkit.org/show_bug.cgi?id=207183

  • wtf/HashTable.h:

(WTF::HashTableCapacityForSize::capacityForSize):

12:40 PM Changeset in webkit [256202] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Placate exception check validator in GenericArguments<Type>::put().
https://bugs.webkit.org/show_bug.cgi?id=207485
<rdar://problem/59302535>

Reviewed by Robin Morisset.

JSTests:

  • stress/placate-exception-check-validator-in-GenericArguments-put.js: Added.

Source/JavaScriptCore:

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::put):

12:26 PM Changeset in webkit [256201] by jiewen_tan@apple.com
  • 4 edits in trunk/Source/WebCore

[WebAuthn] Merge some of the CTAP response decoder's code
https://bugs.webkit.org/show_bug.cgi?id=205375

Reviewed by Darin Adler.

This patch makes those code more compact and maintainable.

No change of behaviors.

  • Modules/webauthn/fido/DeviceResponseConverter.cpp:

(fido::decodeResponseMap):
(fido::readCTAPMakeCredentialResponse):
(fido::readCTAPGetAssertionResponse):
(fido::readCTAPGetInfoResponse):

  • Modules/webauthn/fido/DeviceResponseConverter.h:
  • Modules/webauthn/fido/Pin.cpp:

(fido::pin::encodePinCommand):
(fido::pin::RetriesResponse::parse):
(fido::pin::KeyAgreementResponse::parse):
(fido::pin::TokenResponse::parse):

12:24 PM Changeset in webkit [256200] by commit-queue@webkit.org
  • 2 edits in trunk

[CMake] Prepend -Wno-noexcept-type only to global CXX flags
https://bugs.webkit.org/show_bug.cgi?id=207468

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-10
Reviewed by Adrian Perez de Castro.

-Wno-noexcept-type is a C++-specific flag that should not be passed to the C compiler. This
causes a warning spam in GCC 10.

  • Source/cmake/WebKitCompilerFlags.cmake:
12:09 PM Changeset in webkit [256199] by Justin Michaud
  • 2 edits in trunk/JSTests

arm64_32: microbenchmarks/delete-property-keeps-cacheable-structure.js is timing out
https://bugs.webkit.org/show_bug.cgi?id=207484

Reviewed by Yusuke Suzuki.

  • microbenchmarks/delete-property-keeps-cacheable-structure.js:
11:47 AM Changeset in webkit [256198] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Missing exception check in GenericArguments<Type>::deletePropertyByIndex().
https://bugs.webkit.org/show_bug.cgi?id=207483
<rdar://problem/59302616>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/missing-exception-check-in-GenericArguments-deletePropertyByIndex.js: Added.

Source/JavaScriptCore:

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::deletePropertyByIndex):

11:36 AM Changeset in webkit [256197] by Kate Cheney
  • 3 edits in trunk/LayoutTests

REGRESSION: (256055) http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207479
<rdar://problem/59316238>

Unreviewed test gardening

  • http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration-expected.txt:
  • platform/mac-wk2/TestExpectations:
11:32 AM Changeset in webkit [256196] by Megan Gardner
  • 44 edits
    2 moves in trunk/Source/WebCore

Rename SelectionData classes and structures HighlightData, etc to be more inclusive for their new use cases
https://bugs.webkit.org/show_bug.cgi?id=206340

Reviewed by Ryosuke Niwa.

Rename only, no behaviour change.

With the new Highlight API, we will be using these data structures to support Highlights as well as Selection,
rename to Highlight, as a Selection is a type of Highlight.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/DragImage.cpp:

(WebCore::ScopedFrameSelectionState::~ScopedFrameSelectionState):
(WebCore::createDragImageForRange):

  • rendering/ComplexLineLayout.cpp:

(WebCore::ComplexLineLayout::constructLine):

  • rendering/EllipsisBox.cpp:

(WebCore::EllipsisBox::paint):

  • rendering/EllipsisBox.h:
  • rendering/HighlightData.cpp: Renamed from Source/WebCore/rendering/SelectionRangeData.cpp.

(WebCore::isValidRendererForSelection):
(WebCore::collect):
(WebCore::HighlightData::HighlightData):
(WebCore::HighlightData::setRenderRange):
(WebCore::HighlightData::selectionStateForRenderer):
(WebCore::HighlightData::set):
(WebCore::HighlightData::clear):
(WebCore::HighlightData::repaint const):
(WebCore::HighlightData::collectBounds const):
(WebCore::HighlightData::apply):

  • rendering/HighlightData.h: Renamed from Source/WebCore/rendering/SelectionRangeData.h.

(WebCore::HighlightData::RenderRange::RenderRange):
(WebCore::HighlightData::RenderRange::operator== const):
(WebCore::HighlightData::get const):
(WebCore::HighlightData::start const):
(WebCore::HighlightData::end const):
(WebCore::HighlightData::startOffset const):
(WebCore::HighlightData::endOffset const):

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::selectionState):

  • rendering/InlineBox.h:
  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::selectionState):

  • rendering/InlineFlowBox.h:
  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::selectionState):
(WebCore::InlineTextBox::verifySelectionState const):
(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::clampedStartEndForState const):
(WebCore::InlineTextBox::highlightStartEnd const):
(WebCore::InlineTextBox::collectMarkedTextsForHighlights const):

  • rendering/InlineTextBox.h:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::shouldPaintSelectionGaps const):
(WebCore::RenderBlock::selectionGaps):
(WebCore::RenderBlock::blockSelectionGaps):
(WebCore::RenderBlock::getSelectionGapInfo):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::setSelectionState):
(WebCore::RenderBlockFlow::inlineSelectionGaps):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::setSelectionState):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::setSelectionState):

  • rendering/RenderLineBreak.h:
  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::paint):
(WebCore::RenderListMarker::setSelectionState):
(WebCore::RenderListMarker::selectionRectForRepaint):

  • rendering/RenderListMarker.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::isSelectionBorder const):

  • rendering/RenderObject.h:

(WebCore::RenderObject::selectionState const):
(WebCore::RenderObject::setSelectionState):
(WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
(WebCore::RenderObject::RenderObjectBitfields::selectionState const):
(WebCore::RenderObject::RenderObjectBitfields::setSelectionState):
(WebCore::RenderObject::setSelectionStateIfNeeded):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::shouldDrawSelectionTint const):
(WebCore::RenderReplaced::paint):
(WebCore::RenderReplaced::setSelectionState):
(WebCore::RenderReplaced::isSelected const):

  • rendering/RenderReplaced.h:
  • rendering/RenderSelectionInfo.h:

(WebCore::RenderSelectionInfoBase::state const):

  • rendering/RenderText.cpp:

(WebCore::RenderText::setSelectionState):
(WebCore::RenderText::collectSelectionRectsForLineBoxes):

  • rendering/RenderText.h:
  • rendering/RenderTextLineBoxes.cpp:

(WebCore::RenderTextLineBoxes::setSelectionState):

  • rendering/RenderTextLineBoxes.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintAttachment):

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

(WebCore::RenderWidget::setSelectionState):

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

(WebCore::RootInlineBox::lineSelectionGap):
(WebCore::RootInlineBox::selectionState):
(WebCore::RootInlineBox::firstSelectedBox):
(WebCore::RootInlineBox::lastSelectedBox):
(WebCore::RootInlineBox::selectionTopAdjustedForPrecedingBlock const):

  • rendering/RootInlineBox.h:
  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForWithReason):

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::paintSelectionBackground):
(WebCore::SVGInlineTextBox::paint):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::paint):

10:49 AM Changeset in webkit [256195] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Win ] css1/box_properties/padding_left.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207480

Unreviewed test gardening

  • platform/win/TestExpectations:
10:35 AM Changeset in webkit [256194] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WTF

Unreviewed, fix build failure on watchOS simulator
https://bugs.webkit.org/show_bug.cgi?id=207183

  • wtf/HashTable.h:

(WTF::HashTableCapacityForSize::capacityForSize):

10:25 AM Changeset in webkit [256193] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Win ] animations/stacking-context-not-fill-forwards.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207477

unreviewed test gardening.

  • platform/win/TestExpectations:
10:21 AM Changeset in webkit [256192] by Said Abou-Hallawa
  • 3 edits
    2 adds in trunk

Unreachable code hit in WebCore::Shape::createShape
https://bugs.webkit.org/show_bug.cgi?id=207399

Reviewed by Darin Adler.

Source/WebCore:

CSS parser should not consume the 'shape-outside' property with type 'path'
since it has not been implemented yet. This will prevent an assertion in
the debug build and null dref in the release build.

Test: css3/shapes/shape-outside-path-no-crash.html

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeBasicShape):
(WebCore::consumeShapeOutside):

LayoutTests:

  • css3/shapes/shape-outside-path-no-crash-expected.txt: Added.
  • css3/shapes/shape-outside-path-no-crash.html: Added.
10:16 AM Changeset in webkit [256191] by dbates@webkit.org
  • 29 edits
    4 copies
    6 adds in trunk

Disallow setting base URL to a data or JavaScript URL
https://bugs.webkit.org/show_bug.cgi?id=207136

Source/WebCore:

Reviewed by Brent Fulgham.

Inspired by <https://bugs.chromium.org/p/chromium/issues/detail?id=679318>.

Block setting the base URL to a data URL or JavaScript URL as such usage is questionable.
This makes WebKit match the behavior of Chrome and Firefox and is in the spirit of the
discussion in <https://github.com/whatwg/html/issues/2249>.

On Mac and iOS, this restriction is applied only to apps linked against a future SDK to
avoid breaking shipped apps.

For all other ports, this restriction is enabled by default.

Tests: fast/url/relative2.html

fast/url/segments-from-data-url2.html
http/tests/security/allowed-base-url-data-url-via-setting.html
http/tests/security/denied-base-url-data-url.html
http/tests/security/denied-base-url-javascript-url.html

  • dom/Document.cpp:

(WebCore::Document::processBaseElement): Condition updating the parsed
base URL on whether is has an allowed scheme, if restrictions are enabled. Otherwise,
do what we do now. If the scheme is disallowed then log a message to the console to
explain this to web developers.

  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::TokenPreloadScanner::scan): Pass whether to apply restrictons to the base URL
to updatePredictedBaseURL(). This depends on whether the setting is enabled or not.
(WebCore::TokenPreloadScanner::updatePredictedBaseURL): Modifed to take a boolean as to
whether to apply restrictions. If restrictions are not to be applied do what we do now.
Otherwise, only do what we do now if the scheme for the predicated base URL is allowed.

  • html/parser/HTMLPreloadScanner.h:
  • page/SecurityPolicy.cpp:

(WebCore::SecurityPolicy::isBaseURLSchemeAllowed): Added.

  • page/SecurityPolicy.h:
  • page/Settings.yaml: Add a setting to toggle restrictions on the base URL scheme.

Source/WebKit:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKWebView.mm:

(shouldRestrictBaseURLSchemes): Added.
(-[WKWebView _setupPageConfiguration:]): Update settings.

  • UIProcess/Cocoa/VersionChecks.h:

Source/WebKitLegacy/mac:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm:

(shouldRestrictBaseURLSchemes): Added.
(-[WebView _commonInitializationWithFrameName:groupName:]): Update settings.

Source/WTF:

Reviewed by Brent Fulgham.

Add some more macro definitions.

  • wtf/spi/darwin/dyldSPI.h:

LayoutTests:

RReviewed by Brent Fulgham.

Add some tests. Update others to toggle the setting to apply or unapply the new behavior.

The test denied-base-url-javascript-url.html is derived from the test base-url-javascript.html,
included in <https://chromium.googlesource.com/chromium/src.git/+/c133efa0b915430701930b76a7cfe35608b9a403>.

  • fast/url/relative-expected.txt:
  • fast/url/relative.html:
  • fast/url/relative2-expected.txt: Copied from LayoutTests/fast/url/relative-expected.txt.
  • fast/url/relative2.html: Copied from LayoutTests/fast/url/relative.html.
  • fast/url/resources/utilities.js:

(setShouldEllipsizeFileURLPaths): Added. Toggles ellipsizing the path portion of a file URL to simplify matching.
Otherwise, file URLs could be machine-specific.
(canonicalizedPathname): Added.
(segments): Modified to optionally call canonicalizedPathname.
(canonicalize): Ditto.

  • fast/url/segments-from-data-url-expected.txt:
  • fast/url/segments-from-data-url.html:
  • fast/url/segments-from-data-url2-expected.txt: Copied from LayoutTests/fast/url/segments-from-data-url-expected.txt.
  • fast/url/segments-from-data-url2.html: Copied from LayoutTests/fast/url/segments-from-data-url.html.
  • fetch/fetch-url-serialization-expected.txt:
  • http/tests/plugins/navigation-during-load-embed.html:
  • http/tests/plugins/navigation-during-load.html:
  • http/tests/security/allowed-base-url-data-url-via-setting-expected.txt: Added.
  • http/tests/security/allowed-base-url-data-url-via-setting.html: Added.
  • http/tests/security/denied-base-url-data-url-expected.txt: Added.
  • http/tests/security/denied-base-url-data-url.html: Added.
  • http/tests/security/denied-base-url-javascript-url-expected.txt: Added.
  • http/tests/security/denied-base-url-javascript-url.html: Added.
10:14 AM Changeset in webkit [256190] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/store-to-property-updates-properly.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207476

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:08 AM Changeset in webkit [256189] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Regression (r255961): fast/loader/data-url-load-denied.html is consistently timing out on windows
https://bugs.webkit.org/show_bug.cgi?id=207373

Unreviewed test gardening.

  • platform/win/TestExpectations:
10:00 AM Changeset in webkit [256188] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] http/tests/cache-storage/cache-records-persistency.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207474

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
9:57 AM Changeset in webkit [256187] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Crash under WebProcessProxy::shouldSendPendingMessage()
https://bugs.webkit.org/show_bug.cgi?id=207464
<rdar://problem/59293825>

Reviewed by Alex Christensen.

I suspect the WebProcessProxy object is getting destroyed as we are iterating over the
pending messages in AuxiliaryProcessProxy::didFinishLaunching(), thus crashing when
calling WebProcessProxy::shouldSendPendingMessage() inside the loop. As a speculative
fix, protect |this| at the beginning of WebProcessProxy::didFinishLaunching().

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

9:36 AM Changeset in webkit [256186] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] imported/w3c/web-platform-tests/workers/WorkerGlobalScope_ErrorEvent_colno.htm is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207470

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:29 AM Changeset in webkit [256185] by youenn@apple.com
  • 18 edits
    1 copy in trunk/Source/WebKit

Use ObjectIdentifier for WebRTC resolvers
https://bugs.webkit.org/show_bug.cgi?id=207381

Reviewed by Eric Carlson.

Use ObjectIdentifier instead of uint64_t which gives type safety and ensures we do not receive wrong identifiers from IPC.
No change of behavior.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::close):
(WebKit::NetworkRTCProvider::createResolver):
Remove empty string check case since DNS resolver should be robust to null/empty strings.
(WebKit::NetworkRTCProvider::stopResolver):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
  • NetworkProcess/webrtc/NetworkRTCResolver.cpp:

(WebKit::NetworkRTCResolver::create):
(WebKit::NetworkRTCResolver::NetworkRTCResolver):
(WebKit::NetworkRTCResolver::start):
(WebKit::NetworkRTCResolver::stop):

  • NetworkProcess/webrtc/NetworkRTCResolver.h:
  • NetworkProcess/webrtc/NetworkRTCResolverCocoa.cpp:

(WebKit::NetworkRTCResolver::create):
(WebKit::NetworkRTCResolverCocoa::NetworkRTCResolverCocoa):

  • NetworkProcess/webrtc/NetworkRTCResolverCocoa.h:
  • Scripts/webkit/messages.py:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):

  • WebProcess/Network/webrtc/LibWebRTCNetwork.h:

(WebKit::LibWebRTCNetwork::resolver):

  • WebProcess/Network/webrtc/LibWebRTCResolver.cpp:

(WebKit::LibWebRTCResolver::Start):
(WebKit::LibWebRTCResolver::Destroy):

  • WebProcess/Network/webrtc/LibWebRTCResolver.h:
  • WebProcess/Network/webrtc/LibWebRTCResolverIdentifier.h: Copied from Source/WebKit/WebProcess/Network/webrtc/WebRTCResolver.h.
  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:

(WebKit::LibWebRTCSocketFactory::createAsyncResolver):

  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:

(WebKit::LibWebRTCSocketFactory::resolver):
(WebKit::LibWebRTCSocketFactory::takeResolver):

  • WebProcess/Network/webrtc/WebRTCResolver.cpp:

(WebKit::WebRTCResolver::WebRTCResolver):

  • WebProcess/Network/webrtc/WebRTCResolver.h:
9:28 AM Changeset in webkit [256184] by Truitt Savell
  • 26 edits in trunk

Unreviewed, rolling out r256091.

Broke internal builds

Reverted changeset:

"Move trivial definitions from FeatureDefines.xcconfig to
PlatformEnableCocoa.h"
https://bugs.webkit.org/show_bug.cgi?id=207155
https://trac.webkit.org/changeset/256091

9:26 AM Changeset in webkit [256183] by Truitt Savell
  • 15 edits in trunk

Unreviewed, rolling out r256103.

This patch is blocking the rollout of r256091

Reverted changeset:

"Move JavaScriptCore related feature defines from
FeatureDefines.xcconfig to PlatformEnableCocoa.h"
https://bugs.webkit.org/show_bug.cgi?id=207436
https://trac.webkit.org/changeset/256103

9:25 AM Changeset in webkit [256182] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] imported/w3c/web-platform-tests/svg/animations/slider-switch.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207469

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:24 AM Changeset in webkit [256181] by graouts@webkit.org
  • 7 edits in trunk

There's an event loop cycle between an animation finishing, and it being removed from GraphicsLayerCA
https://bugs.webkit.org/show_bug.cgi?id=207361
<rdar://problem/59280370>

Reviewed by Simon Fraser.

Source/WebCore:

Animations should be removed from GraphicsLayersCAs in the same rendering update that changes the playState of the
animation to "finished", to avoid layer flush where a GraphicsLayersCAs has no extent set, but thinks there is
an active transform animation.

To do this, instead of enqueuing accelerated actions when resolving animations during style resolution, in
KeyframeAnimation::apply(), we enqueue them as soon as an animation's current time may have changed: in
WebAnimation::tick() and WebAnimation::play() with supporting functions newly exposed on AnimationEffect.

Now, accelerated animations are enqueued and applied during the "update animations and send events" procedure.

  • animation/AnimationEffect.h:
  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::apply):
(WebCore::KeyframeEffect::updateAcceleratedActions):
(WebCore::KeyframeEffect::animationDidTick):
(WebCore::KeyframeEffect::animationDidPlay):

  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::play):
(WebCore::WebAnimation::tick):

LayoutTests:

Lower the number of frames to wait after an animation completes by one to check that the accelerated animation has been removed
to show that we enqueue accelerated actions as part of the "update animations and send events" procedure.

  • webanimations/accelerated-animation-removal-upon-transition-completion.html: Added.
9:16 AM Changeset in webkit [256180] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.27.90

WebKitGTK 2.27.90

9:16 AM Changeset in webkit [256179] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.27.90 release

.:

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

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.27.90.
9:13 AM Changeset in webkit [256178] by Jacob Uphoff
  • 3 edits in trunk/LayoutTests

[ macOS iOS wk2 ] http/wpt/service-workers/service-worker-networkprocess-crash.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207466

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
9:11 AM Changeset in webkit [256177] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests

[Web Animations] Fix animations/stop-animation-on-suspend.html
https://bugs.webkit.org/show_bug.cgi?id=184580
<rdar://problem/39406014>

Reviewed by Simon Fraser.

The expectations of this test were incorrect. The test animates a transform from 0 to 400px across 400ms with a linear timing function. The test suspends
animations from 100ms to 300ms with timers, and polls animations at 200ms and 400ms. At 200ms, it expects a value of 100px, which is correct since the animation
is suspended and so the value at 100ms (when it was suspended) is expected.

However, the test expected the value at 400ms to be 200px, which leads me to think this test assumes that animations, when resumed, account for the time suspended
and subtracts it from the page time. This is incorrect: when animations resume, they resume at the current time, no matter how long they were suspended. So the expected
value should be 400px.

  • animations/stop-animation-on-suspend-expected.txt:
  • animations/stop-animation-on-suspend.html:
8:54 AM Changeset in webkit [256176] by Jacob Uphoff
  • 3 edits in trunk/LayoutTests

[ macOS iOS wk2 ] storage/indexeddb/intversion-long-queue.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=207465

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
8:37 AM Changeset in webkit [256175] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS ] inspector/runtime/getCollectionEntries.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207463

Unreviewed test gardening

  • platform/mac/TestExpectations:
8:20 AM Changeset in webkit [256174] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

Regression (~r252261): [ Mac wk2 ] inspector/heap/getPreview.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207209

Correcting test expectations.

Unreviewed test gardening

  • platform/mac-wk2/TestExpectations:
8:17 AM Changeset in webkit [256173] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Make FormDataElement::lengthInBytes() safe to call on a non-main thread
https://bugs.webkit.org/show_bug.cgi?id=207419
<rdar://problem/54386521>

Reviewed by Youenn Fablet.

Make FormDataElement::lengthInBytes() safe to call on a non-main thread by using the
ThreadableBlobRegistry. DOMCache code in workers may call this on worker threads for
example.

  • platform/network/FormData.cpp:

(WebCore::FormDataElement::lengthInBytes const):

8:10 AM Changeset in webkit [256172] by Jonathan Bedard
  • 2 edits
    2 adds in trunk/Tools

results.webkit.org: Abstract archive storage solutions
https://bugs.webkit.org/show_bug.cgi?id=207277

Rubber-stamped by Aakash Jain.

  • resultsdbpy/resultsdbpy/model/archive_context.py:

(ArchiveContext):
(ArchiveContext.ArchiveMetaDataByCommit.unpack):
(ArchiveContext.init): Add archiver member.
(ArchiveContext.enter): archiver is a context manager.
(ArchiveContext.exit): Ditto.
(ArchiveContext.register): The archiver member owns saving an archive.
(ArchiveContext.find_archive): The archiver member owns retrieving an archive.
(ArchiveContext.ArchiveChunks): Move to CassandraArchiver.

  • resultsdbpy/resultsdbpy/model/archiver.py: Added.

(Archiver): Base class for all Archiving systems.
(Archiver.archive_digest): Given a file-like archive, calculate it's digest.
(Archiver.archive_size): Given a file-like archive, calculate it's size.
(Archiver.save):
(Archiver.retrieve):

  • resultsdbpy/resultsdbpy/model/cassandra_archiver.py: Added.

(CassandraArchiver):
(CassandraArchiver.ArchiveChunks): Moved from ArchiveContext.
(CassandraArchiver.init):
(CassandraArchiver.enter):
(CassandraArchiver.exit):
(CassandraArchiver.save): Split the provided archive into chunks for saving, moved
from ArchiveContext.
(CassandraArchiver.retrieve): Retrieve an archive with the provided hash, moved
from ArchiveContext.

8:02 AM Changeset in webkit [256171] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS ] imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207461

Unreviewed test gardening

  • platform/mac/TestExpectations:
7:46 AM Changeset in webkit [256170] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/buffer-vertex.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207127

Correcting test expectations for ImageOnlyFailure

Unreviewed test gardening

  • platform/mac-wk2/TestExpectations:
7:34 AM Changeset in webkit [256169] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/separate-shader-modules/separate-shader-modules-7.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207460

Unreviewed test gardening

  • platform/mac-wk2/TestExpectations:
7:26 AM Changeset in webkit [256168] by Adrian Perez de Castro
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merged r256167 - [geolocation] Fix non-unified build issues
https://bugs.webkit.org/show_bug.cgi?id=207457

Unreviewed build fix.

No new tests needed.

  • UIProcess/GeolocationPermissionRequestManagerProxy.h: Add missing includes.
  • UIProcess/WebGeolocationManagerProxy.cpp: Ditto.
6:48 AM Changeset in webkit [256167] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebKit

[geolocation] Fix non-unified build issues
https://bugs.webkit.org/show_bug.cgi?id=207457

Unreviewed build fix.

No new tests needed.

  • UIProcess/GeolocationPermissionRequestManagerProxy.h: Add missing includes.
  • UIProcess/WebGeolocationManagerProxy.cpp: Ditto.
6:01 AM Changeset in webkit [256166] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Remove setHTTPAccept call for main resources
https://bugs.webkit.org/show_bug.cgi?id=207441

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-10
Reviewed by Darin Adler.

Remove setHTTPAccept call for main resources since all main resource loading goes
through CachedResourceLoader, which sets the Accept header as specified in:
https://fetch.spec.whatwg.org/#fetching (Step 1.3).

This patch also removed unused Accept header related functionality
in ResourceRequest.

No test since no change in behavior, tested by http/tests/misc/xhtml.php.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::addExtraFieldsToRequest):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::httpAccept const): Deleted.
(WebCore::ResourceRequestBase::setHTTPAccept): Deleted.
(WebCore::ResourceRequestBase::clearHTTPAccept): Deleted.

  • platform/network/ResourceRequestBase.h:
5:27 AM Changeset in webkit [256165] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256114 - [GTK][WebInspector] Do not make Web Inspector windows transient
https://bugs.webkit.org/show_bug.cgi?id=207455

Reviewed by Carlos Garcia Campos.

Stop setting Web Inspector windows as transient for the window
containing the web view being inspected, to allow changing their
relative stacking order. No changes are needed for inspector windows
to continue being destroyed correctly when the corresponding web view
is destroyed because code for handling that was already present in
WebInspectorProxyGtk.cpp.

No new tests needed.

  • UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:

(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
Do not pass a parent window parameter to webkitInspectorWindowNew().

  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformCreateFrontendWindow): Remove code
to obtain the top level window of the WebKitWebView, which no longer
needs being passed to webkitInspectorWindowNew().

  • UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp:

(webkitInspectorWindowNew): Do not set the GtkWindow.transient-for
property for the Web Inspector window. Remove the parent window
parameter.

  • UIProcess/Inspector/gtk/WebKitInspectorWindow.h: Remove the parent

window parameter for webkitInspectorWindowNew().

5:27 AM Changeset in webkit [256164] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r256113 - [GTK] Mouse pointer no longer hidden during fullscreen video playback
https://bugs.webkit.org/show_bug.cgi?id=197346

Reviewed by Adrian Perez de Castro.

.:

Enabled the CURSOR_VISIBILITY feature on the GTK port.

  • Source/cmake/OptionsGTK.cmake:

Source/WebKit:

Covered by existing tests.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::setCursorHiddenUntilMouseMoves): Added implementation.

5:27 AM Changeset in webkit [256163] by Carlos Garcia Campos
  • 28 edits in releases/WebKitGTK/webkit-2.28/LayoutTests

Merge r256111 - [WPE] Gardening, update baselines and synchronize with GTK
https://bugs.webkit.org/show_bug.cgi?id=207442

Unreviewed gardening.

  • platform/wpe/TestExpectations:
  • platform/wpe/css3/selectors3/html/css3-modsel-161-expected.txt:
  • platform/wpe/css3/selectors3/xhtml/css3-modsel-161-expected.txt:
  • platform/wpe/css3/selectors3/xml/css3-modsel-161-expected.txt:
  • platform/wpe/fast/block/float/float-avoidance-expected.txt:
  • platform/wpe/fast/block/margin-collapse/103-expected.txt:
  • platform/wpe/fast/box-shadow/inset-box-shadow-radius-expected.txt:
  • platform/wpe/fast/css/text-transform-select-expected.txt:
  • platform/wpe/fast/html/keygen-expected.txt:
  • platform/wpe/fast/invalid/014-expected.txt:
  • platform/wpe/fast/parser/document-write-option-expected.txt:
  • platform/wpe/fast/replaced/replaced-breaking-expected.txt:
  • platform/wpe/fast/replaced/replaced-breaking-mixture-expected.txt:
  • platform/wpe/fast/replaced/three-selects-break-expected.txt:
  • platform/wpe/fast/replaced/width100percent-menulist-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug2479-3-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug2479-4-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug29326-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug33855-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug4382-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug96334-expected.txt:
  • platform/wpe/tables/mozilla/core/margins-expected.txt:
  • platform/wpe/tables/mozilla/dom/tableDom-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
  • platform/wpe/transforms/2d/zoom-menulist-expected.txt:
5:27 AM Changeset in webkit [256162] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256110 - Replace redundant functions with variadic template function.
https://bugs.webkit.org/show_bug.cgi?id=207413

Reviewed by Darin Adler.

No new tests. Covered by existing tests.

  • loader/TextResourceDecoder.cpp:

(WebCore::bytesEqual):

5:27 AM Changeset in webkit [256161] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256107 - [LFC][Integration] Support intruding floats
https://bugs.webkit.org/show_bug.cgi?id=207099

Reviewed by Zalan Bujtas.

Add support for for floats placed by the legacy render tree layout intruding to IFC flow.

This was the last frequently used feature supported by the simple line layout but not
the integrated LFC (pagination is the final missing piece).

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::remove): Deleted.

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

(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::FloatingState::remove): Deleted.

Delete some unused functions.

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::FloatItem::isLeftPositioned const):
(WebCore::Layout::FloatingState::clear):
(WebCore::Layout::FloatingState::FloatItem::operator== const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::canUseFor):

Allow floats.

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::prepareLayoutState):
(WebCore::LayoutIntegration::LineLayout::prepareFloatingState):

Translate floats from render tree to IFC float structures.

  • layout/integration/LayoutIntegrationLineLayout.h:
5:27 AM Changeset in webkit [256160] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256106 - [LFC][BFC] Move updatePositiveNegativeMarginValues out of MarginCollapse class
https://bugs.webkit.org/show_bug.cgi?id=207445
<rdar://problem/59297879>

Reviewed by Antti Koivisto.

MarginCollapse::updatePositiveNegativeMarginValues is just a static helper.
Let's split this function so that it can be just a regular member function (move the state updating to the BlockFormattingContext caller).

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::resolvedPositiveNegativeMarginValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues): Deleted.

5:27 AM Changeset in webkit [256159] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256102 - Optimize Style::determineChange()
https://bugs.webkit.org/show_bug.cgi?id=207438

Reviewed by Antti Koivisto.

Style::determineChange() called RenderStyle::operator!=() before the testing some other
sets of properties for inequality.

It's faster to call inheritedEqual() etc before the full style compare. Also optimize
comparing alignItems() and justifyItems() by adding a helper function that first tests
for equality of the m_rareNonInheritedData pointer. These (added in r213480) return Inherit
because align-items and justify-items affect child layout.

This is a ~4% progression on some MotionMark subtests. Time under TreeResolver::createAnimatedElementUpdate()
drops from 2.4% to 0.9%.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::descendantAffectingNonInheritedPropertiesEqual const):

  • rendering/style/RenderStyle.h:
  • style/StyleChange.cpp:

(WebCore::Style::determineChange):

5:26 AM Changeset in webkit [256158] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256101 - [LFC] FloatingContext::constraints should take a vertical range instead of just vertical position.
https://bugs.webkit.org/show_bug.cgi?id=207440
<rdar://problem/59295022>

Reviewed by Antti Koivisto.

In an IFC, this covers the entire line when searching for intrusive float to shrink the available horizontal space.
(This fix is limited to content with fixed line height)

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::constraints const):

  • layout/floats/FloatingContext.h:
  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::constraintsForLine):

5:26 AM Changeset in webkit [256157] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256100 - [LFC][BFC] Replace "estimated" term with "precomputed"
https://bugs.webkit.org/show_bug.cgi?id=207433
<rdar://problem/59288794>

Reviewed by Antti Koivisto.

The term "pre-computed" describes better what this value is.

  • layout/MarginTypes.h:

(WebCore::Layout::EstimatedMarginBefore::usedValue const): Deleted.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPosition):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForAncestors):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRoot):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::setPrecomputedMarginBefore):
(WebCore::Layout::BlockFormattingContext::hasPrecomputedMarginBefore const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors): Deleted.
(WebCore::Layout::BlockFormattingContext::setEstimatedMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::hasEstimatedMarginBefore const): Deleted.

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::hasClearance const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore): Deleted.

  • layout/displaytree/DisplayBox.cpp:

(WebCore::Display::Box::Box):

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::setHasPrecomputedMarginBefore):
(WebCore::Display::Box::invalidatePrecomputedMarginBefore):
(WebCore::Display::Box::top const):
(WebCore::Display::Box::topLeft const):
(WebCore::Display::Box::setVerticalMargin):
(WebCore::Display::Box::setHasEstimatedMarginBefore): Deleted.
(WebCore::Display::Box::invalidateEstimatedMarginBefore): Deleted.

5:26 AM Changeset in webkit [256156] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256099 - [LFC][BFC] Pre-compute vertical position only when we really need it.
https://bugs.webkit.org/show_bug.cgi?id=207432
<rdar://problem/59288539>

Reviewed by Antti Koivisto.

Instead of pre-computing the vertical position at computeStaticVerticalPosition, let's compute it when

  1. we are about to layout a new non-float-avoider/float clear FC (e.g. so that intrusive floats can shrink the lines inside IFCs)
  2. we are about to compute the non-static vertical position of a float avoider block level box.
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRoot):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear): Deleted.
(WebCore::Layout::BlockFormattingContext::hasPrecomputedMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition): Deleted.

  • layout/blockformatting/BlockFormattingContext.h:
5:26 AM Changeset in webkit [256155] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256098 - [LFC][BFC] Remove establishesBlockFormattingContextOnly and establishesInlineFormattingContextOnly
https://bugs.webkit.org/show_bug.cgi?id=207431
<rdar://problem/59288366>

Reviewed by Antti Koivisto.

The current caller of establishesInlineFormattingContextOnly is actually interested in whether the box is float avoider
(and the debug-only caller of establishesBlockFormattingContextOnly should instead check if the box also establishes an IFC).

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::createFormattingContext):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::establishesInlineFormattingContextOnly const): Deleted.
(WebCore::Layout::Box::establishesBlockFormattingContextOnly const): Deleted.

  • layout/layouttree/LayoutBox.h:
5:26 AM Changeset in webkit [256154] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256097 - [LFC][BFC] Adjust Box::isFloatAvoider() for Inline and Independent FCs.
https://bugs.webkit.org/show_bug.cgi?id=207430
<rdar://problem/59288236>

Reviewed by Antti Koivisto.

A block container box that establishes both BFC and IFC is not a float avoider (add support for independent formatting context too).

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isFloatAvoider const):

5:26 AM Changeset in webkit [256153] by Carlos Garcia Campos
  • 8 edits
    8 adds in releases/WebKitGTK/webkit-2.28

Merge r256095 - Extent of a composited animation should not include the untransformed position
https://bugs.webkit.org/show_bug.cgi?id=207434

Reviewed by Sam Weinig.
Source/WebCore:

To determine whether to create ("attach") backing store for layers with transform animations,
we compute the union of all the states of the animation as an "extent", and ask whether it intersects
the coverage rect in GraphicsLayerCA.

The non-Web Animations transition code did this correctly, just unioning the bounds transformed by
the start and end state.

The non-Web Animations keyframe code, and the Web Animations KeyframeEffect code (used for both CSS transitions
and animations) also unioned with the unanimated bounds, which could create overly large extents in some
cases, contributing to jetsams on iOS (rdar://problem/59020443).

Fix KeyframeAnimation and KeyframeEffect to not union with the untransformed bounds.

Tests: compositing/backing/backing-store-attachment-animating-outside-viewport.html

legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

LayoutTests:

New test that checks backing store attachment and overlap for an element which is positioned in-view,
but is move offscreen by the animation.

New baselines for overlap tests, since overlap no longer considers the unanimated position.

  • compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • platform/ios-wk2/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • platform/ios-wk2/legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
5:26 AM Changeset in webkit [256152] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256094 - [LFC][BFC] Box::isFloatAvoider should not check for isFloatingPositioned()
https://bugs.webkit.org/show_bug.cgi?id=207429
<rdar://problem/59288204>

Reviewed by Antti Koivisto.

Box::isFloatAvoider() already checks for establishesBlockFormattingContext() (and floats do establish BFCs).

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isFloatAvoider const):

5:26 AM Changeset in webkit [256151] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r256093 - [WTF] Try using 75% load factor for HashTable
https://bugs.webkit.org/show_bug.cgi?id=207183

Reviewed by Mark Lam.

Source/WTF:

We know that hash-table is one of the most memory consuming part in WebKit.
By analyzing many production hash-table implementations[1], I found that many
of them are using 75% load-factor while our one is 50%.

This patch changes the load-factor from 50% to 75%. But we pick 75% only for
small tables which capacity is <= 1024 based on collected data by micro-benchmarking.
The collected data is telling that longer probe-length affects on performance if table
size gets larger.

[1]: LLVM DenseMap, Abseil's, rust's, and so on.

  • wtf/HashTable.h:

(WTF::HashTableCapacityForSize::shouldExpand):
(WTF::HashTableCapacityForSize::capacityForSize):
(WTF::HashTable::shouldExpand const):
(WTF::KeyTraits>::computeBestTableSize):

Tools:

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

5:26 AM Changeset in webkit [256150] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r256089 - Crash in RenderTreeBuilder::Table::findOrCreateParentForChild with multicol spanner
https://bugs.webkit.org/show_bug.cgi?id=206917

Patch by Doug Kelly <Doug Kelly> on 2020-02-08
Reviewed by Zalan Bujtas.

Source/WebCore:

During render tree construction, multi-column spanners are moved from their original tree position to
next to the enclosing anonymous fragmented flow and we mark their previous location with a spanner placeholder.
If we try to add a new renderer right before the spanner (beforeChild is the spanner renderer), we need to use
the spanner's original position as the insertion point.
This patch addresses the mismatching position issue by adjusting the spanner beforeChild right before
we start searching for the final insertion point.

Test: fast/multicol/spanner-crash-when-finding-table-parent.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attach):

  • rendering/updating/RenderTreeBuilderTable.cpp:

(WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild):

LayoutTests:

  • fast/multicol/spanner-crash-when-finding-table-parent-expected.txt: Added.
  • fast/multicol/spanner-crash-when-finding-table-parent.html: Added.
5:26 AM Changeset in webkit [256149] by Carlos Garcia Campos
  • 5 edits
    2 deletes in releases/WebKitGTK/webkit-2.28/Source/bmalloc

Merge r256088 - [bmalloc] VMHeap can be merge into Heap
https://bugs.webkit.org/show_bug.cgi?id=207410

Reviewed by Yusuke Suzuki.

VMHeap has only one member function in it and Heap is the only client of that.
No member variable is defined. It does nothing special with its context as a class.
It is safe to merge the function into Heap.

  • CMakeLists.txt:
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::tryAllocateLargeChunk): Moved from VMHeap.

  • bmalloc/Heap.h:
  • bmalloc/VMHeap.cpp: Removed.
  • bmalloc/VMHeap.h: Removed.
5:26 AM Changeset in webkit [256148] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r256087 - Throw OutOfMemory exception instead of crashing if DirectArguments/ScopedArguments can't be created
https://bugs.webkit.org/show_bug.cgi?id=207423

Reviewed by Mark Lam.

AllocationFailureMode::Assert is problematic because fuzzers keep producing spurious error reports when they generate code that tries allocating infinite amount of memory.
The right approach is to use AllocationFailureMode::ReturnNull, and throw a JS exception upon receiving null.

In this patch I fixed two functions that were using AllocationFailureMode::Assert:

DirectArguments::DirectArguments::overrideThings
GenericArguments<Type>::initModifiedArgumentsDescriptor

No test added, because the only test we have is highly non-deterministic/flaky (only triggers about 10 to 20% of the time even before the fix).

  • runtime/DirectArguments.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::deletePropertyByIndex):
(JSC::GenericArguments<Type>::defineOwnProperty):
(JSC::GenericArguments<Type>::initModifiedArgumentsDescriptor):
(JSC::GenericArguments<Type>::initModifiedArgumentsDescriptorIfNecessary):
(JSC::GenericArguments<Type>::setModifiedArgumentDescriptor):

  • runtime/ScopedArguments.h:
5:25 AM Changeset in webkit [256147] by Carlos Garcia Campos
  • 75 edits
    10 copies
    13 adds
    1 delete in releases/WebKitGTK/webkit-2.28/Source

Merge r256086 - Web Inspector: Revert slim toolbar
https://bugs.webkit.org/show_bug.cgi?id=207422

Reviewed by Timothy Hatcher.

The slim toolbar needs a little more work before landing.

This patch reverts r255547, r255557, r255890, r255892, r255893, r255901, r255980.

Source/WebCore:

  • en.lproj/Localizable.strings:
  • inspector/InspectorFrontendClient.h:
  • inspector/InspectorFrontendClientLocal.cpp:
  • inspector/InspectorFrontendClientLocal.h:
  • inspector/InspectorFrontendHost.cpp:
  • inspector/InspectorFrontendHost.h:
  • inspector/InspectorFrontendHost.idl:

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:
  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/ConsoleManager.js:
  • UserInterface/Debug/Bootstrap.js:
  • UserInterface/Images/NewTab.svg: Added.
  • UserInterface/Images/NewTabPlus.svg: Added.
  • UserInterface/Images/Origin.svg:
  • UserInterface/Images/SearchResults.svg: Added.
  • UserInterface/Images/SourcesPaused.svg: Removed.
  • UserInterface/Main.html:
  • UserInterface/Models/DebuggerDashboard.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Models/DefaultDashboard.js: Added.
  • UserInterface/Views/ActivateButtonToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/AuditTabContentView.js:
  • UserInterface/Views/ButtonNavigationItem.css:
  • UserInterface/Views/ButtonNavigationItem.js:
  • UserInterface/Views/ButtonToolbarItem.css: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/ButtonToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/ConsoleTabContentView.js:
  • UserInterface/Views/ContentBrowserTabContentView.js:
  • UserInterface/Views/ControlToolbarItem.css: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/ControlToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/DOMTreeContentView.css:
  • UserInterface/Views/DashboardContainerView.css: Added.
  • UserInterface/Views/DashboardContainerView.js: Added.
  • UserInterface/Views/DashboardView.js: Copied from Source/WebInspectorUI/UserInterface/Views/PinnedTabBarItem.js.
  • UserInterface/Views/DebuggerDashboardView.css: Added.
  • UserInterface/Views/DebuggerDashboardView.js: Added.
  • UserInterface/Views/DefaultDashboardView.css: Added.
  • UserInterface/Views/DefaultDashboardView.js: Added.
  • UserInterface/Views/DividerNavigationItem.css:
  • UserInterface/Views/ElementsTabContentView.js:
  • UserInterface/Views/FlexibleSpaceNavigationItem.css:
  • UserInterface/Views/GeneralTabBarItem.js:
  • UserInterface/Views/GraphicsTabContentView.js:
  • UserInterface/Views/GroupNavigationItem.js:
  • UserInterface/Views/LayersTabContentView.js:
  • UserInterface/Views/LegacyTabBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/TabBar.js.
  • UserInterface/Views/Main.css:
  • UserInterface/Views/NavigationBar.js:
  • UserInterface/Views/NetworkDetailView.css:
  • UserInterface/Views/NetworkTabContentView.js:
  • UserInterface/Views/NetworkTableContentView.css:
  • UserInterface/Views/NetworkTableContentView.js:
  • UserInterface/Views/NewTabContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineOverviewGraph.css.
  • UserInterface/Views/NewTabContentView.js: Added.
  • UserInterface/Views/PinnedTabBarItem.js:
  • UserInterface/Views/QuickConsole.js:
  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
  • UserInterface/Views/SearchTabContentView.js:
  • UserInterface/Views/SettingsTabContentView.js:
  • UserInterface/Views/Sidebar.js:
  • UserInterface/Views/SizesToFitNavigationBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/SourcesTabContentView.js:
  • UserInterface/Views/StorageTabContentView.js:
  • UserInterface/Views/TabBar.css:
  • UserInterface/Views/TabBar.js:
  • UserInterface/Views/TabBarItem.js:
  • UserInterface/Views/TabBrowser.js:
  • UserInterface/Views/TabContentView.js:
  • UserInterface/Views/TimelineOverview.css:
  • UserInterface/Views/TimelineRecordFrame.css:
  • UserInterface/Views/TimelineRuler.css:
  • UserInterface/Views/TimelineTabContentView.js:
  • UserInterface/Views/Toolbar.css: Added.
  • UserInterface/Views/Toolbar.js: Added.
  • UserInterface/Views/Variables.css:

Source/WebKit:

  • UIProcess/Inspector/RemoteWebInspectorProxy.cpp:
  • UIProcess/Inspector/RemoteWebInspectorProxy.h:
  • UIProcess/Inspector/RemoteWebInspectorProxy.messages.in:
  • UIProcess/Inspector/WebInspectorProxy.cpp:
  • UIProcess/Inspector/WebInspectorProxy.h:
  • UIProcess/Inspector/WebInspectorProxy.messages.in:
  • UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:
  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:
  • UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:
  • UIProcess/Inspector/mac/WebInspectorProxyMac.mm:
  • UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp:
  • UIProcess/Inspector/win/WebInspectorProxyWin.cpp:
  • WebProcess/Inspector/RemoteWebInspectorUI.cpp:
  • WebProcess/Inspector/RemoteWebInspectorUI.h:
  • WebProcess/Inspector/WebInspectorUI.cpp:
  • WebProcess/Inspector/WebInspectorUI.h:

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebInspectorClientIOS.mm:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebInspectorClient.h:
  • WebCoreSupport/WebInspectorClient.mm:
5:25 AM Changeset in webkit [256146] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256084 - [IPC Hardening] Protect against bad parameters in WebProcessProxy::getPluginProcessConnection()
https://bugs.webkit.org/show_bug.cgi?id=207416
<rdar://problem/58617244>

Reviewed by David Kilzer.

  • UIProcess/Plugins/PluginProcessManager.cpp:

(WebKit::PluginProcessManager::getPluginProcessConnection):

  • UIProcess/Plugins/PluginProcessManager.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getPluginProcessConnection):

5:25 AM Changeset in webkit [256145] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r256081 - Harden HashTable IPC decoders
https://bugs.webkit.org/show_bug.cgi?id=207415

Reviewed by Chris Dumez.

Source/WebKit:

  • Platform/IPC/ArgumentCoders.h:

Source/WTF:

  • wtf/HashCountedSet.h:
5:25 AM Changeset in webkit [256144] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256077 - Nullptr crash in WebCore::FontFamilySpecificationCoreText::fontRanges
https://bugs.webkit.org/show_bug.cgi?id=207236
<rdar://problem/57214193>

Patch by Jack Lee <Jack Lee> on 2020-02-07
Reviewed by Ryosuke Niwa.

Add a state variable in FontDescriptionKey for tracking hash entry deletion.

  • platform/graphics/FontCache.h:

(WebCore::FontDescriptionKey::FontDescriptionKey):
(WebCore::FontDescriptionKey::operator== const):
(WebCore::FontDescriptionKey::isHashTableDeletedValue const):

5:25 AM Changeset in webkit [256143] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/ThirdParty/ANGLE

Merge r256076 - Try adding glBindFramebuffer flush workaround to ANGLE as remedy for flaky WebGL tests
https://bugs.webkit.org/show_bug.cgi?id=206625

Patch by Kenneth Russell <kbr@chromium.org> on 2020-02-07
Reviewed by Dean Jackson.

  • include/platform/FeaturesGL.h:
  • src/libANGLE/renderer/gl/StateManagerGL.cpp:

(rx::StateManagerGL::bindFramebuffer):

  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::InitializeFeatures):

5:25 AM Changeset in webkit [256142] by Carlos Garcia Campos
  • 34 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r256075 - [Hardening] Validate Geolocation access permission on UIProcess side
https://bugs.webkit.org/show_bug.cgi?id=207393
<rdar://problem/56816051>

Reviewed by Brent Fulgham.

Source/WebCore:

Validate Geolocation access permission on UIProcess side, instead of only relying solely on the WebProcess for this.

The workflow is as follows:

  • The Geolocation objects request for permission to access location data
  • The UIProcess shows a prompt
  • If the user accepts, the UIProcess sends an authorization token (a UUID string) to the Geolocation object.
  • When the Geolocation object later asks for location updates from the UIProcess, the UIProcess validates that this is a valid authorization token (one that it previously issued for this page)
  • When the Geolocation objects gets destroyed (or resets its permission), the authorization token gets revoked so that it is no longer valid.

No new tests, no Web-facing behavior change, merely hardening.

  • Modules/geolocation/Geolocation.cpp:

(WebCore::Geolocation::~Geolocation):
(WebCore::Geolocation::resumeTimerFired):
(WebCore::Geolocation::resetAllGeolocationPermission):
(WebCore::Geolocation::stop):
(WebCore::Geolocation::setIsAllowed):
(WebCore::Geolocation::revokeAuthorizationTokenIfNecessary):
(WebCore::Geolocation::resetIsAllowed):

  • Modules/geolocation/Geolocation.h:
  • Modules/geolocation/GeolocationClient.h:

(WebCore::GeolocationClient::revokeAuthorizationToken):

  • Modules/geolocation/GeolocationController.cpp:

(WebCore::GeolocationController::addObserver):
(WebCore::GeolocationController::revokeAuthorizationToken):
(WebCore::GeolocationController::activityStateDidChange):

  • Modules/geolocation/GeolocationController.h:
  • platform/mock/GeolocationClientMock.cpp:

(WebCore::GeolocationClientMock::permissionTimerFired):
(WebCore::GeolocationClientMock::startUpdating):

  • platform/mock/GeolocationClientMock.h:

Source/WebKit:

  • UIProcess/GeolocationPermissionRequestManagerProxy.cpp:

(WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision):
(WebKit::GeolocationPermissionRequestManagerProxy::isValidAuthorizationToken const):
(WebKit::GeolocationPermissionRequestManagerProxy::revokeAuthorizationToken):

  • UIProcess/GeolocationPermissionRequestManagerProxy.h:
  • UIProcess/WebGeolocationManagerProxy.cpp:

(WebKit::WebGeolocationManagerProxy::startUpdating):

  • UIProcess/WebGeolocationManagerProxy.h:
  • UIProcess/WebGeolocationManagerProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::geolocationPermissionRequestManager):

  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:

(WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation):
(WebKit::GeolocationPermissionRequestManager::revokeAuthorizationToken):
(WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision):

  • WebProcess/Geolocation/GeolocationPermissionRequestManager.h:
  • WebProcess/Geolocation/WebGeolocationManager.cpp:

(WebKit::WebGeolocationManager::registerWebPage):

  • WebProcess/Geolocation/WebGeolocationManager.h:
  • WebProcess/WebCoreSupport/WebGeolocationClient.cpp:

(WebKit::WebGeolocationClient::startUpdating):
(WebKit::WebGeolocationClient::revokeAuthorizationToken):

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

(WebKit::WebPage::didReceiveGeolocationPermissionDecision):

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

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebGeolocationClient.h:
  • WebCoreSupport/WebGeolocationClient.mm:

(WebGeolocationClient::startUpdating):
(WebGeolocationClient::requestPermission):
(-[WebGeolocationPolicyListener allow]):
(-[WebGeolocationPolicyListener deny]):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebGeolocationClient.cpp:

(WebGeolocationClient::startUpdating):

  • WebCoreSupport/WebGeolocationClient.h:
5:24 AM Changeset in webkit [256141] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256068 - Crash under WKBundleFrameForJavaScriptContext dereferencing a NULL WebCore::Frame.
https://bugs.webkit.org/show_bug.cgi?id=207407
rdar://problem/59206599

Reviewed by Tim Horton.

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::frameForContext): Add a null check for the coreFrame.

5:24 AM Changeset in webkit [256140] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.28

Merge r256034 - Align getDisplayMedia() with spec
https://bugs.webkit.org/show_bug.cgi?id=207191
<rdar://problem/59151017>

Reviewed by Eric Carlson.

Source/WebCore:

Update WebIDL as per spec to have the correct default values for getDisplayMedia.
Covered by updated test.

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::getDisplayMedia):

  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/MediaDevices.idl:

LayoutTests:

  • fast/mediastream/screencapture-user-gesture.html:
5:24 AM Changeset in webkit [256139] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256023 - BackgroundProcessResponsivenessTimer should not be active if running active pages and service workers
https://bugs.webkit.org/show_bug.cgi?id=207264

Reviewed by Chris Dumez.

In case a service worker is running, the process might still be foreground if a page is running in the same process.
Not observable.

  • UIProcess/BackgroundProcessResponsivenessTimer.cpp:

(WebKit::BackgroundProcessResponsivenessTimer::shouldBeActive const):

5:24 AM Changeset in webkit [256138] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256022 - Address post-landing review comments from Darin on r255989.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::terminateServiceWorkerProcess):

5:24 AM Changeset in webkit [256137] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r256015 - [JSC] CodeBlock::shrinkToFit should shrink m_constantRegisters and m_constantsSourceCodeRepresentation in 64bit architectures
https://bugs.webkit.org/show_bug.cgi?id=207356

Reviewed by Mark Lam.

Only 32bit architectures are using m_constantRegisters's address. 64bit architectures are not relying on m_constantRegisters's address.
This patches fixes the thing so that CodeBlock::shrinkToFit will shrink m_constantRegisters and m_constantsSourceCodeRepresentation
regardless of whether this is EarlyShrink or not. We also move DFG/FTL's LateShrink call to the place after calling DFGCommon reallyAdd
since they can add more constant registers.

Relanding it by fixing dead-lock.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::shrinkToFit):

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

(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):

  • dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::finalizeCommon):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):
(JSC::DFG::Plan::finalizeWithoutNotifyingCallback):

  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITInlines.h:

(JSC::JIT::emitLoadDouble):
(JSC::JIT::emitLoadInt32ToDouble): Deleted.

5:24 AM Changeset in webkit [256136] by Carlos Garcia Campos
  • 16 edits in releases/WebKitGTK/webkit-2.28

Merge r256013 - [GTK][WPE] Add same-site cookie support
https://bugs.webkit.org/show_bug.cgi?id=204137

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Implements same-site cookie support in the soup backend.

  • platform/network/HTTPParsers.cpp:

(WebCore::isSafeMethod):

  • platform/network/HTTPParsers.h:
  • platform/network/SameSiteInfo.cpp:

(WebCore::SameSiteInfo::create):

  • platform/network/SameSiteInfo.h:

(WebCore::SameSiteInfo::encode const):
(WebCore::SameSiteInfo::decode):

  • platform/network/soup/CookieSoup.cpp:

(WebCore::coreSameSitePolicy):
(WebCore::soupSameSitePolicy):
(WebCore::Cookie::Cookie):
(WebCore::Cookie::toSoupCookie const):

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::getRawCookies const):
(WebCore::cookiesForSession):
(WebCore::NetworkStorageSession::cookiesForDOM const):
(WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::updateSoupMessageMembers const):
(WebCore::ResourceRequest::updateFromSoupMessage):

Source/WebKit:

Implements same-site cookie support in the soup backend.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):

Tools:

Update libsoup to 2.69.90 in JHBuild.

  • gtk/jhbuild.modules:
  • wpe/jhbuild.modules:

LayoutTests:

Updated GTK/WPE test expectations to pass most same-site cookie tests
matching the Apple ports.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
5:24 AM Changeset in webkit [256135] by Carlos Garcia Campos
  • 25 edits in releases/WebKitGTK/webkit-2.28

Merge r256012 - Fix fetch/api/policies/referrer-origin-worker.html
https://bugs.webkit.org/show_bug.cgi?id=206520

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

LayoutTests/imported/w3c:

Updated improved test result.

  • web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:

Source/WebCore:

Expose referrer policy as part of the worker global scope [1] through
the new ScriptExecutionContext::referrerPolicy method.
Call it as environment settings object when starting a fetch in case
the FetchRequestInit has no referrerPolicy set [2].

Test: imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker.html

[1] https://html.spec.whatwg.org/multipage/workers.html#set-up-a-worker-environment-settings-object
[2] https://fetch.spec.whatwg.org/#ref-for-concept-main-fetch① (Step 2.5)

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • dom/Document.h:

(WebCore::Document::referrerPolicy const): Deleted.

  • dom/ScriptExecutionContext.h:
  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):

  • workers/DedicatedWorkerThread.h:
  • workers/Worker.cpp:

(WebCore::Worker::notifyFinished):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::referrerPolicy const):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerMessagingProxy.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerParameters::isolatedCopy const):
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):

  • workers/WorkerThread.h:
  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::create):
(WebCore::ServiceWorkerGlobalScope::ServiceWorkerGlobalScope):

  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):

  • workers/service/context/ServiceWorkerThread.h:
  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::referrerPolicy const):

  • worklets/WorkletGlobalScope.h:
5:24 AM Changeset in webkit [256134] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r256011 - Unreviewed, revert 75% load-factor because of JetStream2/string-unpack-code-SP regression
https://bugs.webkit.org/show_bug.cgi?id=207183

Source/WTF:

  • wtf/HashTable.h:

(WTF::HashTable::shouldExpand const):
(WTF::KeyTraits>::computeBestTableSize):
(WTF::HashTable::shouldExpand): Deleted.
(WTF::HashTableCapacityForSize::capacityForSize): Deleted.

Tools:

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

5:23 AM Changeset in webkit [256133] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r256006 - [Web Inspector][WinCairo] Selecting an error message in Console causes "TypeError:​ selection.focusNode.closest is not a function."
https://bugs.webkit.org/show_bug.cgi?id=207248

Reviewed by Devin Rousso.

r242174 replaced Node.enclosingNodeOrSelfWithClass with
Element.closest. However, selection.focusNode isn't necessarily an
Element, but can be a Text node.

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView.prototype._mousemove): Use selection.focusNode.parentElement.closest
if selection.focusNode is not a instance of Element.

5:23 AM Changeset in webkit [256132] by Carlos Garcia Campos
  • 27 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r256003 - Most of B3 and Air does not need to include CCallHelpers.h
https://bugs.webkit.org/show_bug.cgi?id=206975

Reviewed by Mark Lam.

They only do to use CCallHelpers::Jump or CCallHelpers::Label.
But CCallHelpers inherit those from MacroAssembler. And MacroAssembler.h is dramatically cheaper to include (since CCallHelpers includes AssemblyHelpers which includes CodeBlock.h which includes roughly the entire runtime).

  • b3/B3CheckSpecial.cpp:
  • b3/B3CheckSpecial.h:
  • b3/B3LowerMacros.cpp:
  • b3/B3PatchpointSpecial.cpp:

(JSC::B3::PatchpointSpecial::generate):

  • b3/B3PatchpointSpecial.h:
  • b3/B3StackmapGenerationParams.cpp:

(JSC::B3::StackmapGenerationParams::successorLabels const):

  • b3/B3StackmapGenerationParams.h:
  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.h:
  • b3/air/AirCCallSpecial.cpp:
  • b3/air/AirCCallSpecial.h:
  • b3/air/AirCode.cpp:
  • b3/air/AirCode.h:

(JSC::B3::Air::Code::entrypointLabel const):

  • b3/air/AirCustom.cpp:

(JSC::B3::Air::CCallCustom::generate):
(JSC::B3::Air::ShuffleCustom::generate):
(JSC::B3::Air::WasmBoundsCheckCustom::generate):

  • b3/air/AirCustom.h:

(JSC::B3::Air::PatchCustom::generate):
(JSC::B3::Air::EntrySwitchCustom::generate):

  • b3/air/AirDisassembler.cpp:

(JSC::B3::Air::Disassembler::addInst):

  • b3/air/AirDisassembler.h:
  • b3/air/AirGenerationContext.h:
  • b3/air/AirInst.h:
  • b3/air/AirPrintSpecial.cpp:

(JSC::B3::Air::PrintSpecial::generate):

  • b3/air/AirPrintSpecial.h:
  • b3/air/AirSpecial.h:
  • b3/air/AirValidate.cpp:
  • b3/air/opcode_generator.rb:
5:23 AM Changeset in webkit [256131] by Carlos Garcia Campos
  • 1 edit
    2 adds in releases/WebKitGTK/webkit-2.28/LayoutTests

Merge r255996 - Add slot based test for the accelerated animations freezing bug (201048)
https://bugs.webkit.org/show_bug.cgi?id=207359

Reviewed by Ryosuke Niwa.

201048 had a simpler test case but it is good to add one for the original problem too.

Based on the original test by Tim Guan-tin Chien.

  • webanimations/accelerated-animation-slot-invalidation-expected.html: Added.
  • webanimations/accelerated-animation-slot-invalidation.html: Added.
5:23 AM Changeset in webkit [256130] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255990 - webgl/1.0.3/conformance/glsl/misc/shader-with-reserved-words.html is timing out on some hardware configurations
https://bugs.webkit.org/show_bug.cgi?id=205739

Patch by James Darpinian <James Darpinian> on 2020-02-06
Reviewed by Dean Jackson.

Optimize disabling ANGLE_texture_rectangle.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::compileShader):

5:23 AM Changeset in webkit [256129] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255989 - REGRESSION (r254706): Crash under WebProcessPool::terminateServiceWorkerProcess()
https://bugs.webkit.org/show_bug.cgi?id=207354
<rdar://problem/59184818>

Reviewed by Geoffrey Garen.

No new tests, not easily testable AFAIK since this happens on failure to send sync IPC to
the service worker when terminating it.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::terminateServiceWorkerProcess):
'auto' resolved to 'WeakPtr<WebProcessProxy>' in this method and the call to
disableServiceWorkers() could cause the process to get destroyed. We would then
do a null dereference on the next line.

5:23 AM Changeset in webkit [256128] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28

Merge r255986 - Web Inspector: show JavaScript Worker terminated state as an internal property
https://bugs.webkit.org/show_bug.cgi?id=207347

Reviewed by Brian Burg.

Source/WebCore:

Test: inspector/worker/worker-create-and-terminate.html

  • inspector/WebInjectedScriptHost.cpp:

(WebCore::WebInjectedScriptHost::getInternalProperties):

  • workers/Worker.h:

(WebCore::Worker::wasTerminated): Added.

LayoutTests:

  • inspector/worker/worker-create-and-terminate.html:

Add assertions throughout the test to check that the terminated value matches what the
frontend knows.

5:23 AM Changeset in webkit [256127] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28

Merge r255982 - Web Inspector: REGRESSION(r249831): Sources: endless spinner when trying to view a resource
https://bugs.webkit.org/show_bug.cgi?id=207346
<rdar://problem/59209016>

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

  • UserInterface/Workers/Formatter/HTMLParser.js:

(HTMLParser.prototype._parseAttr):
Attributes are allowed to contain "/".
https://html.spec.whatwg.org/multipage/parsing.html#before-attribute-value-state

LayoutTests:

  • inspector/formatting/resources/html-tests/attributes.html:
  • inspector/formatting/resources/html-tests/attributes-expected.html:
5:23 AM Changeset in webkit [256126] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255980 - Web Inspector: REGRESSION(?): Search: selecting a DOM node search result switches to the Elements Tab
https://bugs.webkit.org/show_bug.cgi?id=207322

Reviewed by Timothy Hatcher.

  • UserInterface/Views/TabBrowser.js:

(WI.TabBrowser.prototype._tabBarItemSelected):
The Search Tab is marked such that it isn't saved to WI._openTabsSetting, as otherwise
more than one Search Tab could be added to the tab bar (one from the setting and one from
the default pinned tab). It is also marked as being pinned, however, meaning that we know it
will always be in the tab bar, even if we also know it won't be in WI._openTabsSetting. As
such, we should update it's position in the _recentTabContentViews list so that we can use
it when showing represented objects (if able) via bestTabContentViewForRepresentedObject.

5:23 AM Changeset in webkit [256125] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256112 - [GTK][WebInspector] Always allow data:// URIs for inspector views
https://bugs.webkit.org/show_bug.cgi?id=207454

Reviewed by Carlos Garcia Campos.

No new tests needed.

  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformCreateFrontendPage): The Web
Inspector may use navigation to data:// URLs, so always allow it.

5:23 AM Changeset in webkit [256124] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r255976 - Nullptr crash in WebCore::findPlaceForCounter with pseudo element that has display:contents host.
https://bugs.webkit.org/show_bug.cgi?id=207241

When the pseudo element's host element does not initiate a renderer
(e.g. display: contents) we need to look further in the DOM tree
for a previous-sibling-or-parent-element candidate.

Patch by Jack Lee <Jack Lee> on 2020-02-06
Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/css/counters/findPlaceForCounter-pseudo-element-display-content-host-crash.html

  • rendering/RenderCounter.cpp:

(WebCore::previousSiblingOrParentElement):

LayoutTests:

  • fast/css/counters/findPlaceForCounter-pseudo-element-display-content-host-crash-expected.txt: Added.
  • fast/css/counters/findPlaceForCounter-pseudo-element-display-content-host-crash.html: Added.
5:23 AM Changeset in webkit [256123] by Carlos Garcia Campos
  • 7 edits
    1 add in releases/WebKitGTK/webkit-2.28

Merge r255975 - JavaScript string corruption using RegExp with unicode character
https://bugs.webkit.org/show_bug.cgi?id=187947

Reviewed by Yusuke Suzuki.

JSTests:

This change adds regression test for string corruption that occured after
non-BMP character was removed by String.prototype.replace.
The issue was fixed in https://trac.webkit.org/changeset/253648/webkit.

Also, this patch brings back:

  1. An out-of-order character class range test.
  2. Dangling and combined surrogates tests (as webkit.org/b/154863 is now resolved).
  • stress/regress-187947.js: Added.

LayoutTests:

Besides adding a regression test, this patch brings back:

  1. An out-of-order character class range test.
  2. Dangling and combined surrogates tests (as webkit.org/b/154863 is now resolved).
  • js/dom/regexp-range-out-of-order-expected.txt:
  • js/dom/script-tests/regexp-range-out-of-order.js:
  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-extended-characters-match.js:
  • js/script-tests/regexp-unicode.js:
5:23 AM Changeset in webkit [256122] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r255971 - Crash in RenderTableCol::willBeRemovedFromTree()
https://bugs.webkit.org/show_bug.cgi?id=207031

Reviewed by Antti Koivisto.

Source/WebCore:

A RenderTableCol's table() can be null during willBeRemovedFromTree. This can
happen when the RenderTableCol's table is an ancestor rather than a direct
parent. If RenderTreeBuilder::destroy is then called on an ancestor of the
the RenderTableCol's table, RenderTreeBuilder::destroy proceeds down the ancestor
chain, detaching each node along the way. By the time the RenderTableCol is
reached, the table (a non-parent ancestor) has already been detached, so
table() is null and we crash while trying to use it.

The underlying bug is that RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers
is getting called on the RenderTableCol's ancestor before its descendants (including
the RenderTableCol) are destroyed.

Fix this by changing the order of operations in RenderTreeUpdater::tearDownRenderers
so that tearDownLeftoverShadowHostChildren happens before destroyAndCleanUpAnonymousWrappers.
This ensures that the RenderTableCol is destroyed before destroyAndCleanUpAnonymousWrappers is
called on its ancestor.

Test: tables/table-col-indent-crash.html

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

  • tables/table-col-indent-crash-expected.txt: Added.
  • tables/table-col-indent-crash.html: Added.
5:23 AM Changeset in webkit [256121] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255969 - [GTK][WPE] Re-add flatpak sandbox support
https://bugs.webkit.org/show_bug.cgi?id=204732

Reviewed by Michael Catanzaro.

This brings back the Flatpak based sandbox now that upstream has added
features to their spawn portal to accomodate our needs.

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/Launcher/glib/FlatpakLauncher.cpp: Added.

(WebKit::flatpakSpawn):

  • UIProcess/Launcher/glib/FlatpakLauncher.h: Added.
  • UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:

(WebKit::isFlatpakSpawnUsable):
(WebKit::isInsideFlatpak):
(WebKit::ProcessLauncher::launchProcess):

5:22 AM Changeset in webkit [256120] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.28

Merge r256109 - [GTK][WPE] Expose allowTopNavigationToDataURL
https://bugs.webkit.org/show_bug.cgi?id=207384

Patch by Lauro Moura <Lauro Moura> on 2020-02-09
Reviewed by Adrian Perez de Castro.

Source/WebKit:

This patch exposes the new property "allow-top-navigation-to-data-urls"
from r255961 to the glib-based APIs.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webKitSettingsSetProperty): Set new property.
(webKitSettingsGetProperty): Get new property.
(webkit_settings_class_init): Register new property.
(webkit_settings_get_allow_top_navigation_to_data_urls): Added.
(webkit_settings_set_allow_top_navigation_to_data_urls): Added.

  • UIProcess/API/gtk/WebKitSettings.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitSettings.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

Tools:

Updates with new "allow-top-navigation-to-data-urls" property.

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewAllowModalDialogs): This test requires this property to be
set.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings): Added tests for getter/setter.

5:22 AM Changeset in webkit [256119] by Carlos Garcia Campos
  • 43 edits
    4 adds in releases/WebKitGTK/webkit-2.28

Merge r255961 - Prevent navigating top level frames to Data URLs
https://bugs.webkit.org/show_bug.cgi?id=206962
<rdar://problem/56770676>

Source/WebCore:

Reviewed by Youenn Fablet.

Revise our loading behavior to match Chrome and Firefox by blocking
top level frame navigations to Data URLs.

Test: fast/loader/data-url-frame-allowed.html, fast/loader/data-url-load-denied.html

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::disallowDataRequest const): Added,
(WebCore::DocumentLoader::continueAfterContentPolicy): Validate whether the load should
continue if it is a Data URL.

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::setAllowsDataURLForMainFrame): Added.
(WebCore::DocumentLoader::allowsDataURLForMainFrame const): Added.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::load): If the main frame loader as triggered by user action, or
direct call to the client API, allow top-frame navigation to Data URLs.
(WebCore::FrameLoader::reload): If the original load allowed top-frame navigation to Data
URLs, continue to do so in the reload.

  • loader/FrameLoader.h:

Source/WebKit:

Reviewed by Youenn Fablet.

Expose a new off-by-default preference to allow top-level navigation to Data URIs.

Tests: fast/loader/data-url-frame-allowed.html, fast/loader/data-url-load-denied.html

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetTopNavigationToDataURLsAllowed):
(WKPreferencesGetTopNavigationToDataURLsAllowed):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setTopNavigationToDataURLsAllowed:]):
(-[WKPreferences _topNavigationToDataURLsAllowed]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setupPageConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _allowTopNavigationToDataURLs]):
(-[WKWebViewConfiguration _setAllowTopNavigationToDataURLs:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/Inspector/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController configuration]):

Source/WebKitLegacy/mac:

Reviewed by Youenn Fablet.

Expose a new off-by-default preference to allow top-level navigation to Data URIs.

Tests: fast/loader/data-url-frame-allowed.html, fast/loader/data-url-load-denied.html

  • WebCoreSupport/WebInspectorClient.mm:

(-[WebInspectorWindowController init]):

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences allowTopNavigationToDataURLs]):
(-[WebPreferences setAllowTopNavigationToDataURLs:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

Reviewed by Youenn Fablet.

Expose a new off-by-default preference to allow top-level navigation to Data URIs.

  • Interfaces/WebKit.idl: Touch file to trigger a build.
  • Interfaces/IWebPreferences.idl: Ditto.
  • Interfaces/IWebPreferencesPrivate.idl: Expose new API version to avoid breaking shipping binaries.
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings): Update for new setting.
(WebPreferences::QueryInterface): Add support for IWebPreferencesPrivate8 interface.
(WebPreferences::allowTopNavigationToDataURLs): Added.
(WebPreferences::setAllowTopNavigationToDataURLs): Added.

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged): Update to handle Data URL setting.

Tools:

Reviewed by Youenn Fablet.

Revise test running code to allow data URL navigations by default, since they are so frequently
used in testing. However, provide a flag to turn this off in tests so we can confirm proper
function.

  • DumpRenderTree/TestOptions.cpp:

(TestOptions::TestOptions):

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(DownloadAttributeDoesNotStartDownloads): Revise configuration to allow script navigation of the main frame to a Data URL.
(StartDownloadWithDownloadAttribute): Ditto.

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:

(WebViewWillPerformClientRedirect): Ditto.
(WebViewDidCancelClientRedirect): Ditto.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

(NavigateToDataURLThenBack): Ditto.
(ContentExtensionBlocksMainLoadThenReloadWithoutExtensions): Ditto.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration):
(WTR::TestController::platformCreateWebView):

LayoutTests:

Reviewed by Youenn Fablet."

Revise our loading behavior to match Chrome and Firefox by blocking
top level frame navigations to Data URLs.

  • fast/loader/data-url-frame-allowed.html: Added.
  • fast/loader/data-url-frame-allowed-expected.txt : Added.
  • fast/loader/data-url-load-denied.html: Added.
  • fast/loader/data-url-load-denied-expected.txt: Added.
5:22 AM Changeset in webkit [256118] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255954 - [IPC Hardening] Protect against bad identifier in WebPageProxy::DidInsertAttachmentWithIdentifier()
https://bugs.webkit.org/show_bug.cgi?id=207311
<rdar://problem/58632517>

Reviewed by Alex Christensen.

  • UIProcess/WebPageProxy.cpp:
5:22 AM Changeset in webkit [256117] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256017 - REGRESSION (r255953): [ iOS Mac ] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=207342
<rdar://problem/59227960>

Reviewed by Youenn Fablet.

DocumentTimeline::detachFromDocument() may remove the last reference to WebAnimation objects that may, in return, remove the last reference of this
DocumentTimeline. As such, this method should make a strong reference to itself for the span of this method. However, we should not be calling it
from the destructor where the only thing matters is removing the weak reference from the Document to the DocumentTimeline.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::~DocumentTimeline):
(WebCore::DocumentTimeline::detachFromDocument):

5:22 AM Changeset in webkit [256116] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255953 - [Web Animations] Ensure all timelines are detached from their document
https://bugs.webkit.org/show_bug.cgi?id=207331
<rdar://problem/59210306>

Patch by Antoine Quint <Antoine Quint> on 2020-02-06
Reviewed by Dean Jackson.

We recently added a WeakHashSet<DocumentTimeline> m_timelines member to Document and added code to ~DocumentTimeline
to remove themselves from their Document's m_timelines. However, Document::prepareForDestruction() would call
DocumentTimeline::detachFromDocument() only for the main timeline and neglect to do the same for any additional
timelines that may have been created with the DocumentTimeline constructor.

We now cleanly call DocumentTimeline::detachFromDocument() for all items in a Document's m_timelines, which has the
effect of clearing the Document <> DocumentTimeline relationship since DocumentTimeline::detachFromDocument() now
calls Document::removeTimeline().

Finally, we now call DocumentTimeline::detachFromDocument() from the DocumentTimeline destructor to ensure that timelines
that were created purely in JS but got garbage-collected are no longer referenced from the Document still.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::~DocumentTimeline):
(WebCore::DocumentTimeline::detachFromDocument):
(WebCore::DocumentTimeline::cacheCurrentTime):

  • dom/Document.cpp:

(WebCore::Document::prepareForDestruction):

5:22 AM Changeset in webkit [256115] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255911 - [Cairo] Do not use old-style GNU field initializers
https://bugs.webkit.org/show_bug.cgi?id=207309

Reviewed by Carlos Garcia Campos.

No new tests needed.

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::addConicSector): Use the standard named field initializer syntax instead.

3:21 AM Changeset in webkit [256114] by Adrian Perez de Castro
  • 5 edits in trunk/Source/WebKit

[GTK][WebInspector] Do not make Web Inspector windows transient
https://bugs.webkit.org/show_bug.cgi?id=207455

Reviewed by Carlos Garcia Campos.

Stop setting Web Inspector windows as transient for the window
containing the web view being inspected, to allow changing their
relative stacking order. No changes are needed for inspector windows
to continue being destroyed correctly when the corresponding web view
is destroyed because code for handling that was already present in
WebInspectorProxyGtk.cpp.

No new tests needed.

  • UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:

(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
Do not pass a parent window parameter to webkitInspectorWindowNew().

  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformCreateFrontendWindow): Remove code
to obtain the top level window of the WebKitWebView, which no longer
needs being passed to webkitInspectorWindowNew().

  • UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp:

(webkitInspectorWindowNew): Do not set the GtkWindow.transient-for
property for the Web Inspector window. Remove the parent window
parameter.

  • UIProcess/Inspector/gtk/WebKitInspectorWindow.h: Remove the parent

window parameter for webkitInspectorWindowNew().

2:13 AM Changeset in webkit [256113] by eocanha@igalia.com
  • 4 edits in trunk

[GTK] Mouse pointer no longer hidden during fullscreen video playback
https://bugs.webkit.org/show_bug.cgi?id=197346

Reviewed by Adrian Perez de Castro.

.:

Enabled the CURSOR_VISIBILITY feature on the GTK port.

  • Source/cmake/OptionsGTK.cmake:

Source/WebKit:

Covered by existing tests.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::setCursorHiddenUntilMouseMoves): Added implementation.

2:04 AM Changeset in webkit [256112] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebKit

[GTK][WebInspector] Always allow data:// URIs for inspector views
https://bugs.webkit.org/show_bug.cgi?id=207454

Reviewed by Carlos Garcia Campos.

No new tests needed.

  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformCreateFrontendPage): The Web
Inspector may use navigation to data:// URLs, so always allow it.

12:38 AM Changeset in webkit [256111] by Diego Pino Garcia
  • 28 edits in trunk/LayoutTests

[WPE] Gardening, update baselines and synchronize with GTK
https://bugs.webkit.org/show_bug.cgi?id=207442

Unreviewed gardening.

  • platform/wpe/TestExpectations:
  • platform/wpe/css3/selectors3/html/css3-modsel-161-expected.txt:
  • platform/wpe/css3/selectors3/xhtml/css3-modsel-161-expected.txt:
  • platform/wpe/css3/selectors3/xml/css3-modsel-161-expected.txt:
  • platform/wpe/fast/block/float/float-avoidance-expected.txt:
  • platform/wpe/fast/block/margin-collapse/103-expected.txt:
  • platform/wpe/fast/box-shadow/inset-box-shadow-radius-expected.txt:
  • platform/wpe/fast/css/text-transform-select-expected.txt:
  • platform/wpe/fast/html/keygen-expected.txt:
  • platform/wpe/fast/invalid/014-expected.txt:
  • platform/wpe/fast/parser/document-write-option-expected.txt:
  • platform/wpe/fast/replaced/replaced-breaking-expected.txt:
  • platform/wpe/fast/replaced/replaced-breaking-mixture-expected.txt:
  • platform/wpe/fast/replaced/three-selects-break-expected.txt:
  • platform/wpe/fast/replaced/width100percent-menulist-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug2479-3-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug2479-4-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug29326-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug33855-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug4382-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug96334-expected.txt:
  • platform/wpe/tables/mozilla/core/margins-expected.txt:
  • platform/wpe/tables/mozilla/dom/tableDom-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
  • platform/wpe/transforms/2d/zoom-menulist-expected.txt:
12:27 AM WebKitGTK/2.28.x edited by Adrian Perez de Castro
(diff)
12:15 AM WebKitGTK/2.28.x edited by Adrian Perez de Castro
(diff)

Feb 9, 2020:

9:49 PM Changeset in webkit [256110] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/WebCore

Replace redundant functions with variadic template function.
https://bugs.webkit.org/show_bug.cgi?id=207413

Reviewed by Darin Adler.

No new tests. Covered by existing tests.

  • loader/TextResourceDecoder.cpp:

(WebCore::bytesEqual):

8:47 PM Changeset in webkit [256109] by commit-queue@webkit.org
  • 9 edits in trunk

[GTK][WPE] Expose allowTopNavigationToDataURL
https://bugs.webkit.org/show_bug.cgi?id=207384

Patch by Lauro Moura <Lauro Moura> on 2020-02-09
Reviewed by Adrian Perez de Castro.

Source/WebKit:

This patch exposes the new property "allow-top-navigation-to-data-urls"
from r255961 to the glib-based APIs.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webKitSettingsSetProperty): Set new property.
(webKitSettingsGetProperty): Get new property.
(webkit_settings_class_init): Register new property.
(webkit_settings_get_allow_top_navigation_to_data_urls): Added.
(webkit_settings_set_allow_top_navigation_to_data_urls): Added.

  • UIProcess/API/gtk/WebKitSettings.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitSettings.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

Tools:

Updates with new "allow-top-navigation-to-data-urls" property.

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewAllowModalDialogs): This test requires this property to be
set.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings): Added tests for getter/setter.

6:04 PM Changeset in webkit [256108] by Keith Rollin
  • 20 edits in trunk/Source

Re-enable LTO for ARM builds
https://bugs.webkit.org/show_bug.cgi?id=207402
<rdar://problem/49190767>

Reviewed by Sam Weinig.

Bug 190758 re-enabled LTO for Production builds for x86-family CPUs.
Enabling it for ARM was left out due to a compiler issue. That issue
has been fixed, and so now we can re-enable LTO for ARM.

Source/bmalloc:

  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:

Source/WebCore:

No new tests -- no new or changed functionality.

  • Configurations/Base.xcconfig:

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:
5:51 PM Changeset in webkit [256107] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Support intruding floats
https://bugs.webkit.org/show_bug.cgi?id=207099

Reviewed by Zalan Bujtas.

Add support for for floats placed by the legacy render tree layout intruding to IFC flow.

This was the last frequently used feature supported by the simple line layout but not
the integrated LFC (pagination is the final missing piece).

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::remove): Deleted.

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

(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::FloatingState::remove): Deleted.

Delete some unused functions.

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::FloatItem::isLeftPositioned const):
(WebCore::Layout::FloatingState::clear):
(WebCore::Layout::FloatingState::FloatItem::operator== const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::canUseFor):

Allow floats.

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::prepareLayoutState):
(WebCore::LayoutIntegration::LineLayout::prepareFloatingState):

Translate floats from render tree to IFC float structures.

  • layout/integration/LayoutIntegrationLineLayout.h:
5:34 PM Changeset in webkit [256106] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][BFC] Move updatePositiveNegativeMarginValues out of MarginCollapse class
https://bugs.webkit.org/show_bug.cgi?id=207445
<rdar://problem/59297879>

Reviewed by Antti Koivisto.

MarginCollapse::updatePositiveNegativeMarginValues is just a static helper.
Let's split this function so that it can be just a regular member function (move the state updating to the BlockFormattingContext caller).

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::resolvedPositiveNegativeMarginValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues): Deleted.

2:42 PM Changeset in webkit [256105] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Fix the watchOS build after <rdar://problem/56134081>
https://bugs.webkit.org/show_bug.cgi?id=207443
<rdar://problem/59295173>

Reviewed by Maciej Stachowiak.

Use the version of the SPI that's guaranteed to be available across all platforms.

  • UIProcess/ios/WKContentViewInteraction.mm:

(gestureRecognizerModifierFlags):

1:36 PM Changeset in webkit [256104] by Kate Cheney
  • 73 edits in trunk

[ Mac wk2 ] http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207271
<rdar://problem/59190346>

Reviewed by Maciej Stachowiak.

Source/WebKit:

This patch adds a check to make sure a test is expecting a statistics
processing call before proceeding. Otherwise, this can cause
flakiness in ITP tests if data is removed/changed during the test.

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::processStatisticsAndDataRecords):

LayoutTests:

This patch updates all ITP tests to follow the pattern
setEnableFeature(true) at test setup and setEnableFeature(false) when
finished. This enables/disables both ITP and the isRunningTest
parameter so tests don't have to make two calls. It also ensures that
each test which relies on statistics processing notifies the testRunner
so it knows to wait for a callback, and deletes unecessary calls
to setStatisticsNotifyPagesWhenDataRecordsWereScanned which is called
in installStatisticsDidScanDataRecordsCallback.

This will help limit flakiness by processing statistics only for ITP
tests which require it for their purpose.

  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to.html:
  • http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database.html:
  • http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction.html:
  • http/tests/resourceLoadStatistics/prune-statistics-database.html:
  • http/tests/resourceLoadStatistics/prune-statistics.html:
  • http/tests/resourceLoadStatistics/resources/util.js:

(setEnableFeature):

  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/telemetry-generation-advanced-functionality-database.html:
  • http/tests/resourceLoadStatistics/telemetry-generation-basic-functionality-database.html:
  • http/tests/resourceLoadStatistics/telemetry-generation.html:
  • http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database.html:
  • http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html:
12:47 PM Changeset in webkit [256103] by weinig@apple.com
  • 15 edits in trunk

Move JavaScriptCore related feature defines from FeatureDefines.xcconfig to PlatformEnableCocoa.h
https://bugs.webkit.org/show_bug.cgi?id=207436

Reviewed by Tim Horton.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WTF:

  • wtf/PlatformEnable.h:

Add default values for ENABLE_FAST_JIT_PERMISSIONS and ENABLE_SEPARATED_WX_HEAP.

  • wtf/PlatformEnableCocoa.h:

Added ENABLE_FAST_JIT_PERMISSIONS (from FeatureDefines.xcconfig), ENABLE_SEPARATED_WX_HEAP
(from PlatformEnable.h) and ENABLE_FTL_JIT (from both FeatureDefines.xcconfig and PlatformEnable.h).

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

12:24 PM WebKitGTK/2.28.x edited by Adrian Perez de Castro
(diff)
12:22 PM WebKitGTK/2.28.x edited by Adrian Perez de Castro
(diff)
9:57 AM Changeset in webkit [256102] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Optimize Style::determineChange()
https://bugs.webkit.org/show_bug.cgi?id=207438

Reviewed by Antti Koivisto.

Style::determineChange() called RenderStyle::operator!=() before the testing some other
sets of properties for inequality.

It's faster to call inheritedEqual() etc before the full style compare. Also optimize
comparing alignItems() and justifyItems() by adding a helper function that first tests
for equality of the m_rareNonInheritedData pointer. These (added in r213480) return Inherit
because align-items and justify-items affect child layout.

This is a ~4% progression on some MotionMark subtests. Time under TreeResolver::createAnimatedElementUpdate()
drops from 2.4% to 0.9%.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::descendantAffectingNonInheritedPropertiesEqual const):

  • rendering/style/RenderStyle.h:
  • style/StyleChange.cpp:

(WebCore::Style::determineChange):

9:46 AM Changeset in webkit [256101] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC] FloatingContext::constraints should take a vertical range instead of just vertical position.
https://bugs.webkit.org/show_bug.cgi?id=207440
<rdar://problem/59295022>

Reviewed by Antti Koivisto.

In an IFC, this covers the entire line when searching for intrusive float to shrink the available horizontal space.
(This fix is limited to content with fixed line height)

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::constraints const):

  • layout/floats/FloatingContext.h:
  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::constraintsForLine):

Feb 8, 2020:

8:12 PM Changeset in webkit [256100] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][BFC] Replace "estimated" term with "precomputed"
https://bugs.webkit.org/show_bug.cgi?id=207433
<rdar://problem/59288794>

Reviewed by Antti Koivisto.

The term "pre-computed" describes better what this value is.

  • layout/MarginTypes.h:

(WebCore::Layout::EstimatedMarginBefore::usedValue const): Deleted.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPosition):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForAncestors):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRoot):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::setPrecomputedMarginBefore):
(WebCore::Layout::BlockFormattingContext::hasPrecomputedMarginBefore const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors): Deleted.
(WebCore::Layout::BlockFormattingContext::setEstimatedMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::hasEstimatedMarginBefore const): Deleted.

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::hasClearance const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore): Deleted.

  • layout/displaytree/DisplayBox.cpp:

(WebCore::Display::Box::Box):

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::setHasPrecomputedMarginBefore):
(WebCore::Display::Box::invalidatePrecomputedMarginBefore):
(WebCore::Display::Box::top const):
(WebCore::Display::Box::topLeft const):
(WebCore::Display::Box::setVerticalMargin):
(WebCore::Display::Box::setHasEstimatedMarginBefore): Deleted.
(WebCore::Display::Box::invalidateEstimatedMarginBefore): Deleted.

7:45 PM Changeset in webkit [256099] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][BFC] Pre-compute vertical position only when we really need it.
https://bugs.webkit.org/show_bug.cgi?id=207432
<rdar://problem/59288539>

Reviewed by Antti Koivisto.

Instead of pre-computing the vertical position at computeStaticVerticalPosition, let's compute it when

  1. we are about to layout a new non-float-avoider/float clear FC (e.g. so that intrusive floats can shrink the lines inside IFCs)
  2. we are about to compute the non-static vertical position of a float avoider block level box.
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRoot):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear): Deleted.
(WebCore::Layout::BlockFormattingContext::hasPrecomputedMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition): Deleted.

  • layout/blockformatting/BlockFormattingContext.h:
6:51 PM Changeset in webkit [256098] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][BFC] Remove establishesBlockFormattingContextOnly and establishesInlineFormattingContextOnly
https://bugs.webkit.org/show_bug.cgi?id=207431
<rdar://problem/59288366>

Reviewed by Antti Koivisto.

The current caller of establishesInlineFormattingContextOnly is actually interested in whether the box is float avoider
(and the debug-only caller of establishesBlockFormattingContextOnly should instead check if the box also establishes an IFC).

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::createFormattingContext):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::establishesInlineFormattingContextOnly const): Deleted.
(WebCore::Layout::Box::establishesBlockFormattingContextOnly const): Deleted.

  • layout/layouttree/LayoutBox.h:
6:01 PM Changeset in webkit [256097] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][BFC] Adjust Box::isFloatAvoider() for Inline and Independent FCs.
https://bugs.webkit.org/show_bug.cgi?id=207430
<rdar://problem/59288236>

Reviewed by Antti Koivisto.

A block container box that establishes both BFC and IFC is not a float avoider (add support for independent formatting context too).

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isFloatAvoider const):

5:29 PM Changeset in webkit [256096] by weinig@apple.com
  • 2 edits in trunk/Source/WTF

Migrate definition of USE_PLATFORM_REGISTERS_WITH_PROFILE to PlatformUse.h
https://bugs.webkit.org/show_bug.cgi?id=207428

Reviewed by Tim Horton.

  • wtf/PlatformUse.h:

Move definition of USE_PLATFORM_REGISTERS_WITH_PROFILE from AdditionalFeatureDefines.h, where
it did not belong.

5:11 PM Changeset in webkit [256095] by Simon Fraser
  • 8 edits
    8 adds in trunk

Extent of a composited animation should not include the untransformed position
https://bugs.webkit.org/show_bug.cgi?id=207434

Reviewed by Sam Weinig.
Source/WebCore:

To determine whether to create ("attach") backing store for layers with transform animations,
we compute the union of all the states of the animation as an "extent", and ask whether it intersects
the coverage rect in GraphicsLayerCA.

The non-Web Animations transition code did this correctly, just unioning the bounds transformed by
the start and end state.

The non-Web Animations keyframe code, and the Web Animations KeyframeEffect code (used for both CSS transitions
and animations) also unioned with the unanimated bounds, which could create overly large extents in some
cases, contributing to jetsams on iOS (rdar://problem/59020443).

Fix KeyframeAnimation and KeyframeEffect to not union with the untransformed bounds.

Tests: compositing/backing/backing-store-attachment-animating-outside-viewport.html

legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

LayoutTests:

New test that checks backing store attachment and overlap for an element which is positioned in-view,
but is move offscreen by the animation.

New baselines for overlap tests, since overlap no longer considers the unanimated position.

  • compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • platform/ios-wk2/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • platform/ios-wk2/legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
1:54 PM Changeset in webkit [256094] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][BFC] Box::isFloatAvoider should not check for isFloatingPositioned()
https://bugs.webkit.org/show_bug.cgi?id=207429
<rdar://problem/59288204>

Reviewed by Antti Koivisto.

Box::isFloatAvoider() already checks for establishesBlockFormattingContext() (and floats do establish BFCs).

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isFloatAvoider const):

1:50 PM Changeset in webkit [256093] by ysuzuki@apple.com
  • 4 edits in trunk

[WTF] Try using 75% load factor for HashTable
https://bugs.webkit.org/show_bug.cgi?id=207183

Reviewed by Mark Lam.

Source/WTF:

We know that hash-table is one of the most memory consuming part in WebKit.
By analyzing many production hash-table implementations[1], I found that many
of them are using 75% load-factor while our one is 50%.

This patch changes the load-factor from 50% to 75%. But we pick 75% only for
small tables which capacity is <= 1024 based on collected data by micro-benchmarking.
The collected data is telling that longer probe-length affects on performance if table
size gets larger.

[1]: LLVM DenseMap, Abseil's, rust's, and so on.

  • wtf/HashTable.h:

(WTF::HashTableCapacityForSize::shouldExpand):
(WTF::HashTableCapacityForSize::capacityForSize):
(WTF::HashTable::shouldExpand const):
(WTF::KeyTraits>::computeBestTableSize):

Tools:

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

12:36 PM Changeset in webkit [256092] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

REGRESSION (r256072): ScrollViewScrollabilityTests.ScrollableWithOverflowHiddenAndInputView fails
https://bugs.webkit.org/show_bug.cgi?id=207425
Followup to <rdar://problem/56960774>

Reviewed by Tim Horton.

The failing test ScrollViewScrollabilityTests.ScrollableWithOverflowHiddenAndInputView relies on -[WKWebView
_zoomToFocusRect:...:] to modify the zoom scale of WKScrollView in order for the next layer tree transaction to
have a zoom scale not equal to the initial scale, which in turn ensures that we make the UIScrollView scrollable
after the next remote layer tree update.

The change in r256072 caused us to bail early in -_zoomToFocusRect: and -_zoomToPoint: in the case where the
scroll view is not scrollable (i.e. the page has overflow: hidden); this means that if all the following
conditions are met, we now avoid zooming into focused elements, whereas we would've zoomed before the change:

  1. The user is focusing an element on an iPhone.
  2. The document body has overflow: hidden;, or the WebKit client has called -setScrollEnabled:NO.
  3. Either an SPI client has vended an empty input view and input accessory view, or the focused element has

inputmode="none".

To fix the test and restore zooming behavior, we partially revert the change in r256072, such that we no longer
bail from WKWebView's zooming codepaths if the scrollEnabled property is NO.

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _zoomToPoint:atScale:animated:]):
(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

10:29 AM Changeset in webkit [256091] by weinig@apple.com
  • 26 edits in trunk

Move trivial definitions from FeatureDefines.xcconfig to PlatformEnableCocoa.h
https://bugs.webkit.org/show_bug.cgi?id=207155

Reviewed by Tim Horton.
Source/JavaScriptCore:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make has been updated to generate the list
of ENABLE_* features by directly from preprocessing Platform.h, rather than
just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:

Source/WebCore:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make and generate-unified-sources.sh have been
updated to generate the list of ENABLE_* features by directly from preprocessing
Platform.h, rather than just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • Configurations/WebCore.xcconfig:
  • DerivedSources.make:
  • Scripts/generate-unified-sources.sh:

Source/WebCore/PAL:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

  • Configurations/FeatureDefines.xcconfig:
  • Configurations/PAL.xcconfig:

Remove quotes as they should not be necessary (other uses of BUILT_PRODUCTS_DIR
are not quoted) and complicate scripts that want to use HEADER_SEARCH_PATHS.

Source/WebKit:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make and generate-unified-sources.sh have been
updated to generate the list of ENABLE_* features by directly from preprocessing
Platform.h, rather than just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • Scripts/generate-unified-sources.sh:

Source/WebKitLegacy:

To support the move, generate-unified-sources.sh has been updated to generate
the list of ENABLE_* features by directly from preprocessing Platform.h, rather
than just getting the partial list from the xcconfig file.

  • scripts/generate-unified-sources.sh:

Source/WebKitLegacy/mac:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make has been updated to generate the list
of ENABLE_* features by directly from preprocessing Platform.h, rather than
just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • MigrateHeaders.make:

Source/WTF:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

ENABLE_INSPECTOR_TELEMETRY, ENABLE_TEXT_AUTOSIZING, ENABLE_WEBGL, ENABLE_METER_ELEMENT,
ENABLE_VIDEO_TRACK, ENABLE_WEB_AUDIO and ENABLE_CURSOR_VISIBILITY are all now always
set to 1 for Cocoa (if not defined already), as this was already the case via the xcconfig.

  • wtf/PlatformEnable.h:
  • wtf/PlatformEnableCocoa.h:

Tools:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
7:48 AM Changeset in webkit [256090] by wilander@apple.com
  • 3 edits in trunk/Source/WebKit

Resource Load Statistics: Hold off non-cookie website data deletion until an hour after user interaction
https://bugs.webkit.org/show_bug.cgi?id=207418
<rdar://problem/58550164>

Reviewed by Chris Dumez.

This change makes sure there is at least a one-hour or older timestamp
for user interaction for some website before activating deletion of
non-cookie website data for sites the user has not interacted with.
This ensures that a fresh start such as after a reset or on a new
device doesn't interpret the lack of data as lack of user interaction.

No new tests. Existing tests make sure we don't regress the functionality.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor):

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor):

6:10 AM Changeset in webkit [256089] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Crash in RenderTreeBuilder::Table::findOrCreateParentForChild with multicol spanner
https://bugs.webkit.org/show_bug.cgi?id=206917

Patch by Doug Kelly <Doug Kelly> on 2020-02-08
Reviewed by Zalan Bujtas.

Source/WebCore:

During render tree construction, multi-column spanners are moved from their original tree position to
next to the enclosing anonymous fragmented flow and we mark their previous location with a spanner placeholder.
If we try to add a new renderer right before the spanner (beforeChild is the spanner renderer), we need to use
the spanner's original position as the insertion point.
This patch addresses the mismatching position issue by adjusting the spanner beforeChild right before
we start searching for the final insertion point.

Test: fast/multicol/spanner-crash-when-finding-table-parent.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attach):

  • rendering/updating/RenderTreeBuilderTable.cpp:

(WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild):

LayoutTests:

  • fast/multicol/spanner-crash-when-finding-table-parent-expected.txt: Added.
  • fast/multicol/spanner-crash-when-finding-table-parent.html: Added.
2:35 AM Changeset in webkit [256088] by basuke.suzuki@sony.com
  • 5 edits
    2 deletes in trunk/Source/bmalloc

[bmalloc] VMHeap can be merge into Heap
https://bugs.webkit.org/show_bug.cgi?id=207410

Reviewed by Yusuke Suzuki.

VMHeap has only one member function in it and Heap is the only client of that.
No member variable is defined. It does nothing special with its context as a class.
It is safe to merge the function into Heap.

  • CMakeLists.txt:
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::tryAllocateLargeChunk): Moved from VMHeap.

  • bmalloc/Heap.h:
  • bmalloc/VMHeap.cpp: Removed.
  • bmalloc/VMHeap.h: Removed.

Feb 7, 2020:

10:08 PM Changeset in webkit [256087] by rmorisset@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Throw OutOfMemory exception instead of crashing if DirectArguments/ScopedArguments can't be created
https://bugs.webkit.org/show_bug.cgi?id=207423

Reviewed by Mark Lam.

AllocationFailureMode::Assert is problematic because fuzzers keep producing spurious error reports when they generate code that tries allocating infinite amount of memory.
The right approach is to use AllocationFailureMode::ReturnNull, and throw a JS exception upon receiving null.

In this patch I fixed two functions that were using AllocationFailureMode::Assert:

DirectArguments::DirectArguments::overrideThings
GenericArguments<Type>::initModifiedArgumentsDescriptor

No test added, because the only test we have is highly non-deterministic/flaky (only triggers about 10 to 20% of the time even before the fix).

  • runtime/DirectArguments.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::deletePropertyByIndex):
(JSC::GenericArguments<Type>::defineOwnProperty):
(JSC::GenericArguments<Type>::initModifiedArgumentsDescriptor):
(JSC::GenericArguments<Type>::initModifiedArgumentsDescriptorIfNecessary):
(JSC::GenericArguments<Type>::setModifiedArgumentDescriptor):

  • runtime/ScopedArguments.h:
8:21 PM Changeset in webkit [256086] by jonlee@apple.com
  • 75 edits
    10 copies
    13 adds
    1 delete in trunk/Source

Web Inspector: Revert slim toolbar
https://bugs.webkit.org/show_bug.cgi?id=207422

Reviewed by Timothy Hatcher.

The slim toolbar needs a little more work before landing.

This patch reverts r255547, r255557, r255890, r255892, r255893, r255901, r255980.

Source/WebCore:

  • en.lproj/Localizable.strings:
  • inspector/InspectorFrontendClient.h:
  • inspector/InspectorFrontendClientLocal.cpp:
  • inspector/InspectorFrontendClientLocal.h:
  • inspector/InspectorFrontendHost.cpp:
  • inspector/InspectorFrontendHost.h:
  • inspector/InspectorFrontendHost.idl:

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:
  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/ConsoleManager.js:
  • UserInterface/Debug/Bootstrap.js:
  • UserInterface/Images/NewTab.svg: Added.
  • UserInterface/Images/NewTabPlus.svg: Added.
  • UserInterface/Images/Origin.svg:
  • UserInterface/Images/SearchResults.svg: Added.
  • UserInterface/Images/SourcesPaused.svg: Removed.
  • UserInterface/Main.html:
  • UserInterface/Models/DebuggerDashboard.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Models/DefaultDashboard.js: Added.
  • UserInterface/Views/ActivateButtonToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/AuditTabContentView.js:
  • UserInterface/Views/ButtonNavigationItem.css:
  • UserInterface/Views/ButtonNavigationItem.js:
  • UserInterface/Views/ButtonToolbarItem.css: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/ButtonToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/ConsoleTabContentView.js:
  • UserInterface/Views/ContentBrowserTabContentView.js:
  • UserInterface/Views/ControlToolbarItem.css: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/ControlToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/DOMTreeContentView.css:
  • UserInterface/Views/DashboardContainerView.css: Added.
  • UserInterface/Views/DashboardContainerView.js: Added.
  • UserInterface/Views/DashboardView.js: Copied from Source/WebInspectorUI/UserInterface/Views/PinnedTabBarItem.js.
  • UserInterface/Views/DebuggerDashboardView.css: Added.
  • UserInterface/Views/DebuggerDashboardView.js: Added.
  • UserInterface/Views/DefaultDashboardView.css: Added.
  • UserInterface/Views/DefaultDashboardView.js: Added.
  • UserInterface/Views/DividerNavigationItem.css:
  • UserInterface/Views/ElementsTabContentView.js:
  • UserInterface/Views/FlexibleSpaceNavigationItem.css:
  • UserInterface/Views/GeneralTabBarItem.js:
  • UserInterface/Views/GraphicsTabContentView.js:
  • UserInterface/Views/GroupNavigationItem.js:
  • UserInterface/Views/LayersTabContentView.js:
  • UserInterface/Views/LegacyTabBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/TabBar.js.
  • UserInterface/Views/Main.css:
  • UserInterface/Views/NavigationBar.js:
  • UserInterface/Views/NetworkDetailView.css:
  • UserInterface/Views/NetworkTabContentView.js:
  • UserInterface/Views/NetworkTableContentView.css:
  • UserInterface/Views/NetworkTableContentView.js:
  • UserInterface/Views/NewTabContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineOverviewGraph.css.
  • UserInterface/Views/NewTabContentView.js: Added.
  • UserInterface/Views/PinnedTabBarItem.js:
  • UserInterface/Views/QuickConsole.js:
  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
  • UserInterface/Views/SearchTabContentView.js:
  • UserInterface/Views/SettingsTabContentView.js:
  • UserInterface/Views/Sidebar.js:
  • UserInterface/Views/SizesToFitNavigationBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/SourcesTabContentView.js:
  • UserInterface/Views/StorageTabContentView.js:
  • UserInterface/Views/TabBar.css:
  • UserInterface/Views/TabBar.js:
  • UserInterface/Views/TabBarItem.js:
  • UserInterface/Views/TabBrowser.js:
  • UserInterface/Views/TabContentView.js:
  • UserInterface/Views/TimelineOverview.css:
  • UserInterface/Views/TimelineRecordFrame.css:
  • UserInterface/Views/TimelineRuler.css:
  • UserInterface/Views/TimelineTabContentView.js:
  • UserInterface/Views/Toolbar.css: Added.
  • UserInterface/Views/Toolbar.js: Added.
  • UserInterface/Views/Variables.css:

Source/WebKit:

  • UIProcess/Inspector/RemoteWebInspectorProxy.cpp:
  • UIProcess/Inspector/RemoteWebInspectorProxy.h:
  • UIProcess/Inspector/RemoteWebInspectorProxy.messages.in:
  • UIProcess/Inspector/WebInspectorProxy.cpp:
  • UIProcess/Inspector/WebInspectorProxy.h:
  • UIProcess/Inspector/WebInspectorProxy.messages.in:
  • UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:
  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:
  • UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:
  • UIProcess/Inspector/mac/WebInspectorProxyMac.mm:
  • UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp:
  • UIProcess/Inspector/win/WebInspectorProxyWin.cpp:
  • WebProcess/Inspector/RemoteWebInspectorUI.cpp:
  • WebProcess/Inspector/RemoteWebInspectorUI.h:
  • WebProcess/Inspector/WebInspectorUI.cpp:
  • WebProcess/Inspector/WebInspectorUI.h:

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebInspectorClientIOS.mm:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebInspectorClient.h:
  • WebCoreSupport/WebInspectorClient.mm:
5:03 PM Changeset in webkit [256085] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

REGRESSION: ASSERTION FAILED: resetResult == 0 on regression tests in ITP code, resetting SQLite statement
https://bugs.webkit.org/show_bug.cgi?id=207269
<rdar://problem/59188891>

Reviewed by Brady Eidson.

Adds logging if ITP telemetry calculations fail to step and makes sure
not to reset the statement in this case as it will result in an error.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
4:52 PM Changeset in webkit [256084] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

[IPC Hardening] Protect against bad parameters in WebProcessProxy::getPluginProcessConnection()
https://bugs.webkit.org/show_bug.cgi?id=207416
<rdar://problem/58617244>

Reviewed by David Kilzer.

  • UIProcess/Plugins/PluginProcessManager.cpp:

(WebKit::PluginProcessManager::getPluginProcessConnection):

  • UIProcess/Plugins/PluginProcessManager.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getPluginProcessConnection):

4:51 PM Changeset in webkit [256083] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Convert some debug assertions into MESSAGE_CHECKs in WebPaymentCoordinatorProxy
https://bugs.webkit.org/show_bug.cgi?id=207414
<rdar://problem/58507177>

Reviewed by Andy Estes.

  • Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:

(WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::openPaymentSetup):
(WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
(WebKit::WebPaymentCoordinatorProxy::completeMerchantValidation):
(WebKit::WebPaymentCoordinatorProxy::completeShippingMethodSelection):
(WebKit::WebPaymentCoordinatorProxy::completeShippingContactSelection):
(WebKit::WebPaymentCoordinatorProxy::completePaymentMethodSelection):

4:47 PM Changeset in webkit [256082] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.1.4.2

Tag Safari-610.1.1.4.2.

4:43 PM Changeset in webkit [256081] by achristensen@apple.com
  • 4 edits in trunk/Source

Harden HashTable IPC decoders
https://bugs.webkit.org/show_bug.cgi?id=207415

Reviewed by Chris Dumez.

Source/WebKit:

  • Platform/IPC/ArgumentCoders.h:

Source/WTF:

  • wtf/HashCountedSet.h:
4:43 PM Changeset in webkit [256080] by Kocsen Chung
  • 94 edits
    6 moves
    1 add
    30 deletes in branches/safari-610.1.1.4-branch

Reverts 256046, 256050, 256049, 256047, 256048 from rdar://problem/59264302. rdar://problem/59278423

4:39 PM Changeset in webkit [256079] by Wenson Hsieh
  • 3 edits in trunk/Tools

Several iOS API tests that call -makeKeyWindow assert after r255907
https://bugs.webkit.org/show_bug.cgi?id=207411

Reviewed by Tim Horton.

r255907 asserted in -makeKeyWindow that the shared UIApplication exists. While this was guaranteed for all call
sites of -makeKeyWindow from API tests, -makeKeyWindow may also be invoked from within UIKit code; in this case,
nothing guarantees that the application has been initialized, and we end up hitting this assertion. To fix this,
replace the assertion with logic to bootstrap the shared UIApplication (if it didn't already exist).

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::TEST):
(TestWebKitAPI::overrideBundleIdentifier): Deleted.

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(overrideBundleIdentifier):
(setOverriddenApplicationKeyWindow):

4:33 PM Changeset in webkit [256078] by Kocsen Chung
  • 8 edits in branches/safari-610.1.1.4-branch/Source

Versioning.

4:21 PM Changeset in webkit [256077] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Nullptr crash in WebCore::FontFamilySpecificationCoreText::fontRanges
https://bugs.webkit.org/show_bug.cgi?id=207236
<rdar://problem/57214193>

Patch by Jack Lee <Jack Lee> on 2020-02-07
Reviewed by Ryosuke Niwa.

Add a state variable in FontDescriptionKey for tracking hash entry deletion.

  • platform/graphics/FontCache.h:

(WebCore::FontDescriptionKey::FontDescriptionKey):
(WebCore::FontDescriptionKey::operator== const):
(WebCore::FontDescriptionKey::isHashTableDeletedValue const):

4:03 PM Changeset in webkit [256076] by commit-queue@webkit.org
  • 4 edits in trunk/Source/ThirdParty/ANGLE

Try adding glBindFramebuffer flush workaround to ANGLE as remedy for flaky WebGL tests
https://bugs.webkit.org/show_bug.cgi?id=206625

Patch by Kenneth Russell <kbr@chromium.org> on 2020-02-07
Reviewed by Dean Jackson.

  • include/platform/FeaturesGL.h:
  • src/libANGLE/renderer/gl/StateManagerGL.cpp:

(rx::StateManagerGL::bindFramebuffer):

  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::InitializeFeatures):

3:39 PM Changeset in webkit [256075] by Chris Dumez
  • 34 edits in trunk/Source

[Hardening] Validate Geolocation access permission on UIProcess side
https://bugs.webkit.org/show_bug.cgi?id=207393
<rdar://problem/56816051>

Reviewed by Brent Fulgham.

Source/WebCore:

Validate Geolocation access permission on UIProcess side, instead of only relying solely on the WebProcess for this.

The workflow is as follows:

  • The Geolocation objects request for permission to access location data
  • The UIProcess shows a prompt
  • If the user accepts, the UIProcess sends an authorization token (a UUID string) to the Geolocation object.
  • When the Geolocation object later asks for location updates from the UIProcess, the UIProcess validates that this is a valid authorization token (one that it previously issued for this page)
  • When the Geolocation objects gets destroyed (or resets its permission), the authorization token gets revoked so that it is no longer valid.

No new tests, no Web-facing behavior change, merely hardening.

  • Modules/geolocation/Geolocation.cpp:

(WebCore::Geolocation::~Geolocation):
(WebCore::Geolocation::resumeTimerFired):
(WebCore::Geolocation::resetAllGeolocationPermission):
(WebCore::Geolocation::stop):
(WebCore::Geolocation::setIsAllowed):
(WebCore::Geolocation::revokeAuthorizationTokenIfNecessary):
(WebCore::Geolocation::resetIsAllowed):

  • Modules/geolocation/Geolocation.h:
  • Modules/geolocation/GeolocationClient.h:

(WebCore::GeolocationClient::revokeAuthorizationToken):

  • Modules/geolocation/GeolocationController.cpp:

(WebCore::GeolocationController::addObserver):
(WebCore::GeolocationController::revokeAuthorizationToken):
(WebCore::GeolocationController::activityStateDidChange):

  • Modules/geolocation/GeolocationController.h:
  • platform/mock/GeolocationClientMock.cpp:

(WebCore::GeolocationClientMock::permissionTimerFired):
(WebCore::GeolocationClientMock::startUpdating):

  • platform/mock/GeolocationClientMock.h:

Source/WebKit:

  • UIProcess/GeolocationPermissionRequestManagerProxy.cpp:

(WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision):
(WebKit::GeolocationPermissionRequestManagerProxy::isValidAuthorizationToken const):
(WebKit::GeolocationPermissionRequestManagerProxy::revokeAuthorizationToken):

  • UIProcess/GeolocationPermissionRequestManagerProxy.h:
  • UIProcess/WebGeolocationManagerProxy.cpp:

(WebKit::WebGeolocationManagerProxy::startUpdating):

  • UIProcess/WebGeolocationManagerProxy.h:
  • UIProcess/WebGeolocationManagerProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::geolocationPermissionRequestManager):

  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:

(WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation):
(WebKit::GeolocationPermissionRequestManager::revokeAuthorizationToken):
(WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision):

  • WebProcess/Geolocation/GeolocationPermissionRequestManager.h:
  • WebProcess/Geolocation/WebGeolocationManager.cpp:

(WebKit::WebGeolocationManager::registerWebPage):

  • WebProcess/Geolocation/WebGeolocationManager.h:
  • WebProcess/WebCoreSupport/WebGeolocationClient.cpp:

(WebKit::WebGeolocationClient::startUpdating):
(WebKit::WebGeolocationClient::revokeAuthorizationToken):

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

(WebKit::WebPage::didReceiveGeolocationPermissionDecision):

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

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebGeolocationClient.h:
  • WebCoreSupport/WebGeolocationClient.mm:

(WebGeolocationClient::startUpdating):
(WebGeolocationClient::requestPermission):
(-[WebGeolocationPolicyListener allow]):
(-[WebGeolocationPolicyListener deny]):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebGeolocationClient.cpp:

(WebGeolocationClient::startUpdating):

  • WebCoreSupport/WebGeolocationClient.h:
3:38 PM Changeset in webkit [256074] by Jonathan Bedard
  • 2 edits in trunk/Tools

TestWebKitAPI: Disable legacy ActionSheet tests on Catalyst
https://bugs.webkit.org/show_bug.cgi?id=207405

Reviewed by Wenson Hsieh.

  • TestWebKitAPI/Tests/ios/ActionSheetTests.mm:
3:30 PM Changeset in webkit [256073] by achristensen@apple.com
  • 22 edits in trunk

Remember if we used legacy TLS in the back/forward cache like we remember if we have only secure content
https://bugs.webkit.org/show_bug.cgi?id=207409
rdar://problem/59275641

Patch by Alex Christensen <achristensen@apple.com> on 2020-02-07
Reviewed by Chris Dumez.

Source/WebCore:

Covered by an API test.

  • history/CachedFrame.cpp:

(WebCore::CachedFrame::setHasInsecureContent):

  • history/CachedFrame.h:

(WebCore::CachedFrame::usedLegacyTLS const):

  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::receivedFirstData):
(WebCore::FrameLoader::commitProvisionalLoad):
(WebCore::FrameLoader::dispatchDidCommitLoad):

  • loader/FrameLoader.h:
  • loader/FrameLoaderClient.h:

Source/WebKit:

  • Scripts/webkit/messages.py:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::hasInsecureContent):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
(WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::dispatchDidCommitLoad):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::dispatchDidCommitLoad):

  • WebCoreSupport/WebFrameLoaderClient.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::TEST):

3:25 PM Changeset in webkit [256072] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

[iOS] Double tapping shouldn't scroll the page when the body has overflow: hidden
https://bugs.webkit.org/show_bug.cgi?id=207390
<rdar://problem/56960774>

Reviewed by Tim Horton and Simon Fraser.

Source/WebKit:

Bail out of several codepaths that zoom and scroll WKScrollView as a result of smart magnification gestures
(e.g. one-finger double taps), in the case where scrolling has been disabled on WKScrollView. This may occur
if the page has overflow: hidden on the body or root, but may also happen due to a WebKit client disabling
scrolling via native API, such as webView.scrollView.scrollingEnabled = NO;.

Test: fast/scrolling/ios/double-tap-to-scroll-with-scrolling-disabled.html

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _zoomToPoint:atScale:animated:]):
(-[WKWebView _scrollToRect:origin:minimumScrollDistance:]):

Drive-by fix: change some falses to NOs, and trues to YESs.

(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

LayoutTests:

Add a new layout test to verify that double tapping an element doesn't cause the page to scroll if `overflow:
hidden` is applied to the body.

  • fast/scrolling/ios/double-tap-to-scroll-with-scrolling-disabled-expected.txt: Added.
  • fast/scrolling/ios/double-tap-to-scroll-with-scrolling-disabled.html: Added.
3:19 PM Changeset in webkit [256071] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore/PAL

[Apple Pay] Provide a redacted billing contact during payment method selection
https://bugs.webkit.org/show_bug.cgi?id=207169

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2020-02-07
Reviewed by Andy Estes.

Fix for build problem.

  • pal/spi/cocoa/PassKitSPI.h:
3:03 PM Changeset in webkit [256070] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.1.4.1

Tag Safari-610.1.1.4.1.

3:01 PM Changeset in webkit [256069] by Kocsen Chung
  • 1 delete in tags/Safari-610.1.1.4.1

Delete tag.

3:01 PM Changeset in webkit [256068] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit

Crash under WKBundleFrameForJavaScriptContext dereferencing a NULL WebCore::Frame.
https://bugs.webkit.org/show_bug.cgi?id=207407
rdar://problem/59206599

Reviewed by Tim Horton.

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::frameForContext): Add a null check for the coreFrame.

2:52 PM Changeset in webkit [256067] by Russell Epstein
  • 1 copy in tags/Safari-609.1.17

Tag Safari-609.1.17.

2:49 PM Changeset in webkit [256066] by Ryan Haddad
  • 26 edits in trunk

Unreviewed, rolling out r256051.

Broke internal builds.

Reverted changeset:

"Move trivial definitions from FeatureDefines.xcconfig to
PlatformEnableCocoa.h"
https://bugs.webkit.org/show_bug.cgi?id=207155
https://trac.webkit.org/changeset/256051

2:45 PM Changeset in webkit [256065] by Jonathan Bedard
  • 2 edits in trunk/Tools

iPad testers failing to launch processes
https://bugs.webkit.org/show_bug.cgi?id=207401
<rdar://problem/58184777>

Unreviewed infrastructure fix.

This is a speculative fix because I've had problems reproducing this error.
The only time I managed to reproduce the problem was immediately after killing the
SimulatorTrampoline and CoreSimulator.xpc processes.

  • BuildSlaveSupport/kill-old-processes:

(main): Only kill Simulator.app, not all associated simulator processes.

2:40 PM Changeset in webkit [256064] by Kocsen Chung
  • 8 edits in branches/safari-610.1.1.4-branch/Source

Versioning.

2:29 PM Changeset in webkit [256063] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/WTF

[Win] Two FileSystem API tests fail
https://bugs.webkit.org/show_bug.cgi?id=207388

Reviewed by Don Olmstead.

  • wtf/win/FileSystemWin.cpp:

Make getFinalPathName return dos path rather than nt volume path.
Change createSymbolicLink return to match CreateSymbolicLinkW
Have directoryName strip trailing slashes.

2:16 PM Changeset in webkit [256062] by jiewen_tan@apple.com
  • 9 edits
    3 copies
    1 move
    4 adds in trunk

[WebAuthn] Report CTAP Client Pin Error to clients
https://bugs.webkit.org/show_bug.cgi?id=205837
<rdar://problem/58356872>

Reviewed by Brent Fulgham.

Source/WebKit:

Authenticators could return four different errors { kCtap2ErrPinInvalid, kCtap2ErrPinBlocked, kCtap2ErrPinAuthInvalid, kCtap2ErrPinAuthBlocked }
during 1) GetPinToken or 2) MakeCredential/GetAssertion with PinAuth.

All errors should be reported to the client so that appropriate UI can be displayed to users.
For kCtap2ErrPinAuthInvalid and kCtap2ErrPinInvalid, we will restart the whole Pin process to get
another Pin from the user.

Covered by API tests.

  • UIProcess/API/APIWebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:

(WebKit::wkWebAuthenticationPanelUpdate):

  • UIProcess/WebAuthentication/WebAuthenticationFlags.h:
  • UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::fido::toStatus):
(WebKit::fido::isPinError):
(WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived):
(WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived):
(WebKit::CtapAuthenticator::continueRequestAfterGetPinToken):
(WebKit::CtapAuthenticator::tryRestartPin):

  • UIProcess/WebAuthentication/fido/CtapAuthenticator.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelDelegate panel:updateWebAuthenticationPanel:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-pin-auth-blocked-error.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-error.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-pin-invalid-error-retry.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-auth-blocked-error.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-error.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-pin-auth-blocked-error.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-error.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-pin-auth-invalid-error-retry.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-pin-blocked-error.html: Renamed from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-error.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-pin-invalid-error-retry.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-invalid-error-retry.html: Added.
2:08 PM Changeset in webkit [256061] by Russell Epstein
  • 1 copy in tags/Safari-610.1.1.4.1

Tag Safari-610.1.1.4.1.

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

Captions sometimes render at the wrong size when in fullscreen and PiP
https://bugs.webkit.org/show_bug.cgi?id=207389
<rdar://problem/58677864>

Reviewed by Jer Noble.

The TextTrackRepresentation, used to render captions when in fullscreen and PiP on
iOS and and in PiP on macOS, frequently rendered captions before layout completed
immediately after it was created. Fix this by having it not render until a layout
happens. Additionally, make the code more efficient by hiding the TextTrackRepresentation's
backing layer when cues are not visible instead of destroying the whole object.
Drive by: RELEASE_LOG_DISABLED is always defined for PLATFORM(COCOA), so remove it
from the macOS/iOS media players to make it easier to add logging to VideoFullscreenLayerManagerObjC.

  • html/HTMLMediaElement.cpp:

(WebCore::convertEnumerationToString):
(WebCore::HTMLMediaElement::configureTextTrackDisplay):

  • html/HTMLMediaElementEnums.h:

(WTF::LogArgument<WebCore::HTMLMediaElementEnums::TextTrackVisibilityCheckType>::toString):

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::MediaControlTextTrackContainerElement):
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentation):
(WebCore::MediaControlTextTrackContainerElement::clearTextTrackRepresentation):
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentationStyle):
(WebCore::MediaControlTextTrackContainerElement::layoutIfNecessary):
(WebCore::MediaControlTextTrackContainerElement::updateVideoDisplaySize):
(WebCore::MediaControlTextTrackContainerElement::updateSizes):
(WebCore::MediaControlTextTrackContainerElement::updateCueStyles):
(WebCore::MediaControlTextTrackContainerElement::logger const):
(WebCore::MediaControlTextTrackContainerElement::logIdentifier const):
(WebCore::MediaControlTextTrackContainerElement::updateTimerFired): Deleted.
(WebCore::MediaControlTextTrackContainerElement::updateStyleForTextTrackRepresentation): Deleted.

  • platform/graphics/TextTrackRepresentation.h:
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation):
(WebCore::MediaPlayerPrivateAVFoundation::logChannel const):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenFrame):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateAudioTracks):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::mediaPlayerLogger):

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::logChannel const):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::logChannel const):

  • platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.h:
  • platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm:

(WebCore::VideoFullscreenLayerManagerObjC::VideoFullscreenLayerManagerObjC):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoLayer):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenLayer):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenFrame):
(WebCore::VideoFullscreenLayerManagerObjC::didDestroyVideoLayer):
(WebCore::VideoFullscreenLayerManagerObjC::syncTextTrackBounds):
(WebCore::VideoFullscreenLayerManagerObjC::setTextTrackRepresentation):
(WebCore::VideoFullscreenLayerManagerObjC::logChannel const):

  • platform/graphics/cocoa/TextTrackRepresentationCocoa.h:
  • platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:

(-[WebCoreTextTrackRepresentationCocoaHelper observeValueForKeyPath:ofObject:change:context:]):
(TextTrackRepresentationCocoa::setHidden const):
(TextTrackRepresentationCocoa::boundsChanged):

  • rendering/RenderMediaControlElements.cpp:

(WebCore::RenderTextTrackContainerElement::layout):

2:00 PM Changeset in webkit [256059] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-safari Doesn't work with the latest Xcode version and iOS
https://bugs.webkit.org/show_bug.cgi?id=207394

Reviewed by Ryosuke Niwa.

  • Scripts/webkitdirs.pm:

(iosSimulatorRuntime): Determine the runtime from valid runtimes.
(findOrCreateSimulatorForIOSDevice): iPhone 5 is unsupported, remove code.

1:50 PM Changeset in webkit [256058] by Russell Epstein
  • 1 edit in branches/safari-610.1.1.4-branch/Source/WebKit/Shared/AuxiliaryProcess.cpp

Unreviewed build fix. rdar://problem/59264259

1:45 PM Changeset in webkit [256057] by Jonathan Bedard
  • 2 edits in trunk/Source/WebKit

Handle deprecated APIs in WKImagePreviewViewController
https://bugs.webkit.org/show_bug.cgi?id=207398

Reviewed by Tim Horton.

No new tests, build fix.

  • UIProcess/WKImagePreviewViewController.mm:

(-[WKImagePreviewViewController previewActionItems]): Add deprecation macros.

1:43 PM Changeset in webkit [256056] by Devin Rousso
  • 1 edit
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: Add another Protocol Version (iOS 13.4)
https://bugs.webkit.org/show_bug.cgi?id=207213
<rdar://problem/52846208>

Reviewed by Timothy Hatcher.

  • UserInterface/Protocol/Legacy/13.4/InspectorBackendCommands.js: Added.
  • Versions/Inspector-iOS-13.4.json: Added.
1:29 PM Changeset in webkit [256055] by Kate Cheney
  • 9 edits in trunk

Regression (r256011): http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=207382
<rdar://problem/59259844>

Source/WebKit:

Sort the resource load statistics dumping results so they consistently
print in the same order.

Reviewed by Yusuke Suzuki.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::dumpResourceLoadStatistics):

LayoutTests:

Reviewed by Yusuke Suzuki.

Updated test expectations to reflect new sorting.

  • http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-expected.txt:
  • http/tests/resourceLoadStatistics/count-third-party-script-import-in-worker-expected.txt:
  • http/tests/resourceLoadStatistics/count-third-party-script-loads-expected.txt:
  • http/tests/resourceLoadStatistics/log-delayed-client-side-redirects-expected.txt:
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt:
  • http/tests/storageAccess/aggregate-sorted-data-with-storage-access-expected.txt:
1:16 PM Changeset in webkit [256054] by dbates@webkit.org
  • 4 edits in trunk

Legacy WebKit: Have linkedOnOrAfter() respect the NSDefault WebKitLinkedOnOrAfterEverything and opt DumpRenderTree in
https://bugs.webkit.org/show_bug.cgi?id=207366

Reviewed by Brent Fulgham.

Source/WebKitLegacy/mac:

If the user default WebKitLinkedOnOrAfterEverything is enabled then have linkedOnOrAfter()
always return true.

  • Misc/WebKitVersionChecks.mm:

(linkedOnOrAfter): Read the user default WebKitLinkedOnOrAfterEverything once and cache it.
If the default is enabled then early return true. Outside of tooling this default is unlikely
to be set.

Tools:

Enable default WebKitLinkedOnOrAfterEverything in DumpRenderTree just as we do in WebKitTestRunner.
This lets me put test results for Mac and iOS Legacy WebKit in the same cross-platform directory
as the actual test instead of under a platform-specific directory even when the tests' behavior
depends on the link-time version of WebKit.

Note that testing of pre-linked behavior can still be accomplished by test writers by exposing settings
and toggling them in a test.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setDefaultsToConsistentValuesForTesting):

1:16 PM Changeset in webkit [256053] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/zero-initialize-values-2.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207222

Unreviewed test gardening

  • platform/mac-wk2/TestExpectations: this test is an image failure not a text failure.
1:09 PM Changeset in webkit [256052] by Russell Epstein
  • 1 edit in branches/safari-610.1.1-branch/Source/WebKit/Shared/AuxiliaryProcess.cpp

Unreviewed build fix. rdar://problem/58826101

12:42 PM Changeset in webkit [256051] by weinig@apple.com
  • 26 edits in trunk

Move trivial definitions from FeatureDefines.xcconfig to PlatformEnableCocoa.h
https://bugs.webkit.org/show_bug.cgi?id=207155

Reviewed by Tim Horton.
Source/JavaScriptCore:


Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make has been updated to generate the list
of ENABLE_* features by directly from preprocessing Platform.h, rather than
just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:

Source/WebCore:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make and generate-unified-sources.sh have been
updated to generate the list of ENABLE_* features by directly from preprocessing
Platform.h, rather than just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • Configurations/WebCore.xcconfig:
  • DerivedSources.make:
  • Scripts/generate-unified-sources.sh:

Source/WebCore/PAL:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

  • Configurations/FeatureDefines.xcconfig:
  • Configurations/PAL.xcconfig:

Remove quotes as they should not be necessary (other uses of BUILT_PRODUCTS_DIR
are not quoted) and complicate scripts that want to use HEADER_SEARCH_PATHS.

Source/WebKit:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make and generate-unified-sources.sh have been
updated to generate the list of ENABLE_* features by directly from preprocessing
Platform.h, rather than just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • Scripts/generate-unified-sources.sh:

Source/WebKitLegacy:

To support the move, generate-unified-sources.sh has been updated to generate
the list of ENABLE_* features by directly from preprocessing Platform.h, rather
than just getting the partial list from the xcconfig file.

  • scripts/generate-unified-sources.sh:

Source/WebKitLegacy/mac:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make has been updated to generate the list
of ENABLE_* features by directly from preprocessing Platform.h, rather than
just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • MigrateHeaders.make:

Source/WTF:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

ENABLE_INSPECTOR_TELEMETRY, ENABLE_TEXT_AUTOSIZING, ENABLE_WEBGL, ENABLE_METER_ELEMENT,
ENABLE_VIDEO_TRACK, ENABLE_WEB_AUDIO and ENABLE_CURSOR_VISIBILITY are all now always
set to 1 for Cocoa (if not defined already), as this was already the case via the xcconfig.

  • wtf/PlatformEnable.h:
  • wtf/PlatformEnableCocoa.h:

Tools:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
11:35 AM Changeset in webkit [256050] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-610.1.1.4-branch

Cherry-pick r255422. rdar://problem/59264302

[Web Animations] Changing the delay of an accelerated animation doesn't seek the animation
https://bugs.webkit.org/show_bug.cgi?id=206990
<rdar://problem/58675608>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: webanimations/seeking-by-changing-delay-accelerated.html

In order to seek an accelerated animation, we need to update the animation on the target element's backing GraphicsLayer. We do this by enqueuing an
AcceleratedAction:Seek command which is done by calling KeyframeEffect::animationDidSeek(), which we would only call from WebAnimation::setCurrentTime().
However, seeking can be performed by modifying the animation's effect's timing.

We now call WebAnimation::effectTimingDidChange() with an optional ComputedEffectTiming for call sites that want to provide timing data prior to
modifying timing properties. This allows WebAnimation::effectTimingDidChange() to compare the previous progress with the new progress to determine if the
animation was seeked, so KeyframeEffect::animationDidSeek() may be called.

There are two places where we now call WebAnimation::effectTimingDidChange() with the previous timing data. First, when updateTiming() is called
through the JavaScript API (AnimationEffect::updateTiming) and when a CSS Animation's timing has been modified by changing some of the animation CSS
properties (CSSAnimation::syncPropertiesWithBackingAnimation).

  • animation/AnimationEffect.cpp: (WebCore::AnimationEffect::updateTiming): Compute the previous timing data and provide it to WebAnimation::effectTimingDidChange().
  • animation/CSSAnimation.cpp: (WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): Compute the previous timing data and provide it to WebAnimation::effectTimingDidChange().
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeAcceleratedPropertiesState): Drive-by fix for faulty logic introduced in a recent patch (r255383). (WebCore::KeyframeEffect::applyPendingAcceleratedActions): We need to reset the m_isRunningAccelerated flag when an animation was supposed to be stopped but couldn't be because the target's layer backing was removed prior to the accelerated action being committed.
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::effectTimingDidChange): If previous timing data was provided, check whether its progress differs from the current timing data and call KeyframeEffect::animationDidSeek().
  • animation/WebAnimation.h:

LayoutTests:

Add a new test which would fail prior to this patch where we pause an animation after it has started playing accelerated and
change its delay to check that it correctly seeks the animation.

  • webanimations/seeking-by-changing-delay-accelerated-expected.html: Added.
  • webanimations/seeking-by-changing-delay-accelerated.html: Added.
  • platform/win/TestExpectations: Mark the new test as failing.

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

11:35 AM Changeset in webkit [256049] by Russell Epstein
  • 70 edits
    3 copies
    3 moves
    22 adds in branches/safari-610.1.1.4-branch

Cherry-pick r255396. rdar://problem/59264302

Web Inspector: add instrumentation for showing existing Web Animations
https://bugs.webkit.org/show_bug.cgi?id=205434
<rdar://problem/28328087>

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/Animation.json: Add types/commands/events for instrumenting the lifecycle of Animation objects, as well as commands for getting the JavaScript wrapper object and the target DOM node.

Source/WebCore:

Add types/commands/events for instrumenting the lifecycle of Animation objects, as well as
commands for getting the JavaScript wrapper object and the target DOM node.

Tests: inspector/animation/effectChanged.html

inspector/animation/lifecycle-css-animation.html
inspector/animation/lifecycle-css-transition.html
inspector/animation/lifecycle-web-animation.html
inspector/animation/requestEffectTarget.html
inspector/animation/resolveAnimation.html
inspector/animation/targetChanged.html

  • animation/WebAnimation.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::instances): Added. (WebCore::WebAnimation::instancesMutex): Added. (WebCore::WebAnimation::create): (WebCore::WebAnimation::WebAnimation): (WebCore::WebAnimation::~WebAnimation): (WebCore::WebAnimation::effectTimingDidChange): (WebCore::WebAnimation::setEffectInternal): (WebCore::WebAnimation::effectTargetDidChange):
  • animation/CSSAnimation.cpp: (WebCore::CSSAnimation::create):
  • animation/CSSTransition.cpp: (WebCore::CSSTransition::create):
  • animation/KeyframeEffect.h: (WebCore::KeyframeEffect::parsedKeyframes const): Added. (WebCore::KeyframeEffect::blendingKeyframes const): Added. (WebCore::KeyframeEffect::hasBlendingKeyframes const): Deleted. Provide a way to access the list of keyframes.
  • inspector/InspectorInstrumentation.h: (WebCore::InspectorInstrumentation::didSetWebAnimationEffect): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTiming): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTarget): Added. (WebCore::InspectorInstrumentation::didCreateWebAnimation): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffect): Deleted.
  • inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::didCommitLoadImpl): (WebCore::InspectorInstrumentation::didSetWebAnimationEffectImpl): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTimingImpl): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTargetImpl): Added. (WebCore::InspectorInstrumentation::didCreateWebAnimationImpl): Added. (WebCore::InspectorInstrumentation::willDestroyWebAnimationImpl): (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectImpl): Deleted.
  • inspector/InstrumentingAgents.h: (WebCore::InstrumentingAgents::enabledInspectorAnimationAgent const): Added. (WebCore::InstrumentingAgents::setEnabledInspectorAnimationAgent): Added.
  • inspector/InstrumentingAgents.cpp: (WebCore::InstrumentingAgents::reset):
  • inspector/agents/InspectorAnimationAgent.h:
  • inspector/agents/InspectorAnimationAgent.cpp: (WebCore::protocolValueForSeconds): Added. (WebCore::protocolValueForPlaybackDirection): Added. (WebCore::protocolValueForFillMode): Added. (WebCore::buildObjectForKeyframes): Added. (WebCore::buildObjectForEffect): Added. (WebCore::InspectorAnimationAgent::InspectorAnimationAgent): (WebCore::InspectorAnimationAgent::willDestroyFrontendAndBackend): (WebCore::InspectorAnimationAgent::enable): Added. (WebCore::InspectorAnimationAgent::disable): Added. (WebCore::InspectorAnimationAgent::requestEffectTarget): Added. (WebCore::InspectorAnimationAgent::resolveAnimation): Added. (WebCore::InspectorAnimationAgent::didSetWebAnimationEffect): Added. (WebCore::InspectorAnimationAgent::didChangeWebAnimationEffectTiming): Added. (WebCore::InspectorAnimationAgent::didChangeWebAnimationEffectTarget): Added. (WebCore::InspectorAnimationAgent::didCreateWebAnimation): Added. (WebCore::InspectorAnimationAgent::willDestroyWebAnimation): (WebCore::InspectorAnimationAgent::frameNavigated): (WebCore::InspectorAnimationAgent::findAnimationId): Added. (WebCore::InspectorAnimationAgent::assertAnimation): Added. (WebCore::InspectorAnimationAgent::bindAnimation): Added. (WebCore::InspectorAnimationAgent::unbindAnimation): Added. (WebCore::InspectorAnimationAgent::animationDestroyedTimerFired): Added. (WebCore::InspectorAnimationAgent::reset): Added. (WebCore::InspectorAnimationAgent::didChangeWebAnimationEffect): Deleted.
  • inspector/agents/InspectorDOMAgent.h:
  • inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::pushNodeToFrontend): (WebCore::InspectorDOMAgent::querySelector): (WebCore::InspectorDOMAgent::pushNodePathToFrontend): (WebCore::InspectorDOMAgent::setNodeName): (WebCore::InspectorDOMAgent::setOuterHTML): (WebCore::InspectorDOMAgent::moveTo): (WebCore::InspectorDOMAgent::requestNode): (WebCore::InspectorDOMAgent::pushNodeByPathToFrontend): Add an overload for pushNodePathToFrontend that exposes an ErrorString.

Source/WebInspectorUI:

  • UserInterface/Controllers/AnimationManager.js: Added. (WI.AnimationManager): (WI.AnimationManager.prototype.get domains): (WI.AnimationManager.prototype.activateExtraDomain): (WI.AnimationManager.prototype.initializeTarget): (WI.AnimationManager.prototype.get animationCollection): (WI.AnimationManager.prototype.get supported): (WI.AnimationManager.prototype.enable): (WI.AnimationManager.prototype.disable): (WI.AnimationManager.prototype.animationCreated): (WI.AnimationManager.prototype.effectChanged): (WI.AnimationManager.prototype.targetChanged): (WI.AnimationManager.prototype.animationDestroyed): (WI.AnimationManager.prototype._handleMainResourceDidChange):
  • UserInterface/Protocol/AnimationObserver.js: (WI.AnimationObserver.prototype.animationCreated): Added. (WI.AnimationObserver.prototype.effectChanged): Added. (WI.AnimationObserver.prototype.targetChanged): Added. (WI.AnimationObserver.prototype.animationDestroyed): Added.
  • UserInterface/Models/AnimationCollection.js: Added. (WI.AnimationCollection): (WI.AnimationCollection.prototype.get animationType): (WI.AnimationCollection.prototype.get displayName): (WI.AnimationCollection.prototype.objectIsRequiredType): (WI.AnimationCollection.prototype.animationCollectionForType): (WI.AnimationCollection.prototype.itemAdded): (WI.AnimationCollection.prototype.itemRemoved): (WI.AnimationCollection.prototype.itemsCleared): Similar to WI.ResourceCollection, create a subclass of WI.Collection that maintains it's own sub-WI.AnimationCollections for each type of WI.Animation.Type.
  • UserInterface/Models/Animation.js: Added. (WI.Animation): (WI.Animation.fromPayload): (WI.Animation.displayNameForAnimationType): (WI.Animation.displayNameForPlaybackDirection): (WI.Animation.displayNameForFillMode): (WI.Animation.resetUniqueDisplayNameNumbers): (WI.Animation.prototype.get animationId): (WI.Animation.prototype.get backtrace): (WI.Animation.prototype.get animationType): (WI.Animation.prototype.get startDelay): (WI.Animation.prototype.get endDelay): (WI.Animation.prototype.get iterationCount): (WI.Animation.prototype.get iterationStart): (WI.Animation.prototype.get iterationDuration): (WI.Animation.prototype.get timingFunction): (WI.Animation.prototype.get playbackDirection): (WI.Animation.prototype.get fillMode): (WI.Animation.prototype.get keyframes): (WI.Animation.prototype.get displayName): (WI.Animation.prototype.requestEffectTarget): (WI.Animation.prototype.effectChanged): (WI.Animation.prototype.targetChanged): (WI.Animation.prototype._updateEffect):
  • UserInterface/Protocol/RemoteObject.js: (WI.RemoteObject.resolveAnimation): Added.
  • UserInterface/Views/GraphicsTabContentView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js. (WI.GraphicsTabContentView): (WI.GraphicsTabContentView.tabInfo): (WI.GraphicsTabContentView.isTabAllowed): (WI.GraphicsTabContentView.prototype.get type): (WI.GraphicsTabContentView.prototype.showRepresentedObject): Added. (WI.GraphicsTabContentView.prototype.canShowRepresentedObject): (WI.GraphicsTabContentView.prototype.closed): (WI.GraphicsTabContentView.prototype.attached): (WI.GraphicsTabContentView.prototype.detached): (WI.GraphicsTabContentView.prototype.initialLayout): Added. (WI.GraphicsTabContentView.prototype._handleOverviewTreeOutlineSelectionDidChange): Added.
  • UserInterface/Views/GraphicsTabContentView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.css. Rename the Canvas Tab to Graphics Tab and display four sections:
    • Canvases
    • Web Animations
    • CSS Animations
    • CSS Transitions
  • UserInterface/Views/CanvasSidebarPanel.js: (WI.CanvasSidebarPanel.prototype.canShowRepresentedObject): Only appear if a WI.Canvas or WI.Recording is selected.
  • UserInterface/Views/GraphicsOverviewContentView.js: Added. (WI.GraphicsOverviewContentView): (WI.GraphicsOverviewContentView.prototype.get supplementalRepresentedObjects): (WI.GraphicsOverviewContentView.prototype.get navigationItems): (WI.GraphicsOverviewContentView.prototype.attached): (WI.GraphicsOverviewContentView.prototype.detached): (WI.GraphicsOverviewContentView.prototype.initialLayout): (WI.GraphicsOverviewContentView.prototype.dropZoneShouldAppearForDragEvent): (WI.GraphicsOverviewContentView.prototype.dropZoneHandleDrop): (WI.GraphicsOverviewContentView.prototype._handleRefreshButtonClicked): (WI.GraphicsOverviewContentView.prototype._handleShowGridButtonClicked): (WI.GraphicsOverviewContentView.prototype._handleShowImageGridSettingChanged): (WI.GraphicsOverviewContentView.prototype._handleImportButtonNavigationItemClicked): (WI.GraphicsOverviewContentView.prototype._handleOverviewViewSelectedItemChanged): (WI.GraphicsOverviewContentView.prototype._handleOverviewViewSupplementalRepresentedObjectsDidChange): (WI.GraphicsOverviewContentView.prototype._handleClick):
  • UserInterface/Views/GraphicsOverviewContentView.css: Added. (.content-view.graphics-overview): (.content-view.graphics-overview > section): (.content-view.graphics-overview > section:not(:first-child)): (.content-view.graphics-overview > section > .header): (.content-view.graphics-overview > section:not(:first-of-type) > .header): (.content-view.graphics-overview > section > .header > h1): (.content-view.graphics-overview > section > .header > .navigation-bar): (.content-view.graphics-overview > .content-view.canvas-overview): (@media (prefers-color-scheme: light) .content-view.graphics-overview): (@media (prefers-color-scheme: light) .content-view.graphics-overview > section > .header): Add sticky headers for each of the sections described above.
  • UserInterface/Views/AnimationCollectionContentView.js: Added. (WI.AnimationCollectionContentView): (WI.AnimationCollectionContentView.prototype.handleRefreshButtonClicked): (WI.AnimationCollectionContentView.prototype.contentViewAdded): (WI.AnimationCollectionContentView.prototype.contentViewRemoved): (WI.AnimationCollectionContentView.prototype.detached): (WI.AnimationCollectionContentView.prototype._handleContentViewMouseEnter): (WI.AnimationCollectionContentView.prototype._handleContentViewMouseLeave):
  • UserInterface/Views/AnimationCollectionContentView.css: Added. (.content-view.animation-collection):
  • UserInterface/Views/AnimationContentView.js: Added. (WI.AnimationContentView): (WI.AnimationContentView.get previewHeight): (WI.AnimationContentView.prototype.handleRefreshButtonClicked): (WI.AnimationContentView.prototype.initialLayout): (WI.AnimationContentView.prototype.layout): (WI.AnimationContentView.prototype.sizeDidChange): (WI.AnimationContentView.prototype.attached): (WI.AnimationContentView.prototype.detached): (WI.AnimationContentView.prototype._refreshSubtitle): (WI.AnimationContentView.prototype._refreshPreview.addTitle): (WI.AnimationContentView.prototype._refreshPreview): (WI.AnimationContentView.prototype._handleEffectChanged): (WI.AnimationContentView.prototype._handleTargetChanged): (WI.AnimationContentView.prototype._populateAnimationTargetButtonContextMenu):
  • UserInterface/Views/AnimationContentView.css: Added. (.content-view.animation): (.content-view.animation.selected): (.content-view.animation > header): (.content-view.animation > header > .titles): (.content-view.animation > header > .titles > .title): (.content-view.animation > header > .titles > .subtitle): (.content-view.animation > header > .titles > .subtitle:not(:empty)::before): (.content-view.animation > header > .navigation-bar): (.content-view.animation:hover > header > .navigation-bar): (.content-view.animation > .preview): (.content-view.animation > .preview > svg): (body[dir=rtl] .content-view.animation > .preview > svg): (.content-view.animation > .preview > svg rect): (.content-view.animation > .preview > svg > .delay line): (.content-view.animation > .preview > svg > .active path): (.content-view.animation > .preview > svg > .active circle): (.content-view.animation > .preview > svg > .active line): (.content-view.animation > .preview > span): (@media (prefers-color-scheme: dark) .content-view.animation > header > .titles > .title): (@media (prefers-color-scheme: dark) .content-view.animation > header > .titles > .subtitle): (@media (prefers-color-scheme: dark) .content-view.animation > .preview): Visualize the start/end delay and keyframes of the given animation as a series of bezier curves separated by markers.
  • UserInterface/Views/AnimationDetailsSidebarPanel.js: Added. (WI.AnimationDetailsSidebarPanel): (WI.AnimationDetailsSidebarPanel.prototype.inspect): (WI.AnimationDetailsSidebarPanel.prototype.get animation): (WI.AnimationDetailsSidebarPanel.prototype.set animation): (WI.AnimationDetailsSidebarPanel.prototype.initialLayout): (WI.AnimationDetailsSidebarPanel.prototype.layout): (WI.AnimationDetailsSidebarPanel.prototype._refreshIdentitySection): (WI.AnimationDetailsSidebarPanel.prototype._refreshEffectSection): (WI.AnimationDetailsSidebarPanel.prototype._refreshBacktraceSection): (WI.AnimationDetailsSidebarPanel.prototype._handleAnimationEffectChanged): (WI.AnimationDetailsSidebarPanel.prototype._handleAnimationTargetChanged): (WI.AnimationDetailsSidebarPanel.prototype._handleDetailsSectionCollapsedStateChanged):
  • UserInterface/Views/AnimationDetailsSidebarPanel.css: Added. (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .header > .subtitle): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section .row.styles): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section .row.styles .CodeMirror): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section): Show collected information about the selected animation, its effect, and its target.
  • UserInterface/Controllers/CanvasManager.js: (WI.CanvasManager): (WI.CanvasManager.prototype.get canvasCollection): Added. (WI.CanvasManager.prototype.disable): (WI.CanvasManager.prototype.canvasAdded): (WI.CanvasManager.prototype.canvasRemoved): (WI.CanvasManager.prototype._saveRecordings): Added. (WI.CanvasManager.prototype._mainResourceDidChange): (WI.CanvasManager.prototype.get canvases): Deleted. (WI.CanvasManager.prototype._removeCanvas): Deleted. Rather than have the WI.CanvasTabContentView mainain the WI.CanvasCollection and have to listen for events from the WI.CanvasManager, just have the WI.CanvasManager hold on to it instead and provide a getter for it.
  • UserInterface/Views/CanvasOverviewContentView.js: (WI.CanvasOverviewContentView): (WI.CanvasOverviewContentView.prototype.get navigationItems): (WI.CanvasOverviewContentView.prototype.handleRefreshButtonClicked): (WI.CanvasOverviewContentView.prototype.contentViewAdded): (WI.CanvasOverviewContentView.prototype.contentViewRemoved): (WI.CanvasOverviewContentView.prototype.attached): (WI.CanvasOverviewContentView.prototype.detached): (WI.CanvasOverviewContentView.prototype._addSavedRecording): (WI.CanvasOverviewContentView.prototype.hidden): Deleted. (WI.CanvasOverviewContentView.prototype.get _itemMargin): Deleted. (WI.CanvasOverviewContentView.prototype._refreshPreviews): Deleted. (WI.CanvasOverviewContentView.prototype._updateNavigationItems): Deleted. (WI.CanvasOverviewContentView.prototype._showGridButtonClicked): Deleted. (WI.CanvasOverviewContentView.prototype._updateShowImageGrid): Deleted.
  • UserInterface/Views/CanvasOverviewContentView.css: (.content-view.canvas-overview): (.content-view.canvas-overview > .content-view.canvas): (@media (prefers-color-scheme: dark) .content-view.canvas-overview): Deleted.
  • UserInterface/Views/CanvasContentView.js: (WI.CanvasContentView): (WI.CanvasContentView.prototype.handleRefreshButtonClicked): Added. (WI.CanvasContentView.prototype.dropZoneShouldAppearForDragEvent): Added. (WI.CanvasContentView.prototype.dropZoneHandleDrop): Added. (WI.CanvasContentView.prototype.initialLayout): (WI.CanvasContentView.prototype.attached): (WI.CanvasContentView.prototype._populateCanvasElementButtonContextMenu): (WI.CanvasContentView.prototype.shown): Deleted. Move the "Log Canvas Context" to be the first item in the canvas element button context menu. Drive-by: add a WI.DropZoneView for when recording JSON files are dragged on top.
  • UserInterface/Views/CanvasContentView.css: Drive-by: drop :not(.tab) from all selectors since the Canvas Tab doesn't exist anymore.
  • UserInterface/Views/CollectionContentView.js: (WI.CollectionContentView): (WI.CollectionContentView.prototype.get selectedItem): Added. (WI.CollectionContentView.prototype.set selectedItem): Added. (WI.CollectionContentView.prototype.addContentViewForItem): (WI.CollectionContentView.prototype.removeContentViewForItem): (WI.CollectionContentView.prototype.showContentPlaceholder): (WI.CollectionContentView.prototype.initialLayout): (WI.CollectionContentView.prototype._selectItem): (WI.CollectionContentView.prototype._handleClick): Added. (WI.CollectionContentView.prototype.setSelectedItem): Deleted.
  • UserInterface/Views/CollectionContentView.css: (.content-view.collection > .placeholder:not(.message-text-view)): Added. (.content-view.collection .resource.image img): Deleted. (.content-view.collection .resource.image img:hover): Deleted. When selection is enabled, clicking outside of any of the content views should dismiss the current selection. Clients should also be able to get the currently selected item.
  • UserInterface/Views/DetailsSectionSimpleRow.js: (WI.DetailsSectionSimpleRow.prototype.set value): Ensure that 0 is considered as a valid value.
  • UserInterface/Base/Main.js: (WI.loaded): (WI.contentLoaded): (WI.tabContentViewClassForRepresentedObject):
  • UserInterface/Views/ContentView.js: (WI.ContentView.createFromRepresentedObject): (WI.ContentView.isViewable): Allow WI.Animation to be viewable.
  • UserInterface/Views/Main.css: (.navigation-item-help): Added. (.navigation-item-help > .navigation-bar): Added. (.navigation-item-help > .navigation-bar > .item): Added. (.message-text-view .navigation-item-help): Deleted. (.message-text-view .navigation-item-help .navigation-bar): Deleted. (.message-text-view .navigation-item-help .navigation-bar > .item): Deleted. Allow WI.createNavigationItemHelp to be used independently of WI.createMessageTextView.
  • UserInterface/Controllers/DOMManager.js: (WI.DOMManager.prototype.nodeForId):
  • UserInterface/Controllers/TimelineManager.js: (WI.TimelineManager.prototype.animationTrackingUpdated):
  • UserInterface/Models/AuditTestCaseResult.js: (WI.AuditTestCaseResult.async fromPayload): Add a fallback so callers don't need to.
  • UserInterface/Views/ResourceCollectionContentView.js: (WI.ResourceCollectionContentView):
  • UserInterface/Views/ResourceCollectionContentView.css: (.content-view.resource-collection > .resource.image img): Added. (.content-view.resource-collection > .resource.image img:hover): Added. Drive-by: move these styles to the right file and make them more specific.
  • UserInterface/Models/Canvas.js: (WI.Canvas.displayNameForContextType):
  • UserInterface/Models/Recording.js: (WI.Recording.displayNameForRecordingType): Added. Drive-by: fix localized strings.
  • UserInterface/Views/RecordingContentView.css: Drive-by: drop :not(.tab) from all selectors since the Recording Tab doesn't exist anymore.
  • UserInterface/Main.html:
  • UserInterface/Images/Graphics.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/Canvas.svg.
  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Test.html:
  • UserInterface/Test/Test.js: (WI.loaded):
  • UserInterface/Test/TestHarness.js: (TestHarness.prototype.expectEmpty): Added. (TestHarness.prototype.expectNotEmpty): Added. (TestHarness.prototype._expectationMessageFormat): (TestHarness.prototype._expectedValueFormat): Add utility function for checking whether the given value is empty:
    • Array length === 0
    • String length === 0
    • Set size === 0
    • Map size === 0
    • Object isEmptyObject

Any other type will automatically fail, as non-objects can't be "empty" (e.g. 42).

LayoutTests:

  • inspector/animation/effectChanged.html: Added.
  • inspector/animation/effectChanged-expected.txt: Added.
  • inspector/animation/lifecycle-css-animation.html: Added.
  • inspector/animation/lifecycle-css-animation-expected.txt: Added.
  • inspector/animation/lifecycle-css-transition.html: Added.
  • inspector/animation/lifecycle-css-transition-expected.txt: Added.
  • inspector/animation/lifecycle-web-animation.html: Added.
  • inspector/animation/lifecycle-web-animation-expected.txt: Added.
  • inspector/animation/requestEffectTarget.html: Added.
  • inspector/animation/requestEffectTarget-expected.txt: Added.
  • inspector/animation/resolveAnimation.html: Added.
  • inspector/animation/resolveAnimation-expected.txt: Added.
  • inspector/animation/targetChanged.html: Added.
  • inspector/animation/targetChanged-expected.txt: Added.
  • inspector/animation/resources/lifecycle-utilities.js: Added. (createAnimation): (destroyAnimations): (InspectorTest.AnimationLifecycleUtilities.async awaitAnimationCreated): (InspectorTest.AnimationLifecycleUtilities.async awaitAnimationDestroyed): (InspectorTest.AnimationLifecycleUtilities.async createAnimation): (InspectorTest.AnimationLifecycleUtilities.async destroyAnimations):
  • inspector/canvas/create-context-webgpu.html:
  • inspector/canvas/resources/create-context-utilities.js: (destroyCanvases): (awaitCanvasAdded): (InspectorTest.CreateContextUtilities.initializeTestSuite):
  • inspector/canvas/context-attributes.html:
  • inspector/canvas/extensions.html:
  • inspector/canvas/memory.html:
  • inspector/canvas/requestClientNodes.html:
  • inspector/canvas/requestContent-2d.html:
  • inspector/canvas/requestContent-bitmaprenderer.html:
  • inspector/canvas/requestContent-webgl.html:
  • inspector/canvas/requestContent-webgl2.html:
  • inspector/canvas/requestNode.html:
  • inspector/canvas/resolveContext-2d.html:
  • inspector/canvas/resolveContext-bitmaprenderer.html:
  • inspector/canvas/resolveContext-webgl.html:
  • inspector/canvas/resolveContext-webgl2.html:
  • inspector/canvas/resolveContext-webgpu.html:
  • inspector/canvas/recording.html:
  • inspector/canvas/setRecordingAutoCaptureFrameCount.html:
  • inspector/canvas/resources/recording-utilities.js: (window.getCanvas):
  • inspector/canvas/shaderProgram-add-remove-webgpu.html:
  • inspector/canvas/updateShader-webgpu-sharedVertexFragment.html:
  • inspector/canvas/resources/shaderProgram-utilities-webgpu.js:
  • inspector/canvas/resources/shaderProgram-utilities-webgl.js: (deleteContext): (whenProgramAdded): (window.initializeTestSuite): (window.addParentCanvasRemovedTestCase):
  • inspector/unit-tests/test-harness-expect-functions.html:
  • inspector/unit-tests/test-harness-expect-functions-expected.txt:

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

11:34 AM Changeset in webkit [256048] by Russell Epstein
  • 15 edits
    1 copy
    3 moves
    7 adds
    1 delete in branches/safari-610.1.1.4-branch

Cherry-pick r255383. rdar://problem/59264302

[Web Animations] Animations should run accelerated even if other animations targeting the same element are not accelerated
https://bugs.webkit.org/show_bug.cgi?id=206890
<rdar://problem/58961750>

Reviewed by Simon Fraser.

Source/WebCore:

Test: webanimations/width-and-opacity-separate-animation-yields-compositing.html

In the Web Animations implementation, when an element has some animated properties that can be accelerated and some that cannot be, we would never
run accelerated animations at all. However, in the "legacy" animation engine, we would animate properties that can be acclerated if possible.
We now attempt to run accelerated animations provided at least one animation is accelerated.

To do that, we now keep track of whether none, some or all of the animated properties of a given KeyframeEffect are accelerated using the new
m_acceleratedPropertiesState instance variable. We compute this property when creating the blending keyframes for the effect.

Then, as time progresses and the effect is resolved, updateAcceleratedActions() is called and we simply use the effect's phase to determine
whether we need to enqueue actions to start, pause, seek or end accelerated animations. This is an improvement over how this method used to work
since we would run accelerated animations while in their delay phase, which did not match the "legacy" animation engine's behavior.

We've also removed the single method that provided the accelerated characteristics of a KeyframeEffect, isAccelerated(), with a few more methods:

  • isRunningAccelerated(): the effect is currently running accelerated animations.
  • isAboutToRunAccelerated(): the effect has pending accelerated actions that should make it run accelerated animations when accelerated actions are updated next.
  • isCompletelyAccelerated(): the effect animates only accelerated properties.
  • isCurrentlyAffectingProperty(property, accelerated): the effect is currently animating the given property, with the option to specify whether that animation is accelerated.

We use this information in a few new places. If an effect returns true for either isRunningAccelerated() or isAboutToRunAccelerated() when
Element::applyKeyframeEffects() is called, we set the AnimationImpact::RequiresRecomposite flag. In RenderLayerCompositor::requiresCompositingForAnimation(),
if an effect returns true for isCurrentlyAffectingProperty() with the accelerated flag set to true, the method returns true, matching the logic
used by the "legacy" animation engine.

All in all, this better aligns the behavior of the "legacy" and Web Animations engines to run accelerated animations in the same circumstances.

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::updateCSSTransitionsForElementAndProperty): Use KeyframeEfffect::isRunningAccelerated() instead of KeyframeEffect::isAccelerated().
  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::isRunningAcceleratedAnimationOnRenderer const): Use KeyframeEffect::isCurrentlyAffectingProperty() instead of checking both isRunningAccelerated() and manually looking at the effect's animated properties.
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::setBlendingKeyframes): Call computeAcceleratedPropertiesState() instead of the now-defunct computeShouldRunAccelerated(). (WebCore::KeyframeEffect::apply): Keep track of the newly computed phase so that we may use it in the new isCurrentlyAffectingProperty() without having to recompute it on each call. (WebCore::KeyframeEffect::isCurrentlyAffectingProperty const): Indicates whether a given property is currently animated (active phase) with the option to specify whether that animation is accelerated. (WebCore::KeyframeEffect::computeAcceleratedPropertiesState): Compute whether none, some or all of the animated properties of the given effect can be accelerated. (WebCore::KeyframeEffect::updateAcceleratedActions): Use the phase to determine which accelerated actions to enqueue. (WebCore::KeyframeEffect::animationDidSeek): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::animationWasCanceled): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::animationSuspensionStateDidChange): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::applyPendingAcceleratedActions):
  • animation/KeyframeEffect.h: (WebCore::KeyframeEffect::isRunningAccelerated const): (WebCore::KeyframeEffect::isAboutToRunAccelerated const): (WebCore::KeyframeEffect::isCompletelyAccelerated const):
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::isCurrentlyAffectingProperty const): Indicates whether any of the effects in the stack animates a given property, with the option to specify whether the animation should be accelerated.
  • animation/KeyframeEffectStack.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::effectTargetDidChange): Ensure we schedule an animation update if an effect is no longer animating a given element or newly animating an element, to ensure that replaced animations may be removed. (WebCore::WebAnimation::isCompletelyAccelerated const): Convenience function to call isCompletelyAccelerated() on the animation's effect. (WebCore::WebAnimation::computeRelevance): Check the replaced state when computing relevance. (WebCore::WebAnimation::timeToNextTick const): Schedule an immediate update if a given animation is not _completely_ accelerated.
  • animation/WebAnimation.h:
  • dom/Element.cpp: (WebCore::Element::keyframeEffectStack const): (WebCore::Element::applyKeyframeEffects): Set the AnimationImpact::RequiresRecomposite flag when the animation is either currently running accelerated or expected to be in the next accelerated animation update.
  • dom/Element.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const): Use the same logic as for the "legacy" animation engine to determine whether an animation requires compositing using the new KeyframeEffect::isCurrentlyAffectingProperty() method. (WebCore::RenderLayerCompositor::isRunningTransformAnimation const): Refactor some code to use the new KeyframeEffect::isCurrentlyAffectingProperty() method.

LayoutTests:

Update some tests that assumed a mix of accelerated and non-accelerated properties would not yield accelerated animations.
We also make some WK1-specific expectation due to compositing being disabled when opacity is the only potentially-accelerated
property to be animated.

  • platform/mac-wk1/imported/w3c/web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt: Added.
  • platform/mac-wk1/webanimations/opacity-animation-yields-compositing-expected.txt: Added.
  • platform/mac-wk1/webanimations/opacity-animation-yields-compositing-span-expected.txt: Added.
  • platform/mac-wk1/webanimations/partly-accelerated-transition-by-removing-property-expected.txt: Added.
  • platform/mac-wk1/webanimations/width-and-opacity-separate-animation-yields-compositing-expected.txt: Added.
  • webanimations/left-and-opacity-animation-yields-no-compositing-expected.txt: Removed.
  • webanimations/partly-accelerated-transition-by-removing-property-expected.txt:
  • webanimations/width-and-opacity-separate-animation-yields-compositing-expected.txt: Added.
  • webanimations/width-and-opacity-separate-animation-yields-compositing.html: Renamed from LayoutTests/webanimations/left-and-opacity-animation-yields-no-compositing.html.
  • webanimations/width-and-opacity-separate-animation-yields-no-compositing-expected.txt: Removed.
  • webanimations/width-and-opacity-separate-animation-yields-no-compositing.html: Removed.

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

11:34 AM Changeset in webkit [256047] by Russell Epstein
  • 14 edits in branches/safari-610.1.1.4-branch

Cherry-pick r255076. rdar://problem/59264302

[Web Animations] Support multiple CSS Animations with the same name in animation-name
https://bugs.webkit.org/show_bug.cgi?id=206688

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark some new WPT progressions.

  • web-platform-tests/css/css-animations/Element-getAnimations-dynamic-changes.tentative-expected.txt:
  • web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
  • web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement-expected.txt:

Source/WebCore:

AnimationTimeline would keep track of registered CSS Animations by name for a given element in m_elementToCSSAnimationByName which would map one CSSAnimation
per String (the animation-name) for a given Element. However, within the same animation-name property, the name of a given @keyframes rules may appear more
than once, and the CSS Animations specification explains how to handle this scenario.

We now correctly handle this by replacing m_elementToCSSAnimationByName with the new m_elementToCSSAnimationsCreatedByMarkupMap which simply maps an Element
to a ListHashSet of CSSAnimation objects. Removing the string that appeared in animation-name to create this animation requires us to keep the AnimationList
used for the last style update for sorting purposes, since having multiple instances of the same string would not allow disambiguation when sorting the
KeyframeEffectStack.

So we also replace m_cssAnimationNames, a Vector<String>, with m_cssAnimationList, a RefPtr<const AnimationList>, and use this to compare Animation objects
stored in the AnimationList against the backing animation of each CSSAnimation.

Storing the AnimationList on the KeyframeEffectStack also has the benefit of allowing us to use this as the previous state when updating CSS Animations in
AnimationTimeline::updateCSSAnimationsForElement(). We used to rely on the previous RenderStyle provided to that function, but it's possible that this style
is null and we would unnecessarily create additional CSSAnimation objects for animations that actually were retained since the last time CSS Animations were
invalidated. We now use the stored AnimationList on the invalidated element's KeyframeEffectStack and create a new animation list that will replace the old
list stored in the m_elementToCSSAnimationsCreatedByMarkupMap map for that element. We can also compare the old list with the new list to find out which
animations are no longer current.

Finally, we refactor things a bit to have some new aliases AnimationCollection and CSSAnimationCollection instead of using ListHashSet<> in our types.

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::animationWasAddedToElement): Use the new AnimationCollection alias. (WebCore::AnimationTimeline::removeDeclarativeAnimationFromListsForOwningElement): We no longer need to do any work for CSSAnimation here since the m_elementToCSSAnimationByName map is no more and the m_elementToCSSAnimationsCreatedByMarkupMap that replaces it is updated in updateCSSAnimationsForElement() and elementWasRemoved(). (WebCore::AnimationTimeline::animationsForElement const): Since animations are correctly sorted accounting for their composite order in KeyframeEffectStack, call KeyframeEffectStack::sortedEffects() when we're called with Ordering::Sorted. (WebCore::AnimationTimeline::removeCSSAnimationCreatedByMarkup): New method called by elementWasRemoved() to ensure that when an element is removed, we remove its CSSAnimation objects from the new m_elementToCSSAnimationsCreatedByMarkupMap and also update the AnimationList on the relevant KeyframeEffectStack. (WebCore::AnimationTimeline::elementWasRemoved): Call the new removeCSSAnimationCreatedByMarkup() method before canceling a CSSAnimation. (WebCore::AnimationTimeline::cancelDeclarativeAnimationsForElement): Call the new removeCSSAnimationCreatedByMarkup() method before canceling a CSSAnimation. (WebCore::AnimationTimeline::updateCSSAnimationsForElement): Use the AnimationList recoreded on the relevant KeyframeEffectStack to determine which CSSAnimation objects to create, cancel or merely update depending on the AnimationList in the current style.
  • animation/AnimationTimeline.h:
  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::getAnimations const): Use compareAnimationsByCompositeOrder() to correctly sort CSS Animations since they are no longer guaranteed to be stored in the relevant map in the expected order.
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::ensureEffectsAreSorted): Use the new m_cssAnimationList instead of the old m_cssAnimationNames when sorting effects. (WebCore::KeyframeEffectStack::setCSSAnimationList): (WebCore::KeyframeEffectStack::setCSSAnimationNames): Deleted.
  • animation/KeyframeEffectStack.h: (WebCore::KeyframeEffectStack::cssAnimationList const): (WebCore::KeyframeEffectStack::cssAnimationNames const): Deleted.
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::commitStyles): Use the new KeyframeEffectStack::cssAnimationList() instead of the old KeyframeEffectStack::cssAnimationNames().
  • animation/WebAnimationUtilities.cpp: (WebCore::compareAnimationsByCompositeOrder): Update the composite order comparison utility to use an AnimationList rather than a list of animation names.
  • animation/WebAnimationUtilities.h:
  • platform/animation/AnimationList.h: (WebCore::AnimationList::copy const):

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

11:34 AM Changeset in webkit [256046] by Russell Epstein
  • 6 edits in branches/safari-610.1.1.4-branch/Source/WebCore

Cherry-pick r254991. rdar://problem/59264302

[Web Animations] Make AnimationList ref-counted
https://bugs.webkit.org/show_bug.cgi?id=206664

Reviewed by Antti Koivisto.

  • platform/animation/AnimationList.cpp:
  • platform/animation/AnimationList.h: (WebCore::AnimationList::create): (WebCore::AnimationList::copy): (WebCore::AnimationList::AnimationList): Deleted.
  • rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::ensureAnimations): (WebCore::RenderStyle::ensureTransitions):
  • rendering/style/StyleRareNonInheritedData.cpp: (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
  • rendering/style/StyleRareNonInheritedData.h:

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

11:34 AM Changeset in webkit [256045] by Russell Epstein
  • 14 edits
    5 deletes in branches/safari-610.1.1.4-branch

Cherry-pick r255189. rdar://problem/59264259

Unreviewed, revert r253984 as it appears to be causing assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205687

Source/WebKit:

  • Configurations/WebKit.xcconfig:
  • Platform/spi/ios/RunningBoardServicesSPI.h: Removed.
  • Scripts/process-entitlements.sh:
  • Shared/DependencyProcessAssertion.cpp: Removed.
  • Shared/DependencyProcessAssertion.h: Removed.
  • Shared/NativeWebTouchEvent.h:
  • Shared/ios/DependencyProcessAssertionIOS.mm: Removed.
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasResumed):
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::releaseProcessWasResumedAssertions):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd: Removed.

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

11:34 AM Changeset in webkit [256044] by Russell Epstein
  • 5 edits in branches/safari-610.1.1.4-branch/Source/WebKit

Cherry-pick r255178. rdar://problem/59264259

Unreviewed, revert r254210 as it seems to be causing process assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205836

  • Shared/AuxiliaryProcess.cpp: (WebKit::AuxiliaryProcess::initializeConnection):
  • Shared/AuxiliaryProcess.h:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:

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

11:25 AM Changeset in webkit [256043] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ macOS ] Layout Test legacy-animation-engine/animations/suspend-resume-animation-events.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=184617

Unreviewed test gardening.

  • platform/mac/TestExpectations:
11:18 AM Changeset in webkit [256042] by Kate Cheney
  • 7 edits in trunk

Update WebView category name to be more accurate
https://bugs.webkit.org/show_bug.cgi?id=207334
<rdar://problem/59224855>

Reviewed by Brent Fulgham.

Source/WebKit:

  • Shared/WebViewCategory.h:
  • UIProcess/API/APIPageConfiguration.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(toWebKitWebViewCategory):
(toWKWebViewCategory):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Configuration.mm:

(TEST):

11:04 AM Changeset in webkit [256041] by commit-queue@webkit.org
  • 16 edits
    2 adds in trunk

[Apple Pay] Provide a redacted billing contact during payment method selection
https://bugs.webkit.org/show_bug.cgi?id=207169
<rdar://problem/42737441>

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2020-02-07
Reviewed by Andy Estes.

Source/WebCore:

Added requestBillingAddress option to PaymentOptions, to allow merchants
to request the user's billing address prior to user authentication to allow
the calculation of taxes. Added billingAddress member to ApplePayPaymentMethod
to return the billing address in the PaymentMethodChanged callback function.

Test: http/tests/ssl/applepay/ApplePayBillingAddress.html

  • Modules/applepay/ApplePayPaymentMethod.h:
  • Modules/applepay/ApplePayPaymentMethod.idl:
  • Modules/applepay/PaymentCoordinatorClient.cpp:

(WebCore::PaymentCoordinatorClient::supportsVersion):

  • Modules/applepay/cocoa/PaymentMethodCocoa.mm:

(WebCore::convert):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::mergePaymentOptions):

  • Modules/paymentrequest/PaymentOptions.h:
  • Modules/paymentrequest/PaymentOptions.idl:

LayoutTests:

Test that billing address field of ApplePayPaymentMethod is properly
populated in the PaymentMethodChange callback.

  • http/tests/ssl/applepay/ApplePayBillingAddress-expected.txt: Added.
  • http/tests/ssl/applepay/ApplePayBillingAddress.html: Added.
11:01 AM Changeset in webkit [256040] by Kocsen Chung
  • 14 edits
    5 deletes in branches/safari-610.1.1-branch

Cherry-pick r255189. rdar://problem/58826101

Unreviewed, revert r253984 as it appears to be causing assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205687

Source/WebKit:

  • Configurations/WebKit.xcconfig:
  • Platform/spi/ios/RunningBoardServicesSPI.h: Removed.
  • Scripts/process-entitlements.sh:
  • Shared/DependencyProcessAssertion.cpp: Removed.
  • Shared/DependencyProcessAssertion.h: Removed.
  • Shared/NativeWebTouchEvent.h:
  • Shared/ios/DependencyProcessAssertionIOS.mm: Removed.
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasResumed):
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::releaseProcessWasResumedAssertions):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd: Removed.

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

11:01 AM Changeset in webkit [256039] by Kocsen Chung
  • 5 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255178. rdar://problem/58826101

Unreviewed, revert r254210 as it seems to be causing process assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205836

  • Shared/AuxiliaryProcess.cpp: (WebKit::AuxiliaryProcess::initializeConnection):
  • Shared/AuxiliaryProcess.h:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:

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

11:01 AM Changeset in webkit [256038] by Kocsen Chung
  • 15 edits
    1 copy
    4 adds in branches/safari-610.1.1-branch

Revert cherry-pick of r255189 to have a clean slate. Since we need to also take r255178.

10:59 AM Changeset in webkit [256037] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] Slightly improve performance of Font::getCFStringAttributes()
https://bugs.webkit.org/show_bug.cgi?id=207374

Reviewed by Darin Adler.

Switch from CFDictionaryCreateMutable() to CFDictionaryCreate(). Also, don't construct a CTParagraphStyle each time the function is called.

No new tests because there is no behavior change.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::widthForSimpleText const):

  • platform/graphics/mac/SimpleFontDataCoreText.cpp:

(WebCore::Font::getCFStringAttributes const):

10:49 AM Changeset in webkit [256036] by Russell Epstein
  • 1 copy in branches/safari-610.1.1.4-branch

New branch.

10:47 AM Changeset in webkit [256035] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] imported/w3c/web-platform-tests/workers/WorkerGlobalScope_ErrorEvent_lineno.htm is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207395

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:41 AM Changeset in webkit [256034] by youenn@apple.com
  • 6 edits in trunk

Align getDisplayMedia() with spec
https://bugs.webkit.org/show_bug.cgi?id=207191
<rdar://problem/59151017>

Reviewed by Eric Carlson.

Source/WebCore:

Update WebIDL as per spec to have the correct default values for getDisplayMedia.
Covered by updated test.

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::getDisplayMedia):

  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/MediaDevices.idl:

LayoutTests:

  • fast/mediastream/screencapture-user-gesture.html:
10:26 AM Changeset in webkit [256033] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] imported/w3c/web-platform-tests/workers/WorkerGlobalScope_ErrorEvent_message.htm is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207392

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:26 AM Changeset in webkit [256032] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Add release logging for the case of libwebrtc being not available
https://bugs.webkit.org/show_bug.cgi?id=207383

Reviewed by Eric Carlson.

Add logging in case of no libwebrtc dylib, in case we try to create a peer connection or a libwebrtc factory.
No change of behavior.

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::createLibWebRTCPeerConnectionBackend):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::LibWebRTCProvider::factory):

10:13 AM Changeset in webkit [256031] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] add commit-queue build step to close the bug
https://bugs.webkit.org/show_bug.cgi?id=207387

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin.close_bug): Method to close the bugzilla bug.
(CloseBug): Build step to close bugzilla bug.

10:10 AM Changeset in webkit [256030] by youenn@apple.com
  • 2 edits in trunk/Source/WTF

Mandate UUID version 4 for mDNS ICE candidates
https://bugs.webkit.org/show_bug.cgi?id=207329
<rdar://problem/59221606>

Address post-commit comments from Darin by using isASCIIHexDigit.

Unreviewed.

  • wtf/UUID.cpp:

(WTF::isVersion4UUID):
(WTF::isHexadecimalCharacter): Deleted.

9:54 AM Changeset in webkit [256029] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r256017. rdar://problem/59261560

REGRESSION (r255953): [ iOS Mac ] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=207342
<rdar://problem/59227960>

Reviewed by Youenn Fablet.

DocumentTimeline::detachFromDocument() may remove the last reference to WebAnimation objects that may, in return, remove the last reference of this
DocumentTimeline. As such, this method should make a strong reference to itself for the span of this method. However, we should not be calling it
from the destructor where the only thing matters is removing the weak reference from the Document to the DocumentTimeline.

  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::~DocumentTimeline): (WebCore::DocumentTimeline::detachFromDocument):

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

9:45 AM Changeset in webkit [256028] by Kocsen Chung
  • 14 edits
    5 deletes in branches/safari-610.1.1-branch

Cherry-pick r255189. rdar://problem/58826101

Unreviewed, revert r253984 as it appears to be causing assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205687

Source/WebKit:

  • Configurations/WebKit.xcconfig:
  • Platform/spi/ios/RunningBoardServicesSPI.h: Removed.
  • Scripts/process-entitlements.sh:
  • Shared/DependencyProcessAssertion.cpp: Removed.
  • Shared/DependencyProcessAssertion.h: Removed.
  • Shared/NativeWebTouchEvent.h:
  • Shared/ios/DependencyProcessAssertionIOS.mm: Removed.
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasResumed):
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::releaseProcessWasResumedAssertions):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd: Removed.

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

9:24 AM Changeset in webkit [256027] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] imported/w3c/web-platform-tests/css/css-transitions/properties-value-002.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207386

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:07 AM Changeset in webkit [256026] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] add commit-queue build step to clear flags on patch
https://bugs.webkit.org/show_bug.cgi?id=206536

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin): Class for common bugzilla related methods.
(BugzillaMixin.get_bugzilla_api_key): Method to read bugzilla api key from file.
(BugzillaMixin.remove_flags_on_patch): Method to remove flags on patch.
(ValidatePatch):
(RemoveFlagsOnPatch): Class to remove flags on patch.
(RemoveFlagsOnPatch.start):
(ValidatePatch._addToLog): Moved.
(ValidatePatch.fetch_data_from_url): Moved.
(ValidatePatch.get_patch_json): Moved.
(ValidatePatch.get_bug_json): Moved.
(ValidatePatch.get_bug_id_from_patch): Moved.
(ValidatePatch._is_patch_obsolete): Moved.
(ValidatePatch._is_patch_review_denied): Moved.
(ValidatePatch._is_patch_cq_plus): Moved.
(ValidatePatch._is_bug_closed): Moved.

8:50 AM Changeset in webkit [256025] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/tests/paymentrequest/page-cache-completed-payment-response.https.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207385

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:40 AM Changeset in webkit [256024] by youenn@apple.com
  • 5 edits
    2 adds in trunk

Filter out TURN/STUN .local URLs from a RTCPeerConnection iceServers list
https://bugs.webkit.org/show_bug.cgi?id=207332

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCConfiguration-iceServers-expected.txt:

Rebase tests since we are passing a few more sub tests by converting String to a Vector of one string,
as allowed by the spec and tested by this test.

Source/WebCore:

Test: webrtc/stun-server-filtering.html

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::iceServersFromConfiguration):
Ignore .local URLs for STUN/TURN servers as they are not used right now
and could be used to discover local network services.

LayoutTests:

  • webrtc/stun-server-filtering-expected.txt: Added.
  • webrtc/stun-server-filtering.html: Added.
8:34 AM Changeset in webkit [256023] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

BackgroundProcessResponsivenessTimer should not be active if running active pages and service workers
https://bugs.webkit.org/show_bug.cgi?id=207264

Reviewed by Chris Dumez.

In case a service worker is running, the process might still be foreground if a page is running in the same process.
Not observable.

  • UIProcess/BackgroundProcessResponsivenessTimer.cpp:

(WebKit::BackgroundProcessResponsivenessTimer::shouldBeActive const):

8:29 AM Changeset in webkit [256022] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Address post-landing review comments from Darin on r255989.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::terminateServiceWorkerProcess):

8:19 AM Changeset in webkit [256021] by Jonathan Bedard
  • 5 edits in trunk/Tools

EWS should run resultsdbpy tests
https://bugs.webkit.org/show_bug.cgi?id=201928

Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-build/factories.py:

(ServicesFactory.init): Add RunResultsdbpyTests.

  • BuildSlaveSupport/ews-build/factories_unittest.py:

(TestTestsFactory.test_services_factory): Add RunResultsdbpyTests.

  • BuildSlaveSupport/ews-build/steps.py:

(CheckPatchRelevance): resultsdbpy changes should trigger service tests.
(RunResultsdbpyTests): Add step which runs resultsdbpy tests.

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestRunResultsdbpyTests):
(TestRunResultsdbpyTests.setUp):
(TestRunResultsdbpyTests.tearDown):
(TestRunResultsdbpyTests.test_success):
(TestRunResultsdbpyTests.test_failure):

8:15 AM Changeset in webkit [256020] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC hardening] Update WebPasteboardProxy methods to validate their parameters
https://bugs.webkit.org/show_bug.cgi?id=207308
<rdar://problem/58632938>

Reviewed by Brent Fulgham.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):
(WebKit::WebPasteboardProxy::getPasteboardStringForType):
(WebKit::WebPasteboardProxy::getPasteboardStringsForType):
(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::setPasteboardStringForType):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):
(WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):

8:12 AM Changeset in webkit [256019] by Jacob Uphoff
  • 2 edits in trunk/Tools

Adding myself to contributors.json

Unreviewed

  • Scripts/webkitpy/common/config/contributors.json:
7:54 AM Changeset in webkit [256018] by Jason_Lawrence
  • 2 edits in trunk/Tools

Adding myself to contributors.json

Unreviewed

  • Scripts/webkitpy/common/config/contributors.json:
4:53 AM Changeset in webkit [256017] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION (r255953): [ iOS Mac ] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=207342
<rdar://problem/59227960>

Reviewed by Youenn Fablet.

DocumentTimeline::detachFromDocument() may remove the last reference to WebAnimation objects that may, in return, remove the last reference of this
DocumentTimeline. As such, this method should make a strong reference to itself for the span of this method. However, we should not be calling it
from the destructor where the only thing matters is removing the weak reference from the Document to the DocumentTimeline.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::~DocumentTimeline):
(WebCore::DocumentTimeline::detachFromDocument):

2:42 AM Changeset in webkit [256016] by youenn@apple.com
  • 7 edits in trunk/Source

Mandate UUID version 4 for mDNS ICE candidates
https://bugs.webkit.org/show_bug.cgi?id=207329

Reviewed by Alex Christensen.

Source/WebCore:

Ignore ICE candidates if they are mDNS but not UUID version 4.
Covered by existing tests relying on mDNS to do the connection.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::shouldIgnoreCandidate):
(WebCore::PeerConnectionBackend::addIceCandidate):

Source/WebKit:

  • NetworkProcess/webrtc/NetworkMDNSRegister.cpp:

(WebKit::NetworkMDNSRegister::registerMDNSName):
Remove the count at the end of the mDNS name to make it a fully version 4 UUID.

Source/WTF:

Add a routine to validate version 4 UUID.

  • wtf/UUID.cpp:

(WTF::isHexadecimalCharacter):
(WTF::isVersion4UUID):

  • wtf/UUID.h:
2:06 AM Changeset in webkit [256015] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] CodeBlock::shrinkToFit should shrink m_constantRegisters and m_constantsSourceCodeRepresentation in 64bit architectures
https://bugs.webkit.org/show_bug.cgi?id=207356

Reviewed by Mark Lam.

Only 32bit architectures are using m_constantRegisters's address. 64bit architectures are not relying on m_constantRegisters's address.
This patches fixes the thing so that CodeBlock::shrinkToFit will shrink m_constantRegisters and m_constantsSourceCodeRepresentation
regardless of whether this is EarlyShrink or not. We also move DFG/FTL's LateShrink call to the place after calling DFGCommon reallyAdd
since they can add more constant registers.

Relanding it by fixing dead-lock.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::shrinkToFit):

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

(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):

  • dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::finalizeCommon):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):
(JSC::DFG::Plan::finalizeWithoutNotifyingCallback):

  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITInlines.h:

(JSC::JIT::emitLoadDouble):
(JSC::JIT::emitLoadInt32ToDouble): Deleted.

2:01 AM Changeset in webkit [256014] by commit-queue@webkit.org
  • 7 edits
    1 add in trunk

[OpenSSL] Implement WebCrypto APIs for AES-CBC, AES-CFB and AES-GCM
https://bugs.webkit.org/show_bug.cgi?id=207176

Patch by Tomoki Imai <Tomoki Imai> on 2020-02-07
Reviewed by Fujii Hironori.

Source/WebCore:

Add WebCrypto implementations for the following algorithms with OpenSSL.

  • AES_CBC
  • AES_CFB
  • AES_GCM

Currently we don't have AES-KW implementation, because EVP API doesn't have AES-KW implementation.

Enabled WebCrypto LayoutTests for AES-CBC, AES-CFB and AES-GCM.

  • crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp:

(WebCore::aesAlgorithm): Added. Helper function to select which AES-CBC algorithm to be used by checking key size.
(WebCore::cryptEncrypt): Added. Helper function for platformEncrypt.
(WebCore::cryptDecrypt): Added. Helper function for platformDecrypt.
(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt): Implemented
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt): Implemented

  • crypto/openssl/CryptoAlgorithmAES_CFBOpenSSL.cpp:

(WebCore::aesAlgorithm): Added. Helper function to select which AES-CFB algorithm to be used by checking key size.
(WebCore::cryptEncrypt): Added. Helper function for platformEncrypt.
(WebCore::cryptDecrypt): Added. Helper function for platformDecrypt.
(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt): Implemented
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt): Implemented

  • crypto/openssl/CryptoAlgorithmAES_GCMOpenSSL.cpp:

(WebCore::aesAlgorithm): Added. Helper function to select which AES-GCM algorithm to be used by checking key size.
(WebCore::cryptEncrypt): Added. Helper function for platformEncrypt.
(WebCore::cryptDecrypt): Added. Helper function for platformDecrypt.
(WebCore::CryptoAlgorithmAES_GCM::platformEncrypt): Implemented
(WebCore::CryptoAlgorithmAES_GCM::platformDecrypt): Implemented

  • crypto/openssl/CryptoAlgorithmRegistryOpenSSL.cpp:

(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms): Registered CryptoAlgorithmAES_CBC, CryptoAlgorithmAES_CFB,
and CryptoAlgorithmAES_GCM.

  • crypto/openssl/OpenSSLCryptoUniquePtr.h: Added to make sure that EVP_CIPHER_CTX is freed.

(WebCore::OpenSSLCryptoPtrDeleter<EVP_CIPHER_CTX>::operator() const):

LayoutTests:

Enabled WebCrypto LayoutTests for AES-CBC, AES-CFB and AES-GCM along with the implementation.

  • platform/wincairo/TestExpectations:
1:39 AM Changeset in webkit [256013] by Patrick Griffis
  • 16 edits in trunk

[GTK][WPE] Add same-site cookie support
https://bugs.webkit.org/show_bug.cgi?id=204137

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Implements same-site cookie support in the soup backend.

  • platform/network/HTTPParsers.cpp:

(WebCore::isSafeMethod):

  • platform/network/HTTPParsers.h:
  • platform/network/SameSiteInfo.cpp:

(WebCore::SameSiteInfo::create):

  • platform/network/SameSiteInfo.h:

(WebCore::SameSiteInfo::encode const):
(WebCore::SameSiteInfo::decode):

  • platform/network/soup/CookieSoup.cpp:

(WebCore::coreSameSitePolicy):
(WebCore::soupSameSitePolicy):
(WebCore::Cookie::Cookie):
(WebCore::Cookie::toSoupCookie const):

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::getRawCookies const):
(WebCore::cookiesForSession):
(WebCore::NetworkStorageSession::cookiesForDOM const):
(WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::updateSoupMessageMembers const):
(WebCore::ResourceRequest::updateFromSoupMessage):

Source/WebKit:

Implements same-site cookie support in the soup backend.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):

Tools:

Update libsoup to 2.69.90 in JHBuild.

  • gtk/jhbuild.modules:
  • wpe/jhbuild.modules:

LayoutTests:

Updated GTK/WPE test expectations to pass most same-site cookie tests
matching the Apple ports.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
1:11 AM Changeset in webkit [256012] by commit-queue@webkit.org
  • 25 edits in trunk

Fix fetch/api/policies/referrer-origin-worker.html
https://bugs.webkit.org/show_bug.cgi?id=206520

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

LayoutTests/imported/w3c:

Updated improved test result.

  • web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:

Source/WebCore:

Expose referrer policy as part of the worker global scope [1] through
the new ScriptExecutionContext::referrerPolicy method.
Call it as environment settings object when starting a fetch in case
the FetchRequestInit has no referrerPolicy set [2].

Test: imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker.html

[1] https://html.spec.whatwg.org/multipage/workers.html#set-up-a-worker-environment-settings-object
[2] https://fetch.spec.whatwg.org/#ref-for-concept-main-fetch① (Step 2.5)

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • dom/Document.h:

(WebCore::Document::referrerPolicy const): Deleted.

  • dom/ScriptExecutionContext.h:
  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):

  • workers/DedicatedWorkerThread.h:
  • workers/Worker.cpp:

(WebCore::Worker::notifyFinished):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::referrerPolicy const):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerMessagingProxy.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerParameters::isolatedCopy const):
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):

  • workers/WorkerThread.h:
  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::create):
(WebCore::ServiceWorkerGlobalScope::ServiceWorkerGlobalScope):

  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):

  • workers/service/context/ServiceWorkerThread.h:
  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::referrerPolicy const):

  • worklets/WorkletGlobalScope.h:
12:55 AM Changeset in webkit [256011] by ysuzuki@apple.com
  • 4 edits in trunk

Unreviewed, revert 75% load-factor because of JetStream2/string-unpack-code-SP regression
https://bugs.webkit.org/show_bug.cgi?id=207183

Source/WTF:

  • wtf/HashTable.h:

(WTF::HashTable::shouldExpand const):
(WTF::KeyTraits>::computeBestTableSize):
(WTF::HashTable::shouldExpand): Deleted.
(WTF::HashTableCapacityForSize::capacityForSize): Deleted.

Tools:

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

12:48 AM Changeset in webkit [256010] by youenn@apple.com
  • 30 edits
    1 copy
    7 adds in trunk

[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=206582
Source/WebCore:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

AVAssetWriterDelegate allows to grab recorded data whenever wanted.
This delegate requires passing compressed samples to AVAssetWriter.
Implement video encoding and audio encoding in dedicated classes and use these classes before adding buffers to AVAssetWriter.
These classes are AudioSampleBufferCompressor and VideoSampleBufferCompressor.
They support AAC and H264 so far and should be further improved to support more encoding options.

Instantiate real writer only for platforms supporting AVAssetWriterDelegate, since it is not supported everywhere.
The writer, doing the pacakging, is receiving compressed buffer from the audio/video compressors.
It then sends data when being request to flush to its delegate, which will send data to the MediaRecorderPrivateWriter.
The MediaRecorderPrivateWriter stores the data in a SharedBuffer until MediaRecorder asks for data.

Note that, whenever we request data, we flush the writer and insert an end of video sample to make sure video data gets flushed.
Therefore data should not be requested too fast to get adequate video compression.

Covered by existing tests.

  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::createMediaRecorderPrivate):

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::create):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h: Added.
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm: Added.

(WebCore::AudioSampleBufferCompressor::create):
(WebCore::AudioSampleBufferCompressor::AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::~AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::initialize):
(WebCore::AudioSampleBufferCompressor::finish):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):
(WebCore::AudioSampleBufferCompressor::computeBufferSizeForAudioFormat):
(WebCore::AudioSampleBufferCompressor::attachPrimingTrimsIfNeeded):
(WebCore::AudioSampleBufferCompressor::gradualDecoderRefreshCount):
(WebCore::AudioSampleBufferCompressor::sampleBufferWithNumPackets):
(WebCore::AudioSampleBufferCompressor::audioConverterComplexInputDataProc):
(WebCore::AudioSampleBufferCompressor::provideSourceDataNumOutputPackets):
(WebCore::AudioSampleBufferCompressor::processSampleBuffersUntilLowWaterTime):
(WebCore::AudioSampleBufferCompressor::processSampleBuffer):
(WebCore::AudioSampleBufferCompressor::addSampleBuffer):
(WebCore::AudioSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::AudioSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(-[WebAVAssetWriterDelegate initWithWriter:]):
(-[WebAVAssetWriterDelegate assetWriter:didProduceFragmentedHeaderData:]):
(-[WebAVAssetWriterDelegate assetWriter:didProduceFragmentedMediaData:fragmentedMediaDataReport:]):
(-[WebAVAssetWriterDelegate close]):
(WebCore::MediaRecorderPrivateWriter::create):
(WebCore::MediaRecorderPrivateWriter::compressedVideoOutputBufferCallback):
(WebCore::MediaRecorderPrivateWriter::compressedAudioOutputBufferCallback):
(WebCore::MediaRecorderPrivateWriter::MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::initialize):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedVideoSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedAudioSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::MediaRecorderPrivateWriter::appendCompressedAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedSampleBuffers):
(WebCore::appendEndsPreviousSampleDurationMarker):
(WebCore::MediaRecorderPrivateWriter::appendEndOfVideoSampleDurationIfNeeded):
(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::clear):
(WebCore::copySampleBufferWithCurrentTimeStamp):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::createAudioFormatDescription):
(WebCore::createAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::stopRecording):
(WebCore::MediaRecorderPrivateWriter::appendData):

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.h: Copied from Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.h.
  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm: Added.

(WebCore::VideoSampleBufferCompressor::create):
(WebCore::VideoSampleBufferCompressor::VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::~VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::initialize):
(WebCore::VideoSampleBufferCompressor::finish):
(WebCore::VideoSampleBufferCompressor::videoCompressionCallback):
(WebCore::VideoSampleBufferCompressor::initCompressionSession):
(WebCore::VideoSampleBufferCompressor::processSampleBuffer):
(WebCore::VideoSampleBufferCompressor::addSampleBuffer):
(WebCore::VideoSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::VideoSampleBufferCompressor::takeOutputSampleBuffer):

Source/WebCore/PAL:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Add soft link macros for VideoToolbox and AudioToolbox.

  • PAL.xcodeproj/project.pbxproj:
  • pal/cf/AudioToolboxSoftLink.cpp: Added.
  • pal/cf/AudioToolboxSoftLink.h: Added.
  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/cf/VideoToolboxSoftLink.cpp: Added.
  • pal/cf/VideoToolboxSoftLink.h: Added.

Source/WebKit:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Enable RemoteMediaRecorder only for systems supporting AVAssetWriterDelegate.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didReceiveMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.h:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/GPU/webrtc/MediaRecorderProvider.cpp:

(WebKit::MediaRecorderProvider::createMediaRecorderPrivate):

Source/WTF:

Reviewed by Eric Carlson.

  • wtf/PlatformHave.h:

LayoutTests:

Reviewed by Eric Carlson.

Disable tests on all platforms except the ones supporting AVAssetWriterDelegate.

  • TestExpectations:
  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html:

Remove web audio generation since there seems to be some unstability in web audio -> stream -> media recorder.
which should be fixed as follow-up specific patches.

  • platform/mac/TestExpectations:

Enable running tests.

12:46 AM Changeset in webkit [256009] by youenn@apple.com
  • 4 edits
    3 adds in trunk

Do not process newly gathered ICE candidates if document is suspended
https://bugs.webkit.org/show_bug.cgi?id=207326
<rdar://problem/57336453>

Reviewed by Alex Christensen.

Source/WebCore:

We should not register MDNS candidates for suspended documents.
For that reason, enqueue a task when receiving a new candidate.
If document is not suspended, it will be executed immediately.
Otherwise, we will wait until document gets unsuspended.

Add a mock endpoint that delays gathering of candidates until document is suspended.

Test: webrtc/peerconnection-new-candidate-page-cache.html

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::newICECandidate):

  • testing/MockLibWebRTCPeerConnection.cpp:

(WebCore::MockLibWebRTCPeerConnection::GetTransceivers const):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::MockLibWebRTCPeerConnectionForIceCandidates):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::gotLocalDescription):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::sendCandidates):
(WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection):

LayoutTests:

  • fast/history/resources/page-cache-helper-100ms.html: Added.
  • webrtc/peerconnection-new-candidate-page-cache-expected.txt: Added.
  • webrtc/peerconnection-new-candidate-page-cache.html: Added.
Note: See TracTimeline for information about the timeline view.